设计适当的类

时间:2009-02-20 05:55:59

标签: oop

我已经阅读了所有关于为什么要创建课程以及“在你的要求中寻找名词”之类的书籍,但这似乎还不够。我的课程在我看来很乱。我想知道是否有某种指标或某些东西可以比较我的课程,看看是否设计得很好。如果没有,谁是最受尊敬的OO大师,我可以获得正确的课程设计技巧?

7 个答案:

答案 0 :(得分:4)

创建开始干净然后变得混乱的类是OO的核心部分,那就是你重构的时候。许多开发人员试图从一开始就跳到完美的课堂设计,根据我的经验,这是不可能的,而是你绊倒,解决问题,然后重构。随着设计的出现,您可以收获,基类和接口。

答案 1 :(得分:2)

如果您熟悉数据库设计,特别是规范化的概念,那么答案很简单:以数据为中心的类应该代表第三范式的实体

如果没有帮助,请尝试这样做:

  • 一个类是数据元素的集合以及对它们进行操作的方法
  • 一个班级应该有一个单一的责任,即它应该代表你模型中的一件事;如果它代表不止一件事,那么它应该不止一个。
  • 类中的所有数据元素应在逻辑上相互关联/相互关联;如果不是,则将其分成两个或更多个类
  • 类中的所有方法都应仅对其输入参数和类的数据元素进行操作 - 请参阅Law of Demeter

就我所能提出的一般抽象建议而言(没有写一篇长篇论文);如果您需要具体的建议,可以发布一个课程进行批评

答案 2 :(得分:2)

尝试专注于行为而不是结构。对象是具有行为和责任的“生活”实体。你告诉他们做事。看看CRC卡方法,以帮助您以这种方式建模。

答案 3 :(得分:0)

我认为对象设计既是艺术,也是科学。需要时间和实践才能理解如何设计清洁和安全。优雅的课程。也许如果你能给出一个你设计的简单类的例子,你就不会满意SO用户可以批评和指点。我不确定除了你在文本中已经阅读过的内容之外,还有任何一般性的答案。

答案 4 :(得分:0)

我个人认识的最受尊敬的OO大师是StackOverflow。把你的班级名字放在这里,我估计你会得到很多评论。

答案 5 :(得分:0)

类通常用于对问题域的概念进行建模。一旦您有明确定义的问题(也就是用例集),您将能够识别所有参与者。参与者的一部分将是您正在设计的系统的固有内容。从一个大黑盒子开始作为你的系统。当您有更多信息时,请继续分解。如果您的某个级别无法再被分解(在您的问题域中的概念中),那么您就开始上课了。

但是,这是一个非大师的主观观点。我建议在菜单上加一点盐。

答案 6 :(得分:0)

度量?不是那样你会信任他们。

您的课程是否正在通过多次修订来完成程序的工作并保持其可维护性?

如果是的话,你做得很好。

如果不是,请问自己为什么不,然后改变不起作用的东西。

相关问题