プログラマー、ソフトウェア開発者、またはコーダーであるIMHOとして開発する場合、さまざまな(ベストまたはワースト)プラクティス、さまざまなアルゴリズム、および「それを行う複数の方法」を目にするようになります。あなたがコードを書かなかったとしても、このコードを見るのはあなたにとって素晴らしい学習体験になるでしょう。しかし、これを行うのはあなたを混乱させるだけでしょうか?
たとえば、同僚が作成した任意の言語のライブラリがあり、しばらくそれを使用しているとします。あなたはそれがどれほど広範であるかに関わらず、実際のソースコードを見て、このライブラリがどのように書かれているかをよりよく見ることに決めました。例として、このライブラリから最も頻繁に使用する関数はmax
関数で、2つの数値のうち最大のものを見つけます。しかし、この機能は必要以上に複雑です。それが書かれている方法はあなたを混乱させるものであり、あなたはこれがどのように機能するか知りません。
このような単純な関数の複雑さを理解しているので、これはあなたをより良いプログラマーにしてくれるのでしょうか、それとも自信がなくなったのであなたはより悪いコーダーになりますか?
ですから、私の質問は、一般的にはソースコードを読むことで、より優れたプログラマになりますか?そうであれば、どのようにですか?そうでなければ、なぜ人々はまだそれをしているのですか?です。
あなたは関数のコードを読んで、それは驚くほど複雑です。それは複雑で恐ろしく、自信を傷つけるので、落胆するかもしれません。または、それを理解しようとすることができます。失敗するかもしれませんが、おそらくそれから何かを学習するので、一般的にはそれを実行したほうが良いと思います。何もありません。
ただ座ってレクリエーションでソースコードを読み始める人は多くありません。私はそれをしません、それは楽しいとは思いません。通常、私が「コードを読んで」いる場合、それはいくつかのドキュメントの例として、または私が取り組んでいる既存のシステムの一部です(機能の追加、バグの修正など)。これらはどちらも非常に優れた学習ソースになります。
ソースコードを読むことはあなたをより良いプログラマーにしますか?そうでない場合、なぜ人々はまだそれをしますか?
それを読むことはあなたをより良くするわけではありませんそれを理解するはそうします、そしてあなたはチームで働いており、あなたは常にあなたのコードでのみ働く機会を得るわけではないので、これを行います。領土が付属しています。
プログラミング時間の大部分は、コードの作成ではなく、コードの読み取りに費やされます。だからあなたはすぐに始めるかもしれません:D
多くの人にとってソースコードを読むのは難しいです。関係のない詳細を無視し、重要なことに集中できるように、適切に行うことを学ぶには多大な労力が必要です。このことを学ぶための時間枠は、10-20年のようなものです。短時間でコードを書いた人がコードを正しく読み取る方法を知ることは期待できません。
一方、習得できるスキルです。それを学ぶには数年間集中的な努力が必要です。あなたがそれを学ぶと、それは非常に役立ちます。これは、以前はまったく見つけることができなかったコードの問題を見つけるようなものです。コードを見たこともないモジュールの問題を見つけることさえあります。
FrustratedWithFormsDesignが提供する回答に加えて、
そこには、ただ回転してランダムなプログラムのソースコードを読み始める人はあまりいないと思います。
しかし、継続的な教育のために、私が一般的に行うことは、好きなゲームを1つ選び(デスクトップでUbuntuを使用しているので、プレイするほとんどのゲームはソースとして利用可能です)、頭の中でそれをどのように実行するかを試してみます動作します。最初にコードを確認せずに最初から作成する場合はどうすればよいですか?一般化されただけでなく、キャラクターと世界、またはキャラクターとお互いの相互作用、あるいはマップがどのように動的に生成または画面に表示されるか、あるいはAIがどのように機能するかについて考えてください。
次に、それを頭に入れて、あなたがどれだけ近かったかを確認します。あなたがそれを行った方法と現在書かれている方法を比較すると、それをプログラミングする他の方法がわかり、プログラムを選んでSF小説やなど。
それは貢献しますが、コードを読むだけが優れたプログラマーになる主な理由だとは思いません。もしそうなら、私は何年にもわたって読んだすべてのコードを使用して、今やスーパープログラマーになるでしょう(o夢しか見ることができません)。
私はそれがあなたが読んでいるコードを理解しようと試みることと、その過程でそのコードが良い/悪い解決策であるかどうかを決定することの組み合わせだと思います。
この決定に至る過程で、あなたは次のようなことをする傾向があります。
これらの要素を組み合わせると、より優れたプログラマになるための手助けになります。
要約すると。コードの読み取りは手段です。あなたがそのコードを処理/分析しようとする方法論は、プログラミングをよりよくするのに役立つものです。
なぜ人々はそれをするのですか?どこかから学び、同僚のコードを読む必要があるので、ほとんどのプログラマーが望むことを達成するための1つの道が与えられます。それは、彼らが一日の終わりに素敵な冷たいビールを飲み、仕事が終わったと言うことができる、エレガントでクリーンな拡張可能なソリューションです!
ソースコードに関しては、必ずしもPlatterがあるとは限りません。エレガントなコードを誰もが利用できる方法で書く人もいれば、後でさえ理解できない方法で書く人もいます。
どちらにしても、何かを学ぶことができます。コードが適切に記述されている場合は、それをストライドに取り入れることができます。コードが非常に複雑な場合は、これをより適切かつクリーンな方法で実現する方法を学ぶために、心を動かす必要があります。
結論:-処理しているコードから遠慮しないでください
私は間違いなくそうだと思います。トリックは、読むのに適したコードを見つけることです。コンパイラコースで学んだのと同じくらい、ソースを読んで古いCDC6000 Pascalコンパイラまで学んだこととほぼ同じだと思います。また、4.2 BSDカーネルソースを熟読することで、オペレーティングシステムの内部について多くのことを学びました。今日、私はおそらく L4マイクロカーネル または OpenJDK ソースを調べます。
ソフトウェアのソースコードを時々閲覧します。戦術的な情報を提供します。もっと戦略的な情報を収集するには、実際に時間をかけてシステム全体を調査する必要があります。
私の同僚のいくつかの興味深いコードを読むことは非常に有益です。しかし、プログラム全体ではありません。すべてのプログラムのほとんどが単なる定型コードだからです。あなたができる最善のことは、優れたプログラマーのブログを読むことです。彼らはあなたに興味深い部分を示し、なぜ彼らがそのような構造を使用したのかを教えてくれるので、あなたは彼らのやり方を学ぶでしょう。そして、これは最も重要なことです-コード自体ではなく、その背後にある考え。
私は、いくつかの問題を解決する方法を同僚や友人のプログラマーと議論することはさらに良いことであると付け加える必要はないと思います-あなたは多くの新しい考えを見つけ、一緒にあなたの両方(すべて)にとって新しいイベント考案のアプローチを見つけるかもしれません。