`
pda158
  • 浏览: 192987 次
社区版块
存档分类
最新评论

提升代码内外部质量的22条经验

阅读更多

总结的22条经验如下: 

  1. 代码分为外部质量和内部质量,好的产品不等于好的代码(Good Software != Quality Code)。
  2. 产品的冰山效应:产品经理以及用户关注的部分只是冰山露在水面以上的部分,隐藏在下面的是看不见的更加庞大的部分,那就是我们庞大的代码。 
  3. 拒绝 PPT 架构师,架构师应当写代码,哪怕这些代码并不 Check-in 到最终的代码库中。一个好的设计不是在凭空产生的,而是经过不断打磨、修改进而获得的。不存在一次设计,程序猿无脑堆砌代码能够完成的好的程序。 
  4. 编程的价值观:沟通、简单、灵活。
  5. 代码最重要的功能是传递程序员的设计和思路,其次才是实现的功能。好的程序员应当写出人类能够看懂的代码,而不是机器能理解的代码。
  6. 效率不是牺牲清晰性的理由,不能够因为人主观“认为”的一些小伎俩,使用晦涩的代码,企图以此提升性能。应当依赖编译器本身的优化,依赖工具对性能低下的点进行评测,进而进行针对性的优化。
  7. 不要试图死磕代码加快速度,找个更加有效的算法可能更加有效。
  8. 代码要先做对,在弄快。先使其可靠,再让其更快。先把代码弄干净,再让它变快。
  9. Good code is not bad code。坏的代码是可以通过一些指标进行度量的。让坏代码的指标可以被机器固化并时时检查,确保代码不会变得更糟。
  10. 函数本身不是用来复用,这和很多“主流的”观点不同。函数的存在的主要意义在于:划分独立职责,隐藏具体细节操作,使得代码具有可读性,应对扩展的变化,方便进行单元测试。顺带的,偶尔可以用作复用。
  11. 函数应当遵循:单一抽象层次原则、短小原则和单一职责原则。
  12. 当发现一个函数具有以下特征时,需要考虑抽取函数: 
    • 过长
    • 嵌套层数过深。
    • 自然分块,需要使用注释描述该程序块
    • 判断条件过于复杂
    • 函数的某些判断分支不断变化
    • 参数过于复杂
    • 逻辑重复
  13. 局部变量应当用途单一
  14. 新写代码逻辑,应当关注用户场景和类职责划分,不应当上来就考虑我要使用一个什么模式。这样势必会导致过度设计。模式用作应对变化,当后续版本发生变化时,模式用作重构现有代码。
  15. 不断重构,保持代码简洁。
  16. 代码是债务,一个程序员欠下的债务,总是要还的,虽然可能不是由本人还。维护老代码的程序员又被称作代码考古工程师,经常在一大堆糟乱的代码中挖掘最初的用户需求,往往这些需求淹没在无数的变更历史中。维护老代码是一个费时费力的过程。需要一些技巧减小修改老代码的风险。
  17. 程序员应当将整洁的代码风格作为一种习惯,时刻意识到整洁代码的重要性并不断地提高重构技巧。
  18. 意图导向编程可以辅助思考,并生成易懂代码。
  19. 设计模式本身是用做应对变化的。如果在开发时就想着“我要用模式”,很可能会导致过度设计。在对代码进行重构时,才应当考虑使用设计模式解决问题。
  20. 函数名称很重要。
  21. 关于注释:
    • 如果能用短小函数描述,则使用子函数替代注释本身。
    • 确保注释和代码表达的意图一致,否则就失去了注释的意义。
    • 在重要的地方写注释,不要注释满天飞,简单的重复代码的功能是毫无意义的。要让每一处注释都有价值。不要过分注释。
  22. 关于何时重写代码 
    • 开发团队要预留20% 的时间用作保持对原有系统的重构。剩余的时间用作开发新功能。
    • 只要有可能,对所要重构的部分进行递增修改,让用户切身感受到产品的改进,哪怕将工作时间延长。

     


以上经验分享,结合到具体工作,可能有场景需要考虑: 

  
• 近几年不少研发团队逐步往快速迭代方向转移,其中应当更多地关注目前代码的内部质量,是否有足够的单元测试保证代码的稳定性,是否不断地在进行重构保证代码的简洁。在快速应对变化的同时,代码不能丝毫打折扣。我们要经常反思,我们估计的时间,是否已经考虑给开发团队预留了足够的重构时间?产品经理是否足够的了解代码目前的质量状态?我们是否在欠债? 

  
• 对于维护现有代码,我们经常是直接野蛮的在原有代码中继续累加逻辑,很少考虑重构,导致原有逻辑越来越复杂,难以理解。这一点应当受到更多关注。 

 

最后引用一句话,与大家共勉: 

 

  
知识不在于记住多少,而是在于它出发了你多少的思考。一旦我们开始反思我们的代码,代码将不再一样。 

5
0
分享到:
评论

相关推荐

    Python代码重构:提升代码质量的艺术

    在软件开发中,代码重构是一个不可或缺的过程,旨在不改变外部行为的前提下,改善代码的内部结构。Python作为一种动态类型、解释型的高级脚本...通过持续的重构,我们可以不断提升代码的质量,构建更加优秀的软件产品。

    敏捷开发中编写高质量Java代码

    本文将围绕敏捷开发流程中的关键环节——提升代码质量的五个步骤展开讨论,即统一编码规范、静态代码分析、单元测试、持续集成及代码评审与重构,并介绍相关工具和方法的应用。 #### 一、统一编码规范 统一编码...

    java代码重构经验总结

    在软件开发过程中,代码重构是一项重要的技能,它旨在不改变代码外部行为的前提下,改进其内部结构,从而提升代码质量和可维护性。本文将深入探讨Java代码重构的关键点,涵盖重构原则、重构技巧以及常见的代码“坏...

    提高php代码质量 36计 转载开源中国社区

    提高PHP代码质量的36计,是一份针对PHP开发者提升代码质量和编程效率的指南,尤其适合初学者和希望精进技能的中级开发者。本文将详细解读其中的几个关键点,帮助开发者理解并实践这些规范。 ### 1. 避免使用相对...

    代码重构.pdf

    《代码重构》一书由Martin Fowler编写,是软件开发领域中关于代码质量提升的经典之作。书中详细阐述了重构代码的必要性、重构的时机以及如何安全地重构代码。重构指的是在不改变软件外部行为的前提下,改进其内部...

    工程&代码规约-阿里巴巴

    1. 设计模式:推崇使用设计模式,如工厂模式、观察者模式等,提升代码复用性和可扩展性。 2. 代码重构:定期进行代码重构,消除坏味道,保持代码结构清晰。 3. 性能优化:关注代码性能,避免不必要的计算和资源消耗...

    软件工程中的代码质量与重构策略.pptx

    #### 第二章:代码质量概述 - **代码质量重要性**: - **项目进度**:高质量代码能显著减少后期的修改和维护工作量,从而加快项目进度。 - **团队协作**:清晰、简洁的代码有助于团队成员之间的沟通,提高协作...

    3种常用代码检查审核管理工具

    其中,你可以添加代码审核步骤,比如使用内置的代码质量分析器或与其他外部工具(如 SonarQube)集成。安装 GitLab 需要设置服务器,然后为项目启用 CI/CD 功能,并编写相应的配置文件。 这些工具的应用可以帮助...

    改善既有代码的设计(完整中文扫描版PDF).pdf

    在现代软件开发过程中,代码质量的维护和提升一直是开发团队面临的重要课题。《改善既有代码的设计》这本书是一本在软件工程领域广受认可的著作,它专注于介绍如何对已有代码进行重构,以提升其设计质量。本书与...

    动软代码生成器-最新官网下载版.zip

    这种灵活性使得代码生成器不仅仅是一个节省时间的工具,更是提升代码质量,保持代码一致性的重要手段。 此外,该工具还提供了版本控制功能,允许用户跟踪和管理生成的代码版本,这对于多人协作的项目来说尤其重要,...

    重构-改善即有代码的设计

    通过良好的命名规范、注释和文档,可以提升代码的可读性,便于团队协作和后期维护。此外,书中还提到了如何识别和处理坏味道的代码,比如过长的方法、重复的代码等,这些都是代码重构的重要起点。 在C/C++编程中,...

    敏捷开发流程 之 junit提高代码覆盖率

    最后,**代码评审和重构**是提升代码质量的最后防线。代码评审让团队成员有机会互相学习和改进,通过审查他人代码,可以发现潜在问题,同时也可传播良好编码习惯。重构则是对现有代码结构进行优化,以提高代码的...

    编写高质量JavaScript代码的基本要点

    编写高质量的JavaScript代码不仅关乎个人技能的提升,更是对团队合作效率和产品长期发展的贡献。通过遵循上述原则和技巧,开发者可以编写出既高效又易于维护的代码,为项目的成功奠定坚实的基础。

    vb代码管理软件

    - 共享功能:允许将代码片段或整个项目分享给指定的团队成员或外部开发者。 10. **集成开发环境(IDE)插件** - 如果VB代码管理软件提供IDE插件,用户可以直接在Visual Basic环境中访问代码库,无缝集成开发流程...

    Java代码设计规范

    Java代码设计规范是编程实践中非常重要的一个环节,它旨在提高代码质量、可读性和团队协作效率。本规范基于一系列安全可靠的原则,旨在帮助Java开发者编写出高效、稳定且易于维护的代码。 ### 1. 简介 良好的代码...

Global site tag (gtag.js) - Google Analytics