Takuto WadaさんのPHPerKaigi2022のセッション動画を拝見しました。
発表スライドも個別にspeakerdeckに上がっていますね。
予防に勝る防御なし – 堅牢なコードを導く様々な設計のヒント
スライドの右上にrev.15と書いてある通り、何度もブラッシュアップをされているようで、自分は過去のバージョンのスライドも読んだことがあります。
本題ではないですが、今回はサンプルコードがPHP8のものになっていて、コンストラクタ引数のプロパティ化にも対応されていましたね。
堅牢なコードは読みやすいコードになる
このセッションでお話しされていた堅牢なコードを実践していくと、メソッドのシグネチャが整理されて読みやすいコードになります。
「メソッドのシグネチャ」というと言語によって正確な定義は異なる場合もありますが、私はメソッド名と引数の数、引数の型(それと引数の順番)という認識でこの言葉を使っています。
IDEでクラスファイルを開いた時にフィールドやメソッドの一覧が見れる機能が機能があると思いますが、あれに表示される情報ですね。
このシグネチャにプリミティブな型で引数がたくさん渡されるようなメソッドは、中で何がおこっているのか想像がしづらいです。
そのクラスの責務内のことで、処理全体を読みやすくする為に切り出したprivateメソッドであればプリミティブな引数で問題ないですけどね。
Takuto Wadaさんがセッション話されていた堅牢なコードを実践していくと、このわかりやすいシグネチャのメソッドになっていくので、堅牢な上に後から読んで理解しやすいコードになると思います。
私は過去にプリミティブ型で引数を8個とかとるサービスクラスが山のようにあるプロジェクトに参画したことがありますが、本当に大変でした。
堅牢でわかりやすいコードを書くように日々精進していきたいですね。
コメント