- ベストアンサー
プログラマ1~3年目の人が参考とすべきコード
はじめまして。 タイトルのとおり、プログラマになって経験が浅い人が 読んでおいた方が良いコードを教えて頂きたいです。 オープンソースとかで公開されているものがたくさんありますが、 経験が浅い初心者でも読みやすいものとか参考になるものは ありますでしょうか? 言語は、CかJavaが良いですが、他の言語でも良いので教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
タイトルのとおり、プログラマになって経験が浅い人が 読んでおいた方が良いコードを教えて頂きたいです。 言語にもよると思うのですが.. 例えば、COBOL、RPG、IDLなどでは構造化技法が主流なので、構造化について記述された文献を読んだほうが 良いと思います。c++、java、vb.net系ではオブジェクト指向型言語なので、オブジェクト指向の考え方を理解する ことだと思います。他にも関数型などもありますがこちらはまだ、歴史が浅いのであまり文献もでてないかと思います。 なお、この手の資料は小さな書店では置いてないかと思いますので、大きな本屋で見てみるといいと思います。 ジャンル的には、コンピュータサイエンスに当たるかと思います。 オープンソースとかで公開されているものがたくさんありますが、 オープンソースなどは場合によりけりですが、読者にわかりやすいように、チェックを省いたり、本来なら仕様書に 記述するようなコメントまで載っていますので、あまり参考にはならないと思います。 経験が浅い初心者でも読みやすいものとか参考になるものは ありますでしょうか? 経験者の(先輩の)ソースをじっくりと参考にするのも一つの手ですが、一人の人(或いは一プロジェクト)のみを追っ かけて覚えても応用が効かなくなるのも事実です。(基本プロジェクト毎に共通仕様がありそれに沿って開発(コーディ ングさてれいるのは原則なので..(ないところもありますがw)) これも経験ですが色々なプロジェクトを経験して身につけていくしかないと思います。
その他の回答 (1)
- chie65536(@chie65535)
- ベストアンサー率44% (8741/19839)
>タイトルのとおり、プログラマになって経験が浅い人が読んでおいた方が良いコードを教えて頂きたいです。 読んでおいた方が良いコードはたった一つ。 それは「コメント等がロクに入っていない、先輩が書いたコード」です。 それらは「良い見本」にもなるし「悪い見本」にもなる。 >経験が浅い初心者でも読みやすいものとか参考になるものはありますでしょうか? 読みやすいコードや、参考になるコードは、お薦め出来ない。 何故なら、それらを参考にすると「応用が利かない駄目プログラマが出来上がってしまう」から。 人間ってのは「楽したがるイキモノ」なので、一度でも読みやすいコードを見てしまうと、そればっかりになってしまって、応用出来なくなる。 あと「良いコード」ってのは「程よく手抜きされているコード」の事を言う。 「程よい手抜き」ってのは、例えば「必要最低限のチェックしかしない」などだ。 データの入り口のガードさえしっかりしておけば、中に流れるデータは「想定されたデータのみ」になるので、中でいちいちチェックする必要は無くなる。 例えば、データの入り口を1ヶ所にしておけば、当然、チェックは1ヶ所だけで良くなる。 汎用性を持たせ過ぎて、データの入り口が何箇所にも分散すれば、上位関数と下位関数の両方で「入り口チェック」をしなければならず、コードが冗長になるし、特定の入り口一箇所でチェックし忘れれば、再現性が低い「難解なバグ」を生んでしまう。 ミスやバグは「入力データが間違っている」など「マンマシンインタフェース」の所ででしか起きないから、そこさえキッチリ押さえておけば良い。 一旦「OK」と判定して受け入れたデータは、いちいちチェックする必要なんか無いのだ。 同じような事は「出口」にも言える。 関数の途中で条件判断して関数から脱出してしまうと「特定の条件で後始末のし忘れ」をしてしまう。 なので、関数の出口、プロセスの出口、モジュールの出口は、なるべく「一ヶ所」に集約すべき。 このような「入り口と出口の管理」に有効なのが「オブジェクト指向型言語」である。 オブジェクト化すると、オブジェクトの生成と破棄が、入り口と出口に対応するので「入り口でのチェックと初期化」と「出口での後始末」がやり易くなる(少なくとも「特定の条件での書き忘れ」は避けられる) 因みに、過去、一番勉強になったコードは「先輩が書いた、何やってんだかまったく判らないコード」だったりするw
お礼
回答ありがとうございます。 何やってるのか全然わからないコードは、読んでいて頭に来ますよw >「程よい手抜き」ってのは、例えば「必要最低限のチェックしかしない」などだ。 コーディング規約があるので、チェックを省く事はできませんが、スマートな処理を書く先輩もいますし、意味不明な処理を書く先輩もいます。 先輩とか過去の人(ヘッダに記載された知らない名前)とかのコードを見ていますが、色んな人が手を入れていてどれを参考にするのかは自己判断している状態です。 特にモジュールの分割(関数の構成)が上手くできないため、良いコードは無いかと重い質問しました。
お礼
回答頂き、ありがとうございました。