Open1
aqua gr の version_overrides のスタイルの変更
現在
# 最新の設定
version_constraint: semver(">= 6.5.0")
version_overrides:
- version_constraint: semver(">= 6.3.0")
# 古いバージョンの設定の、最新の設定との差分
案
# override されない共通の設定
version_constraint: "false"
version_overrides:
# 古い順
- version_constraint: semver("< 0.1.0")
# ...
- version_constraint: "true"
# 最新の設定
現在のスタイルの良い点
- 直感的で分かりやすい
- 各 override では差分だけ書けば良いので DRY に書ける
現在のスタイルの課題
- 最新設定と差分をマージしないと設定が分からず、分かりづらい
- 最新設定が変わると差分の設定も修正しないといけない
- 最新設定が変わったときの修正が難しく、一から書き直す必要がある
- 自分はいつも scaffold しなおしている
課題をいくつか挙げたが、これらは全て「最新の設定と差分をマージする」というアプローチを取っていることから生じている。
差分をマージするのではなく、全ての override で必要な設定を全部書くようにすればこの問題は解決する。
これの欠点は DRY に設定を記述できず冗長になることであるが、コードを自動生成すればあまりこれは問題ではなくなる(設定ファイルが肥大化すると将来的に aqua のパフォーマンスに影響が出かねないが、それは別の方法で解決策を模索すべきだろう)
また最新の設定が変わって version override を追加しなければならなくなったとき、最新の version override だけ修正すれば良いので修正が容易であり、一から書き直す必要はなくなるだろう。
将来的には自動修正もできるかもしれない。
自動修正の難易度もだいぶ下がるだろう。
既存のコードのマイグレーションは難しいが、一気にマイグレーションしなくても一つ一つ必要に応じて直せば良い。
まずは aqua gr によって生成されるコードを修正する必要がある。