リーダブルコード
 より良いコードを書くための
シンプルで実践的なテクニック
• Amazonレビュー
http://www.amazon.co.jp/%E3%83
%AA%E3%83%BC%E3%83%80%E3
%83%96%E3%83%AB%E3%82%B3
%E3%83%BC%E3%83%89-
%E2%80%95%E3%82%88%E3%82
%8A%E8%89%AF%E3%81%84%E3
%82%B3%E3%83%BC%E3%83%89
%E3%82%92%E6%9B%B8%E3%81
%8F%E3%81%9F%E3%82%81%E3
%81%AE%E3%82%B7%E3%83%B3
%E3%83%97%E3%83%AB%E3%81
%A7%E5%AE%9F%E8%B7%B5%E7
%9A%84%E3%81%AA%E3%83%86
%E3%82%AF%E3%83%8B%E3%83
%83%E3%82%AF-Theory-practice-
Boswell/dp/4873115655


• Togetterまとめ
http://togetter.com/li/333397
"美しいコードを見ると感動する。
 優れたコードは見た瞬間に何を
  しているかが伝わってくる。

そういうコードは使うのが楽し
いし、自分のコードもそうある
 べきだと思わせてくれる。"

 (リーダブルコード「はじめに」より)
「自分が書いたコードってどのくら
い覚えているんですか?」
「ほとんど覚えていないですよ。」
「直すときどうするんですか?わか
らなくなってるじゃないですか。」
「忘れても見たら簡単にわかるよう
に書いておくんですよ。」


  (リーダブルコード「解説」より)
第
名前に
情報を
       二
詰め込む   章
明確な単語を選ぶ
• get~はあまり明確でない(一体何を取る
  の?)
• 「カラフル」な単語を探す

単語      代替案
Send    Deliver , dispatch ,announce ,distribute,route
Find    search,extract,locate,recover
Start   Launch,create,begin,open
Make    Crete ,setup,build,generate,compose,add,new
明確な単語を選ぶ
class People{
    string name =“”;
    int height = 0;
    public int getSize(){
         return name.length();
    }
}

Sizeって一体どこのサイズだよ(゚Д゚)!
汎用的な名前を避ける(あるいは
   使う状況を選ぶ)
• tempとかretとか。
• このような汎用的な名前は生存期間が短
  い場合に使用する。
    String A = “a”;
    String B = “b”;

    // aとbの値を入れ替える
    String temp = A;
    A = b;
    B = temp;
汎用的な名前を避ける(あるいは
   使う状況を選ぶ)
• ループインデックスの i,j                       とかはOK。
for(int i = 0 ; i < rowcount ; i++)
{
  for(int j = 0 ; j < columncount ; j++)
   {
      array[i,j] = “hogehoge”;
   }
for(int row = 0 ; row < rowcount ; row++)
{
  for(int col = 0 ; col < columncount ; col++)
  {
      array[row , col] = “hogehoge”;
   }
抽象的な名前より具体的な名前を使う
• build.bat
< 何をビルド?


• build_custom.bat
< カスタマイズソースのビルドはわかった。モードは?


• build_custom_debug.bat
< カスタマイズソースをデバッグモードでビルドするのか!
名前に情報を追加する
• 値の単位

int start = DateTime.Now.Hour;
int startHour = DateTime.Now.Hour;
名前の長さを決める
• スコープが小さければ短い名前でもいい
  長く使われる変数の名前は長くてもわか
りやすい

• 長い名前を入力するのは問題ではない
  (ほとんどのIDEには入力補完機能が付
いている)
名前のフォーマットで情報を伝え
        る
• クラス名は CamelCase
• 変数名は lower_separated
(小文字をアンダースコアで区切ったも
の)
• 定数は CONSTANT_NAME
第二章まとめ
• 明確な単語を選ぶ
• tmpやretなどの汎用的な名前を避ける
• 具体的な名前を使って、物事を詳細に説
  明する
• 変数名に大切な情報を追加する
• スコープの大きな変数には長い名前を付
  ける
• 大文字やアンダースコアなどに意味を含
  める
おまけ
• #ワイルドプログラマ

http://togetter.com/li/300565?f=re
co1

リーダブルコード 第二章