良いコードとは
- 他人が見て理解しやすいコード
- 将来の自分が見て理解できるコード(過去の自分に感謝できるコード)
もちろん、オブジェクト指向の知識がある前提。
ドメイン知識はコードに収めるように書く。つまり、コードを読めばドメイン知識が得られるように書く。
→ ドメイン知識は変化が激しい。よって、ドメイン知識に係る処理も頻繁に変更できるように、アーキテクチャ及びデプロイ環境を整備する必要がある。
Webアプリフレームワーク
Webアプリに必要な機能は凡そ出揃っている。下記の機能をクラスで明示的に実装すればそれはもうフレームワークと言ってよいと思う。
- URIルート処理・ディスパッチャー(フロントコントローラーや.htaccess)
- リクエストの処理
- バリデーター
- 出力(HTML・JSON・他)の処理(テンプレートエンジンを含むView系クラス)
- セッション管理
- 永続データの制御(ORMを含むModel系クラス)
- 環境別設定管理(.envやconfig)
- 定数管理(Enum含む)
- グローバル関数(Helper系)
- 認証
- 認可
- ドメイン知識を司るクラス(例えばService系クラス)
- 上記の機能を順序だてて呼び出して処理を明示するくらす(いわゆるController)
- パッケージ管理(vendor/ や autoloader)