私は現在、いくつかの(私の意見では)アーキテクチャ上の問題を抱えたプロジェクトに取り組んでいます。
たとえば、すべてのオブジェクトが静的メソッドを介してアクセスできる共通のフレームワーク Bean から、必要に応じてすべての依存関係が取得されます。これは事実上、Spring Bean を返す Spring の単なるラッパーです。依存性注入はありません。
エンティティには、リレーショナル データを取得するための DAO への参照があります - エンティティ ゲッターに隠されています。
例外には、エラー メッセージを解析および変換するためのサービスへの参照があります。
すべてのサービスまたは DAO は、独自の依存関係と構成要件を持つ一般的な抽象フレームワーク Bean から継承します。それ以外のことをしようとすると、「フレームワークが初期化されていません」というエラーが発生します。また、フレームワークは誰も触れようとしないブラック ボックスであることにも言及する必要があります。
すべてのテストは、中央の共有データベースへの有効なデータベース接続を必要とするため、実質的に統合テストです。
基本的に、すべてがすべてに接続されている依存関係グラフがあります。
そして、テストはありません。
この環境で単体テストをセットアップするのがどれほど難しいか想像してみてください。実際、すべてのテストは、テスト データを挿入し、それ自体をクリーンアップしようとします - いかなる種類のトランザクションも使用しません。
そして、私はここで表面をなぞっているだけです。
言うまでもなく、コードの品質については少し心配です。プロジェクトは (もちろん) 時間とリソースが不足しており、締め切りが近づいています。
では、機能的なソフトウェアに似たものを提供する希望がある場合、リファクタリングが必要であることを理解している言語で経営陣を納得させるにはどうすればよいでしょうか?