如何说服人们说11975行代码的单个类是坏的?(不是吗?)

Afr*_*ief 17 c++ design-patterns anti-patterns

在阅读[关于11000行C++源文件怎么办?]帖子时,我有dejavu的感觉,但我不认为我可以自己开始采取行动,因为我没有权力采取行动.所以我认为第一步是说服组织中的人们认为大块代码是坏的.

我有一个类似的情况,有一个单独的类有11975行代码,每次有新功能,这个类很有可能变得越来越大.

Joh*_*web 22

你有我的同情心.任何庞大的阶级都不可避免地违反了单一责任原则,使其难以维持.

我最好的建议是以身作则:

  • 保持新代码小.
  • 在更改代码以减少类和函数的大小时,无情地重构.

与遗留代码相比,您的代码将像灯塔一样闪耀,您的团队将了解哪些代码更易于维护.

  • 我认为当你达到一个类似11,000多行的荒谬极端时,它是一个非常可靠的垃圾代码指示器. (19认同)
  • 不必要.一些单片任务很复杂,不应重构.线数不是设计质量的可靠衡量标准. (7认同)
  • @David:是的,但是11,975行代码?你的班级可能做的单一任务需要多少代码? (4认同)
  • @David:我不同意你的投票理由.复杂性是**重构的一个很好的理由!如果你谈到潜在的性能特征,我可能会同意你的意见......也许你可以通过辩解为我们提供一个你自己的整体任务的例子? (3认同)
  • @David Care举个例子?没有复杂的单片任务需要占用10,000行代码. (2认同)
  • @David:我完全同意行数(单独)不是设计质量的可靠衡量标准.然而,一个11 KLOC级别的气味非常难闻! (2认同)

Chu*_*dad 11

11975(或者它已经是12000 :))类实现的行.这不好吗?Cerainly看起来如此.但...

这取决于.通常,实现Mediator模式或Facade模式的类往往非常大.它们具有非常复杂的路由/通信协议.类似"上帝"的课程也往往非常庞大和单一.简而言之,A类实际上可能很大,但这可能不是问题.

因此,不要将LOC作为参数集中在一起,而是专注于类的功能/设计.该课程违反了单一责任原则吗?如果一个类真的很大,那么单独的LOC不能成为唯一的决定因素.查看其他指标,例如Cyclomatic Complexity.

但是,如果您得出结论认为这在您的项目环境中非常糟糕,那么您必须有充分的理由说服相关的利益相关者.例如,

一个.这堂课有很多错误吗?

湾 这个类错误修复总是会引入回归缺陷吗?(高耦合,低内聚?)

C.在这个课程中需要多长时间修复缺陷?这与其他模块相比如何?

d.为此模块生成一些UML图以说明重要问题(例如耦合).

即 阅读指标/咨询您的质量/指标/ QA团队并生成足够的数据点.OOAD指标的一个例子在这里,但我相信有很多.

编辑2(一些小的变化)

F.从您控制范围内的一些关键利益相关者那里获得初步支持.接下来,得到一个能够很好地呈现这些事实的人!在这个阶段我看到很多事情都失败了!

祝好运!


Tru*_*der 6

告诉他们总结一下课程所代表的内容.