措施员最重要的手艺:知道什么时辰不写代码
副问题[/!--empirenews.page--]
本文指出大大都措施员都轻易犯下的错是,由于对编程的欢快,不知道什么时辰应该对编码说“不”。措施员必要知道什么时辰不必要编码,并从项目中删除全部不须要的代码,这将让事变变得更轻易,并使软件寿命更耐久。 对什么说“不”学会说“不”是一个好的初步。 可是到底是对什么说“不”,又是什么时辰得当说“不”呢? 这简直是大大都措施员,乃至是那些高级措施员都很轻易夹杂的一个重点。 作为一名措施员,编写代码无疑是你职业中最重要的部门。在你的编程生活中,你不行停止的地将会处理赏罚各类关于差异范例代码的哀求。而每个哀求都也许会迫使你做出一些艰巨的抉择。这些看上去统统正常,好像也没什么错。事实,这是全部人对你的祈望:作为措施员就该编写代码。然而,这里有一个题目:你是否应该编写向你哀求的全部代码? 这个题目给我们引入了一个措施员所能学到最重要的手艺: 知道什么时辰不编码也许是措施员所能学到最重要的手艺。——《可读代码的艺术》 对上面这句话,我完全赞成。这是为什么呢? 编程是办理题目的一门艺术。因此,天然而然地,措施员成为了题目办理者。作为措施员,当我们眼前有一个新题目有待办理,或由于任何其他缘故起因必要我们写出代码行时,我们会由于义务感而感想欢快。 有这种欢快也是再正常不外的,事实我们是措施员,我们就是喜好写代码。 然而,对编写代码这件事过于欢快就会让我们变得盲目。这种情感会让我们忽视了一些重要的究竟,而这些究竟也许导致更大的题目,让我们在将来不得不再去办理这些更严峻的题目。 那么,我们每每轻易忽略哪些重要的究竟呢? 你写的每一行代码都是:
正如 Rich Skrenta 所写的,代码是我们的仇人: 代码可谓是险恶的。代码会腐朽。代码必要按期维护。它们老是包括有待发明的 bug。而新特征的添加老是意味着旧代码必需举办调解。 代码量越大,bug 所能藏身的处所就越多,且 checkout 或编译代码所需的时刻就越长,而新员工领略这个体系所必要的时刻就越长。这还意味着,假如你必要重构代码,必要挪移更多对象。 另外,更多的代码凡是意味着措施拥有更少的机动性和更少的成果。这一点乍一看是违背直觉的,但确实许多时辰,较之一个才能清淡的措施员所编写的冗长紊乱的代码,一个简朴优雅的办理方案能运行更快,且其成果会更通用。 代码都是由措施员编写的。以是编写更多的代码每每必要更多的措施员。而措施员之间的雷同本钱是以 n²的速率增添的,然后,这些措施员写的全部代码都添加到体系,在扩大体系成果的同时,也会增进整个软件工程的运营本钱。 我说的这些都是真的,莫非不是吗?以是,那些用他们的出产服从和编程思想来鼓励你的巨大措施员们,都是那些知道什么时辰该说“不”,什么时辰不编程的人。易于维护、一连寿命长、不绝辅佐用户实现成果的那种软件,应该不包括任何不须要的代码行。 最好的代码着实是没有代码,而最有服从的措施员知道什么时辰不该该编码。 怎么知道什么时辰不该该编码呢?当你投身一个项目标时辰,很天然地会感想欢快,满脑筋都是全部那些想要实现的炫酷成果。可是措施员每每轻易高估了他们的项目真正必要几多特征。于是就造成体系中有很多未完成或未投入行使的特征,甚职苄些特征纯粹只是让应用措施变得过于伟大。你应该起宰衡识什么对你的项目是须要的,以停止犯下这种错误。 相识软件的用途及其焦点界说,这是知道什么时辰不该该编写代码的第一步。 请允许我举一个例子。假设,你的软件只有一个目标:打点电子邮件。基于这个目标,发送和吸取电子邮件是该软件项目标两个根基成果。你就不该该等候这个软件同时也能打点你的待服务项清单,莫非不是这样吗? 因此,你应该拒绝与此焦点界说无关的任何也许的特征哀求。在这种时辰,可以确切地必定你大白什么时辰不该该编写代码。 永久不要随意扩展软件的用途。 一旦知道了什么内容对你的项目是必不行少的,那么在下一次评估全部也许呈现的代码哀求时,你会心识到这一点。你将清楚地知道编写代码的需求是什么。这个体系应该实现哪些特征?哪些代码值得编写?于是,你可以大胆地去质疑统统,由于你确切地大白那些不须要的代码是怎样拖垮你的项目标。 知道什么时辰不该该编码可以使你的代码库更小。 当你启动一个新项目时,一开始体系里只有两三个源文件。统统看起来都那么简朴明白。而编译和运行代码仅仅必要几秒钟。这时,你完全清晰在那边可以找到你想要的对象。 然后,跟着项目标增添,将会有越来越多的源文件填满你的目次。个中每个代码文件动辄就包括数百行代码。为了更好地组织这些代码,你很快就必要设立多个目次。记着哪个函数挪用其他函数变得比早年越发坚苦,而追踪 bug 必要支付更多的事变量。打点这个项目变得越来越坚苦,于是,你必要更多的措施员来资助。然后,雷同开销 跟着措施员数目的增进而急剧增进。你的项目会变得越来越慢。 最后,这个项目变得很是复杂。添加新特征变为一种疾苦。由于纵然是很小的改变也必要花上几个小时。修复当前的 bug 老是会引入新的 bug。你的项目开始赶不上最后限期…… 此刻,这个项目对你来说是一场熬煎。为什么会酿成这样? 这都是由于你不大白什么时辰不该该编码。于是你对全部也许的特征哀求都绝不踌躇地说“是”。你是盲目标。编写那些不须要的新代码会让你忽略软件最必不行少的焦点内容。 这听起来就像可怕影戏一样,是吗? 但假如你一向对每件事都说“是”,这种可怕的环境就会产生。你必要知道什么时辰不必要编码,并从项目中删除全部不须要的代码。这将让你的事变变得更轻易,并使你的软件的寿命更耐久。 我出产服从最高的一天就是甩掉了 1000 行代码。——Ken Thompson (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |