web-dev-qa-db-ja.com

ソースコードの良い例をどこに読みに行きますか?

コーディング能力を向上させる最善の方法の1つは、他のコードを読んで理解することだと言う人が何人かいると聞きました。比較的新しいプログラマーとしての私の質問ですが、頭の中でそれほど遠くない適切なソースコードの例はどこにありますか?

53
Jesse McCulloch

GitHubCodeplexGoogle Code 、または BitBucket などのリポジトリサイトでオープンソースプロジェクトを参照できます。複雑さのレベルが異なるプロジェクトが見つかるので、最初はあまり気にせず、興味をそそるものを見つけることができるはずです。

別のオプションは、Scott Hanselmanの Weekly Source Code ブログ投稿です。

私は確立されたアクティブなプロジェクトから始めることをお勧めします。これは、まだ使用および精査されていないコードを読み始める確率を下げるためです。理想的には、あなたが興味を持ち、使用できる何かを見つけてください。アプリを使用すると、ソースコードを理解するのに役立ちます。オープンソースプロジェクトを選択するもう1つの利点は、いくつかの修正や機能を提供できる可能性があることです。これにより、コード全体をより興味深いものにすることができます。

他の誰かのコードの束をじっと見つめるのは怖いので、main関数(または同等の関数)から始めて、そこから作業を進めてください。

30
Adam Lear

最初の試みで優れたソースコードを書く人はほとんどいません。多くの場合、優れたソースコードは一連のリビジョンによって作成されます。したがって、複数回ピアレビューされ、複数回修正されたソースコードを見つけることができれば、おそらくより良い場所にいることになります。一部のオープンソースプロジェクト(およびそれらの一部)は、特によくレビューされています。レビューサイクルが必須の企業(Googleなどですが、他にも多数あります)のコードは、法案に適合します。

そうは言っても、あなたの目標が「素晴らしいコード」を見つけることであるべきかどうかはわかりません。さまざまなスタイルのコード(同僚が作成したものなど)を調べ、コードの良い点と悪い点を特定する方法を学ぶ必要があります。特定する悪い点が多いほど、コードを改善し、その方法を理解するために努力することになります。

特に、優れたコードを理解するための非常に優れたアプローチは、対話式デバッガーを使用して、呼び出しのチェーンに従って複雑なコードをトレースすることだと思います。たとえば、会社のメインファイルの1つに移動し、ブレークポイントを設定して、そこから物事を理解し始めます。

10レベルのインデントとグローバルへの依存性を持つ100行の関数に数回混乱し、よく分解されたコードを簡単に抜けて、独自のプログラミングを改善します。

10
Uri

優れたコードを見つける代わりに、一般的なプログラミングの本を調べてください。

例えばコードの完成、堅固なコードの記述、デザインパターン(このサイトには、別の質問と回答で他の本がたくさんあると思います)

それらの本は、何が良いコードであると考えられるかについての哲学を説明しています。読みやすさ、パフォーマンス、保守性、バグ検出など.

これは、著者が達成しようとしていることを理解しようとするよりも、さらに優れたリソースと効率を提供します。

追伸優れたソフトウェア設計は、同様に調査する必要があるものです。プロジェクトが十分に大きいとすれば、コードを観察するだけでは認識が難しいでしょう。

4
Zekta Chan

選択したプログラミング言語に付属するライブラリのコードは、ベストプラクティスや優れたコーディングスタイルと考えられるものを理解するための良い出発点であることが多いことがわかりました。

ただし、並べ替えアルゴリズムや複雑なコンテナークラスなどの場所から開始する必要はありません。

コードを書く際の興味深い洞察のもう1つの場所は、Project Euler( http://projecteuler.net/ )です。わずかなデメリット:他のユーザーがソリューションを投稿したフォーラムにアクセスするには、まず問題を解決する必要があります(すべてのレベルの経験にとって興味深い課題です)。しかし、一度完了すると、ほとんどすべての主要なプログラミング言語の例が見つかります。そして、あなたはすでに問題を解決しているので、他の人々のコードを理解するのに役立ちます。さらに、まだ知らない言語のコードを見ることができますが、興味深いかもしれません。

3

私は本当に読書を楽しんだ Beautiful Code 。短いですが、非常に良いコード例と詳細な説明があります。

...一流のコンピュータサイエンティストは、注目を集めるプロジェクトに対して、注意深く設計された異常なソリューションをどのように見つけたかを明らかにするケーススタディを提供しています。主要なコーディングおよび設計の専門家の肩越しに、彼らの目を通して問題を見ることができます。

...執筆者たちは、プロジェクトのアーキテクチャ、その構築でのトレードオフ、およびルールを破ることが重要であった時期について、声を上げて考えます。

この本には、ブライアンカーニハン、カールフォーゲル、ジョンベントリー、ティムブレイ、エリオットラスティハロルド、マイケルフェザーズ、アルベルトサヴォイア、チャールズペッツォルド、ダグラスクロックフォード、ヘンリーS.ウォーレンジュニア、アシシュガルハティ、リンカーンスタイン、ジムケントが寄稿した33の章が含まれています。 、ジャックドンガラとピオトルルズチェク、アダムコロワ、グレッグクロアハートマン、ディオミディススピネリス、アンドリューククリング、トラビスE.オリファント、ロナルドマック、ロジェリオアテムデカルヴァリョ、ラファエルモネラット、ブライアンキャントリル、ジェフウィリアムとサンジェイケメトンジェイモン、サイモンジェマトンサイモンOtte and Douglas C. Schmidt、AndrewPatzer、Andreas Zeller、Yukihiro Matsumoto、Arun Mehta、TV Raman、Laura Wingerd and Christopher Seiwald、およびBrian Hayes ...

3
pyvi