gpt4 book ai didi

oop - 什么时候类(class)太大?

转载 作者:行者123 更新时间:2023-12-03 09:14:02 27 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.

3年前关闭。




Improve this question




我倾向于创建具有 30-40(或更多)方法的非常大的类。有多少种方法太多了?是否有任何“气味”或经验法则可供使用?

最佳答案

我会咬。除了涉足 O-O 设计的深水区的非常浅的边缘之外,我将通过我的一些经验法则来做更多的事情:

  • 静态属性是非常值得怀疑的。强烈质疑自己是否真的需要它们。
  • 类的大多数属性/属性应该是私有(private)的(只能由对象实例访问)或 protected ,只能由类或派生类(子类)的实例访问。
  • 如果一个类的属性/属性对公众可见,它很可能应该是只读的。在大多数情况下,对象实例的状态应该只通过它响应一个要求它做一些有用的方法的方法来改变(例如,你请求一个窗口自己移动,而不是显式地设置坐标平面上的原点)。
  • 公共(public) Getter/Setter 方法或属性是有问题的,因为它们主要暴露对象状态(参见上面的项目 #2)。
  • 公共(public)方法应该主要公开对象实例响应的逻辑操作(消息)。这些操作应该是原子的(例如,为了使对象处于逻辑一致的内部状态,它不应该依赖于外部参与者向其发送特定的消息序列)。对象状态应更改是响应这些消息的结果,并应显示为 副作用 消息(例如,一个窗口将其位置报告为要求它移动的副作用是可以接受的)。

  • 以上应该大大减少了对象的公共(public)接口(interface)。

    最后,如果您的对象有多个要响应的消息,则您可能需要重构:它真的是一个整体对象,还是离散对象的集合?当然,“多于几个”是一个高度主观(和上下文)的数字——我会抛出 10-12 作为合理的限制。

    希望这可以帮助。

    有很多关于 O-O 设计、分析和建模的书籍。

    关于oop - 什么时候类(class)太大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4338831/

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