创建一个Catch-All AppToolbox类 - 这是一个糟糕的做法吗?

Bob*_*man 6 c# oop

永远不知道在哪里放置功能:

String PrettyPhone( String phoneNumber ) // return formatted (999) 999-9999
String EscapeInput( String inputString ) // gets rid of SQL-escapes like ' 
Run Code Online (Sandbox Code Playgroud)

Toolbox为每个应用程序创建一个类,作为不完全适合另一个类的函数的存储库.我已经读过这样的类是糟糕的编程实践,特别是糟糕的面向对象设计.然而,所述参考文献似乎更多的是个人设计师和开发人员的意见,而不是一个总体上的共识.所以我的问题是,一个无所不能的工具箱是一个糟糕的设计模式?如果是这样,为什么,有什么替代方案?

cdi*_*ins 6

好问题.我总是发现任何足够复杂的项目都需要"实用"类.我认为这仅仅是因为面向对象编程的本质迫使我们将事物放置在一个整齐的结构化分层分类中,当这并不总是可行或适当时(例如尝试为哺乳动物创建一个对象模型,然后挤压鸭嘴兽) ).这是推动面向方面编程工作的问题(参见交叉问题).通常,实用工具类的内容是跨领域的问题.

使用工具箱或实用程序类的一种替代方法是使用扩展方法为基本类型提供其他所需的功能.但是,陪审团仍然不清楚这是否构成了良好的软件设计.

关于这个问题我的最后一句话是:如果你需要的话,可以选择它,只要确保你没有做出更好的设计.当然,如果需要,您可以随时重构.