なぜあなたは、ソースコードを見たいですか?ソースコードを見てどのように?

序文

この記事の主な内容はプラスどのくらいの神から取られている「美のJava並行処理、」序文の内容は、ソースコードを見て、どのようにソースコードを参照してくださいする方法について話しました、彼は非常に洗練されたと述べました。このセクションではそうダウン、ソースコード学習方法論の一部であり、個々の要約を抽出します。

なぜソースコードを見て?

私たちは通常、プロジェクトを行う際に、次のような問題が発生します。

  1. 私が設計する方法がわかりません。例えば、行われる必要がある、私が開始する方法がわからないデザインの概要に、職場に行き始め、私は、システムが設計の現在のニーズに似ているかを確認しなければならなかったし、デザインにモデル化。
  2. デザインは、問題は包括的とはみなされません。、マシンがダウンしている会った、キューのミッションを有界比べ職場初心者、これらの人々が需要に自分自身の経験に頼っては予備設計を思い付くことができましたが、デザインは、多くの場合、このようなマルチスレッドの使用など、いくつかの珍しいの詳細を欠場します保存せずにタスク内のキューは、次の時間は、あなたがマシンを起動した場合、これらのタスクは失われたとき。

これらの問題、最終的な分析、主な理由のための経験不足、およびプロジェクトの実践から主に蓄積された経験、これらの人々は、比較的豊富なプロジェクト経験しているので、リクルーター通常、限られた作業時間は、3年以上あるので、シーンはプロジェクトに遭遇比較的高いです。仕事の経験と実践の年からの累積が、私たちの思考を拡張することができ、ソースコードを見て、これは変装増加我々の経験の良い方法です。私たちは、時間によって短時間で経験を積むことはできませんが、オープンソースのフレームワークのオープンソースプロジェクトを学習することで経験を積むことができますが

幸いな書類、無文書がある場合に加えて、職場に一般的に、あなたは、自分の研究のためのコードを見ている、既存のシステムに精通していることが必要とされています。あなたがソースコードを読む前に経験している場合は、新しいシステムの研究では、コードのロジックはそう激しいではないでしょう。

もう一つのポイントは、ということであるあなたがそれを理解すれば、あなたは失敗の可能性を減らす最大化することができ、あなたが開発を行うためのフレームワークやツールを使用するときに実装例えば、チームは、キューがいっぱいになったとき、それはチームの要素にドロップされ、提供の方法を使用する際にいくつかのポイントが時間にあなたが知っている、提供の方法や方法を入れた上での同時キューArrayBlockingQueue要素は、メソッドがfalseを返す提供し、これは、現在のスレッドをブロックしません。キューがいっぱいになったときに、置く方法を使用している間、それは成功した復帰後チームにアイドルキュー要素まで、現在のスレッドを中断します。しかし、人々は彼らの違いを忘れて、しばらくの間、物忘れ未使用であり、あなたが使用することを行くとき、あなたは中に入ると方法が提供つけ、そのソースコードの実装を見てする必要があります。メソッドに外観を提供します、ああ、キューがいっぱいに復帰直接falseで、見た目に入れる方法、ああ、元キューがいっぱいの、条件変数を待って直接使用することは、現在のスレッドを中断します。彼らは違いを知って、あなたは自分のニーズに応じて選択することができます。

最大の利点は、ソースコードを参照することで、アーキテクチャ設計を増強する能力を思考を開くことができますいくつかのものだけでは書籍や自分で考えるが、学ぶことは困難であり、あなたは他の人が設計し、この設計を実現することができる理由を考える方法を確認するために、ソースコードに目を通す必要があります。

エンパワーメントプロジェクトを行うどのくらい、あなたが書いている多くのコードではないが、しかしむしろあなたのビジネスシーンを与えるために、あなたは、いくつかのトリッキーな解決策を考え出すと、それぞれの長所と短所を言うことができます。そして、我々が思い付くことができますどのように、人は経験に依存すること、そして第二に、誘導により合計すると、すぐにあなたの経験に追加することができ、ソースコードを見てください

概要

なぜそれのソースを見てみましょう。

  1. オープンソースのフレームワーク、オープンソースプロジェクトのソースコードを学習することによって、我々は複数の技術、経験の急速な増加のシーンに様々なソリューションを学ぶことができます
  2. 開発のためのフレームワークやツールを使用している場合、あなたはそのソースコードを理解していれば、失敗の可能性を減らすために最大化することができます。
  3. 新しいシステムのコードのロジックを学ぶメリット、新システムはすぐに引き継ぎました。
  4. 最大の利点は、あなたが思考、アーキテクチャ設計を増強する能力を開くことができ、ソースコードを見ることで、この設計を実現できる理由を熟考どのように他の人の設計し、次に参照します

ソースコードを参照してくださいする方法

どのようにソースコードを読むには?

あなたが特定のフレームワークのソースコードを見る前に、このオープンソースのフレームワークの公式説明を見つけるためにGoogleに行って、データフレームは、いくつかのモジュールを持って理解することによって、各モジュールは、各モジュールが何を持っているもの、との間の接続は何で、やっていますソースコードを読んでコアクラスは、これらのクラスを見に焦点を当てることができます。

そして、どのモジュール関心が小さなデモ、このモジュールの具体的な役割を初めて目を書く行く、その後、デバッグは、特定の実装に依存入力します。

デバッグのプロセスにおいて、最初のパスが大雑把であるコール・ロジックで、簡単に見て、使用されるクラス、二度目必要、デバッグを焦点の関数アーキテクチャ図のように、これらのクラスを見て、使用しますどのようなデザインパターン。

あなたは二時間があると感じた場合、彼らは一般的に、コードの全体的な実装の機能を知っているが、コードの全体的な構造上の非常に明確ではありません、すべての後に、複数のクラスは、コード内で前後に呼び出して、現在のブレークポイントで忘れがちです。

そして、あなたは三時間デバッグすることができ、この時間は、あなたがより良い描かれた主要なクラスおよびクラス構造図のタイミング図を呼びたい、ととても良い引き分けた後、その後、コールフロー・チャート分析のタイミングに対して、あなたは間のクラスを明確に知ることができます呼び出し関係、および図によって各機能クラスとそのクラス間の依存関係を知ることができます。また、各機能またはクラスのメソッドは、一般的にコメントを持っているオープンソースのフレームワークは、これらのノートは、最初の手の情報であり、このような同時のコンポーネントのいくつかのコメントJUCパッケージとして、示されていること、それらの設計原理及び使用シナリオ。

では、ソースコードを読んで、それはタイミング図やクラス図を描画することが最良である人々は常に物忘れであるため、。あなたは時々前に見た後、元に行き、いくつかの感想であるが、しかし、あなたはモジュールのロジックを見て、だけでなく、ゼロから再びデバッグデモに基づくようにしたいときしている場合。そして、あなたがマップを持っているかもしれない場合は、直接、多分から内部のマップを見つけて、モジュール全体の状況を知るためのタイミング図を見ることができます。

また、それが英語であるが、Quguanネットワークチェック(情報の送信元である変換する誰かなしで)使用のための最良の枠組みをチェックしますが、十分な長さになり、GoogleはNAの翻訳まだそこにあります!

もちろん、研究は実際には、あなたが再び把握することができ、デバッグた場合、3つのマスターの度あり、ここで述べた、コードを3回デバッグする必要はありません、それは当然、より良い友人です。

二つの概要

ソースコードの読み方:

  1. 以下の情報を、公式の導入のGoogleのオープンソースのフレームワークを探します
    • これは、いくつかのモジュールがあります
    • モジュールの役割
    • モジュール間のリンク
    • (ソースを読み取る過程で、コアクラスの各モジュールコアクラスにフォーカス
  2. どのモジュール利息は小さなデモ、このモジュールの具体的な役割を初めて目を書く行きます。
  3. デバッグは、実装に見えます。(IDEAのデバッグ機能をフルに活用してありますすることができます)
    • 最初のパスは、コール・ロジックでザッ、簡単に見、どのクラスに使用されています。
    • 二度目、デバッグを集中、これらのクラスを見てする必要がどの機能に建築ビューとしてデザインパターンのものを使用
    • タイミングダイアグラムコールフロー分析が直面している第3の時間デバッグ、描かれた主要なクラスとクラス構造図のコールのタイミング図、

注意的点:

  • ソースコードを読んで、クラスは、好ましくは、図5に示すタイミングチャートです。
  • コメントは手の情報、良いコメントは、多くの場合、彼らの設計原理と使用シナリオに記載されています

参照

  • 「米国でのJava並行処理」

おすすめ

転載: juejin.im/post/5d9aa29f6fb9a04e3b11111e