猫型エンジニアのブログ

プログラム/ネットワーク系の技術関連をまとめたページです 

リーダブルコード

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

最近また読み直したのでメモメモ。

第1章 理解しやすいコード

本書では「優れたソースコード」を以下のように定義している。なおここで「他人」とは「2週間後のソースコードを書いた本人」も含まれていることに注意!!

  • 優れたソースコードとは他人が理解するまでかかる時間が最短であるようなコード。

第2章 名前に情報を詰め込む

具体的な単語を選ぶ
  • get/size/stop等の「汎用的に利用される名前」は避けること。
  • tmp/it/retvalのような汎用的な名前を用いる時は、「ループ中のイテレータや、明示的に意味のない値」などに限ること。

例:getの代わりに取得プロセスが記載されているDownloadやFetchの方が望ましい。

  • getPage( )→DownloadPage( ) or FetchPage( ) 
  • Size( )→ Height( ) or NumNodes( ) or MemoryBytes( )
  • Stop( ) → Kill( ) or Resume( ) or Pause( )
  • retval → sum_squares
  • ServerCanStart( ) → CanListenOnPort( )
名前に属性を詰め込む

名前に単位・属性・型を入れる

例:delayだけよりも、秒単位でのという付加情報のあるdelay_secの方が望ましい。

  • id→hex_id
  • delay→delay_sec
  • password→plaintext_password
  • commnet→unescaped_comment
  • html→html_utf8
  • data→data_urlenc
名前の長さを決める

スコープが小さければ短い名前を、大きければ長い名前を
情報がそこなわれないなら省略する

  • ConvertToString( )→ToString( )
  • DoServerLoop( ) → ServerLoop( )

大文字・アンダースコアに意味を持たせる

Google社のオープンソースの場合

  • クラス名はキャメルケース
  • 変数名はlower_separated
  • クラスのメンバ変数は_で終わる
  • 定数はkConstName
  • マクロはMACRO_NAME