导读 | 想让事情尽善尽美是很正常的心态。然而,当进行任务转换时,我们有时会忘记一些重要的事情——代码质量,以及作为一名程序员的成长。在我们犯下的众多“罪孽”之中,因匆忙而造成的错误实在无可厚非。 |
话虽如此,我们也必须寻找机会,深呼吸,放慢脚步。当觉得时间不够时,要小心不要出现以下这些重大错误。
你有没有在电影里看到过这种画面:一个程序员盯着屏幕看了好几分钟,却一筹莫展。没有电影这样拍——电影常塑造这样的情节:程序员飞速键入一些内容,然后问题迎刃而解。遗憾的是,真正的日常工作并非那么光鲜亮丽。
我们需要阅读数不胜数的代码。此外,我们还应该了解它的作用和原理。
代码读取不够会导致很多情况。你上一次在网上查找答案,比如在堆栈溢出(Stack Overflow)上找到一个代码片段,然后复制粘贴它,是什么时候?我可能就是这周。
从SO获取的代码有很大可能有效,但你是否了解它的作用、原理以及局限性?它足够安全吗?它如何应对边缘情况和你的需求?
有时,你不得不粘贴代码,并祈祷它能正常运行。时间有限,有些事情过于复杂,难以捉摸。但通常,你可以在15-30分钟内搞懂代码。对于放入项目中的代码,你应该确信自己足够了解,否则可能会危及项目的安全性和可维护性。
读取自己项目中的代码感觉如何?你被叫去修复的问题正好是不熟悉的一部分,不幸中的万幸,你预感到并试图立即修复它。修复起效了,你推进了这种变更,一切回到正轨。
这种错误后患无穷。如果你不熟悉基础代码而且没有进行测试,那么进行修复时不造成任何破坏并能解决所有问题就成了天方夜谭。在试图解决问题之前,你总需要弄清原委。只是随意调试是没有用的。可能会走运一两次,但迟早会造成大麻烦。
启动项目时默认要添加多少个库?你确定它们是必需的并了解它们是如何实现的吗?我并不是在为不使用代码库和框架做辩护。只要有可能,就应该使用经过验证和良好测试的代码。“重复发明车轮”很常见,但不过是多此一举,且弊大于利。
了解你正在使用的工具有益无害。常用库通常是优秀的软件,研究它们的基础代码,你会受益良多。这会帮助你成为一个更熟练的开发人员,或者至少让你意识到你并不需要某个特定的库。不必分析使用过的每一个库,但当你不断重复使用某个库时,你就有必要了解它是如何运作的。
读取优质代码能让你成为更好的开发人员,并帮助你理解自己的产品。你或许认为自己没有时间读取代码,事实并非如此。熟悉产品代码有助于加快编码速度,多读取其他代码有利于作为一名开发人员的成长。因此,从长远来看,读取代码可以节省时间,而非浪费时间。
你需要实现一个功能,但情况紧急,幸好你知道如何快速构建此功能。于是你投入其中,输入一些含糊的代码,一切似乎都很顺利,问题也迎刃而解。是时候往前推进了。
大错特错!当你开始编码却不考虑其他选择,只坚持要用第一版解决方案时,你的代码是有缺陷的。它可能效率低下、不可读或不可维护。最糟糕的时候,三种情况会同时出现,导致问题无法解决。
速战速决很诱人,但一名出色开发员的标志是创建高质量的代码并改进其所涉及的基础代码。若一个新项目中,所有人都只想尽快推出新功能,那么该项目注定会产生巨大的技术债务。随着时间推移,项目会变得越来越难以维护,开发人员的工作效率也将停滞不前。
改进代码是团队中每个开发人员的责任。所以,实现新功能一定要舍得花时间。考虑到工作的副作用,以及对通用应用架构的适应,你应该始终让基础代码保持比初始更好的状态。久而久之,它不仅能加快开发速度,还能让你成为一名更熟练的程序员。
有多少次,你并未准备确保功能正常运作的测试就创建了功能?这种做法很常见——尤其是在需要快速进行的项目中。人人都觉得测试浪费了宝贵时间,所以他们不得不重启进度,这永无止境。
事实上,对于任何生命周期较长或有待发展的项目,不论你的代码有多么优秀,测试都至关重要。更糟糕的是,有人会对不同的代码部分进行更改,这就会破坏你的功能。没有测试,你就无法得知这些。正确的测试提供了安全性,它们让你可以放心地在代码中进行更改。
你可能觉得测试浪费时间浪费金钱,但事实恰恰相反,未来的自己和其他开发人员都将感谢你编写了有用的测试。
欲速则不达,有些事看起来浪费时间,但不做后患无穷,认真做了反而能有收获。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/135831.html