能够维持码我写的,我必须在名称变量好,文件我的代码,保持一定没有得到重复,抽象的工作,使黑客不需要..和评论,谨慎,因为评论意见常常中断,我阅读了代码。

但许多其他代码基我看更像是一个漩涡。变量名称是foobar,东西是越来越计算即使从来不需要很多的黑客和增补程序应用的,抽象的失败,部署脚本失败...代码是一个难以理解的,并几乎无法使用的汤。

这样的!我是好奇的。你如何管理保持质量差的代码?

有帮助吗?

解决方案

学科

其他提示

常量重构;当您打开代码文件,你会看到一些奇怪的事情,你可以为了提高现有代码的设计投入了几分钟。

拥有一套单元测试可以帮助你用它,因为它让你在你改变仍然代码是否工作,因为你改变的休息信心。

它有点像具有在一所房子断窗口的故事。当你看到一个破碎的窗子,你应该修复它。 如果不解决这个问题,事情就从那里开始到detoriate,这将导致unmaintenable一塌糊涂。

我的大部分项目也都奥德投入持续整合;旁边的构建和运行单元测试,一个静代码分析(FxCop的)被执行为好。现在,然后,我看看结果,并尝试修复正在报道了一些违规行为。

一般来说,您所描述的是任何代码库增加熵的自然趋势。它发生在每个项目的开发和维护过程中。为了应对这种稳步增长,我建议采取以下措施:

  1. 团队中必须要有足够权威的人来关心。这是最重要的部分。如果没人关心,事情就不会完成。这一点看似显而易见,但事实并非如此。

  2. 制定标准和最佳实践。大多数语言都有一本由某人撰写的关于最佳实践的书。例如,关于 PERL,Damain Conway 写了一本非常好的 Perl 最佳实践书籍。除非你这样做,否则团队中的每个人都有自己的方式来编写代码、命名变量、注释等。

  3. 代码审查。您将需要一份代码审查清单。您的更改有效还不够,它还必须符合最佳实践列表。我们设置了两层代码审查,第一层是同行代码审查,第二层是关心代码质量的发布经理。

  4. 设计评论。当错误或增强被填充到错误跟踪系统中时,重要的是要由变更控制委员会进行审查,该委员会决定工作的安排以及谁需要审查工作的设计。您可以在此处维护代码抽象并确保更改符合项目的设计文档和目标。团队的软件架构师或首席设计师应该是 CCB 的一部分。

  5. 检查代码质量触发器。一些最佳实践可以通过代码直接执行。编写小脚本来检查代码的格式、制表符/空格的使用等。这将帮助您以不同的方式思考代码质量。

一些 阅读 供参考。

同行评审快速建立代码质量标准是很难量化上的一张纸上。单元测试让你与小害怕改变的代码。纪律,很多。

一个相关问题:人们如何避免编写低质量的代码?

答案如下。

对于我们行业中无能的人来说,一个好的策略是:

  1. 培养听起来令人印象深刻的能力,尤其是对于非技术和半技术人员来说。能够让技术人员听起来足够合理,足以让他们失去平衡。

  2. 把你接触到的代码弄得一团糟。

  3. 现在这是关键部分:在被发现之前离开并在其他地方找到更好的工作。最佳时机将取决于具体情况。

我想给你介绍一个词我听过,几年前- 技术的债务.这里有一个 (1)维基百科的入口 和另一个从马丁*福勒的 (2)网站.

基本上,我不觉得人们开始了旨在建立糟糕的软件。什么典型的情况是,时限被压缩,要求修改或替换中的发展和任何其他的商业现实咬的核心质量的发展和设计。

从Fowler:

"做事的快速和肮脏的方式 我们有了一个技术的债务, 这是一个类似的金融债务。像一个财政债务,技术 债务须支付利息支付, 在形式的额外的努力, 我们要做的就是在未来 发展是因为快速和 肮脏的设计选择。"

从维基百科:

"活动可能会推迟 包括文件、书写的测试, 参加TODO的意见和 解决编译器,静态码 分析警告。其他实例 技术的债务包含的知识, 是不是公共周围的组织 和代码是太混乱是 修改。"

我已经看到(以及向几个开发团队做的)是"重构"和清洁的码基地的早期进入发展的迭代,通常在开始之前,新的工作是开发。

同侪审查、单元测试和专业软件的测试有帮助偿还用这些技术的债务,以及良好的预测(和良好的代码的再利用)。

如果你有预算,自动化测试的可靠的投资只要你愿意支付保养(时间、精力).

有大量的质量的工具的今天,如fxCop(和其他人一样)但是你必须要仔细选择哪些方法你要招待。

努力在保持质量在设计和编码的基地已经被占用,所以仔细想想最有效的和有用的方式为开发团队/产品/公司/客户等等。

[ (1) http://en.wikipedia.org/wiki/Technical_debt ]
[ (2) http://martinfowler.com/bliki/TechnicalDebt.html ]

正是这种情况,当 你写代码 和别的 人们读了它
1.离开了 陋习
2. 使用有意义 过程、函数、变量名
3. 使用文档 关于它(过程/函数/计算/等)如何工作以及结果是什么,不要做出任何不必要的评论
4.尝试 为您的编码赋予风格 这样人们就可以知道它(例如使用 GNU 风格的代码)
或者
为此使用代码美化器
5. 认为团队合作 (即使你独自一人)并且不仅仅是你会阅读你的代码(即使是)
6. 重构代码 应该也不错
7. 与队友协商 关于你写的代码,他们能读懂吗?
8. 向开源社区学习, ,他们如何工作以及共享代码和补丁
9.如果可以的话,使用 SVN 或 CVS 用于维护您的代码

并记住 原则 (K埃普 t S简单, S愚蠢)

而且当然 简单、精干、中庸、美丽

如果它颠倒了(其他人写,你读)我不知道该说什么:D(也许给上面的人建议哈哈)

文档,源控制,单元测试,并且是良好的程序员。

的单元测试的全面套件,允许更改和重构,而无需担心破坏现有的代码。

我建议拿起迈克尔羽毛的副本“修改代码的工作。”

Fridgemagnet说: “变钝程序员有完美的代码库”

您只能逃脱糟糕维护代码库,当你的开发团队非常小(在一个单一的项目少于10-20人左右)。如果你的项目的发展和你的团队的成长,无论是你的做法会扩大,否则你会失败。

你问的变化本质上是黑客编程,最后软件工程的过渡。

软件工程您承认,在球队并不是每个人是完美的。您查看代码,可以确保他人考试,交叉检查对方。

您开始看到的,可以消化客户的欲望,并将其转化为设计文件的建筑师的需要。这很容易吃了一个月的时间之前,其他人甚至被添加到项目中(但随着时间的发展过程中可以保存几个月甚至几年!)。他会确保一切是有道理的,并会结合在一起还算不错。

您有设计文档,通常基于UML让球队的不同部分可以理解的集成点。你认识到,已经做了什么,你可能需要重新做没有谁做的人,所以你将其记录下来。

您质量的过程变得更加严格,他们开始执行规则像你只有在测试过程中解决具体的错误变化检查。

测试,重构等显然是关键,并通过同行和团队评审被重新执行。

我并不是说这种类型的东西始终是必要的,显然不是,但你的问题,你讨论这些混沌的代码库,而这些良好做法往往是解决这一问题。

通常,这些好的做法是一个巨大的工程,因为代码库吸如此糟糕,完全失效后实施。然后,他们解雇任何人谁也无法回避的责任,雇佣一些经理谁希望有更大的项目和一些经验重新从零开始(如果他们不出来的钱运行)。

至少,这是我的经验。 YMMV

您只需要实践,好的工具和能力和意愿,打破不良的生活习惯和学习。

编码很像笔迹。每个人都有自己独特的风格。其中一个我,同时保持遗留代码所面临的最大挑战,是想弄清楚是怎么回事。一般它归结为在代码库缺乏一致性。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top