質問

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

私はこれが一種の不必要な複雑さであるという懸念を何度も表明しましたが、私たちが統合するようになったときに後で問題の確実な火災源であるが、私はあまり牽引力を得ていません。 IMOは、不必要に大量のコード共有につながります。さらに、共有するすべての異なるクラスは、視聴する必要がある追加のバージョン化要件のセットです。

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

あるいは、誰かが私が間違った木をbarえていると確信させることができますか?

役に立ちましたか?

解決

まず第一に、あなたが説明した問題は、RMIだけでなく、Plain Javaインターフェイスを含むコンポーネントのあらゆる種類のインターフェイスに関係していると思いますが、RMIの場合、悪いデザインには追加の警告などがあります。

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

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

最後になりましたが、ユーザーが必要以上に多くのユーザーを提供することは、使用することも存在することも、存在することさえ意図していない機能を使用できるようにするためのまっすぐな方法です。将来的には、ユーザーが予期しない方法でインターフェイスを呼び出すことが判明するかもしれません。コンポーネントのメンテナンスを地獄にします。

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

他のヒント

あなたは間違った木をbarえないが、別の部門にいるので、あなたが望む変更を得るのに苦労するかもしれません。あなたはすべての戦いに勝つことはできません:-(

しかし、「良い戦いとの戦い」のためにあなたに小道具。あなたがそれをする時間があるなら、私は彼らにインターフェイスのクリーンアップバージョンを提示することをお勧めします。しかし、それ以外は、それを手放さなければならないかもしれません。

あなたがしていることを達成するためにデータをデータにします。私はunforgiven3に同意します3-それは良い戦いであり、あなたは間違った木をbarえているわけではありません - あなたが今よりクリーンなコードの提案を弾薬の提案を提示するならば、それは耳が聞こえない、そしてさらに悪いかもしれません。 「私の馬はあなたの馬よりも大きい」ようなコンテストを始めることができます - 生産的ではありません。

ただ私の提案。

  1. バグ、または非効率的なインターフェイスに関連または指している他のチケットアイテムの文書化を開始します

  2. コードレビューの文書化を開始し、ウィキ(Wikiの認可された会社 - 今はトラブルに巻き込まれないでください)を入れてください。

これら2から十分なデータを持っている場合は、非効率的な設計上の決定のために失われたり誤用されたりしているプログラマーの生産性について主張してください。コストが関係するときに議論することは非常に困難です。

それが役に立てば幸い。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top