关于代码内外部质量提升的一些看法

本文主要关注代码的内部和外部质量,编程的价值观,代码质量的评估标准,整洁代码的匠艺以及如何维护已有的代码。
外部质量:用户所能感受到的部分,正确性,易用性,效率,可靠性。
内部质量(代码质量):可维护性,灵活性,可移植性,重用,可读性,可测试性,可理解性。

总结的经验如下: 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值