まず第一に、SBTを介したインクリメンタルビルドは非常に優れており、通常は1秒未満の範囲です。ただし、完全なクリーン/コンパイルを実行する必要がある場合や、インクリメンタルビルドの場合は、1つのファイルに変更を加えて、他の数十のファイルのコンパイルをトリガーする場合があります。
これは、Scalaの開発が楽しくなくなるときです。ワークフローの速度が低下すると、コンテキストの切り替え(電子メール、最新のStackoverflowスレッドなどを確認する)が促進され、生産性がわずかに低下するためです。
では、完全なクリーン/コンパイルビルド、および(理想的には)アプリケーションの半分を再コンパイルせずに1つのファイルを変更するインクリメンタルビルドを改善するために避けるべき開発アプローチは何ですか?
私が考えることができる例:
1)1000行以上のdo-it-all scalaファイル、または複数のファイルを分割する方が良いですか?
2)ケーキ(パターン)をもらえますか、それともビルド時間が長くなりますか?
3)x、y、zライブラリパターンをpimpしたり、別の方法を見つけたりすることはできますか?
4)パッケージオブジェクト(暗黙的)はビルドタイムキラーですか?
5)ネストされたオブジェクトと特性?
6)暗黙のメソッド/パラメーター、または賢くなり、明示的になるのをやめますか?
具体的には、思いついたケーキパターンDAOを捨てて、ScalaQueryケースクラス+コンパニオンオブジェクト+最小限のデータベースプロバイダー特性に統合することを考えています。それだけで20個のscalaファイルが削除されます。
アプリケーションは十分に小さいので(120のscala + 10のjavaファイル)、あまり面倒なことなくリファクタリングできます。明らかに、scalaアプリケーションが成長するにつれて、LOCだけに基づいたビルド時間も成長します。私はただ脂肪を取り除く場所と気にしない場所(つまり、物事をそのままにしておく)を見つけようとしているので、現在および将来のアプリケーションは、ビルド時間を不必要に増やすことなく、scalaが提供する表現力の恩恵を受けます。
ビルド時間に対するscala開発の良い面、悪い面、醜い面の経験のいくつかの例をありがとう。