プログラマーの基礎ともいえる考え方が非常に参考になったので、シェアします。これを知っているだけで、コードの読み手の理解を深めることができるはずです。
プログラミング初心者はぜひ確認を。
1 短いコードがいいコードなのか?
プログラマーにとって、短いコードがCoolという考えがありますが、短すぎて読み手の理解を妨げていては意味がありません。
コードは短くした方がいい。だけど、「理解するまでにかかる時間」を短くする方が大切だ。
以下の1行のコードよりも、
assert((!bucket = FindBucket(key))) || !bucket->IsOccupied());
よりも、以下の2行のコードの方がわかりやすい。
bucket = FindBucket(key); if(bucket != NULL) assert(!bucket->IsOccupied());
あまり、詰め込みすぎると悪いコードになってしまうことがあります。
スポンサーリンク
2 明確な単語を選ぶ
複数の意味に解釈できる単語を変数や関数のなまえとして使うのは、やめましょう。
例えば、getなどが意味のあいまいな単語に該当します。
以下のことに気をつけましょう。
・getは、明確ではない。fetch, downloadを使う。
・sizeも明確でない。どんな単位なのかを明確にして、名前を付ける。
=>height, numNodes, MemoBytesなど。
・語尾に単位をつけるとわかりやすい。
以下は、曖昧な単語の代替案リストです。
なまえに迷ったら、こちらを参考にしてみて下さい。
単語 | 代替案 |
---|---|
send | deliver, dispatch, announce, distribute, route |
find | search, extract, locate, revcover |
start | launch, create, begin, open |
send | deliver, dispatch, announce, distribute, route |
スポンサーリンク
3 コードを段落に分けて、コメントをつけておく
関数の中で、複数の処理を行う場合、それぞれの処理を段落で分けると読み手が理解しやすくなります。
例えば、ユーザー情報と、Eメールのパスワードを受け取って、ユーザーのアドレス帳から
まだ友だちになっていないユーザーを捜して、提案するsuggest_new_friendsという関数があるとします。
その場合、関数の中では、以下のように書くとわかりやすいでしょう。
def suggest_newfriends(user, email_password):
#ユーザーの友だちのメールアドレスを取得する
hoge
#ユーザーのメールアカウントから全てのメールアドレスをインポートする
hogehoge
#まだ友だちになっていないユーザーを捜す
hogehogehoge
#それをページに表示する
hogehogehogehoge
こうすることで、概要把握→読みたい部分のコードを読む という流れができます。
4 コメントするべきではないことを理解する
コードからすぐにわかることをコメントに書家内法がいいようです。
コメントよりも、関数の名前で理解してもらえるようにしましょう。
「優れたコード > ひどいコード + 優れたコメント」
これは、いいコードを書こうということを意味しています。
5 監督のコメンタリーを入れる
コメントには、DVDの特典でよくあるコメンタリーのように
コードに対する大切な考えを記録しましょう。(このコードを書いた背景など)
大切な考え方を表現する手段として、以下のものがよく使われます。
よく使われる記法
TODO: あとで手をつける
FIXME: 既知の不具合があるコード
HACK: あまりきれいじゃない解決策
XXX: 危険!大きな問題がある
6 相手の立場になって考える
コードを読んだ人が「えっ?」と疑問に思うところを予想してコメントをつける。
当たり前ですが、非常に重要なことです。
7 変数のスコープを縮める
グローバル変数は避けましょう。
これは、グローバル変数というのは、どこでどのように使われるのかを追跡するのが難しいからです。
また、アクセスはできるだけ制限して、変数のことが「見えてしまう」コードを減らすのがいいとされています。
というのも、これにより一度に考えなければいけない変数を減らせるからです。
プログラミング初心者は各言語で良いコードを書けるように
・変数や関数名は何となくつければいいのではない
・コードを読む前に、なまえでどんな処理をしているか理解してもらえる名前がいい
・明確な意味の英単語を使う
・プログラマーに英単語の知識は必須
英語の力も必要となると、なかなかしんどいですが、いいサービスをつくるためには必須の分野ですので、そこは受け入れて、勉強していく必要がありそうですね。
なお、プログラミングに関して質問したい事があれば、エンジニアのためのQ&Aサイト【teratail】を利用してみましょう。エンジニア版のYahoo!知恵袋として、質問に回答してもらう事ができます。
英語学習に役立つ関連記事
英単語を楽しく覚えるための革命的な方法
社会人でも英語の勉強が長続きするiPhoneアプリを紹介!ブログのネタにも!
英語、ビジネス、お笑いが無料で学べるPodcastがスゴすぎて、もはやAppleに足を向けて寝れない
質の高い英語が無料で学べるPodcast がすごい! みんながおすすめする7タイトルはこれだ!