2009-04-08 16 views
1

現在、私は働いている会社の別の部門によって開発されたRMIサーバーと通信するRMIクライアントで作業しています。他のチームはインターフェイスを所有していますが、IMOはあまりに複雑で、多くの異なるタイプが前後に渡され、不必要な(IMO)複雑な例外階層もあります。RMIインターフェイスの設計原則

私はこれが不必要な複雑さの一種であるということは、後で我々が統合に来るときの問題の確実な火の源であることを何度も表明してきましたが、多くの牽引力を得ていません。 IMOは、不必要に大量のコード共有につながります。また、私たちが共有するクラスごとに、監視する必要がある追加のバージョン要件があります。

誰かが私の議論を強化するために使用できるリソース/議論を知っていますか?

また、私が間違った木を鳴らしていることを誰にでも納得させることができますか?

答えて

1

まず、RMIの場合、悪い設計では追加の警告があるかもしれませんが、あなたが説明した問題はRMIだけでなく、コンポーネントの任意の種類のインターフェイス(プレーンJavaインターフェイスなど)に関係しています。パフォーマンス。

詳細を知らないうちに、私の経験を見て推測することしかできません。そのような不必要なインターフェースの複雑さは、しばしばコンポーネントに対して定義された無効または不十分なビジネス要件に関連しています。その場合、将来、他の部門のユーザーは、インターフェイスの頻繁な変更を行い、通常はコンポーネントのユーザーにとって痛い原因となる新しい機能に追いつく必要があります。インタフェースの変更はもちろん当然ですが、この場合は深刻な再設計が行われる可能性があります。

さらに、過度に複雑なインターフェイスは、通常、作成者が実装の詳細を公開することを意味します。言うまでもなく、これは、実装の進化、異なる技術への切り替え、または最適化のみによって、不必要なインターフェースの変更につながる可能性があります。

最後に、必要以上にユーザーに使用することは、使用することさえ意図されていない機能を使用させるためのストレートな方法です。将来、予期しない方法でユーザがインタフェースを呼び出すことがあります。それはコンポーネントの保守を地獄にします。

単純なインタフェースの重要な引数は、コンポーネントの明確なビジネス定義、実装の柔軟性の向上、保守性です。これらすべての利益は、コンポーネント開発者とユーザーの両方にとって良いことです。

+0

ありがとうございました!私が現在取り組んでいるプロジェクトで助けてくれました – Bigbohne

0

あなたが間違ったツリーを吠えさせずに、別の部門にいる場合は、変更が必要な場合があります。あなたはすべての戦いに勝つことはできません:-(

しかし、 "良い戦いを戦って"あなたを助けてください。私はあなたが時間があれば、インターフェイスのクリーンアップ版でそれらを提示することをお勧めしたいそれ以外は、あなたはそれを放棄しなければならないかもしれません。

0

私はunforgiven3に同意します - それは良い戦いであり、あなたは吠えていません間違った木 - 弾薬を使わずにすぐにきれいなコードを提案すれば、それは耳の耳に落ちるかもしれませんし、悪いことに、「私の馬はあなたの馬よりも大きい」コンテストを生産的ではなく始めることができます。

私の提案;

  1. スタート非効率的なインターフェース

  2. スタート(会社認可ウィキウィキに入れてコードレビューを、文書にバグ、または関連する他のチケットアイテムやポイントを文書化する - 得ることはありません今すぐ問題を解決してください)、今すぐ文書化してください。判断に合格する時間はまだありません。データを収集するだけです。

    あなたはこれらの2から十分なデータを持っている

、ため非効率的な設計上の決定の紛失または誤用されているプログラマの生産性のケースを作る - それはコストが関与している時に主張することは非常に困難です。

願っています。

関連する問題