Masassiah Blog

現役サラリーマンのスキルアップのための読書まとめ

良いコード/悪いコードで学ぶ設計入門

コードを作成する機会が増えてきたので,2022年話題になった『良いコード/悪いコードで学ぶ設計入門――保守しやすい 成長し続けるコードの書き方』(仙場 大也,技術評論社,2022年5月12日)を読了。

すでに広く使われ確立している技術や解決法が存在しているにもかかわらず,知らないか,または意図的に無視して,新たに同じようなものをつくり出してしまうことを車輪の再発明と呼びます。(131 ページ)

意図しない車輪の再発明は避けたいところだが,意図して車輪を再発明することで実力をアップにつなげたい。

DRY 原則(Don't Repeat Yourself)と呼ばれる原則があります。直訳すると「繰り返しを避けよ」。一部では,DRY 原則が「コードの重複を許すな」といった解釈で広まっているようですが,原点『新装版 達人プログラマー 職人から名匠への道』では以下のように説明されています。

すべての知識はシステム内において,単一,かつ明確な,そして信頼できる表現になっていなければならない。(151 ~ 152 ページ)

コードの重複がないか,気を付けよう。

神クラスとは,1 クラス内に何千何万行ものロジックを持ち,あらゆる責務のロジックが,乱雑に絡み合うように書き殴られているようなクラスです。(177 ページ)

神クラスの御心を把握することは難しい。

目的駆動名前設計は,名前から目的や意図が読み取れることを特徴とします。そして名前「設計」と冠しているとおり,これまで紹介したオブジェクト指向設計や単一責任原則を守る設計のように,問題解決を意図したつくりにします。(205 ページ)

目的駆動名前設計を意識して設計を行う。

ラバーダッキングと呼ばれるデバッグ手法があります。これはプログラミングで何か問題が発生したときに,それを誰かに説明すると自ら原因に気づき,自己解決する手法です。ラバーダッキングの観点からも,声に出して話すのは分析行為として理に適っているのです。(214 ページ)

プログラミングの問題を言語化することで,原因に気づくチャンスを増やす。

プログラマーは職業柄,プログラミング関連のことで頭がいっぱいです。すると,命名のしかたがプログラミング用語やコンピューター用語由来のものになってしまうことがあります。技術ベースでの命名を技術駆動命名と呼びます。(224 ページ)

色々な命名がある中で,技術駆動命令もあることを知っておく。

パレートの法則と呼ばれる法則があります。ほんの一部分が全体要素を生み出しているとする法則で,「売上の 8 割は,全商品の内 2 割の商品が生み出している」「ソフトウェアの処理時間の内 80 % は,ソースコード全体の 2 割の部分が占めている」などの事象としてたとえられています。80:20 の法則とも呼ばれています。(338 ページ)

パレートの法則は,本当に色々な分野に適用できるのだな。

「3 日後の自分は他人」……,プログラミングの世界にはこんな言葉があります。自分が書いたコードでも 3 日も経てば意図を忘れてしまい,読むのに苦労してしまう,という格言です。(365 ページ)

たった 3 日後でも,意図を忘れてしまう。自分のためにも,意図を残しておこう。

学習のための指針(372 ページ)

  • インプットは 2,アウトプットは 8
  • 設計効果を必ず意識すること

インプットばかりしていないで,アウトプットに取り組む。