Hyurakuのエンジニア日誌

SE出身Webエンジニアのブログ

リーダブルコードの備忘録その1 #27

リーダブルコードの一章と二章を備忘録がてらまとめてみた。

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

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

0. 前提

優れたコードとは 他の人が短い時間で理解できるコードである。

他の人とは、他人だけではなく 一年後や明日、もしかしたら1時間後の自分も含める。

1. 明確な単語を選ぶ

  • あいまいな単語ではなく、明確な単語を選ぶ

    たとえば次の関数があるとする。

def getPage()

getだけでも意味は通じているが、より意味を明確にするには fetch download memorizeという単語を選ぶべし。

他にも次の変数にも同じことがいえる。

int size()

sizeだけではどのような数量を表しているかわからない。
この場合はlength amount weightという単語を選ぶべし。

  • tmpやretvalなどの汎用的な名前は避ける

    • 戻り値の変数にretvalを使うのを避ける
    • tmptmp_filetmp_dataと意味をつけると読みやすくなる
    • 特にループイテレータijのほかにもよい名前がある

      Before

      python for i in ClassRoom: for j in Students:

      After

      python for classroom_i in ClassRoom: for student_i in Students:

  • 抽象的な名前ではなく、具体的な名前をつける

    TCP/IPポートをサーバがリッスンできるが確認するメソッドを作る。

    Before

    ruby def ServerCanStart()

    After

    ruby def CanListenOnPort()

  • 名前に情報を追加する

    開始時間や経過時間といった時間が関係する偏するなら、秒(second,s)やミリ秒(millisecond,ms)をつける。

    Before

    ruby startAt = Time.now

    After

    ruby startAt_s = Time.now

  • 名前の長さを決める

  • 名前のフォーマットで情報を伝える

    キャメルケースやスネークケースといったフォーマットで伝える。