Help us understand the problem. What is going on with this article?

リーダブルコードにするために 〜まとめ〜

More than 3 years have passed since last update.

はじめに

"他人が読んでも簡単に理解できる"
そして
"後から自分が見返しても何がしたかったのかすぐに思い出すことができる"
ようなコードを書くことを心がける。
当たり前のようで、とても大事なことだが、自分はまだまだできていないと思ったので、改めて『リーダブルコード より良いコードを書くためのシンプルで実践的なテクニック』を読んでみた。(2017年のGWを使い)

この本
↓↓
https://www.oreilly.co.jp/books/9784873115658/

そこで、自分なりに思ったことをまとめておく。備忘録。
基本こそ大事でありそれを習慣にするため。(もしまたこの習慣を忘れかけてきた時に、これを見ることで記憶をフラッシュバックさせるためにも)

リーダブルのために大事なこと

見てすぐわかるコードへ

『コードは理解しやすくなければいけない』/『コードは他の人が最短時間で理解できるように書かなければいけない』
これ、当たり前だが、めちゃくちゃ大事。

コードを単に短くするわけではなく、理解するまでの時間を短くする。

最後まで読んでも結局全てのことはここに終着した。
つまり、リーダブルコードで目指すはここ。(簡単なようで難しく奥が深い)

変数名は慎重に決める

変数名から中身が伝わるようにする。スコープが小さいなら短くても良い。

汎用的な名前は避けて、かつ、的確な単語を使い情報を詰め込む
(キャメルケースなどフォーマットも守った上で)

ブール値の名前の決め方は、それがブール値とわかるよう is や has などの単語を使う。
(自分は時々これをできておらず、他人から見てわかりづらい名前つけてたな〜と思った)

意味のあるコメントアウトを

コードからすぐわかることはコメントに書かない。
これもたまに守れてなかったかな〜。
もっと自分が書いたコードを客観的に見て、『コード見たらわかるわ!』ってなるコメントがあれば省いてこう。

if/elseなども中身をわかりやすく

基本は、条件は否定形よりも肯定形を使うこと。
あとは。こういう条件やループなどの制御フローはできるだけ自然にして、読み手が立ち止まったり読み返したりしないようにする。

シンプルな設計に

  • 関数から早く返す
  • ネストを浅くする
  • ド・モルガンの法則を使う
  • 説明変数/要約変数を使う
  • 大きすぎるものは細かく分割
  • グローバル変数は避ける
  • メソッドをできるだけstaticに
  • 汎用コードをたくさん作る
  • コードは一つずつタスクを行うように
    (上記のものの詳細は実際の書籍で。このキーフレーズを見てもなんのことか思い出せなかったらもう一度この本読むためにあえてこうしとこっと。)

  • 頭が良いコードに気をつける
    これめっちゃ納得した。現在進行形でそこのコード周りを考えている時は
    すごい作りや流れを理解してるから、
    数行で複雑なことをしてもわかるし実際に正しく動作するようにできているかもしれないけれど、
    後から見た自分とか他の人ってこんなの見づらくしかないよなぁ〜って。
    実際は期待通りの動きをしてたとしても、他の人からコードの動きが把握しにくいって状態じゃ、
    後からコードを他の人が付け足したり、自分が2ヶ月後にその部分のエラー修正することなった時困るのが目に見えてる、、。

大事なことのはじめにあるよう『見てすぐわかるコード』にするべく、常日頃、書く時は
コードのこととか全くわからない人に自分をなりきらせて客観的に
なって書くことだなぁ。

最後に

自分が書いている言語の標準リファレンスをたまには眺めてみるといい。
これ絶対大事だね。
自分がやりたいって思っている細かいとこが実は用意されているもので解決できるかもしれないし、ちゃんとどこまで標準でできて、どう拡張すれば応用きかせれるかなとか考えていこう。

とりあえず、個人的には2点。
標準リファレンスは把握する!!
書くコードは自分のおばあちゃんが見てもすぐに中身をわかってもらえるくらいに!!
は徹底することをいつか読み返した時の未来の自分に誓います。

YuukiWatanabe
まだまだ勉強中です。 最近は休日、Xcode(swift)でiOSアプリ開発とUnity(C#)でVRゲームアプリ開発をしています。IoTとVR/ARにかなり興味あり。よろしくお願いします。
yahoo-japan-corp
Yahoo! JAPAN を運営しています。
https://www.yahoo.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away