有时,我创建“Util”类,主要用于保存方法和价值观,而这些方法和价值观似乎并不真正属于其他地方。但每次我上这些课的时候,我都会想“呃-哦,我以后会后悔的……”,因为我在某个地方读到这很糟糕。
但另一方面,似乎有两个令人信服的案例(至少对我而言):
我在走向毁灭的路上吗?你说什么!!我该重构一下吗?
发布于 2012-11-08 21:00:37
现代面向对象设计承认,并非所有事物都是一个对象。有些东西是行为,或者公式,而有些东西没有状态。将这些东西建模为纯函数以获得设计的好处是很好的。
Java和C# (和其他)要求您创建一个util类并跳过这个循环来完成它。烦人,但不是世界末日;从设计的角度看也不算麻烦。
发布于 2012-11-08 20:58:16
Util类没有内聚性,而且通常设计不好,因为类必须有一个改变的原因(单响应性原则)。
然而,我在Java中看到了"util“类,比如:Math、Collections和Arrays。
这些实际上是实用程序类,但它们的所有方法都与一个主题相关,一个有数学运算,一个有操作集合的方法,还有一个用于操纵数组。
不要在实用工具类中使用完全无关的方法。如果是这样的话,你很可能会把他们放在真正属于他们的地方。
如果必须有util类,那么尝试用主题来分隔它们,比如Math、Collections和Arrays。至少,它显示了一些设计意图,即使它们只是名称空间。
例如,我总是避免使用实用工具类,而且从来没有创建过类的必要。
发布于 2012-11-08 20:55:01
拥有util类是完全可以接受的,尽管我更喜欢术语ClassNameHelper。.NET BCL甚至在其中包含了助手类。需要记住的最重要的事情是彻底记录类的用途,以及每个单独的助手方法,并使其成为高质量的可维护代码。
不要沉迷于帮助者类。
https://softwareengineering.stackexchange.com/questions/175176
复制相似问题