繁体   English   中英

关于 Object 面向设计。 最佳实践。 分班?

[英]About Object Oriented Design. Best practices. Splitting into classes?

我正在为面试做一个稍微复杂的谜题。 我对设计中的最佳实践知之甚少。

我想写一个大的 class 来解决手头的问题。 然后我想把它分成我想要的尽可能多的子类。

这是否被认为是行业中构建良好设计的好方法?

不,这不对。

设计你的对象应该是你的首要任务之一,而不是你的最后一个。

一个优秀的 Object 面向开发人员会着眼于问题,决定需要创建哪些对象,着手创建这些对象,然后将它们编织在一起以解决更大的问题。

如果你试图让一个巨大的 class 自己处理所有工作,你最终会得到非常紧密耦合的代码,它不能被分解成类......但如果你设计了预先正确编码。

我将尝试用您可以采取的可能方法来回答。 首先将您的问题表达成一些您想要解决的句子。 从这些句子中,名词是你的类和变量。 动词是你的方法。 从这一点开始,您可以开始编写您的第一个版本的代码

在为生产编写代码时,我的经验是实际实践处于中间位置。 在设计系统时,请提出您认为需要的类(请参阅 Skyzer 的回答,了解一种考虑分解事物的好方法)。 当您实际实施您的解决方案时,您可能会遇到一些对象变得太大的地步; 做太多。 此时,您可以再看一下设计,看看是否可以将 object 分解为几个更小的对象。 每个 object 都应该负责一个“事物”,但是随着给定“事物”变得更加复杂,“事物”的定义会随着时间而改变。

与此类似的是方法/命令的编写。 每个命令都应该做一件事,并且做好。 对我来说,这意味着为该命令编写测试很容易,因为测试可以非常清楚地定义命令的作用。 当命令所做的事情变得太大时(大量的逻辑分支,如 if 导致越来越多的测试是一个很好的指标),将命令分解为多个可以测试的更小的命令。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM