java開発初心者です。
ある程度複雑なプログラムを書く場合、
mainメソッドのなかに全ての処理を書くのは良くないと聞きます。
具体的にどういった面で良くないのでしょうか?
特に、品質管理の面でどのような問題があるのかお聞きしたいです。
また開発初心者のため、恐縮ですができるだけ噛み砕いてご説明いただきたいです。
ご回答宜しくお願い致します。
追記
テスト工程で問題となる支障はありますか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答11件
0
思想の話になりますが…。
プログラマとして仕事をして3年程度の人の意見です。
たとえばです、全てmainで記載してしまう場合、1ファイルで全て記載することになります。
まず、これを念頭に考えた場合、以下の問題が発生します。
- メンテナンスの問題
複雑な処理を実装する場合、どうしても似たような処理を多様する機会が発生します。
万が一、そのコードを修正する必要がある場合、全て修正が必要になります。
処理を共通化することで、修正漏れであったり、無駄をなくすことで未然に不具合への予防策になります。
- 複数人開発の場合
複数の人間で同じファイルを編集すると、何かしら問題がおきやすいため、
分けて実装するほうが好まれます。
- ソースコードの読解
全てをmainだけに記載してしまった場合、どの処理が何を意味しているのか、
という点について全て読解しないと理解ができない、という問題があります。
原則、設計書しかり仕様書を読めば、プログラムを読まなくとも実装内容を理解できるものです。
しかし、全てを1つに記載してしまうと、製作者にしか意図がわからないものになる可能性が高いです。
また、Javaはオブジェクト指向で開発することが一般的です。
そのことも考えると、mainのみに記載する、ということは非常に大きな問題を抱えることになります。
###結論
私の意見としては、「保守性」「汎用性」の2点を考えるのであれば、mainのみに記載してしまうのはよくないかなと思います。
1人で開発するものであるなら、それをあえて咎める理由にはならないと思いますが、
柔軟かつ、迅速に対応をしたいと考えるならクラスやメソッドに細分化し、必要に応じて使い分ける開発手法をとったほうが得策だといえます。
投稿2016/06/28 07:45
退会済みユーザー
総合スコア0
0
プログラムではなく、文章を書く場合を考えます。
短い場合なら、1つの文で済ますことができます。
ある程度長くなってきたら、文は複数になります。
さらに長くながくなるなら、段落で区分けしていきます。
そして、次は章に分けたり、あるいは本を巻に分けていきます。
漫画でも、1コマまんが、4コマまんがというのはありますが、大抵は章や巻に分かれています。
プログラムで main() にすべてを書くというのは、
1つの文で書く、 1コマだけで書く という事に相当します。
投稿2016/06/28 22:04
編集2018/08/28 14:13総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
そのようなプログラムを書くということは、そのプログラムの作者はオブジェクト思考、クラス、メソッドの意味や意義を理解していないということになります。そしてそれらを理解せず書いたコードは**「保守性がない」「拡張性がない」「バグが出やすい」「処理が追いにくい」「機能単位になっていない」「別プロジェクトへの移植性がない」**など、いくらでもダメな点が挙げられます。
Javaはオブジェクト思考言語と呼ばれているほどにオブジェクト思考に重きを置いて設計されていますが、mainに全て書くということはそれらを全て投げ捨てていることにほかなりません。
投稿2016/06/28 07:42
総合スコア9206
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ごく簡単な、main1つに書いて10数行で済むようなプログラムであれば、それで構わないでしょう。
それ以上の規模のプログラムを1関数で書くとなると、到底把握しきれなくなります。
投稿2016/06/28 07:55
総合スコア145184
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
すでにたくさん回答がついて今さらですが、
非常に重要なことなので改めて回答します。
プログラムを組む最初で最大のつまずきポイントなので、
この問題を早めに認識されるとバグによる苦労が減りますよ。
具体的にどういった面で良くないのでしょうか?
特に、品質管理の面でどのような問題があるのかお聞きしたいです。
品質が非常に低下します。
一定以上の規模のプログラムだと、
バグだらけでまともに動作しない、
そもそも完成しない恐れがあります。
テスト工程で問題となる支障はありますか?
テストしにくくなりますが、それ以前の問題として、
テストの目的はバグを予防することなのに、
そのバグが増えればとうぜん支障になります。
なぜ、プログラム開発がバグで破綻するかというと、
変数など状態を持つ要素が組み合わせ爆発を起こし、
人間がシステム全体を把握しきれなくなるからです。
ソフトウェアの開発は複雑さとの戦いです。
ですから、大きなものは分割して、分割統治するのが、
プログラム設計の最も基本的な戦略になります。
メインメソッドに全部書くというのはその逆になります。
メインに全部書くのは大部屋に寝泊まりする感覚です。
規模が大きくなるとホテルやマンションのように
個室で管理する方がうまくいきます。
Javaのオブジェクト指向(サポート)もそのための機構です。
投稿2016/07/09 13:26
総合スコア5592
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
たとえば、質問者様が辞書を作っているとします。
その辞書には索引も無く、単語も「あいうえお」順ではないとします。
ある単語が間違っているので修正して欲しいと依頼されたときに
その単語を何千頁とある辞書から探したいですか?
みたいな感じでしょうか(笑)
余談ですが、10年くらい前は割とMainクラスのみで実装されてたり、可読性を度外視したものは見かけましたよ。
携帯アプリの出始めなんかはは30kbyte(だったかな?)に抑えるためにJavaのメリット全て捨ててそういう実装がされる場合もありました。
今は絶対無いですけどね。
投稿2016/06/28 08:08
総合スコア95
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
テスト時に支障があるとすれば、mainに全ての処理を書いてしまうと、一人しかテストができなくなります。
メソッドに分かれていれば、メソッド単位でテストができます。
また、何らかの修正が発生した場合、「影響範囲がわかりにくい」、「動作保証するために全てテストが必要」と
なると思います。
共通処理も分けなければ、バグの元になりますし、一括修正する際の修正箇所が増えるなど
色々な支障がでてきます。
上記の理由から、mainに全て記述するメリットは特にないと考えます。
投稿2016/07/04 00:15
総合スコア357
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
20行から50行程度のプログラムを組んで見て下さい。
通常の初心者であれば一時間かけても取れないバグに当たるはずです。
その時に改めて、ソースコード付きで質問していただければ、メソッドを分けた解答例がもらえます。
そして、その解答例と自身のソースコードを比較すればメソッドを分ける意味を納得することになります。
投稿2016/06/30 17:33
総合スコア2883
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
書いたって悪い事はないのですが、たくさん書くとわかりづらくなります。
投稿2016/07/08 01:20
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。