『Effective Java』で学んだ思想

4283 ワード

序文
『Effective Java』(中国語版第2版)をばらばらに読み終えて、本当にクラシックな本だと思います.今、本の中の具体的な知識点ではなく、この本を読んだ全体的な収穫を書きたいと思っています.
収穫する
ポイントや疑問の箇所に、マークやコメントをする
『Effective Java』を読んだとき、最初の10のアドバイスについては、簡単にペンを持って本に重点を置いた文だったので、深く理解していませんでした.私も問題を感じて、それから、問題に対する理解が大きく向上しました.
小学校一年生でも知っている愚かな質問ですが、私はこのようなメリットを体得したばかりです.例えば、第12条 Comparable 節を見たとき、まず自分に「Comparableインタフェースの使い方」を聞いた.
その後,Comparableインタフェースは の設計モードを採用していることが判明し,戦略モードをさらに解析した.P 54の真ん中の一言を見た: TreeSet TreeMap, Collection Arrays, .これらのツールクラス、例えばArraysのsortは、どんなアルゴリズムを使用していますか?ComparableインタフェースはどのようにArraysのsortメソッドと結合し,さらに異なるComparableインタフェースを伝達することによってArraysの異なるsortソートを実現するのか.
その後アレックスを見つけたsortはタイプによってソート方法が異なります. の場合、 が採用される. の場合、 が使用されます.次に、基本タイプとオブジェクトタイプについて、なぜ異なるソート方法を採用するのかと自分に聞きます.クイックソートのチューニングは、どこに現れますか?集計ソートの改善は、どこに現れていますか?ソースコードを見た上で、JDK 7がDual-Pivot Quicksortの速い配列方法を採用していることに気づきました.このアルゴリズムはどこがいいか考えます.
ソースコードを見ているうちに、注釈にAPIの設計者がJosh Blochであることに気づき、Googleにしました.彼がこの本の作者であることに気づいた.私はやっとJavaの集合のフレームワークが彼が設計したことを知っていて、やっと訳者序の中の紹介を知っていて、すべて彼のことについて......私は本を読んで作者にあまり注意しないで、この習慣はよくありません.さらにGoogle、私は彼のTwitterを発見して、私は彼に注目すべきではありませんか?では、Java分野とコンピュータ分野の海外、国内の牛人はどれらがありますか.私は注目すべきですか.Javaを使っているうちに開発者も進化過程も知らなかったら…自分にいくつか質問することで一気に新しい世界が開かれました++
深く考える
プログラミングの分野ではなおさらだ.私が『Effective Java』を読むように、第12条節を簡単に読むだけでは、数分で省略されるに違いない.でも何を手に入れたの?「Effective Java」を3回、「Javaプログラミング思想」を5回見たと自慢できるのか.10回見ても何の意味があるの?もし私が時間をかけないで、自分にいくつかの問題を聞いて、自分でComparableインタフェースを研究して、それでは私はJDKの底の実現の細部を知らないで、私はすべての真相を理解していないで、使うたびに疑問があります:あれ、Arrays.sortはどのようにオブジェクトのComparableインタフェースを通じて、異なるソートを実現しますか?自分の疑惑を解決しなければ、問題はますます多くなり、ますます深刻になるだけだ.
M・スコット・パーカーの「誰も歩けない道--心が成熟した旅」の一言(大意): Comparable .私は少し類比しすぎたかもしれませんが、プログラミングに関する疑問を自分で解決して自分で理解しなければ、私たちは , , ; , 、 にいます.
深く考えると多くのメリットがあります(自分の簡単なまとめ、コメント討論を歓迎します):
  • 問題が発生するたびに、この機能はどのように実現されているのかを考えてみましょう.今度は時間がないから、後で検討しましょう.
  • 脳の容量は限られており、これらの問題は本当に解決された後でこそ、脳の容量を占有しない.「Head First」シリーズの引用部分で、最初の提案は です.
  • 私たちが一つの問題を完全に理解した後、次は同じ問題に直面して、その古い問題ではなく、この問題に対する思考をもっと深くするだけです(この機能はどのように実現されています).
  • 自信を増やし、自由を得る.

  • 深く考えるのにあまり時間がかかりません.私たちはほとんどの真実から一歩しか離れていません.そして重要なのは , , であり、このような思考は大きな をもたらすことができる.少なくとも私は『Effective Java』を読んだとき、この感じでした.少しも疲れていないので、自分に質問を続けることで、多くの知識を得て、興奮していました.
    優秀なフレームワーク(習慣)とは、無意識のうちに間違いを犯さないこと
    第45条 節(中国語第2版P 182)では、著者らは、なぜ作用ドメインを最小化したのかを説明するために、forサイクルがwhileサイクルよりも良い場合、「切り取り-貼り付け」を含むコードセグメントを列挙した.エラー:新しいループ変数i 2を初期化するつもりでしたが、古いループ変数iを使用しました.コードはコンパイルされ、実行時に異常は投げ出されませんが、実現する機能は間違っています. 形式を使用すると、このような無意識の誤りを根本的に避けることができます.
    著者はJava APIの設計者であり、Java APIの効率を向上させるにはどうすればよいかだけでなく、クライアントをより柔軟にし、アーキテクチャの設計からクライアントがエラーを犯す機会を減らす方法も含まれている.これは完全にすべての開発者に適しています.さらに考えると、現実でも同じでしょう.私はかつて1篇の文章を見たことがあって、どのように優秀な習慣を通じて、無意識の中で間違いを犯す機会を減らすかを討論しました.
    最も重要なのは、細部を実現するのではなく、思想です.
    細部は重要ですが、書籍、フレームワーク、Javaの設計思想は、それが一番重要です(だからBruce Eckelの「Thinking in Java」は「Javaプログラミングfor-each」に翻訳されます?).ソースコードを読むときは、意味的な理解だけでなく、なぜこの機能を実現するのかを考えてみましょう.このように実現するのはどんなメリットがありますか?その適用シーンはどれらがありますか?まだ改善できますか?どのような思想は私が普段の仕事と生活の中で参考にすることができますか?
    李笑来先生の文章にはこのような2つの言葉がある.
    彼らが本を読むとき、文字や文字が述べた道理だけでなく、作者の考え方にもっと気づいた.作者の「考え方」は自分の「考え方」と何が違うのか.作者の「考え方」がよければ、自分はどう調整すればいいのだろうか.
    1冊の確率論を読み終わると、多くの人は試験を受けても合格するとは限らないが、他のごく少数の人は科学者になった.彼らは自分の考え方を改良したので、「科学者のように考えることができる」からだ.
    もし私が になるならば、私はJDKソースコードを読むべきで、これはJava専門家と天才思想の結晶だからです.私はもっと考えるべきです:彼らはどうしてこのように設計しますか?彼らのJava は何ですか. ~
    アイデアのメリットをつかむ:
  • 要綱を引くと、重要でない細部を無視して、重要な場所(いわゆる Java )に集中することができる.
  • 読書速度の向上.重要でない細部をすばやく省略することができ、私の読書効率は大幅に向上しました.
  • であり、全体を明確に把握することができる.
  • は自分の考え方を改良することができて、私たちの を譲ります.

  • まとめ
    私は『Effective Java』を読んだ後、『Javaプログラミング思想』という本をもう一度読む必要があることに気づいた.以前は簡単に重点文を引いただけだったからだ.もちろん、一人で研究する以外に、もっと他の人と討論して総括する必要があります.
    Yano、帝都スモッグの人肉掃除機です.読み终わって少し収获があるならば、少し称賛して関心を持つことを覚えていますO(∩∩)Oははははは