脱プログラミング初心者のためのバイブル「リーダブルコード」のススメ

★気に入ったらシェアをお願いします!


coding

photo credit: Maker-9153 via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

私もアラフォーながらプログラミングはまだまだ駆け出しですから、皆さんがプログラミングを学習されているときに、どんな書籍を手に取られているか気になります。

そんな中、とにかくプログラマーというプログラマーが皆さんオススメしまくっている本がありまして、それは気になるわけです。

おそらくほとんどのプログラマーが読んでいるとても有名な本

可読性を上げるための方法論をまとめたこちらの本は、月イチで読み返してもいいぐらいだと思います。

最近よくプログラミング未経験の方から、これからエンジニアとしてやっていきたい、もしくはそこまでいかなくても自分でプロダクトを作れるようになりたいけど何からやったらいい?っていう相談を受けるようになってきました。個別に色々話を聞きつつこれやってみたら?っていうリンク送ったりはしてたんですが、その人たちにとっての大ま...

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

本書はその名のとおり「読みやすいコード」を書くための実践的なテクニックを凝縮した本、私も読んでみましたので紹介したいと思います。

スポンサーリンク

なぜ読みやすいコードが大切なのか

プログラマーの皆さんは周知の事実だと思いますが、読みやすいコードを書くことは仕事の効率化という面では超重要です。

本書にも

コードは他の人が最短時間で理解できるように書かなければいけない。

書いてあります。

チームで手分けして作業をしているとき、誰かがぐちゃぐちゃのコードを書いていたら、とっても迷惑なのは想像に容易いと思います。

一方で、主に一人で開発を進めている場合は自分さえわかれば良いという気もしますが、どう思われますか?

私も一人で開発をする場合が多いプログラマーの一人です。

本書はそんな甘えをこんな風に諭してくれます。

「他の人」というのは、自分のコードに見覚えのない6カ月後の「君自身」かもしれない。君のプロジェクトに途中から誰かが参加しないとも言い切れない。「使い捨てのコード」が他のプロジェクトで再利用される可能性だってある。

既に運用フェイズに入り稼働しているプログラムも何か不具合があればコードを調べなければいけませんし、業務フローに変更があればそれに合わせて調整をする必要があるかもしれません。

また、過去に作ったプログラムの一部を、新たなプロジェクトでも活用できる可能性もあります。

さらにさらに私の場合はそのプログラムの一部を改変してブログのネタに使わてもらうこともあります。

そう考えると、一度書いたコードは何度も使える大事な資産で、コードを読みやすく書くという行為はその資産を最大限に価値を高めておくことに他ならないわけですね。

初心者でもできる「リーダブルコード」テクニックBEST5

本書の冒頭で

本書では、C++・Python・JavaScript・Javaといったプログラミング言語を使っている。いずれも応用的な機能は使っていないので、言語のことをよく知らなくても難なく読み進められると思う

とあります。プログラミング初心者で全ページのすべてをちゃんと理解するのは難しい部分もあるのですが、そのほとんどは

  • 変数や関数のネーミングの仕方
  • コメントの付け方
  • コードを書く順番
  • 改行やタブの使い方

など、初心者でも十分にわかる内容なので、わかるところまで読むのが良いですね。

そしてまた学習を重ねて自分がある程度進歩したときに再度読み直す…というのを何度か繰り返すというのが、本書のベストの読み方だと思います。

今の時点で私が目からウロコを流したTIPSについてBEST5を紹介したいと思います。

「空虚な」単語は避けるべき

「get」という単語からは何も伝わってこない。このメソッドはページをどこから取ってくるのだろう?ローカルキャッシュから?データベースから?インターネットから?インターネットから取ってくるのであれば、FetchPage()やDownloadPaga()のほうが明確だ。

本書では名前に情報が詰め込まれていない単語を「空虚な」単語と呼んでいまして、それは避けるべきと伝えています。

いやね、「get」なんてアチコチで採用されているんですよ。

【エクセルVBAでIE操作】hタグなどの要素をタグ名でGetする
エクセルVBAでIEを操作する初心者向けのシリーズの6回目です。今回はタグ名で要素をゴソっと取得するgetElementsByTagNameの使い方です。様々なHTML要素を簡単に取得できます。

ほらね。

取得する、という時は今まで何も考えずに「get」としていましたが、まずは他の単語で表せないかと考えるようになりました。

英単語のストックを増やしておかないとですね。

イテレータはi,jでなくても良い

for文やwhile文でカウント用変数としてi,jをよく使います。

この変数をループイテレータと言います。

慣例としてi,jを使うのでこれはこれで「ループイテレータなんだな」とわかりやすいので良いのですが

イテレータが複数あるときには、インデックスにもっと明確な名前をつけるといいだろう。i・j・kではなくて、説明的な名前(club_i・members_i・users_i)にするのだ。あるいは、もっと簡潔なもの(ci・mi・ui)でもいいだろう。

なるほどー!目からウロコです。

ちなみに、iという変数がIteratorという単語から来ているというのも本書を読んで気づきました…汗

ブール値にはis,has,can,shouldを使う

ブール値というのはtrue,falseのどちらかを取る値のことです。

ブール値の変数名は、頭にis・has・can・shouldなどをつけてわかりやすくすることが多い。例えば、SpaceLeft()という名前は数値を返すように聞こえる。ブール値を返したいのであれば、HasSpaceLeft()という名前にしたほうがいい。

変数の値や関数の戻り値が二択であることがわかるような名前にしろということですね。

縦の線をまっすぐに揃える

コードを書く場合、インデントはよく使いますが、それ以外の縦の列はそれほど気にしていませんでした。

例えば

これは読みづらいですよね。たとえコメントでも

このように揃えると見やすくなります。

コメントをタスク管理や例示として使う

コメントは自由に書けるのでその活用法は多岐に渡ります。

ブログにコードを記載する場合は、その命令を知らない人のために説明のコメントをつけています。

が、私のコメントの使用例なんてそんなものだったのです。

本書では様々なコメントの活用法が紹介されていまして、例えば

// TODO:もっと高速なアルゴリズムを使う

というように残タスクを記録したり

// 実例:Strip(“abba/a/ba”,”ab”)は”/a/”を返す

などのように入出力例の実例を記載したりという使い方もありますよね…うまく使うと未来の自分がすごく助かるのではないかと思います。

業務にも「リーダブルコード」を活用する

読み進めていくにあたり、本書の内容ってプログラムを書くのもそうなのですが、その他の業務、つまりプログラム以外の全てのドキュメントについても非常に参考になると感じました。

例えば、エクセル。

  • ファイル名、シート名はその内容を適切に表しているか?
  • どのシートが計算過程で、どのシートがアウトプットなのか?
  • フォントの種類やサイズがバラバラで見づらい

など、「他人」が見やすいか?チームワークや未来の自分の仕事を考えるとその効率に大きな影響を与えるのは間違いありません。

エクセル以外にも、マニュアルを作るときも、プレゼン資料を作るときも、メールの文章を書くときも、テクニックとして使えますよね。

業務担当者でこれからプログラミングを勉強したいと思われている方などは、そういう視点で本書を勉強頂けると一石二鳥で学びになると思います。

まとめ

本書はわずか200ページそこそこなのですが、税抜2400円と、まあまあのお値段です。

しかしながら、よく考えて下さい。

本書でコードの可読性について勉強をした結果

  • コーディングやテストがはかどるようになった
  • 過去のコードの再利用がしやすくなった
  • 運用フェイズでのメンテナンスがしやすくなった
  • プログラムに限らずチームとの連携がスムーズになった

などのメリットを考えると、2400円なんて価格は簡単にペイしてしまいます。

初心者には少し難しい部分もありますが、わかる部分を読むだけでも全然違いますので、ぜひお手元において頂ければと。