题
我看到一篇讨论“代码钦佩”问题的文章。基本上,作者讨论了开发人员应该如何对他们编写的代码更加怀疑。我们可能会过于“欣赏”我们的代码,将自己依附于它,使我们更容易受到可能摆在我们面前的错误和其他不幸的影响。
您对这个问题有何看法?对于如何避免/更多地了解这个问题,您有更多提示吗?
解决方案
几年前,我和另一个人在一个小小的“爱好”上工作。项目,我意识到我们必须重新评估事情。我们写了很多代码,但并不是所有代码都很好。
我们真的不想“扔掉”。我们所做的所有工作。但我意识到了一些事情:最重要的是从现在开始我们需要投入的工作量。
我们无法改变我们已经将大量工作投入到项目中的事实,因此最小化项目所需的总工作量的唯一方法是尽量减少我们尚未完成的工作量。
从那天起,我就不再使用我的代码了。如果我有信心将它丢弃并从头开始意味着减少工作量而不是保持它并使其适应我的需要,那么我就把它扔掉。
其他提示
我的高中美术老师过去常常鼓励我们采取我们认为最好的图纸并撕掉它们;他称之为“净化灵魂”。他的理由是,作为艺术家,我们被驱使创造艺术作品,任何时候我们制作出我们喜欢的东西并且让我们满意,我们继续创作的动力将会减少。
所以我遵循了他的建议并撕毁了我最好的东西,并且它起作用了。我没有把时间花在欣赏我的旧作品上,而是创造了新的东西并且不断变得更好。我试图用我的代码遵循相同的原则,但它并没有真正起作用:我的电脑有一个坚硬的塑料外壳几乎不可能撕裂。
我发布了一篇来自Jeff Atwood博客的片段,每年减少吸收量 ,我同意100%。
我经常认为吸吮较少 每年都是程序员的谦虚 提高。你应该不高兴 你一年前写的代码。如果你 不是,这意味着A)你 在一年内没有学到任何东西,B) 你的代码无法改进,或者C)你 永远不会重访旧代码。所有这些 是软件的死亡之吻 开发者。
我们确实很欣赏我们的优秀代码,但要知道该欣赏什么并不总是那么容易。复杂而复杂的代码有时会被误认为是令人钦佩的代码,而优雅和简洁应该是应该努力的目标。
有两个引号浮现在脑海中:
“调试是写入的两倍 代码首先。 因此,如果您将代码编写为 尽可能巧妙地,你是 定义,不够智能调试 它”
- Brian Kernighan
和
“让一切变得如此简单 可能,但并不简单。“
- 阿尔伯特爱因斯坦
乔纳森·爱德华兹写了一篇
我从不钦佩我的代码。我钦佩其他人的代码,我“借”了并尝试模仿他们或更好他们,我发现我知道的越多,特别是关于编码越多我发现我不知道。对于同行程序员来说,唯一有价值的就是欣赏我的代码并借用它。
我认为他说得有道理。与有太多这种情况的人一起工作是令人沮丧的,因为它确实阻碍了团队合作和找到问题的最佳解决方案。
因为我可能有点妄想,所以我尝试采取一些实践,让我立足于现实。对于代码,
单元测试:这些让我更加关注代码应该做什么,而不是任何抽象的“美”。
共享代码所有权:这里有两个营地:让人们对自己的代码有更多的所有权,并希望自豪感占据上风,或者减少他们的所有权,让同侪压力发挥作用。我相信给予人们更多的所有权可以导致对这些代码的钦佩。我们实行共享代码所有权,因此我经常被迫看到有人重写我的完美代码以使其变得更好(在他们看来)。我很快意识到,过多地欣赏它是浪费时间,而且在情感上也很困难。
结对编程:与某人并肩工作会让你保持现实。
其他反馈:这些都是反馈循环,但还有其他循环。要了解某个东西是否有效,没有比观察某人(尝试)使用它更好的方法了。将您的作品展示给尽可能多的人。有代码审查。读 别人的代码. 。跑步 静态代码分析 工具。
我在使用PurplePilot - 我不羡慕我自己的代码,因此我不断寻找新的,更有效(地狱,更容易)的方法来做同样的事情。我喜欢有效的c#书,从那里我从中汲取了大量有用的代码。
我会毫不犹豫地抛弃代码并重新开始,但不一定是从头开始,即通过为特定场景编写一些代码然后扔掉它,你可能会更好地掌握场景。换句话说,这是一个“邪恶的问题”,或者你找到了另一种对爱迪生不起作用的方式。
这引出了一个更广泛的问题:如果代码没有被丢弃,或者至少被重新访问,那么正在开发的图书馆正在变得停滞不前是一件好事吗?
欣赏代码没有任何问题......这是积极强化过程的一部分,将激励您在将来编写更多更好的代码。
然而,错误放置或误用钦佩可能是个问题。如果代码确实不好,或者没有单元或其他测试未暴露的错误,或者需要重构/重新设计/替换,那么这个错位的admiratoin就是一个问题。使用钦佩作为跳过部分过程的借口 - 例如代码审查,或者对代码没有持怀疑态度 - 是滥用钦佩。
与其他任何好的东西一样,对代码的钦佩可能会被错放或误用 - 这并不意味着它本身就是坏事。这就像是说“宗教是一件坏事,因为它会导致人与人之间的冲突和战争”。
两个字:代码审查。
收集两位或多位开发人员并邀请他们审核/批评/评论您的代码。 'twill在你的代码上放了一些(肯定是苛刻的)。
拥有更健康的观点可能更好 - 我们不是火箭科学家,而且我们没有治愈癌症 - 这只是工作。
(是的,如果你是一名建筑师,为你帮助建造的整栋建筑感到自豪是合理的,但是他们真的有很多自尊被包裹在一个单独的蓝图中,或者是一个壁橱里的壁橱3他们自己设计?)。