如何才能写出“高质量”的代码?


谢谢邀请 。
作为一个已经写了十几年代码的程序员 。做好软件不是全部围绕代码而展开 。换句话讲一个程序员的程序员优秀不仅仅体现在代码上 。更要有内在的编程思想说的层次再高深点就是框架思想 。很多初学者都会存在很多疑问 。觉得能够写代码就万事大吉了 。在能写代码之前会有很多疑问
数学不好能学好编程不?
英语不好能不能学好编程?

如何才能写出“高质量”的代码?

文章插图
这些都是还没入门的疑问 。真正入门之后发现这些都不是什么问题 。真正决定程序员水平也不是简单的能写多少代码 。真正项目实施过程写代码的时间占据不到百分三十 。大部分时间是在设计和构思上 。当然占据时间最多的是调试以及客户后续提出的需求上面 。现在很多人还在纠结是不是要多学习几种编程语言 。编程语言本质来讲就是一种工具 。主要指导思想还是编程思想 。
现实中如何才能写出高质量的代码?
1.良好编程基本功 。再高的大厦也得需要强大的编程基础 。不一定要掌握多少种编程语言关键要非常熟悉一种编程语言 。里里外外都给吃透了 。达到这种程度至于掌握几种编程语言就显得不是那么重要了 。到了这种程度就可以触类旁通 。切换一种新的编程语言也不会费多大事 。有事没事就回头看看基础书 。越是编程高手越是注重基本功的学习 。很多做java的程序员 。java编程思想这本书看了不下十几遍 。而且还在继续 。基础的学习什么时候值得回味 。
如何才能写出“高质量”的代码?

文章插图
2.专业知识的雄厚 。编程语言只是工具 。工具如何才能使用好 。还是要看这工具是用来做什么的,比如安全领域可能使用C语言或者C++编程 。如果安全专业知识掌握的非常扎实 。工具使用起来再更加熟练 。才能有高质量的代码出现 。要把一个事情做到极致 。各个细节点就要落实到位 。缺一不可 。
3.好的软件框架 。软件框架是写出高质量代码的土壤 。假如一个能力很强的人 。进入一个乱糟糟的公司基本很难发挥出最大的潜能 。所以生存土壤很重要 。一个优秀的产品一定是代码各个模块有机配合在一起共同做出来的 。一个模块的优秀代码优秀 。整个产品出问题了意义也不是很大 。
如何才能写出“高质量”的代码?

文章插图
4.高质量的代码从来都不是一次性搞定的 。都是经过多次的打磨修改出来的 。玩过开源的人应该都明白 。代码模块不停的升级优化折腾不停 。不仅仅是功能的增加更重要的代码质量的提炼 。所以想写出高质量代码需要敢对自己下手 。对自己要狠一点才能有高质量的代码出来 。细心的人可以观察下身边优秀的程序员 。看看是不是都是这么做的 。
做到以上四点 。坚持下去写出来的代码质量不会差 。当然还要懂得去阅读别人写的优秀代码 。开始看的时候不一定能看得懂 。不能大块的看懂就切块去看去学习 。以前有个linux内核爱好者 。整体看linux内核代码 。有一天看到他十分开心的样子 。问发生了什么事情 。说看懂了linux内核里面的内存是如何管理的了 。然后拉着我给我讲了半天 。虽然没听懂但也坚持听到最后 。毕竟代码能写的前提是能看懂 。所以开源社区的代码如果能看懂就是一个非常大的进步 。然后一步步的掌握起来 。格局放大一定做出更大的事情来 。
其他观点:
我认为高质量的代码有几个特性:
实现目标(需求)
这是评价代码的前提吧 。这一点要是没达标 。代码肯定是不合格的 。
代码规范
好的代码一定有良好的代码规范 。包括代码分层、各种命名、代码风格等等 。这么说吧 。就算是一个不懂代码的人 。看到有良好代码规范的代码 。也会觉得赏心悦目;而对于专业的人来说 。良好的代码规范会提高代码的可读性 。
如何才能写出“高质量”的代码?

文章插图
代码复用
避免代码重复 。最常见的问题就是方法不复用;代码重复率也是考核代码质量的一个重要标准 。
健壮性和可扩展性
提高代码的容错能力 。需要在编码过程中 。尽可能提前考虑到所有的情况 。
易于扩展:业务在变 。我们的代码在变 。如果一个业务流程写在一个方法里面 。那么真的会三天一小改 。五天一大改 。
单元测试覆盖率
估计很多人写的代码都缺少单元测试用例 。有些程序员也很排斥写单元测试用例 。个人认为 。单元测试用例可以在很大程度上避免:修改了一个BUG 。又造成十个BUG的问题 。(不要影响到正常代码的运行)

推荐阅读