ほとんどすべての上級プログラマーは、他の専門家のコードを読むことは非常に役立つと言っています。通常、彼らはオープンソースを勧めます。
読みますか?もしそうなら、コードを読む手順はどのくらいの頻度で何ですか?また、初心者がSVN-ファイルの束-に対処するのは少し難しいです。解決策は何ですか?
読みますか?
はい。
行う場合、どのくらいの頻度
毎日。常に。私は数多くのオープンソースプロジェクト(主にPython関連)を扱っており、mustは最も正確なドキュメントであるため、ソースを読みます。
そして、コードを読む手順は何ですか?
ええと。開いて読む。
また、初心者がSVN-ファイルの束-に対処するのは少し難しいです。解決策は何ですか?
開いて読む。その後、続きを読みます。
簡単ではない。簡単なことは何もありません。理解する王道はありません。それは仕事がかかります。
あなたが持っている難問にはいくつかの層があります。まず、いわば鳥瞰図である高レベルから始めます。プロジェクトをチェックアウトすると、ディレクトリ構造内に多数のファイルが作成されます。オープンソースでもクローズドソースでも、同じです(結局のところ、ソースコードはソースコードです)。だからこれから始めましょう:
それは練習が必要ですが、それは間違いなく実行可能です。アプリケーションが使用しているライブラリとフレームワークについて理解するほど、コードをどのように編成する必要があるか、特定の質問に対する回答を探す場所がわかります。一部のコードは、特にそれがかなり間接的である場合、追跡が少し難しくなります。それが鉛筆と紙が必要な理由です。最終的にあなたの頭の中で電球が消え、あなたはそれを手に入れます。残りのコードを読むことで、全体の意味が大きくなります。
それは小説を読むようなものではなく、参考書をどのように読むかのようです。チェックインメッセージから最近修正されたバグを選び、何が変更されたかを比較し、問題と解決策の両方を理解するまで関連する部分を読むのが良い方法です。よく公開されているセキュリティ脆弱性は、フォーラムで多くの議論があるため、選択するのが楽しいバグです。次に、バグトラッカーから「ぶら下がっている果物」のバグの1つを選び、自分で修正する方法を理解するまで読みます。専門家が行うコード読み取りのほとんどは、バグの修正や機能の追加の過程で付随するものです。
通常、最良のコードサンプルはほとんど目立ちません。あなたはそれらを一度以上読まなくても即座にそれらを理解するでしょう。通常、優れたコードは多くのドラフトを通過しますが、非常に簡単に書けるように見えます。それはあなたが最初に考えた方法ではありませんが、もちろん与えられたコードがそれを行う明白な方法であるという逆説的な感覚を生み出します。
そのようなコードに出会ったときは、それを書いたときに得られた洞察と、それに含まれる設計原則を理解するようにしてください。そうすれば、将来同じような状況に陥ったときに、同じ原則をうまく適用できるはずです。
いくつかの複雑な関数を読み取るときによく使用する1つのトリックは、コードセグメントは、ロジックを変更せずに、より読みやすいものにリファクタリングを開始することです。
「ファイルの束」に対処するのは難しいですか?それが文書化されていない限り、その組織に関する事前の知識がないことを除いて、独自のコードを作成する場合と同じです。
クレームされたプログラマーとして、「ファイルの束」からプロジェクト構造を理解できない場合、それは非常に組織化されていないプロジェクトであるか、またはあなたが不精なプログラマー(または極端な場合は両方)です。
読み始め、いくつかのエントリポイントまたはその他の重要なピボットクラス/メソッドを見つけて、そこからすべてがどのように統合されるかを理解してください。インスタントになることはありません。時間がかかりますが、ドキュメントがまったくなくても実行できます。
APIまたはソフトウェアの一部であっても、別のプロジェクトのコードを読み取るときに期待できる最高のことは、変数、関数、マクロの名前が曖昧に省略されたり、名前が付けられていないため、意図が理解できないことです。
しかし、それ以外には、言語、プログラミング手法、さらにはコードの目的自体について、複雑なコードに飛び込むことができる程度の知識が必要です。
私は現在 Lua がその魔法の一部をどのように実行するかを確認しようとしていますが、多くの識別子が漠然と名付けられているという点に達しています。私が知っていることを実行しようとしている行を関数コードのある時点で特定します...頻繁に1文字の変数とかなり短縮されたマクロ/関数名が頭に浮かびます。
@Berin Loritschが提案したように、「最初に、高レベルからの鳥瞰図」から、ユニットテストや統合テストがあるかどうかを探すことができます。
nittestsは、(api-)detailsがどのように機能するかを見るのに興味深いものです。
integrationtest通常、businesprocessesの概要を説明します。