ひょんなことからクオカード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版でしょうか。
この本は立ち読みでチラッと見たんですが、すごく気になるところとサッパリわからなそうなところがいっぱいあって読み通すにはちょっと骨が折れそうですw
ただ、職業プログラマーじゃない人がきちんと理解するためにはこーゆー本で勉強しないとダメなのかもしれませんね。
ちょっとお高いのですぐには手が出ませんが、いつか手に入れたいと思います。
コメント