こすげのブログ

金髪エンジニアのブログ

【読書】「Code Complete 第2版 上 完全なプログラミングを目指して」の感想 その8

はじめに

今回は第4部 ステートメント第14章 ストレートなコードの構成から第19章 制御構造の問題まで読みました。

無事、全ての章を読み終えましたー。

ステートメントということでしたが、特にこういう意味だよっていう文章がありませんでした。

読んだ結果、「コードの品質、可読性、正当性、保守性」などをステートメントと言っていたと思います。

ここら辺に関しては、人に読んでもらって初めて身につくのかなって思いました。

ということで読了率は無事100%になりました。

この本を読んだ感想はまた違う記事で書きたいと思います。

Code Complete 第2版 上 完全なプログラミングを目指して

Code Complete 第2版 上 完全なプログラミングを目指して

ハイライト

ほとんどしませんでした。

なぜかというと、すべて当たり前の言葉で書かれていたからです。

時々面白い言い回しなどありましたが、でも言いたいことはシンプルだなって思いました。

第14章 ストレートなコードの構成

ハイライトは特になし。

実行するメソッドの順序が決まっているものなどを例に挙げてどうすればわかりやすいかを説明した章でした。

自分でソースコードを書いているときは、このメソッドで初期化して、その後このメソッドでこのクラス変数に値を入れてなど順序を考えて実行することが多いと思います。

しかし、そのソースコードを人(他人)が読んだ時、どう思うのかを考えたらこう書くよねっていう紹介でした。

  • メソッドの名前を明確にする(順番通りになっているよっていうのを明確にする)
  • 引数を使って依存性(順番)を明白にする

などして、工夫しましょうって紹介でした。

また順番が影響しないのであれば、近接の法則で使う変数やらメソッドを近くにまとめましょうというものでした。

第15章 条件文の使用

ハイライトは特になし。

if文やcase文のことの説明でした。

巷で言われるif文やらcase文の書き方、条件文の書く順番などの話でした。

第16章 ループの制御

for文やwhiledo whileなどの使い所などの説明でした。

言語によってはforeachfor inなどもあるかと思います。

ループの入り口や出口の話などを取り上げていました。

第17章 特殊な制御構造

1つ目は、コンピュータサイエンスの教科書に載っている再帰の例は、世の中のために役立たないことである。

2つ目の、そしてそれよりも重要なことは、階乗やフィボナッチ数列のややこしい計算からは想像できないほど、再帰が強力なツールであることだ。

3つ目の、そして最も重要なことは、再帰を使用する前に他の手段を検討すべきだということである。

再帰を使って行えることはすべて、スタックと繰り返しを使って行うことができる。

どの方法が良いかは状況次第である。必ず両方を検討してから、どちらにするか決めること。

17.2.2 | 再帰の使用に関するヒント

ということで世に転がっているフィボナッチ数列再帰処理はやめたほうがいいとのことでした。

まあ実用するなってことなんでしょうけども...。


あとはgoto文の説明など、ちょっといらない情報が多かった章でした。

ちなみにgoto文はAction Script 1.0でゲームを使っていた時によく使わせてもらいました。

あとはlabelを使ってわかりやすく制御しようということも書いてありました。

Swiftでも2.2からlabelが使えるようになりました。

例えば以下のような例で使用します。

hoge: while (true) {
    if (true) {
        break hoge
    }
}

みたいなやつ。(間違っていたら御免なさい)

これも同ページ内で書いておけばbreakが何を終了させたのかという可読性が上がります。

なので、結構僕は多用しています。

第18章 テーブル駆動方式

テーブル駆動方式とは、論理文(ifやcase)を使って情報を検索する代わりに、テーブルの情報を参照するしくみである。

第18章 テーブル駆動方式

これはゲームのマップなどで使われるやつですね。

1だったら草のマップ、2だったら岩、3だったら川みたいなのをエクセルとかで定義して、読み込むだけというやつです。

この本では保険料の税率やら文字の分類だったりなどを取り扱っていました。

いちいちif文で全てを羅列するくらいなら、テーブルみたいに(RDBみたいな感じですね)分けて、どこかをkeyに検索すればもっと可読性や汎用性などが向上するという話でした。

そのアクセス方法も

  • 直接アクセス
  • インデックスアクセス
  • 段階型アクセス

のパターンがあるということでした。

ここに関してはこういう考え方をできるようになったらもっと楽に考えられるなーと思いました。

第19章 制御構造の問題

ハイライトは特にありません。

そして特別なことも書いていませんでした。

論理式や複合分、nullなどの使い方、ネストの回避などなどごく当たり前なことが書かれていました。

ただ何度も書いてはいますが、こういうのを書かれた文章を読んだことがなかったので、とても新鮮でした。

感想

ステートメントについて書かれていた部なだけあって、ソースコードが多く出てきた印象がありました。

そして、他の章への参照も多く、集大成な感じがありました。

言語ごとに書き方は違うけど、意識は同じく持っておくことでだいぶ違うのかなって思いました。

Code Complete 第2版 上 完全なプログラミングを目指して

Code Complete 第2版 上 完全なプログラミングを目指して

終わりに

無事、読み終えてホッとしています。

kindleさまさまです。

そしてiPhone6sの保護シートとカバーをAnker製の別のやつに変えました。

Anker大好きなのです。

ちなみに以前使っていたやつ

これ、うまく貼らないと両端がちょっとかぶって画面が小さく見えてしまいます...。

フルフェイスっていいかもしれませんが、失敗すると残念なことになるのでお気をつけください。

そして今回、初めてガラスフィルムを取り替えたんですが、つけていたやつを剥がす時、バリバリってガラスフィルムが割れるので力ずくでやるのをお勧めしません!

机がガラスまみれになったので、皆さんも新しいガラスフィルムに新調する時はお気をつけください!

以上です。