6

最近,我们在工作中遇到了一个问题,如果一个人正在自己编写一些代码,它似乎会与其他团队成员一起看着它并说“嗯?这很难看,难以管理,我需要重写那”

事实上,最近,我自己不得不重新考虑前一周写的东西,以便能够添加到我的(相关)功能中。

我知道结对编程是解决这个问题的方法,但我们的团队参差不齐(3 名成员)。由于目前我们的团队受到了很大的压力,我们真的没有时间进行同行评审(尽管我们可以进行结对编程,因为我们可以将其估算到我们的任务估算中)

我只是好奇人们会如何建议我们通过生成糟糕的代码来克服这些问题。

4

9 回答 9

14

当您独自工作并编写了您的同事认为丑陋且难以管理且需要重写的代码时,您会:

(a) 当你再看一遍时同意他们的看法,

(b) 不同意?

如果是(a),那么问题在于您自己在编写代码时并没有完全阐明代码。由于结对编程是唯一能让你写出体面代码的东西,我想我建议“奇数”应该用于不涉及编写大量糟糕代码的任务:bug-hunting;也许编写测试代码,因为这往往不那么可怕。同时,努力提高你编写更好代码的技能——也许对你自己几个月前的代码进行审查,并记下它有什么问题。

如果是 (b),那么你遇到的问题是表达你的想法的方式不兼容。按照您的标准,该代码可能还不错,但它是相互无法理解的,这在公司环境中意味着它是糟糕的代码。结对编程意味着你写的东西是一种妥协,三分之二的人都理解,但这并不是真正的解决方案。你需要就彼此的代码最困难的地方达成一些共识,并停止这样做。你们都迫切需要从“我的两个同事会喜欢这个代码”而不是“我喜欢这个代码”的角度来考虑“代码质量”。

无论哪种方式,你们都需要为被阅读而编写代码,而不是为了尽快完成当前的工作。就我个人而言,我通过尝试以我认为其他人可能表达和理解的方式表达事物来做到这一点,而不仅仅是当时对我有意义的方式。最终会成为习惯。当我写代码时,我是为公众写的,就像我为公众写这篇文章一样。好的,所以在我的个人项目中,是一群和我一样思考的人,而在工作中,是一群像我的同事一样思考的人。但原则是编写代码,就好像有人在阅读它一样。你是在向他们解释自己,而不是编译器。

并不是说我的代码是世界上最好的,但我确实认为我受益于我的第一份工作是在一家拥有 30 多名程序员的公司中,所以我看到了各种各样的思考方式。还有一些“不该做什么”的例子,其中一位程序员做了一些其他无法轻易理解的事情,因此可以明确地说是坏事。只有 3 人,尚不清楚 2 对 1 的意见分歧是否意味着 1 是怪胎或合理的少数。当我做了一件事,四五个人可以看到它并立即说“哎呀,不要那样做”,然后我开始真的相信这只是一个愚蠢的想法。

我还建议,如果不允许您为代码审查预算,那就撒谎和作弊。如果你在大量重写别人的代码,你实际上是在花时间去审查它,你只是没有提供反馈,这是代码审查中有价值的部分。因此,悄悄地进行审查 - 编写一个或三个函数,然后让同事查看它并就它是否对他们有意义给你即时反馈。完成后立即与监视器上的代码进行对话会有所帮助,但请尽量不要在人们“心流”时打断他们,或陷入冗长的争论。这不是结对编程,也不是正式的代码审查,但它可能会帮助你弄清楚你自己在做什么,这太糟糕了。

于 2009-07-12T13:30:36.737 回答
6

我很惊讶您没有时间进行同行评审,但您有时间进行配对编程。后者不是更浪费时间吗?

我们公司也只有三个开发人员,而且,令人惊讶的是,我们目前正在努力工作。如果我建议结对编程,我很确定我的老板会嘲笑我,因为这将被视为将一项任务的工时数加倍,即使在实践中这不是它应该产生的结果。我们的同行评审从不超过一个小时,这是一个极端情况。平均而言,我会说它们大约需要 10 分钟,并且每个开发人员一天只发生一次或两次。

IMO,您应该尝试同行评审。您经常会发现冒犯的人(即编写质量较低的代码的人)最终意识到他们需要付出更多的努力,并且质量会随着时间的推移而提高。

于 2009-07-12T13:03:04.370 回答
3

如果你有 3 个开发人员,并且每个人都认为其他人的代码不好,那么你迫切需要同行评审。

于 2009-07-12T13:27:32.357 回答
2

所以:

  • 你被逼得很厉害
  • 你的代码质量很差

你觉得这两者可能有关系吗?答案是固定时间表。

于 2009-07-12T12:51:01.573 回答
1

一次将所有三个配对。

设置一些编码标准。

对构建破坏性开发人员使用愚蠢的上限。

召开每日站立会议以交流进展情况。

每周两次尝试同行评审,例如周二和周五。

于 2009-07-12T13:46:05.157 回答
1

结对编程不必每天整天都有效。即使每周一起工作一两个小时,我也看到了很好的结果。一种方法是将 A 和 B 配对一段时间,然后是 A 和 C,然后是 A 和 B ……中间有很多单独的时间。

这也很大程度上取决于团队成员的个性和化学反应。这三个中的两个可能一起工作得非常好,你会想从中受益。

于 2009-07-12T13:50:52.343 回答
0

你仍然应该配对。设置会话,说每周 1 天,并轮换成对。这应该让你的经理开心,提高代码质量,改善沟通。如果您保留有关配对和单独编码中发生多少错误的指标,您应该开始看到好处并将其显示给您的经理,

例如,这花费了 x 个工时,但平均节省了 y 个缺陷修复。此外,clode 更清洁,并且下次我们触摸它时将花费更少的时间来改变它。

从那里您将获得硬统计数据,您可以开始编写更多代码。

基本上你的故事似乎和我的一样。

  1. 没时间做事。
  2. 错误发生。
  3. 急于修复它(需要更多时间)
  4. 转到 1

你需要停止腐烂。

于 2009-07-12T13:39:30.983 回答
0
  1. 代码审查
  2. 启用 Stylecop,这将迫使您编写可读、标准化和可管理的代码
于 2009-07-12T14:04:08.833 回答
0

我们使用代码审查。此外还有一些单一的任务:更改图表,安装一些东西......

于 2009-07-14T06:23:46.073 回答