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

By: Chris
ひょんなことからクオカード1,000円分が手に入ったので、前から読んでみたかったプログラミング関係の本を買ってみました。
Code Completeもものすごく良いという評判を聞いていたんですが、立ち読みした感じ、まずはとっつきやすそうなリーダブルコードからw
今までの間違いに気付かされました
立ち読みの段階でも感じたんですが、とにかく読みやすいです。
翻訳が上手なんでしょうね。翻訳文独特の違和感が全く無いです。
内容も実践しやすいものからちょっと難易度の高そうなところまで色々あって勉強になります。
特に印象に残ったポイントが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
ただ、職業プログラマーじゃない人がきちんと理解するためにはこーゆー本で勉強しないとダメなのかもしれませんね。
ちょっとお高いのですぐには手が出ませんが、いつか手に入れたいと思います。
関連記事
-
-
JForexで注文画面を自作する
NDD方式で約定力の高さが魅力のJForexですが、注文画面がちょっと使いにくく …
-
-
JForexでスタンドアローンアプリを自作する
前回まではJForexs採用業者で提供されているチャートツールへの追加機能として …
-
-
JForexで注文画面を自作する(新規注文に有効期限を設定)
前回作成した指値・逆指値注文画面のときにまとめて作ってしまえば良かったんですが忘 …
-
-
JForexで注文画面を自作する(成行注文と全決済)
まずは成行注文と全決済が出来るようにしたいと思います。 GUIのパーツはEcli …
-
-
Pythonスタートブックを読みました
Sublime Text3きっかけで、前からちょっと触ってみたいなと思ってたスク …
-
-
Pythonチュートリアルを読みました
Pythonを勉強するにあたって、最初にPythonスタートブックという本を読み …
-
-
JForexで注文画面を自作する(ブレイクアウト注文)
前回まででカンタンですが結構使い勝手の良い指値・逆指値注文まで出来ました。 今回 …
-
-
Pythonのwith文
このところ興味の矛先がPythonからRaspberry Piに移りつつあります …
-
-
Pythonのlxmlモジュールをインストールする
Pythonの勉強のためにYahoo!の検索結果からタイトルとリンクを抽出するP …
-
-
Pythonでニコ生アラートを作る(放送通知サーバをクラス化する)
前回までのスクリプトでニコ生の放送通知を受け取ることが出来たので、今回はもう少し …