热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

开发人员常见疏忽

导读想让事情尽善尽美是很正常的心态。然而,当进行任务转换时,我们有时会忘记一些重要的事情——代码质量,以及作为一名程序员的成长。在我们犯下的众多“罪孽”之中,因匆忙而造成的错误实在
导读 想让事情尽善尽美是很正常的心态。然而,当进行任务转换时,我们有时会忘记一些重要的事情——代码质量,以及作为一名程序员的成长。在我们犯下的众多“罪孽”之中,因匆忙而造成的错误实在无可厚非。

开发人员常见疏忽

话虽如此,我们也必须寻找机会,深呼吸,放慢脚步。当觉得时间不够时,要小心不要出现以下这些重大错误。

你有没有在电影里看到过这种画面:一个程序员盯着屏幕看了好几分钟,却一筹莫展。没有电影这样拍——电影常塑造这样的情节:程序员飞速键入一些内容,然后问题迎刃而解。遗憾的是,真正的日常工作并非那么光鲜亮丽。

我们需要阅读数不胜数的代码。此外,我们还应该了解它的作用和原理。

代码读取不够会导致很多情况。你上一次在网上查找答案,比如在堆栈溢出(Stack Overflow)上找到一个代码片段,然后复制粘贴它,是什么时候?我可能就是这周。

从SO获取的代码有很大可能有效,但你是否了解它的作用、原理以及局限性?它足够安全吗?它如何应对边缘情况和你的需求?

有时,你不得不粘贴代码,并祈祷它能正常运行。时间有限,有些事情过于复杂,难以捉摸。但通常,你可以在15-30分钟内搞懂代码。对于放入项目中的代码,你应该确信自己足够了解,否则可能会危及项目的安全性和可维护性。

读取自己项目中的代码感觉如何?你被叫去修复的问题正好是不熟悉的一部分,不幸中的万幸,你预感到并试图立即修复它。修复起效了,你推进了这种变更,一切回到正轨。

这种错误后患无穷。如果你不熟悉基础代码而且没有进行测试,那么进行修复时不造成任何破坏并能解决所有问题就成了天方夜谭。在试图解决问题之前,你总需要弄清原委。只是随意调试是没有用的。可能会走运一两次,但迟早会造成大麻烦。

启动项目时默认要添加多少个库?你确定它们是必需的并了解它们是如何实现的吗?我并不是在为不使用代码库和框架做辩护。只要有可能,就应该使用经过验证和良好测试的代码。“重复发明车轮”很常见,但不过是多此一举,且弊大于利。

了解你正在使用的工具有益无害。常用库通常是优秀的软件,研究它们的基础代码,你会受益良多。这会帮助你成为一个更熟练的开发人员,或者至少让你意识到你并不需要某个特定的库。不必分析使用过的每一个库,但当你不断重复使用某个库时,你就有必要了解它是如何运作的。

读取优质代码能让你成为更好的开发人员,并帮助你理解自己的产品。你或许认为自己没有时间读取代码,事实并非如此。熟悉产品代码有助于加快编码速度,多读取其他代码有利于作为一名开发人员的成长。因此,从长远来看,读取代码可以节省时间,而非浪费时间。

你需要实现一个功能,但情况紧急,幸好你知道如何快速构建此功能。于是你投入其中,输入一些含糊的代码,一切似乎都很顺利,问题也迎刃而解。是时候往前推进了。

大错特错!当你开始编码却不考虑其他选择,只坚持要用第一版解决方案时,你的代码是有缺陷的。它可能效率低下、不可读或不可维护。最糟糕的时候,三种情况会同时出现,导致问题无法解决。

速战速决很诱人,但一名出色开发员的标志是创建高质量的代码并改进其所涉及的基础代码。若一个新项目中,所有人都只想尽快推出新功能,那么该项目注定会产生巨大的技术债务。随着时间推移,项目会变得越来越难以维护,开发人员的工作效率也将停滞不前。

改进代码是团队中每个开发人员的责任。所以,实现新功能一定要舍得花时间。考虑到工作的副作用,以及对通用应用架构的适应,你应该始终让基础代码保持比初始更好的状态。久而久之,它不仅能加快开发速度,还能让你成为一名更熟练的程序员。

有多少次,你并未准备确保功能正常运作的测试就创建了功能?这种做法很常见——尤其是在需要快速进行的项目中。人人都觉得测试浪费了宝贵时间,所以他们不得不重启进度,这永无止境。

事实上,对于任何生命周期较长或有待发展的项目,不论你的代码有多么优秀,测试都至关重要。更糟糕的是,有人会对不同的代码部分进行更改,这就会破坏你的功能。没有测试,你就无法得知这些。正确的测试提供了安全性,它们让你可以放心地在代码中进行更改。

你可能觉得测试浪费时间浪费金钱,但事实恰恰相反,未来的自己和其他开发人员都将感谢你编写了有用的测试。

欲速则不达,有些事看起来浪费时间,但不做后患无穷,认真做了反而能有收获。


推荐阅读
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • Valve 发布 Steam Deck 的新版 Windows 驱动程序
    Valve 最新发布了针对 Steam Deck 掌机的 Windows 驱动程序,旨在提升其在 Windows 环境下的兼容性、安全性和性能表现。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 阅读本文大约需要3分钟。微信8.0版本的发布带来了许多令人振奋的新功能,如烟花特效和改进的悬浮窗,引发了用户的热烈反响。 ... [详细]
  • 本文详细介绍了 Java 中 org.apache.xmlbeans.SchemaType 类的 getBaseEnumType() 方法,提供了多个代码示例,并解释了其在不同场景下的使用方法。 ... [详细]
  • 深入理解Java泛型:JDK 5的新特性
    本文详细介绍了Java泛型的概念及其在JDK 5中的应用,通过具体代码示例解释了泛型的引入、作用和优势。同时,探讨了泛型类、泛型方法和泛型接口的实现,并深入讲解了通配符的使用。 ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 随着网络安全威胁的不断演变,电子邮件系统成为攻击者频繁利用的目标。本文详细探讨了电子邮件系统中的常见漏洞及其潜在风险,并提供了专业的防护建议。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 网易严选Java开发面试:MySQL索引深度解析
    本文详细记录了网易严选Java开发岗位的面试经验,特别针对MySQL索引相关的技术问题进行了深入探讨。通过本文,读者可以了解面试官常问的索引问题及其背后的原理。 ... [详细]
  • 本文介绍了多个关于JavaScript的书籍资源、实用工具和编程实例,涵盖从入门到进阶的各个阶段,帮助读者全面提升JavaScript编程能力。 ... [详细]
author-avatar
街对面的怪蜀黍
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有