提升代码内外部质量的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% 的时间用作保持对原有系统的重构。剩余的时间用作开发新功能。
    • 只要有可能,对所要重构的部分进行递增修改,让用户切身感受到产品的改进,哪怕将工作时间延长。

以上经验分享,结合到具体工作,可能有场景需要考虑:
•    近几年不少研发团队逐步往快速迭代方向转移,其中应当更多地关注目前代码的内部质量,是否有足够的单元测试保证代码的稳定性,是否不断地在进行重构保证代码的简洁。在快速应对变化的同时,代码不能丝毫打折扣。我们要经常反思,我们估计的时间,是否已经考虑给开发团队预留了足够的重构时间?产品经理是否足够的了解代码目前的质量状态?我们是否在欠债?
•    对于维护现有代码,我们经常是直接野蛮的在原有代码中继续累加逻辑,很少考虑重构,导致原有逻辑越来越复杂,难以理解。这一点应当受到更多关注。

最后引用一句话,与大家共勉:
知识不在于记住多少,而是在于它出发了你多少的思考。一旦我们开始反思我们的代码,代码将不再一样。

时间: 2024-09-24 10:11:08

提升代码内外部质量的22条经验的相关文章

三年0故障总结,提升代码质量的秘诀

该文章来自于阿里巴巴技术协会(ATA)精选文章. 个人经历 对我代码质量影响最大的是在一家外资企业,在这家公司我觉得有以下几个方面做的很不错. 团队编码风格统一 统一到什么程度? 不看代码作者,你很难区分代码是谁写的(在目前公司一些团队也能达到这个标准). 个人观点: 这样做有什么好处?团队中每个人阅读代码都很容易,减少很多沟通,维护成本( 代码阅读的次数远远大于变更的次数),并且心情非常愉悦.有人肯定觉得愉悦有点夸张,举个栗子: 有一些代码,如果不是由于与工作内容有关联,你是否有种这辈子都不情

站内搜索体验大提升:22条优化策略

我们以各类营销方式,使访客通过直接输入地址.搜索引擎搜索.邮件或标签回访等方式访问站点.愿意拜访,并不是我们的营销手段高明,而是他们都怀揣 着一丝渴求,渴求获取:心爱的物品.最新的消息.学习的机会.有价值的信息.自我价值的实现等等,物质层面与精神层面的满足.登陆网站寻宝的第一步,导航 菜单.站点地图.Tag标签.面包屑.站内搜索等都是我们提供挖宝工具,其中站内搜索最能说明访客的心声. 言归正传,那站内搜索怎么设置才更有利于访客使用呢?我们一起看看以下22条优化策略[查看原文]. 搜索框优化 1.

22条对于站内搜索体验大提升的优化策略

现在的我们以各类营销的方式,让访客通过直接输入地址.搜索引擎搜索.邮件或标签回访等方式访问我们站点.愿意拜访,这并不是我们的营销手段高明,但是他们都怀揣着一丝渴求,渴求获取:最新的消息.心爱的物品.有价值的信息.学习的机会.自我价值的实现等等,从而满足物质层面与精神层面.而登陆网站寻宝的第一步,那就是导航菜单.站点地图.Tag标签.面包屑.站内搜索等,这些都是我们提供挖宝工具,而其中的站内搜索其实最能说明访客的心声. 那么言归正传,那站内搜索到底应该怎么设置才更有利于让访客使用呢?我们就一起看看

22条优化策略提升站内搜索体验

一个好的网站在用户体验上做得到位,比如站内搜索,每位访客的需求都不一样,网站本身展示的内容没有满足他的口味,那他可能就会尝试在站内搜索一下,那搜索词就有讲究了,比如ytkah会搜索"站内搜索",也可能会搜"网站内部搜索",即使一样表达出来的词语也不同. 站内搜索是一个挖宝工具,站内搜索最能说明访客的心声. 言归正传,那站内搜索怎么设置才更有利于访客使用呢?我们一起看看以下22条优化策略 搜索框优化 1.搜索框位置 搜索框应该放在访客所期望的位置:右上角或上面中间位置

网站推广的100条经验,你会了几条?

中介交易 SEO诊断 淘宝客 云主机 技术大厅 讲 课 人:梦想网络(QQ:2343765) 讲课时间:2007年11月27--28日 讲课主题:网站推广的100条经验,你会了几条? 网站是否有价值关键是看它是否能够满足访问者特定方面的需求. 如果一个网站没有任何可以吸引人的地方,那么再怎么宣传都是无济于事的, 即使网站的访问量在短期之内能够得以提高,但一旦停止了宣传,网站访问量还是会迅速下降下来. 但是如果一个好的网站没有推广的话,等于是白做的,既时做的再漂亮,能被别人看到的也不多,所以一个好

新七大绝招提升网站的质量绝版!

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 网站质量对于就是网站的生命力,因此如何提高网站的质量,怎么样才算一个高质量的站点?高质量的站点该如何推广?今天在我们抱团推广VIP群里面对这个问题在前些天群成员randy写的<7大绝招提升网站的质量绝版!>基础上进行了深入的探讨. 以下是我们推广群5900290集体智慧的结晶的总结版,仅供参考! 1.页面布局 也就是通常所说的页面

网站的22条军规

用户篇 第1条.对你本人没用的,对用户也一样. 第2条.没有用户愿意接受"教育"或"引导". 第3条.用户永远选择最懒的方式. 第4条.用户虽然懒,但并不笨,甚至远比你高明.网站只是舞台,用户才是主角. 内容篇 第5条.每个页面上的字符数量不要超过3000个,用户有生理带宽的极限! 第6条.只有放错位置的广告,没有写错内容的广告.广告放在合适的位置,是对内容有益的补充. 第7条."怎么告诉用户"永远比"告诉用户什么"更重要.

《移动App测试的22条军规》目录—导读

内容提要 移动App测试的22条军规 本书全面讲解了移动App测试的技术.技巧.工具.案例和测试用例,全书共分23章,主要内容为:移动App的特性,关注多任务和意外情况处理,避免手势冲突,关注用户体验,设计通知和消息展示,支持操作系统特性,及时显示和同步消息,支持多种文件格式,支持多语言和地区设置,重点测试高内存占用的功能.降低流量和电量消耗,确保成功集成和调用第三方App,尽量不使用非标准控件,iOS 8升级所引入的新特性,Android 5.0升级所引入的新特性,自动化和探索性测试,自动化测

“22条”导渠:台商在粤投资升级

7月12日,第九届粤台经贸交流会(以下简称"台交会")在广东江门开幕. 作为两岸经贸文化论坛的配套活动之一,本届台交会举办了金融.物流和旅游合作发展研讨会.粤台半导体光电(LED)产业合作发展高峰论坛.农业合作与发展研讨会等活动. 以签署<两岸经济合作框架协议>(ECFA)为契机,7月11日,第六届两岸经贸文化论坛在广州举行.论坛以"加强新兴产业合作,提升两岸竞争力"为主题,就两岸新能源产业合作.节能环保产业合作及深化两岸经济合作三项议题达成共识,并形成