不要浪费时间去写所谓的完美代码

一般而言,一个系统能用 5 年、10 年,甚至 20 年以上。但是某特定代码行以及某特定设计则往往比较短:当我们使用了不同的解决方法,其生命周期可能就只有几个月、几天,甚至是几秒种的时间。

有的代码就是比其他代码更重要

通过研究代码如何随时间变化,Michael Feathers 确定了代码库的功率曲线。每个系统都有代码,通常而言里面的很多很多代码,一次写好之后就永远不会变了的。但是还是有少量的代码,包括最重要和最有用的代码,会被一遍又一遍地改动、重构甚至是重头开始重写。

随着你对系统、问题领域以及架构方法方面经验的增长,就更加容易知道和预测什么代码总是需要改动的,什么代码是永远不会变的:有的代码就是比其他代码更重要。

我们是否应该写完美代码?

我们知道,我们应该写干净的代码,一致的、易于理解的且越简单越好的代码。

有些人因此而走向了一个极端,强迫自己尽可能地编写美丽优雅趋于完美的代码,着魔于重构,可着劲儿折腾每一个细节。

有的代码只需要写一次,以后就再也不需要作任何变动。但有些代码则并非如此,试想,这些需要不断改变的代码,代码写得那么完美却在下一秒就立马被 delete 不就太过浪费了吗?而且也没有必要这么做。

“你不用去写所谓完美的软件。不是禁止你,只是真的没有这个必要。好好想想,接受这个话。你需要明白完美的软件其实是不存在的。计算机发展到今天还没有人写的软件是完美的。你也不要自以为是地想去做第一个。除非你能接受这个事实,否则你最终只会是在浪费时间和精力,如果你想追求这个不可能实现的梦想。”

——Andrew Hunt,《The Pragmatic Programmer: from Journeyman to Master》的作者

一次就能解决的代码也不需要美丽和优雅,只要保证是正确的、容易理解的即可——因为这些不变的代码可能以后还要被多次读取。也不必非要是干净和紧密的——只需要干净即可。复制和粘贴等快捷方式在这类代码上是被允许的,至少在一定程度上可以这么做。这些代码不需要再重构(除非你需要改变这些代码),即使它周围的其他的代码一直在变化中。总之一句话,这些代码不值得我们在它身上花费额外的时间。

至于那些一直在变化的代码?苦苦思索最优雅的解决方案纯粹是在浪费时间,因为这段代码很可能在几天或者几周后就会被改写,甚至重写。

所以我们要关注的重点是:这些代码是否如愿运行——是否正确、实用和高效?是否能处理异常数据而不崩溃?——或者至少是否能做到即使失败也不会出问题?是否容易调试?是否能简单安全地改变?这些实实在在的措施才是成功与失败之间的分水岭。

编码与重构要务实

精益开发的核心思想是:不要浪费时间去做那些不重要的事情,包括写代码、重构、代码审查以及代码测试等多个方面。

只需要重构真正需要的部分就足够了——这也被 Martin Flower 称之为是机会主义的重构和有准备的重构。

关于代码审查也只需要专注于重要部分。这些代码是否正确?是否安全?是否可以运行?

不要在意风格(除非风格本身妨碍了我们的理解)。让 IDE 做主,格式化的照顾就 ok 了。我们不必去讨论代码还能不能更
OO,也不必一定要遵循某种样式,喜欢与否也没有关系,是否能用更好的方式解决也不重要——除非是你在教新手,并且需要做一些指导作为代码审查的一部分。

测试也要挑关键的来。测试要覆盖主要途径和重要的异常情况。无论是大型测试还是小而集中的测试,无论是写在代码之前还是之后,只要能起到作用就成。

这不仅仅是代码问题

软件开发总是在不断地更新迭代。哪怕现在看它的设计和代码是正确的,但是一段时间之后,它就会被要求改变或者直接被其他更好的所替代。

我们需要编写优良的代码:易于理解、正确以及安全。我们在重构和审查代码、编写有用的测试的同时也需要谨记:有些代码或者甚至是所有的这些代码,在不久的将来是要被抛弃的,或者永远也不会再被读取,或者再也不会被使用了。我们必须意识到,我们现在的一些工作将会成为无用功。做需要做的事情,仅此就够了。不要浪费时间去写所谓的完美代码。

作者:小峰

来源:51CTO

时间: 2024-09-20 08:04:47

不要浪费时间去写所谓的完美代码的相关文章

测试是一件浪费时间的事吗?

让我们详细地说明 作为开发人员,我们都知道我们应该测试我们的代码.我们应该写单元测试,但这也通常是我们发现没时间时跳过的第一步. 作为团队的领导者或者管理者我们都知道测试是必要的,但是当截止日期临近的时候,我们倾向于减少测试,而把更多的重点放到编码上. 这样看测试领域似乎很紧张.我们都知道测试对我们是有利的,但是一旦项目面临压力时我们就不再测试了. 我们为什么测试? Edsger W Dijkstra 说过:测试可以用来找到显式的缺陷(bug),但是无法显示潜伏的软件缺陷(bug). 这意味着测

写更好的代码,还是写更少的代码?

先来看一个有趣的讨论:    引用 我宁愿让我的学生尽他们最大的努力去写更好的代码,而不是写更好的注释.--Uncle Bob Martin(设计模式和敏捷开发先驱,<代码整洁之道>作者)  比起"更好"的代码,我更宁愿学生们写更少的代码.--Bob Marshall  没有任何事情比"非常有效率地做了一件本不应该做的事"更没用的了.--Peter Drucker 这引发了一场关于"写更好的代码"还是"写更少的代码"

不要浪费时间写完美代码

一个系统可以维持5年,10年,甚至20年以上,但是代码和设计模式的生命周期非常短,当对一个解决方案使用不同的方法进行迭代的时候,通常只能维持数月,数日,甚至几分钟的时间. 代码重要性区分 随着对代码是如何改变的研究,致力于代码修改艺术的人发现了一个代码库的规律曲线.每个系统都有很多从未改变的代码.但是也有小部分非常重要且有用的代码一次又一次的改变,经过了多次重构和重写. 当你对一个系统,问题域,或者架构方法越来越熟悉的时候,就更容易发现和预测哪些代码会经常修改,哪些代码不会被修改,即区分重要代码

不要将时间浪费到编写完美代码上

[腾讯云]云上实验室:开发者零门槛,免费使用真机在线实验!>>> 一个系统的迭代开发可能持续运行5年至10年甚至是20年.相比之下,某行代码甚至某个设计的生命周期则要短很多,只有几个月或者几天,甚至当你为了解决一个问题迭代测试不同方案时它们的生命周期只有几分钟. 一些代码的确比其他代码更重要 通过研究代码随时间发生的变化,Michael Feathers发现了代码生命线.通常,每个系统都有许多一次写成不再修改的代码.但是,有一小部分代码,包括最重要最有用的代码,却被经常被修改,重构或者重

不要浪费时间和生命。站长应寻找最轻松最有效的方法

很多站长都是夜猫子,有些站长一天发200个论坛,也有站长一天内2个网站上线--当然啦,勤能补拙是真理,但是不能把自己累死啊,这么累做包身工都比做网站赚钱啊!今天SEO只是把自己的一些想法说出来,大家愿意听的就听,觉得是AD的就拉倒. 要想做网站不累,就得掌握这样几个道理: 1.找准方向,做创新,最重要的是网络上要做到人前 不要什么都做,什么都想做最好,追求完美是一个伪命题.对你我平常人都不适合的!呵呵,这个是废话,但是也是真话!这个社会不是个公平竞争的社会,准确的方向和强大的资源,会让你如鱼得水

如果你做的事情毫不费力,就是在浪费时间

原文出处: 钛媒体   欢迎分享原创到伯乐头条 曾担任苹果副总裁的Roizen女士提出了八条职业原则,其中关于创业她说:很多怀有雄心壮志的人力求消除工作中的困难,顺利到达梦想彼岸,这是不对的.现实情况是,即使你真的轻松成功,你也会感到无聊.所以,找点困难的事情做吧.创业的美妙之处正在于其艰难.没有安全可言,没有稳定的收入,你必须完全靠自己.   注:本文作者Heidi Roizen系DFJ Venture合伙人,曾任苹果公司主管开发者关系的高级副总裁,女性创业者.   Heidi Roizen女

前苹果副总裁:如果你做的事情毫不费力就是在浪费时间

本文作者Heidi Roizen系DFJ Venture合伙人,曾任苹果公司主管开发者关系的高级副总裁,女性创业者.Heidi Roizen女士一度是硅谷人人争相学习的典范.她曾创办自己的公司并管理了 14 年之久.后来,她担任苹果公司主管开发者关系的高级副总裁.现在,她是 DFJ Venture 的一位风投家,她还在斯坦福主讲一门名叫"企业家精神"的课程.她几乎认识硅谷的所有重要人物并且灵活地运用着自己的影响力.哈佛商学院甚至还有专门关于她的案例.以下是 Roizen 提出的八条原则

怎样花两年时间去面试一个人

转自刘未鹏 – November 4, 2011      Joel Spolsky曾经感叹:招聘难,难于上青天(此处笔者稍加演绎:)).他有两个辛辣但不乏洞察力的断言:真正的牛人也许一辈子就投大概4次简历,这些家伙一毕业就被好公司抢走了,并且他们的雇主会给他们不赖的待遇,所以他们也不想挪窝.(刚刚去世的Dennis Ritchie就是这样一个人)而"人才"市场上能找到的大多都不是什么人才.招到这帮人轻则费钱重则把你公司搞挂. (当我把这篇文章给邹欣老师review的时候,他说了另外两

别再浪费时间了!如何从细节上真正节省用户的时间

别再浪费时间了!如何从细节上真正节省用户的时间 时间:2014-09-09 10:54 来源:优设网 作者:阿布编译 我们的用户是很珍惜时间的,我们也不应该随意浪费.在每个项目中都问自己两个问题:"我们是在消耗用户的时间来节省自己的时间吗?""在这里要如何节省用户的时间?"在西方社会中,什么是最宝贵的财富?钱?状态?我 觉得应该是时间. 我们有很好的理由去珍惜时间,而且也有非常多的要求.我们有太多事情要做,太多压力要承受.人们憎恨自己的时间被浪费,尤其是在网上.我们