セマンティックバージョニング
・0.0.1みたいなバージョン付け
・x.y.z
x:メジャー
y:マイナー
https://semver.org/lang/ja/
z:パッチ
ポステルの法則
・事前条件と事後条件においてポステルの法則を念頭に置く
・「送るものは慎重に、受け取るものは寛容に」
・メソッドは理解できる限り入力を受け入れるべき
・戻り値はできるだけ信頼性が高くなければならない
コミュニケーション階層
将来の読み手に向けてコードを書く。※読み手は将来の自分かもしれない。
下記リストの優先順位にしたがって、振る舞いや意図を伝えること
・1)APIに明確な型を与えること
・2)メソッドに分かりやすい名前をつけること
・3)良いコメントを書くこと
・4)自動テストとして分かりやすい例を提供すること
・5)Gitで分かりやすいコミットメッセージを書くこと
・6)分かりやすいドキュメントを書くこと
フィーチャーフラグ
・半日程度の作業で一貫性のある形で変更が終わらない場合にはフィーチャーフラグを使って機能を隠してリリース
・自身の変更を他人と継続的に統合する
・マージコストを下げる
横断的関心事のためのデコレーター
・ロギング等の共通処理をビジネスロジックに注入してはいけない
・AOP
・デコレーターパターンを使って対応するとよい
サイクロマティック複雑度
・if分岐数を計測しメソッドの複雑度を計測
・しきい値が7に設定するとよいらしい
・リファクタリングする際の目安とするとよい
CQRS原則
・コマンドとクエリに分離して処理を書く
・コマンド:副作用がある処理(更新トランザクション)
・クエリ :副作用がない処理(参照トランザクション)