编写代码超过限制时间_不要浪费时间编写完美的代码

编写代码超过限制时间

一个系统可以持续5年或10年,甚至20年或更长时间。 但是特定代码行甚至设计的生命周期通常要短得多:当您通过不同的方法来迭代解决方案时,它的寿命长达数月,数天甚至数分钟。

一些代码比其他代码更重要

通过研究代码如何随时间变化 ,Michael Feathers已经确定了代码库中的幂曲线 。 每个系统都有代码,通常很多,它们只编写一次,并且永远不会更改。 但是,一小段代码(包括最重要和最有用的代码)会一遍又一遍地更改,重新构建或重写。

随着您对系统,问题域或体系结构方法的了解越来越多,应该更容易了解和预测什么代码将一直更改,什么代码永不更改:什么代码很重要,什么代码不。

我们应该尝试编写完美代码吗?

我们知道,我们应该编写简洁的代码 ,这些代码必须一致,明显且尽可能简单。

有些人将这一点发挥到极致,并强迫自己编写代码,使它们尽可能地美丽 ,优雅,接近完美 ,并痴迷于重构和困扰每个细节。

但是,如果代码只会被编写一次且永远不会被更改,或者如果代码一直在不断变化,则在另一种极端情况下,编写完美的代码不会像试图编写完美的要求那样浪费和不必要(并且不可能实现),或者试图提出一个完美的设计?

您不能编写完美的软件。 疼吗 不应该这样 接受它作为生活的公理。 接受它。 庆祝它。 因为不存在完善的软件。 在计算机的简要历史中,没有人编写过一款完美的软件。 您不太可能成为第一个。 除非您接受这一事实,否则最终您将浪费时间和精力追逐一个不可能的梦想。”

实用程序员安德鲁·亨特(Andrew Hunt) :从《旅人》到《大师》

一次编写的代码不必美观大方。 它必须是正确的。 它必须是可以理解的–因为在系统的整个生命周期中,从未更改过的代码可能仍会被读取多次。 它不必干净而紧密-只需足够清洁即可。 可以复制和粘贴此代码中的其他快捷方式,至少可以做到这一点。 这是永远不需要完善的代码。 这是不需要重构的代码(直到并且除非您需要对其进行更改),即使周围的其他代码正在更改。 这是不值得花费额外时间的代码。

那么您一直在更改的代码又如何呢? 烦恼样式并提出最优雅的解决方案是浪费时间,因为这段代码可能会在几天或几周内再次更改,甚至可能被重写。 每次进行更改时,都会强迫性地重构代码,或者因为没有更好的选择而重构您未更改的代码。 代码总是可以更好。 但这并不重要。

重要的是:代码是否按照预期的方式工作–是否正确,可用和高效? 它可以处理错误和不良数据而不会崩溃吗?或者至少可以安全地失败 ? 调试容易吗? 变更容易且安全吗? 这些不是美的主观方面。 这些是使成功与失败区别开来的实用措施。

语用编码与重构

精益开发的核心思想是:不要在不重要的事情上浪费时间。 这应该说明我们如何编写代码,如何重构代码,如何审查代码,如何测试代码。

重构您需要完成的工作才能完成工作-Martin Fowler所说的机会主义重构(理解,清理, Boy Scout规则之类的东西)和预备重构。 足以使更改变得更容易,更安全,并且仅此而已。 如果您不更改代码,那么看起来实际上并不重要。

在代码审查中, 关注重要的事情 。 代码正确吗? 它具有防御性吗? 安全吗? 你能听懂吗? 更改安全吗?

忘记样式(除非样式妨碍了可理解性)。 让您的IDE负责格式化。 对于代码是否可以“更多面向对象”,没有争论。 只要它合理地遵循此模式,就无关紧要。 是否喜欢不重要。 能否以更好的方式完成操作并不重要-除非您要教的是该平台和语言的新手,并且您应该在代码审查中进行一些指导。

编写重要的测试。 涵盖主要路径和重要异常情况的测试。 以最少的工作量为您提供最多信息和最大信心的测试。 大型测试或小型集中测试 –没关系,只要编写代码之前或之后,只要您能完成工作,就可以编写测试。

不是(只是)关于代码

建筑和工程的隐喻从未对软件有效。 我们并不是在设计和建造会在数年或数代后保持不变的桥梁或摩天大楼。 我们正在构建更具可塑性和抽象性,更短暂的东西。 代码被编写为可以更改–这就是为什么它被称为“软件”的原因。

“经过五年的使用和修改,一个成功的软件程序的来源通常从其原始形式上是完全无法识别的,而五年之后的成功构建实际上几乎没有被触及。”

凯文·泰特(Kevin Tate), 可持续软件开发

我们需要将代码视为我们工作的临时产物:

…有时甚至面对更重要的事情,我们被迷恋了代码。 通常,我们会错觉这样一种错觉:在运输产品时产生的有价值的东西是代码,而实际上它可能是对问题领域的理解,设计难题的进展甚至客户反馈。

丹·格罗弗(Dan Grover), 《代码与创造性破坏》

迭代式开发教会我们进行实验和检查工作的结果–我们是否解决了问题,如果没有解决,我们学到了什么,如何改进? 我们正在构建的软件永远不会完成。 即使设计和代码正确,它们也可能只适用了一段时间,直到情况要求再次更改它们或用其他更合适的替代品。

我们需要编写良好的代码:可理解,正确,安全和有保障的代码。 我们必须重构并查看它,并编写良好的有用测试,同时还要知道某些代码(或也许所有代码)可能很快就会被丢弃,或者可能永远不会被再次查看,或者可能一点都不习惯。 我们需要认识到我们的某些工作必然会被浪费,并为此进行优化。 做需要做的事情,别无所求。 不要浪费时间尝试编写完美的代码。

翻译自: https://www.javacodegeeks.com/2014/11/dont-waste-time-writing-perfect-code.html

编写代码超过限制时间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值