如何才能写出“高质量”的代码?
网友解答: 谢谢邀请,作为一个已经写了十几年代码的程序员,做好软件不是全部围绕代码而展开,换句话讲一个程序员的程序员优秀不仅仅体现在代码上,更要有内在的编程思想说的层次再高深点就是框架思
谢谢邀请,
作为一个已经写了十几年代码的程序员,做好软件不是全部围绕代码而展开,换句话讲一个程序员的程序员优秀不仅仅体现在代码上,更要有内在的编程思想说的层次再高深点就是框架思想。很多初学者都会存在很多疑问,觉得能够写代码就万事大吉了,在能写代码之前会有很多疑问
数学不好能学好编程不?
英语不好能不能学好编程?
这些都是还没入门的疑问,真正入门之后发现这些都不是什么问题,真正决定程序员水平也不是简单的能写多少代码,真正项目实施过程写代码的时间占据不到百分三十,大部分时间是在设计和构思上,当然占据时间最多的是调试以及客户后续提出的需求上面,现在很多人还在纠结是不是要多学习几种编程语言,编程语言本质来讲就是一种工具,主要指导思想还是编程思想。
现实中如何才能写出高质量的代码?1.良好编程基本功。再高的大厦也得需要强大的编程基础,不一定要掌握多少种编程语言关键要非常熟悉一种编程语言,里里外外都给吃透了,达到这种程度至于掌握几种编程语言就显得不是那么重要了,到了这种程度就可以触类旁通,切换一种新的编程语言也不会费多大事,有事没事就回头看看基础书,越是编程高手越是注重基本功的学习,很多做java的程序员,java编程思想这本书看了不下十几遍,而且还在继续,基础的学习什么时候值得回味。
2.专业知识的雄厚。编程语言只是工具,工具如何才能使用好,还是要看这工具是用来做什么的,比如安全领域可能使用C语言或者C++编程,如果安全专业知识掌握的非常扎实,工具使用起来再更加熟练,才能有高质量的代码出现,要把一个事情做到极致,各个细节点就要落实到位,缺一不可。
3.好的软件框架,软件框架是写出高质量代码的土壤,假如一个能力很强的人,进入一个乱糟糟的公司基本很难发挥出最大的潜能,所以生存土壤很重要,一个优秀的产品一定是代码各个模块有机配合在一起共同做出来的,一个模块的优秀代码优秀,整个产品出问题了意义也不是很大。
4.高质量的代码从来都不是一次性搞定的,都是经过多次的打磨修改出来的,玩过开源的人应该都明白,代码模块不停的升级优化折腾不停,不仅仅是功能的增加更重要的代码质量的提炼,所以想写出高质量代码需要敢对自己下手,对自己要狠一点才能有高质量的代码出来,细心的人可以观察下身边优秀的程序员,看看是不是都是这么做的。
做到以上四点,坚持下去写出来的代码质量不会差,当然还要懂得去阅读别人写的优秀代码,开始看的时候不一定能看得懂,不能大块的看懂就切块去看去学习,以前有个linux内核爱好者,整体看linux内核代码,有一天看到他十分开心的样子,问发生了什么事情,说看懂了linux内核里面的内存是如何管理的了,然后拉着我给我讲了半天,虽然没听懂但也坚持听到最后,毕竟代码能写的前提是能看懂,所以开源社区的代码如果能看懂就是一个非常大的进步,然后一步步的掌握起来,格局放大一定做出更大的事情来。
网友解答:我认为高质量的代码有几个特性:
实现目标(需求)这是评价代码的前提吧,这一点要是没达标,代码肯定是不合格的。
代码规范好的代码一定有良好的代码规范,包括代码分层、各种命名、代码风格等等。这么说吧,就算是一个不懂代码的人,看到有良好代码规范的代码,也会觉得赏心悦目;而对于专业的人来说,良好的代码规范会提高代码的可读性。
代码复用避免代码重复,最常见的问题就是方法不复用;代码重复率也是考核代码质量的一个重要标准。
健壮性和可扩展性提高代码的容错能力,需要在编码过程中,尽可能提前考虑到所有的情况。
易于扩展:业务在变,我们的代码在变,如果一个业务流程写在一个方法里面,那么真的会三天一小改,五天一大改。
单元测试覆盖率估计很多人写的代码都缺少单元测试用例,有些程序员也很排斥写单元测试用例。个人认为,单元测试用例可以在很大程度上避免:修改了一个BUG,又造成十个BUG的问题。(不要影响到正常代码的运行)
代码的学习过程,就是看代码-模仿着写代码-自己写代码,要想写出高质量的代码,不外乎就是:多看、多写、多思考。
多看买几本经典的编程书籍,按照上面的例子敲一遍,再跟自己写的代码比较比较,看看是否有差距。如果初学者的话,不建议上来就看开源框架的源码,火候还没有到那个水平,理解起来比较困难。
多写养成良好的编程习惯,可以学习一些大厂的代码规范;尽可能减少重复的代码,可以把可重用的代码,抽象出来;适当的进行重构,好的代码不是一次就写成的;合理使用工具,善于使用工具。
多思考对比别人优秀的代码,想想人家写这段代码时候的思路是什么样的;看到别人的“烂”代码,也想想自己是否犯过这样的错误;代码编写过程中,多想想有没有其他的情况发生,以后万一要是需要扩展,现在的代码是不是需要留下什么“口子”方便以后扩展。
编程能力的提升,是一个长久的学习过程,希望大家都能写出漂亮的代码。