Java RMI接口设计原则

Java RMI接口设计原则,java,interface,rmi,Java,Interface,Rmi,我目前正在一个RMI客户端上工作,该客户端将与RMI服务器(由我工作的公司的另一个部门开发)通信。另一个团队拥有这个接口,但依我看,它过于复杂,有许多不同的类型被前后传递,还有一个不必要的(IMO)复杂异常层次结构 我已经多次表示担心,这是一种不必要的复杂性,在我们以后进行集成时肯定会成为问题的火源,但我没有得到太多的关注。在我看来,这将导致不必要的大量代码共享,加上我们共享的每一个不同的类都是需要关注的一组额外的版本控制需求 有人知道我可以用什么资源/论点来支持我的论点吗 或者有人能让我相信我

我目前正在一个RMI客户端上工作,该客户端将与RMI服务器(由我工作的公司的另一个部门开发)通信。另一个团队拥有这个接口,但依我看,它过于复杂,有许多不同的类型被前后传递,还有一个不必要的(IMO)复杂异常层次结构

我已经多次表示担心,这是一种不必要的复杂性,在我们以后进行集成时肯定会成为问题的火源,但我没有得到太多的关注。在我看来,这将导致不必要的大量代码共享,加上我们共享的每一个不同的类都是需要关注的一组额外的版本控制需求

有人知道我可以用什么资源/论点来支持我的论点吗


或者有人能让我相信我找错了方向吗?

你不是找错了方向,而是在另一个部门,你可能很难得到想要的改变。你不可能赢得每一场战斗:-(


但是“打好仗”的道具。如果你有时间的话,我建议你向他们展示一个经过清理的界面版本。但除此之外,你可能不得不放手。

你不是找错了方向,而是在不同的部门,你可能很难得到你想要的更改。你不可能赢得每一场战斗:-(


但是“打好仗”的道具。如果你有时间的话,我建议你向他们展示一个经过清理的界面版本。但除此之外,你可能不得不放手。

你将获得数据来完成你正在做的事情。我同意不可原谅的观点3——这是一场很好的战斗,如果你提出一个更干净的界面,你没有找错方向e现在,如果没有弹药,它可能会被置若罔闻,甚至更糟;可能会发起一场“我的马比你的马大”的竞赛——这是没有成效的

只是我的建议

  • 开始记录错误,或任何其他与低效界面相关或指向低效界面的票据项目

  • 开始记录代码评审,放进一个wiki(一个公司认可的wiki——现在不要惹麻烦),现在就记录下来——现在还不是做出判断的时候,你只是在收集数据

  • 当您从这2个方面获得足够的数据时,请说明由于设计决策效率低下而导致的程序员生产率损失或被滥用的情况——当涉及成本时,很难进行争论


    希望它能有所帮助。

    你将获得数据来完成你正在做的事情。我同意不可原谅3--这是一场很好的战斗,你没有找错方向--如果你现在提出一个更干净的代码的建议,如果没有弹药,它可能会被置若罔闻,甚至更糟;可能引发“我的马比你的马大”的争吵这是一种竞争——没有成效

    只是我的建议

  • 开始记录错误,或任何其他与低效界面相关或指向低效界面的票据项目

  • 开始记录代码评审,放进一个wiki(一个公司认可的wiki——现在不要惹麻烦),现在就记录下来——现在还不是做出判断的时候,你只是在收集数据

  • 当您从这2个方面获得足够的数据时,请说明由于设计决策效率低下而导致的程序员生产率损失或被滥用的情况——当涉及成本时,很难进行争论


    希望有帮助。

    首先,我想说,您描述的问题不仅涉及RMI,还涉及组件的任何类型的接口,包括普通Java接口,尽管在RMI的情况下,糟糕的设计可能会有额外的警告,例如性能

    由于不知道细节,我只能根据自己的经验进行猜测。接口的这种不必要的复杂性通常与为组件定义的业务需求无效或不足有关。如果是这样的话,未来另一个部门的人员可能不得不频繁修改接口,试图跟上进度具有新功能,这通常是组件用户痛苦的原因。虽然随着时间的推移,界面的变化当然是自然的,但在这种情况下,它们可能会导致深入的重新设计

    此外,过于复杂的接口通常意味着作者公开了实现细节。不用说,这可能会由于实现的演变、切换到不同的技术,甚至只是优化而导致不必要的接口更改

    最后但并非最不重要的一点是,为用户提供超出其需要的功能是让他们使用甚至不打算使用或甚至不存在的功能的一种直接方式。将来,用户可能会以意外的方式调用接口。这使得组件的维护变得非常困难


    总而言之,简单接口的关键参数是:组件的清晰业务定义、改进的实现灵活性、可维护性。请记住,所有这些好处对组件开发人员和用户都有好处。

    首先,我要说,您描述的问题不仅与RMI有关但是对于组件的任何类型的接口,包括普通Java接口,尽管在RMI的情况下,糟糕的设计可能会有额外的警告,例如性能

    由于不知道细节,我只能根据自己的经验进行猜测。接口的这种不必要的复杂性通常与为组件定义的业务需求无效或不足有关。如果是这样的话,未来另一个部门的人员可能不得不频繁修改接口,试图跟上进度具有新的功能,这通常是组件用户感到痛苦的原因。虽然随着时间的推移,界面的变化当然是自然的,但在这种情况下,它们可能会导致