耳が痛くなる言葉も、
そうでない言葉もがたくさんありました。
あらためて、当たり前のことを当たり前にやるのは、
本当に難しいことだと感じました。
もっと覚えなくてならないこと、
もっと学ばなくてはならないこと、
もっと経験しなくてはならないことが、
たくさんあると思いました。
できてないと感じたのならやれば良くて、
できてないと感じれたことが、
今の自分の一歩目なのだと思いました。
ざ きのこ本。
(以下抜粋。○:完全抜粋、●:簡略抜粋)
○壊れていないものを直すのは無意味です。(P.13)
○たとえコードが4行ほどのもので、
行っていることが同じだったとしても、
それはたまたま一時的にそうなっていただけのことです。(P.14)
○コードレビューを成功させるためにもっとも有効な方法は、
レビューを楽しいものにすることです。(P.29)
○関数はできる限り短くし、機能は1つに絞り込む。
古くから言われる「24行制限」は今も有効である。(P.31)
○英語には、
たとえば「Make up your room, be quiet and do your homework」ということを
一語で伝えれるような単語はないのです。(P.39)
●デザインパターンの多くは明らかにアプリケーションの中の重複を減らす、
あるいは排除することを目的としています。
オブジェクトの使用する条件がいつも同じであれば、
Abstarct Factory、Factory Methodパターンを、
オブジェクトのふるまいに種類があるのであれば、Stategyパターンを使用します。(P.59)
●金融関係のアプリケーションには浮動小数点数を使うべきではない
ということも書いておくべきでしょう。
(中略)
浮動小数点数は、元々、科学技術計算を効率的に行うことを目的としたものです。
●YANGI(You Ain't Gonna Need It:それはたぶん必要ない)
余計かもしれないがおもしそうだと思えた。
将来必要になるかもしれないと思った。
必要かどうか判断に迷った。
常に考える必要があるのです。
いま自分が書いているコードは本当に必要なものなのか。(P.76-77)
●プログラミング言語のパラダイムは大きく、
手続き型、オブジェクト指向型、関数型、論理型、データフロー型などに分類することができます。
(中略)
ある問題を解決するのに、
言語Aではこのイディオムを使用するが、
言語Bで同じイディオムは使えないというような体験が重要なのです。
(中略)
最も顕著な効用は、
1つのパラダイムしか知らなければ思いつかないような表現を
使用することができるということです。(P.86-87)
○find . -name "*.java" | sed 's/.*\/// | sort | uniq -c | grep -v "~ *1 " | sort -r(P.89)
○Shippingクラスのshipメソッドを呼び出す仕事をItemクラスに委譲しています。(P.115)
○ある問題について十分に考えたら、あとは音楽を聴くなり、散歩をするなりして、
脳の創造を司る部分をはたらかせてみてください。
じっとコンピュータの前に座って考え込んでいるより、
その方が良いアイディアを思いつくものです。(P.133)
○プログラミングの技術を本気で磨きたいと思っているのなら、本を読むのもいいですが、
一番いいのは、他人が書いたものでも自分が書いたものでも、
とにかくコードを読むことです。
○スモール・イズ・ビューティフル(P.167)
○いつ、何を、どのように再利用すべきかがわからなければ、良い結果にはなりません。
それをわかるためには、問題領域について、またアルゴリズムとデータ構造について、
十分な知識が必要なのです。(P.169)
○1つの機能の実装が10個存在するのは、WETなシステムであるといえます。
もしDRY原則に従ってシステムが作られていれば、
機能XがCPUを30%消費している事実にすぐに発見できる上、
修正するコードも1/10で済むでしょう。
そもそも、10の実装をすべて見つけ出すための時間も手間も必要ありません。(P.172)
○良いテストの条件を簡単にまとめると次のようになるでしょう。(P.180)
・コンテキスト、出発点、満たすべき前提条件がわかる。
・ソフトウェアがどのように起動されるかがわかる。
・期待される結果と、確認すべき事後条件がわかる。
●プログラマが持っておくべきすきるを3つあげるとすれば、
(1)コードを読むスキル
(2)テストをするスキル
(3)デバッグをするスキル
だと考えます。
そして、このスキルはインターネットの情報を読むだけでは身につきません。
野球のルールを知っていたとしても、誰もが上手にヒットを打つことが出来ないのです。
いいバッターになるには、正しいトレーニングをして、試合で経験を積むしかないのです。(P.208)
そうでない言葉もがたくさんありました。
あらためて、当たり前のことを当たり前にやるのは、
本当に難しいことだと感じました。
もっと覚えなくてならないこと、
もっと学ばなくてはならないこと、
もっと経験しなくてはならないことが、
たくさんあると思いました。
できてないと感じたのならやれば良くて、
できてないと感じれたことが、
今の自分の一歩目なのだと思いました。
ざ きのこ本。
(以下抜粋。○:完全抜粋、●:簡略抜粋)
○壊れていないものを直すのは無意味です。(P.13)
○たとえコードが4行ほどのもので、
行っていることが同じだったとしても、
それはたまたま一時的にそうなっていただけのことです。(P.14)
○コードレビューを成功させるためにもっとも有効な方法は、
レビューを楽しいものにすることです。(P.29)
○関数はできる限り短くし、機能は1つに絞り込む。
古くから言われる「24行制限」は今も有効である。(P.31)
○英語には、
たとえば「Make up your room, be quiet and do your homework」ということを
一語で伝えれるような単語はないのです。(P.39)
●デザインパターンの多くは明らかにアプリケーションの中の重複を減らす、
あるいは排除することを目的としています。
オブジェクトの使用する条件がいつも同じであれば、
Abstarct Factory、Factory Methodパターンを、
オブジェクトのふるまいに種類があるのであれば、Stategyパターンを使用します。(P.59)
●金融関係のアプリケーションには浮動小数点数を使うべきではない
ということも書いておくべきでしょう。
(中略)
浮動小数点数は、元々、科学技術計算を効率的に行うことを目的としたものです。
●YANGI(You Ain't Gonna Need It:それはたぶん必要ない)
余計かもしれないがおもしそうだと思えた。
将来必要になるかもしれないと思った。
必要かどうか判断に迷った。
常に考える必要があるのです。
いま自分が書いているコードは本当に必要なものなのか。(P.76-77)
●プログラミング言語のパラダイムは大きく、
手続き型、オブジェクト指向型、関数型、論理型、データフロー型などに分類することができます。
(中略)
ある問題を解決するのに、
言語Aではこのイディオムを使用するが、
言語Bで同じイディオムは使えないというような体験が重要なのです。
(中略)
最も顕著な効用は、
1つのパラダイムしか知らなければ思いつかないような表現を
使用することができるということです。(P.86-87)
○find . -name "*.java" | sed 's/.*\/// | sort | uniq -c | grep -v "~ *1 " | sort -r(P.89)
○Shippingクラスのshipメソッドを呼び出す仕事をItemクラスに委譲しています。(P.115)
○ある問題について十分に考えたら、あとは音楽を聴くなり、散歩をするなりして、
脳の創造を司る部分をはたらかせてみてください。
じっとコンピュータの前に座って考え込んでいるより、
その方が良いアイディアを思いつくものです。(P.133)
○プログラミングの技術を本気で磨きたいと思っているのなら、本を読むのもいいですが、
一番いいのは、他人が書いたものでも自分が書いたものでも、
とにかくコードを読むことです。
○スモール・イズ・ビューティフル(P.167)
○いつ、何を、どのように再利用すべきかがわからなければ、良い結果にはなりません。
それをわかるためには、問題領域について、またアルゴリズムとデータ構造について、
十分な知識が必要なのです。(P.169)
○1つの機能の実装が10個存在するのは、WETなシステムであるといえます。
もしDRY原則に従ってシステムが作られていれば、
機能XがCPUを30%消費している事実にすぐに発見できる上、
修正するコードも1/10で済むでしょう。
そもそも、10の実装をすべて見つけ出すための時間も手間も必要ありません。(P.172)
○良いテストの条件を簡単にまとめると次のようになるでしょう。(P.180)
・コンテキスト、出発点、満たすべき前提条件がわかる。
・ソフトウェアがどのように起動されるかがわかる。
・期待される結果と、確認すべき事後条件がわかる。
●プログラマが持っておくべきすきるを3つあげるとすれば、
(1)コードを読むスキル
(2)テストをするスキル
(3)デバッグをするスキル
だと考えます。
そして、このスキルはインターネットの情報を読むだけでは身につきません。
野球のルールを知っていたとしても、誰もが上手にヒットを打つことが出来ないのです。
いいバッターになるには、正しいトレーニングをして、試合で経験を積むしかないのです。(P.208)
コメント
コメントを投稿