概要
「責務」「パターン」「設計の原則」の3つを中心に設計プロセスについて説明しており、設計パターンをする前にSwiftにおけるプログラミングの作法を中心に説明している。
まとめ
「責務」「パターン」「設計の原則」の3つを中心に設計プロセスについて説明してくれている。
学び
・責務とは、解決すべき問題の領域のことで、モジュールに責務をまとめて置いている。
・責務分離が適切に行われた状態は、モジュール内で責務がまとまっており高凝集といい、モジュール同士では責務が分かれている疎結合状態という。
・あるモジュールの責務は、他のモジュールとは分離されているはずでありその境界線を崩してしまうと、重大なエラーを発生させてしまう可能性もある。
・Apple公式によるUIViewControllerの役割は、以下の4点である。
①データの変化に応じてViewsの内容を更新②ユーザーインタラクションへの反応③レイアウトの管理④他のオブジェクトとの連携
・関数や変数を命名する際には、「ユーザーがそこ関数の挙動を行うと、どのような処理を動くのか」を考えて命名すると他のメンバーも関数や変数に関して理解しやすい。
・APIデザインガイドラインによれば、API(Application Programming Interface)が守るべき以下の3つの原則が挙げられている。
①使い道を明確に②短い名前よりも明確であることが重要③ドキュメントコメントを書く
・正しい名前に向き合うことで、論理の破綻、隠れている役割、所属のおかしさを浮き彫りにし設計の改善につながる。その命名の際は、データと振る舞いのセットで書くことが望ましい。
・アジャイル開発は、「俊敏な開発」という意味でiOSアプリ開発にの現場ニーズにマッチしている。
・『設計の原則』とは、責務の分割単位が適切かどうかを検証するための物差しで、有名な設計の原則にSOLID原則がある。SOLID原則の考えから、「硬さ」「もろさ」「移植性のなさ」「扱いにくさ」「不必要な繰り返し」「不必要な複雑さ」「不透明さ」を取り除くべきである。
・しかし原則は、使い過ぎると不必要な複雑さが出てくる。そのため、オーバーエンジニアリングを防ぐための『KISS(Keeo it simple small:簡潔に単純にしておけ)』や『YAGNI(You Are not Going to Need it:どうせ必要にならないよ)』という原則がある。
・設計とリファクタリングは表裏一体のものであり、リファクタリングをすることで、『設計の原則』や『KISS』、『YAGNI』に対応する。リファクタリングとは、作り直しという意味ではない。常に少しずつ改良を重ねていくことが必要である。
・テスト駆動開発のプラクティスでは、「開発者の実装を助けるためのテスト」のことをチェッキングと言い、品質補償のためのテスティングと区別されている。
・テストにしやすさは、以下の3つが挙げられている。
①入力と出力が明確で、副作用が少ない②複雑な内部状態に依存しない③疎結合。処理に影響のあるオブジェクトは抽象的なインターフェースとして表現されており、モックやスタブに差し替え可能
・最速のテストは、型付けである。
・パターンを使うのは、開発をしながらリファクタリングを少しずつしてモジュール同士の結びつきを弱めたりしていくことで、「コードがデザインパターンに回帰していく」と言われる。
感想
現在携わっているプロジェクトは、MVPへ移行していたりしていなかったりとカオスな場面もあるので、少しずつリファクタリングして『パターンに回帰している』時期なのかなと感じました。アーキテクチャを学ぶ前にリーダブルコードで命名規則やその周辺の原則の知識を学んでおいて本章の内容もすんなり頭に入ってきました!