リーダブルコードを読みました

ひょんなことからクオカード1,000円分が手に入ったので、前から読んでみたかったプログラミング関係の本を買ってみました。

プログラミングに関する本で

  • Code Complete
  • リーダブルコード

という2冊が気になってたんですが、両方を立ち読みして、とっつきやすそうなリーダブルコードに決めました。

スポンサーリンク

今までの間違いに気付かされました

立ち読みの段階でも感じたんですが、とにかく読みやすいです。

翻訳が上手なんでしょうね。翻訳文独特の違和感が全く無いです。

内容も実践しやすいものからちょっと難易度の高そうなところまで色々あって勉強になります。

特に印象に残ったポイントが2つあって、ひとつは

どうして1行で書こうとしたのだろう?そのときは「オレは頭がいい」と思っていたのだ。ロジックを簡単なコードに落とし込むことに一種の喜びを感じていた。(102ページより引用)

ってトコです。

この文章のちょっと前に説明変数要約変数の紹介があったんですが、コーディングの段階では説明変数や要約変数にあたる変数を作成してるのに、一段落したらあえて省いてました

何となく変数に一回代入する文無駄が多いのかなと思って省いてたんですが、読みやすさを考えるとダメだったんですね、コレw

そして、もうひとつは

関数で複数のreturn文を使ってはいけないと思ってる人がいる。アホくさ。関数から早く返すのはいいことだ。むしろ望ましいときもある。(91ページより引用)

ってトコですね。

確かにコレも思ってましたw

出口が色んなとこにあるとわかりにくいのかなと思って極力避けちゃってたんですよね。

他にも変数名・関数名といった取り掛かりやすい問題から制御フローの再構成に至るまで見直すポイントは沢山あります。

ただ、最後のケーススタディ(「分/時間カウンタ」を設計・実装する)で急に難易度が上がったように感じてしまったあたり、実際にリーダブルコードを実践するのは一朝一夕には行かないようです。

難しいと感じたのはわたしがC++を全く知らないせいかもですが…w

でも、出来上がったコードは美しいと思いましたよw

あーゆーコンパクトでわかりやすいコードかける人がホントのプログラマーさんなんでしょうね。

Sublime Text3に追加パッケージをインストール

見た目的な美しさ(読みやすさ)の点で、縦の線をあわせるのが良いと紹介されていたので、コレを機にSublime Text3にもコード整形に役立つパッケージをインストールしました。

Alignment

以前読んだWeb制作者のためのSublime Textの教科書という本で

という2つのパッケージが紹介されてたんですが、Alignmentの方がイメージどおりの動きをしてくれたのでコチラを使用しています。

Python Flake8 Lintの設定変更

ただ、Alignmentでコードを整形するとPython Flake8 LintでE221エラー(オペレーターの前にスペース多い)が連発しちゃうので、ユーザー設定のignoreに”E221″を追加しておきます。

{
    // set desired max line length
    "pep8_max_line_length": 99,
    // skip errors and warnings (e.g. ["E303", E4", "W"])
    "ignore": ["W191","E261","E221"],
}

使ってみると

#Alignment前
details = request.POST.get('details')
location = request.POST.get('location')
phone = equest.POST.get('phone')
email = request.POST.get('email')
url = request.POST.get('url')

#Alignment後
details  = request.POST.get('details')
location = request.POST.get('location')
phone    = equest.POST.get('phone')
email    = request.POST.get('email')
url      = request.POST.get('url')

一目瞭然で見やすいですねw

本でも紹介されてましたが、変数名のスペルミスなんかはすぐわかります。

こーゆースペースで列を合わせるのって結構面倒なんですけど、Sublime Text3使って簡単に整形できるならやる気になりますw

オススメされていた書籍のまとめ

高品質のコードを書くための書籍

Code Complete第2版 完全なプログラミングを目指して 上 / スティーヴ・マコネル
created by Rinker

Code Complete第2版 完全なプログラミングを目指して 下 / スティーヴ・マコネル
created by Rinker

リファクタリング新装版 既存のコードを安全に改善する (OBJECT TECHNOLOGY SERIES) [ マーチン・ファウラー ]
created by Rinker

プログラミング作法 / 原タイトル:The Practice of Programming[本/雑誌] / BrianW.Kernighan/著 RobPike/著 福崎俊博/訳
created by Rinker

達人プログラマー新装版 職人から名匠への道 [ アンドリュー・ハント ]
created by Rinker

Clean Code アジャイルソフトウェア達人の技【電子書籍】[ Robert C.Martin ]
created by Rinker

プログラミングに関する書籍

JavaScript:the good parts 「良いパーツ」によるベストプラクティス [ ダグラス・クロフォード ]
created by Rinker

Effective Java/ジョシュア・ブロック/柴田芳樹
created by Rinker

オブジェクト指向における再利用のためのデザインパターン改訂版 [ エリック・ガンマ ]
created by Rinker

珠玉のプログラミング 本質を見抜いたアルゴリズムとデータ構造 [ ジョン・ルイス・ベントリ ]
created by Rinker

ハイパフォーマンスWebサイト 高速サイトを実現する14のルール [ スティーブ・サウダーズ ]
created by Rinker

More Joel on software [ ジョエル・スポルスキ ]
created by Rinker


どれも興味ありますけど、この中だとまずはやっぱりCode Complete第2版でしょうか。

この本は立ち読みでチラッと見たんですが、すごく気になるところとサッパリわからなそうなところがいっぱいあって読み通すにはちょっと骨が折れそうですw

ただ、職業プログラマーじゃない人がきちんと理解するためにはこーゆー本で勉強しないとダメなのかもしれませんね。

ちょっとお高いのですぐには手が出ませんが、いつか手に入れたいと思います。

コメント

タイトルとURLをコピーしました