2010-06-03 56 views
10

Stackoverflow的用户, 你如何防止用大体积的方法创建大型班级。当最后期限紧的时候,你最终会试图破解一些事情,并最终成为一个混乱,需要重构。你如何让自己和你的同事创造巨大的班级

对我来说,一种方法是从测试驱动的开发开始,这有助于良好的类设计以及SRP(单一责任原则)。

我也看到开发人员只需双击控件并在事件方法中输入行后触发。

您有什么建议?

+1

+1伟大的问题 - 我同意你的TDD消化。良好的代码结构和TDD互相恭维对方 – 2010-06-03 13:23:22

回答

7

我想这取决于你的内部流程和任何东西一样多。

在我的公司,我们练习同行评审,所有得到授权的代码都必须由另一位开发人员'合作',您必须向其解释您的代码。

时间限制是一回事,但如果我复习那些拥有长长的类的代码,那么我不会同意签入。

起初很难习惯,但在一天结束时,对每个人都会更好。

此外,拥有一名高级开发人员,他是一名优秀的班级设计的支持者,并且愿意并且能够举例说明,因此非常有帮助。

最后,我们经常做一个编码'show and tell'session来向我们的同事展示我们的工作,这有助于我们不要用丑陋的代码来做这件事!

+2

是的,我同意。你会在代码审查中看到类似的东西。你只需要记住这是你的工作,指出这样的事情。有时候我不好意识到这个人做错了什么,但是这让他们在一天结束时更好。 – 2010-06-03 13:28:13

+0

事实上 - 如果它让他们的生活变得更轻松,当你被要求维护时,它会让你的生活更轻松! – 2010-06-03 13:34:32

1

使用类似Resharper和Extract Method命令的工具。

1

长类是一种可能的不良代码气味。

通过创建很多小的类来弥补过大的类可能会产生它自己的问题。您的项目中的新工程师可能会发现难以遵循代码流程来计算出发生的情况。这个问题的一个神器可以是非常高的调用堆栈,通过许多小类执行嵌套。

0

我们是一个java和maven商店,其中一个...我想你可以说我们使用的法医方法是优秀的FindBugs,PMD和javancss插件。所有这些都会给出警告,说明方法中过长的长度,并且圈复杂度计算可能非常令人大开眼界。

0

对于我来说,避免经常违反SRP的大类的一个最重要的步骤是使用简单的依赖注入框架。这让我不必考虑如何将东西连接在一起。我只使用构造函数注入来保持设计免于周期。像Resharper这样的工具有助于从构造函数参数中初始化字段。这种组合导致创建和连接新类的开销几乎为零,并暗示鼓励我更详细地构造行为。

如果数据与行为保持分离,并且您的语言支持可用于分离在依赖关系图向下方向流动的通信的事件,则这一切都最有效。

0

在您的自动构建中使用一些静态代码分析工具,并编写/配置/使用一些规则,以便例如某人必须在他/她打破它时写出正当性。

1

另一个建议是只做问题。不要玩“假如”游戏并尝试过度设计解决方案。这背后有“保持简单,愚蠢”的想法。