gpt4 book ai didi

c# - 类别或部分类 : Pattern to Resolve "God Object" Code Smell?

转载 作者:太空狗 更新时间:2023-10-30 03:59:04 24 4
gpt4 key购买 nike

类太大,处理起来很笨重。在 Objective-C 中,我很想使用 Categories 来分解类,但是:类别不会只是将充满太多垃圾的房子分成房间吗?我想,同样的问题也适用于 C# 中的分部类。

在什么情况下可以使用类别来解决“类别太大”的代码异味?什么时候不正确,类(class)真的需要"be restructured or broken into smaller classes?"

最佳答案

一个很好的引用原则是SOLID principle .特别是“S”代表“单一职责”

Single responsibility principle

the notion that an object should have only a single responsibility.

当类变得太大时,它们很可能承担了太多责任。你能在类(class)正在做的事情的范围内定义两个或更多的职责吗?如果是这样,将其分成两个或更多类。然后,您可以使用 façade 将它们聚合回来或 composite模式。

换句话说:

  • 你在类中的代码应该根据单一职责原则拆分到不同的类中
  • 原来的上帝类变成了复合外观:它使用所有新类,向系统的其余部分公开相同的方法,但不实现任何除了将旧式神级调用“转换”为新式 SOLID 调用之外,它本身的功能。

这意味着从面向对象的角度来看,区域完全没有解决您的问题。事实上,它们实际上适得其反,因为它们有助于隐藏问题。

另请参阅 Jeff Atwood 的这篇文章:

http://www.codinghorror.com/blog/2008/07/the-problem-with-code-folding.html

CodingHorror-regions

关于c# - 类别或部分类 : Pattern to Resolve "God Object" Code Smell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8018889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com