コーディング能力を向上させる最良の方法の1つは、他のコードを読んでそれを理解することだと言う人が数人いると聞きました。比較的新しいプログラマーとしての私の質問は、頭上でそれほど遠くない良いソースコードの例をどこで見つけることができますか?
コーディング能力を向上させる最良の方法の1つは、他のコードを読んでそれを理解することだと言う人が数人いると聞きました。比較的新しいプログラマーとしての私の質問は、頭上でそれほど遠くない良いソースコードの例をどこで見つけることができますか?
回答:
あなたのようなリポジトリサイト上のオープンソース・プロジェクトを閲覧することができますGitHubの、CodePlexに、Google Codeの、またはのBitbucket。さまざまな複雑さのレベルのプロジェクトが見つかるので、興味があり、最初は頭を悩まないようなものを見つけることができるはずです。
別の選択肢は、Scott HanselmanのWeekly Source Codeブログ投稿です。
確立されたアクティブなプロジェクトから始めることをお勧めします。これは、まだ使用と精査を行っていないコードの読み取りを開始する確率を下げるためです。理想的には、あなたが興味を持ち、使用できるものを見つけてください。アプリを使用すると、ソースコードを理解するのに役立ちます。オープンソースプロジェクトを選択するもう1つの利点は、いくつかの修正や機能を提供できることです。これにより、コードを読みやすくすることができます。
他の誰かのコードをじっと見つめるのは恐ろしいので、main
関数(または同等のもの)から始めて、そこから進んでいきます。
最初の試みで良いソースコードを書く人はほとんどいません。適切なソースコードは、多くの場合、一連の改訂によって生成されます。したがって、複数回ピアレビューされ、複数回修正されたソースコードを見つけることができれば、おそらくより良い場所にいるでしょう。いくつかのオープンソースプロジェクト(およびそれらの一部)は特によくレビューされています。必須のレビューサイクルを持っている会社(Googleなど、他にもたくさんあります)からのコードは、法案に適合する場合があります。
そうは言っても、あなたの目標は「すばらしいコード」を見つけることだとは思いません。さまざまなスタイルのコード(同僚が作成したものなど)を見て、それについての長所と短所を特定することを学ぶ必要があります。悪い点を特定すればするほど、コードの改善と方法の改善に努めます。
特に、良いコードの感覚を得るための非常に良いアプローチは、対話のデバッガーを使用して、呼び出しのチェーンに従って複雑なコードをトレースすることだと思います。たとえば、会社のメインファイルの1つに移動し、ブレークポイントを設定して、そこから物事を把握し始めます。
10レベルのインデントとグローバルへの依存関係を持つ100行の関数によって数回混乱した後、よく分解されたコードを数回微風通すと、独自のプログラミングが改善されます。
優れたコードを見つける代わりに、一般的なプログラミングの本を調べてください。
例:完全なコード、ソリッドコードの作成、デザインパターン(このサイトには別の質問と回答で他の本がたくさんあると確信しています)
それらの本は、良いコードと見なされる哲学を説明しています。可読性、パフォーマンス、保守性、バグ検出など。
作成者が何を達成しようとしているかを把握しようとするよりも、さらに優れたリソースと効率を提供します。
Ps Good Softwareの設計も同様に検討する必要があります。プロジェクトが十分に大きいことを考えると、コードを観察するだけでは認識しにくいでしょう。
選択したプログラミング言語に付属するライブラリのコードは、多くの場合、ベストプラクティスおよび優れたコーディングスタイルと思われるものを見るための良い出発点であることがわかりました。
ただし、ソートアルゴリズムや複雑なコンテナクラスのような場所から始めたくはありません。
コードを書く上で興味深い洞察を得るもう1つの場所は、Project Euler(http://projecteuler.net/)です。わずかな不利な点:他の人がソリューションを投稿したフォーラムにアクセスするには、まず問題を解決する必要があります(すべてのレベルの経験にとって興味深い課題)。しかし、一度完了すると、ほぼすべての主要なプログラミング言語の例が見つかります。そして、あなたはすでに問題を解決しているので、他の人のコードを理解するのに役立ちます。さらに、あなたはまだ知らないが面白いと思う言語のコードを見ることができます。
Beautiful Codeを読むのは本当に楽しかったです。短いが非常に素晴らしいコード例と詳細な説明があります。
...一流のコンピューター科学者がケーススタディを提供し、著名なプロジェクトに対する珍しい、慎重に設計されたソリューションを見つけた方法を明らかにします。主要なコーディングおよび設計の専門家の肩越しに目を通して問題を見ることができます。
...著者は、プロジェクトのアーキテクチャ、その構築におけるトレードオフ、および規則を破ることが重要であった時期を作業するときに声を出して考えます。
この本には、ブライアン・カーニガン、カール・フォゲル、ジョン・ベントレー、ティム・ブレイ、エリオット・ラスティ・ハロルド、マイケル・フェザーズ、アルベルト・サボイア、チャールズ・ペツォルド、ダグラス・クロックフォード、ヘンリー・S・ウォーレン・ジュニア、アシュシュ・グラハティ、リンカーン・スタイン、ジム・ケントが寄稿した33章が含まれています、ジャック・ドンガラ、ピョートル・リュシュチェク、アダム・コラワ、グレッグ・クローア・ハートマン、ディオミディス・スピネリス、アンドリュー・クックリング、トラビス・E・オリファント、ロナルド・マック、ロジェリオ・アテム・デ・カルヴァリョ、ラファエル・モネラト、ブライアン・カントリル、ジェフ・ディーン、サンジェイ・ゲムワット、サイモン・ペイトン・ジョーンズオッテとダグラス・C・シュミット、アンドリュー・パッツァー、アンドレアス・ツェラー、松本幸宏、アルン・メタ、TVラマン、ローラ・ウィンガードとクリストファー・セイワルド、ブライアン・ヘイズ...