私は最近 PostSharp をいじっていて、数年前に直面した問題を思い出しました: クライアントの開発者が Web アプリケーションを作成しましたが、状態情報の管理方法についてあまり考えていませんでした。IIS のアプリケーション インスタンスで静的に(理由は聞かないでください) 。言うまでもなく、システムは拡張できず、深刻な欠陥があり、不安定でした。しかし、それは大規模で非常に複雑なシステムであったため、再開発のコストは法外なものでした。当時の私の要約は、コードベースをリファクタリングして、コンポーネント間の適切な分離を強制することでした。
当時、何らかの抽象化メカニズムを使用して、静的リソースへのすべての呼び出しをインターセプトし、状態データを適切に管理するコンポーネントにリダイレクトできるようにしようとしました。問題は、リダイレクトする複雑な参照が約 1000 あったことでした (そして、私にはそれを行う時間があまりありませんでした)。手動コーディング (R# を使用した場合でも) は時間がかかりすぎることが判明しました。コードベースを廃棄し、適当に書き直しました。書き直すのに1年以上かかりました。
私が今疑問に思っているのは、アセンブリ リライターやアスペクト指向プログラミング システム (PostSharp など) にアクセスできた場合、直接参照を見つけるリファクタリング プロセスを簡単に自動化し、それらをリダイレクト可能なインターフェイス参照に変換できたでしょうか。工場によって自動的に供給されます。
PostSharp または類似のシステムを使用して、病的なレガシー システムを修復した人はいますか? プロジェクトはどの程度成功しましたか? 後になって、その努力に見合うだけの価値があると思いましたか? もう一度やりますか?
更新: 詳細については、このブログ投稿を参照してください。