読者です 読者をやめる 読者になる 読者になる

こすげのブログ

金髪エンジニアのブログ

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

Kindle 読書

はじめに

今回は第1部 第4章 コンストラクションの重要な決断から第2部 第5章 コンストラクションにおける設計までを読みました。

通勤時間の行きの40分とお昼の1時間くらいの時間をかけて読みました。

現状でだいたい32%くらいの読了率と表示されてます。

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

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

ハイライト

今回読んだ中でハイライトした部分をピックアップしてます。

第4章 コンストラクションの重要な決断

テクノロジの波のどの位置に乗っているのかによって、どういうアプローチが効果的なのか、あるいはどのアプローチが可能なのかが決まる。テクノロジの波のどこに乗っているのかを見極め、それに応じて計画や予測を調整しよう

4.5 | まとめ

これがとても大事かと思いました。

プロジェクトを進める上で、どの言語を使用するのか。

使用していく中での学習コストが許容される範囲なのか。

はたまた引き継ぎ等で他の人が入った時に問題ないかなどを考えなければいけないですね。

第5章 コンストラクションにおける設計

  • すべてのソフトウェア設計手法の目標は、複雑な問題を単純な問題に分割することである。

  • 人間の限界というものを心得ているプログラマは、自分にとっても他人にとっても理解しやすく、エラーの少ないコードを書く。

5.2.1 | ソフトウェアの鉄則 : 複雑さへの対応

同じ項に書かれていたのでまとめました。

ViewControllerクラスの肥大化はiOSエンジニアの最初にぶち当たるソースコードの壁かと思います。

そこらへんをうまく分割する方法はQiitaによく書かれていますが、それを何故するのかを学んだ時に1歩前進できるのかなと思っています。

かけて動くからそれでいいだと難しいですよね。

と言う自問をした文章でした。


「何を隠ぺいすべきか」と自問する習慣をつけよう。多くの難解な設計問題が目の前で解決されるのを見て、驚くことになるだろう。

5.3.5 | 秘密の隠ぺい (情報隠ぺい)

クラスの設計をする時に考えることかと。

そしてどこのドメインまで公開する(知る)必要があるのかも一緒に考えます。

いつからか(正確には先輩に教わった時)意識するようになりましたが、こうやって文章を読むことで改めて意識できるなって思いました。


システムが変更される可能性を考慮して、変更の影響または範囲が、その変更が発生する可能性に見合うようにシステムを設計しよう。

5.3.6 | 変更の可能性が高い領域の特定

これってすごい難しいですよね...。

とにかくサービスを知ること、ディレクターと話すことが大事なのかなと思います。

仕様書だけだとわからないことかと。

Swiftだとprotocol extensionを使用していればある程度は大丈夫かと思いますが...。

またglobalで宣言せずに、できる限りコードを集約して変更箇所を少なくしようみたいなこともこれの前の文章あたりに書いてありました。


最も効果的なガイドラインの1つは、1つの方法にこだわらないことである。設計をうまくUML図に表せない場合は、言葉で書いてみる。簡単なテストプログラムを書いてみる。別の方法に切り替えてみる。ブルートフォースを検討する。概要をまとめ、それを図に描きながら、頭で追ってみる。どれもうまくいかなかったら、問題から離れてみる。散歩に出かけてもよいし、別のことを考えてもよい。それから問題に戻る。ベストを尽くしたが効果はなかったという場合、しつこく考え続けるよりも、いったん頭から問題を締め出す方が、結果が早く出ることが多い。

5.3.11 | ヒューリスティックスを利用するためのガイドライン

柔軟に行こうよってことですよね。

案外これが難しいので、意識して取り組みたいなと思います。


設計をレビューしてくれそうな人が見あたらない場合は、最初の設計ができ上がったら、それを引き出しにしまい、1週間後に取り出す。1週間もすればすっかり忘れているので、自分だけでうまくレビューできるはずだ。

5.4.5 | コラボレーティブな設計

確かにと思った文章でした。

現状コードレビューができない(余裕がない)環境なので、ちょっと試してみます。

感想

第4章までは第1部としてプロジェクトの導入部分(開始する前の準備段階)の話だったため、あったら嬉しいなーってことが書かれていました。

ただ第5章からはエンジニア担当のクラスの設計など具体的な内容が書かれていたので一気に緊張感が生まれました。

ここら辺は読み終わった後に再度振り返ってみたいと思いました。

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

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

終わりに

ここからちょっと読むペースが落ち着きそうな感じがしています。

kindleサイコー