首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跟踪实用程序类

跟踪实用程序类
EN

Stack Overflow用户
提问于 2011-04-11 17:52:57
回答 8查看 3.1K关注 0票数 19

最近,我对我的项目代码库中出现的一个问题越来越感到沮丧。

我正在做一个大型的java项目,它有超过100万行代码。界面和类结构设计得很好,编写代码的工程师也非常熟练。问题在于,为了使代码更简洁,每当需要重用某些功能时,人们都会编写实用程序类,因此,随着时间的推移,随着项目的发展,越来越多的实用方法出现。但是,当下一个工程师发现需要相同的功能时,他无法知道有人已经在代码中的某个地方实现了实用程序类(或方法),并且在另一个类中实现了另一个功能副本。结果是大量的代码重复和太多的具有重叠功能的实用程序类。

是否有任何工具或设计原则,我们作为一个团队可以实现,以防止重复和低能见度的实用工具类?

示例: XMLUtil需要将转换为String的三个位置,因此他编写了一个名为XMLUtil的实用程序类,并在其中放置了一个静态toString(Document)方法。Engineer B有几个地方可以将文档序列化为各种格式,包括String,因此他编写了一个名为SerializationUtil的实用程序类,并有一个名为serialize(Document)的静态方法,它返回一个字符串。

请注意,这不仅仅是代码复制,因为上面示例的两个实现可能是不同的(例如,一个使用转换器API,另一个使用Xerces2-J),因此这也可以看作是一个“最佳实践”问题.

更新:我想我可以更好地描述我们开发的当前环境。我们使用Hudson作为CI,Clover用于代码覆盖,Check样式用于静态代码分析。我们使用敏捷开发,包括日常对话和(可能不够)的代码评审。我们在.util中定义了所有的实用工具类,由于它的大小,现在它在根(.util)类下有13个子包和大约60个类。我们还使用第三方库,例如大多数和一些组成Guava的jars。

我很肯定,如果我们让一个人来重构整个程序包,我们可以减少一半的效用。我想知道是否有任何工具可以降低操作的成本,以及是否有任何方法可以尽可能推迟问题的再次发生。

EN

回答 8

Stack Overflow用户

发布于 2013-04-14 06:54:19

解决这个问题的一个很好的方法是开始增加更多的面向对象。使用您的示例:

示例: engineer A需要将XML转换为String的3个地方,因此他编写了一个名为XMLUtil的实用类,并在其中放置了一个静态toString(文档)方法

解决方案是停止使用JVM (String、Integer、java.util.Date、java.w3c.Document)提供的原始类型或类型,并将它们包装在您自己的特定项目类中。然后,您的XmlDocument类可以提供一个方便的toString方法和其他实用方法。您自己的ProjectFooDate可以包含解析和格式化方法,否则这些方法最终会出现在各种DateUtils类中,等等。

这样,每当您尝试对对象执行某些操作时,IDE都会提示您使用实用程序方法。

票数 9
EN

Stack Overflow用户

发布于 2011-04-11 18:06:58

您可以使用几个敏捷/ XP实践来解决这一问题,例如:

  • 互相交谈(例如,在日常的起立会议中)
  • 对编程/代码评审

然后创建、记录和测试一个或多个可以引用的实用程序库项目。我建议使用Maven来管理依赖关系/版本。

票数 4
EN

Stack Overflow用户

发布于 2011-04-11 18:18:49

您可能会考虑建议将所有实用程序类放置在一个组织良好的包结构中,比如com.yourcompany.util.。如果人们愿意很好地命名子包和类,那么至少如果他们需要找到实用程序,他们就知道在哪里查找。不过,我不认为这里有任何灵丹妙药。沟通很重要。也许,如果开发人员在编写新的实用工具时向其他开发人员发送一封简单的电子邮件,那就足以让人们注意到这一点了。或者是一个共享的wiki页面,人们可以在其中列出/记录它们。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5625354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档