Open10

#リーダブルコード

gkzgkz

1章

  • チーム内にコーディング規約、コーディングルールは?
    • ある場合、規約を作る前にメンバーは本書を読んだ?
    • 「簡潔さ」と「安心さ」はどちらが大切?
      -「安心さ」と「簡潔さ」それぞれ「コードを読む者にとっての」と補完できるとすれば、「安心さ」を取りたい
      -「コードは書く時間より読まれる時間のほうが多い」と聞いたことがあるので。

    • これが本書でいう、「コードは他の人が最短時間で理解できるように書かなければいけない」ということに繋がると考える

2章

  • 名前は具体的に、意味があり、非汎用的であること
  • for-loop/whileといった変数の一時利用(都度、値が変わる変数)の場合はtmp, current_orderなどと、意図し- て変数は汎用的なものだと伝えることがある
  • 既存のプログラムで使われている名前と粒度、スコープがズレることのないようにすることは大前提?
gkzgkz

2章

  • 名前は具体的に、意味があり、非汎用的であること
  • for-loop/whileといった変数の一時利用(都度、値が変わる変数)の場合はtmp, current_orderなどと、意図し- て変数は汎用的なものだと伝えることがある
  • 既存のプログラムで使われている名前と粒度、スコープがズレることのないようにすることは大前提?
gkzgkz

3章

  • プログラミングの変数の命名力は、最低限の英語力があれば、ドキュメントで使われる単語で知ったほうが良いと思う
gkzgkz

4章

  • 改行する、しないはプロジェクトのローカルルールに従う、なければGoogleらが出しているコーディング規約に従う
    • 3.2 パッケージ文

    • パッケージ文は 改行してはならない。 文字数制限(4.4節 文字数制限は100文字 )はパッケージ文には適用されない。

    • import文は 改行してはならない。 文字数制限(4.4節 文字数制限は100文字 )はimport文には適用されない。

    • cf. Google Java Style Guide (非公式和訳)
gkzgkz

5章

  • コードには How

  • テストコードには What

  • コミットログには Why

  • コードコメントには Why not
    https://twitter.com/t_wada/status/904916106153828352?s=20

  • コメントの目的は、書き手の意図を読み手に知らせること

    • コメントするべきでは「ない」ことを知る。
    • コー ドを書いているときの自分の考えを記録する。
    • 読み手の立場になって何が必要になるかを考える。
    • コードからすぐにわかることをコメントに書かない。
    • ひどい名前はコメントをつけずに名前を変える
  • TODO/FIXMEなどが付いたコメントが消えることケースに出会ったことがない

    • 「コードからすぐ分かることはコメントしない」と「あまり知られていない書き方の解説をするためにコメントする」塩梅とは?
  • ファイルの機能に関する要約コメントまでいるか

    • ココでいうコメントとは、たとえばpythonのmethodの下にコメントアウトされたメソッドのディスクリプションのことなら必要と思う。ディスクリプションは__docs__で取得可能。
gkzgkz

6章

  • コメントの改善方法はなるほどと感じた。
  • 同時にバーバラミントのロジックピラミッドのイラストを思い出した。
  • 本来は自分の閃いたコメントに対して自問自答して上方の密度を高めていくべきだろうけどできていない。
  • できていないのは自問自答が面倒だと思っているから。
gkzgkz

7章

  • if文における左辺と右辺に書くこと

    • 数学でも左辺に変数、右辺に変数に代入されるものを書くからしっくりくる
  • 複数の条件が連なるときに最初に書く条件

    • 単純なものは同意。
    • 関心を引くものは実装社の主観によるところが多い感がしてなんとも。
    • 否定形と肯定系については、条件式に続くケースがシンプルなものを書くようにしている。
      • if-else文の条件が視界に入るように。
  • ネストの深さの対処法として早くreturnするというのはコーディングレビューで学んだ

    • ネストの深さとif-eleeの条件式の順番の決め方はトレードオフにも。
gkzgkz

8章

  • ド・モルガンの法則。
  • boolean値のようなものを定義して、boolean値がカラ、Falseであるかみたいな書きっぷりはすることがある。
  • 第三者でも分かる命名規則として、is_activeが思いついたけど、もう少し具体的にするとしたらなんだろう?
    xxx_found,xxxFoundとか?
gkzgkz

9章

  • 最後のwhile -> for-loopを使っての改善事例
  • 抽象化して法則、フレームワークとして落とし込むとしたらどうすればよいのだろう。
  • 本書で記載されているように、「変数を減らすこと」くらい?