- ベストアンサー
美しいプログラムとは
プログラムを勉強中なのですが、あまり美しいプログラムではないような気がします。 行数が多いソースになると、どうしても 見た目の美しさに欠け、構造も使い回しができないようなプログラムになってしまいます。 美しいプログラムを書くはどうすればよろしいでしょうか? 参考になる書籍、サイトがあれば、教えていただきたいです。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
美的センスは人によって違いますが、私も「保守しやすいプログラム」に1票。 ソフト屋さんとして仕事をしていると、まったく新規に開発するより、他人が書いたプログラムを拡張したり保守したりすることが圧倒的に多いです。なので、次のようなソースコードがありがたいのです。 1.コーディングスタイルが統一されている 2.適度にコメント文が書かれている(過剰なコメントはダメ) 3.コメント文が「正確」である (間違ったコメント文は混乱の元) 4.素直な設計 (変なテクニックが入っていると理解できない) 5.定石(セオリー)に従っている 6.汎用部と専用部が切り分けられている 7.仕様書が整備されている 8.テストしやすいこと 1、2は行儀というか作法の問題で、質問者さんもやろうと思えば今すぐできることです。すでに実践してらっしゃるかもしれませんが。コーディングスタイルの流儀はいろいろありますよね。使うプログラミング言語や開発ツールによって決まってしまうものもあるようです。 3は、間違ったコメント文ならない方がマシだ!ってことで。 4、5は「アルゴリズムとデータ構造」の教科書に出てくるような基本的なものからANo.2の方が書いてらっしゃるデザインパターンのレベルまで、先人が練り上げてきた洗練されたやり方に従うのが賢い、という意味です。 6は、再利用性に関する事項です。「使いまわす部分(汎用部)」と「使い捨てる部分(専用部)」を切り分けて作っておくと、後で楽できます。ドメイン(問題領域)に固有な処理を専用部に入れて、他のドメインでも使われる処理は別に切り出す。 7、8は仕事ではこれをやってもらわないと困ります。テストのしやすさは特に重要で、テストできないということ正くことを保証できないという意味です。品質を保証するのがプロの仕事です。 最後に、ちょっと古い本ですが本を紹介します。「Cプログラミング診断室」という本で、他人の酷いプログラムを病気に見立てて、診断、処方する過程を通してどうしたらよいプログラムになるか教えてくれます。 http://www.pro.or.jp/~fuji/mybooks/cdiag/ さらなるレベルアップを目指す際は、次のキーワードでいろいろ検索してみることをお勧めします。 ソフトウェア工学、構造化分析、構造化設計、DFD、オブジェクト指向、UML、デザインパターン、ソフトウェアアーキテクチャ、XP、アジャイルモデリング、ラショナル統一プロセス
その他の回答 (3)
こんばんは 他の人が見ても保守しやすいわかりやすいプログラムを書くことです。 あなたは美しいプログラムとは行数が少なくて、たくさんの処理ができるプログラムだと思っていませんか。 もし、そう思っていたら全然違います。 細かいことから言えばコメント、変数名がわかりやすいこと。 if文などでネストを使い過ぎるのは仕様が変更、削除になったとき修正しにくいのでダメです。 クラスの層が深すぎたり、クラス同士が強く依存し合っているプログラムも何をしてるか処理の流れがわからなくなるのでダメです。 そして、他の方も言っておられるようにファイルの切り分けが綺麗に整理されているプログラムは良いプログラムです。 例えばテキストファイルにシーケンシャルアクセスするプログラムをつくったとしましょう。 これをAccessに変更してもSQLSeverに変更してもファイルのどの部分を直してよいか他の人が見てもわかるようなプログラムは良いプログラムです。 ソフト会社に就職すると先輩から悪いところを指摘され何度も書き直しになりながら自然と覚えていきます。
お礼
>細かいことから言えばコメント、変数名がわかりやすいこと。 なるほど。 この点が一番の課題だと感じました。 ありがとうございました。
- tonton53
- ベストアンサー率36% (4/11)
言語にもよると思いますが、 WEBをやっているのですが、MVCモデルというのをよく使います。 デザインパターンなどで検索をしてみるといいと思います。 参考になったら幸いです。
お礼
MVCモデルですか・・・! 調べてみます!ありがとうございました!
- arain
- ベストアンサー率27% (292/1049)
「美しい」とは主観ですので厳密な解はありません。 一定のコーディング規約に則り、関数ヘッダや処理内容などきっちりとコメントがつけられて、他の人が見てもわかるようにすれば十分です。 まず一番は、頭の中だけで考えてソースを作るのではなく、しっかりと「設計」(紙に書く等)することです。 行き当たりばったりではいいものは作れません。 それにより内容が整理すればそれなりにきれいになっていきます。 あとは「オブジェクト指向」を勉強することです。
お礼
回答ありがとうございます。 オブジェクト指向ですか!今検索してがんばって勉強します! ありがとうございました!
お礼
回答ありがとうございました! キーワードを元に勉強してみます!