重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
《5分钟从学生到程序员》第13课。
初级工程师往往被人吐槽为代码搬运工,大段大段的复制代码过来用,自己只要做稍微的业务调整。这个是每个程序员都需要经过的阶段,所以没什么好不舒服的。就算刚入行,不能行云流水的写代码,但还是可以写出行云流水的代码。
行云流水的写代码,说明工程师的技术水平高,掌握众多的开发技巧和驾驭框架的能力等。但是写出的代码,一定是行云流水的代码吗?不一定,有可能他们写出的代码很丑。行云流水的代码,是代码清晰,结构简洁,易于维护,符合规范。
行云流水写代码是高级工程师的事,我们在这里不探讨。我们做为一个有理想的码农,一定是要能写出行云流水的代码。下面分享几个写高质量代码的技巧。
一件事原则,即一个文件只做一件事,一个类只做一件事,一个函数只做一件事,甚至一行代码只做一件事。
分享个案例:以前有做个餐饮系统,业务流程很复杂,我们采用小前端(服务号)+ 大后台的结构实现,前端用VUE框架。应用已经上线运营,有天客户提要改需求,订单功能要加内容,业务内容我就不讲了,很复杂,采用智能分析,应用餐厅过往营业数据自动算出订单的内容。要改的内容,本来很简单,我估计也就一个小时搞定,就可以发个小版本,结果半天还没搞出来。
我就很奇怪,跑到工程师那里了解情况,工程师罗里吧嗦的给我讲了好多,搞不清楚他在讲些咋,直接看代码,发现他生成订单和查看订单详情做在同一个vue里,到处都是编辑和查看的判断,把自己搞迷糊了。
这种显然是有问题的,一个文件做两个功能,刚开始可能省事,但是你要祈祷客户不改需求,不然后面你就会连想死的心都有。
再分享一个函数只做一件事的案例:我有一次去朋友公司玩,他们正在讨论接口,我就顺便听了一下,他们做在线教育app,在讨论首页接口,首页有banner、推荐课程、推荐文章、热门课程等,他们决定是首页所有的数据都用同一个接口传回来。给出来的理由是首页只要一个接口,这样就不会出现多次访问网络,多次解析数据的情况,体验会更好。
我当时也嘴贱,给他们建议说不要做成一个接口,首页是经常会变的,你们要是这样做,到时这块的维护成本就会非常高,他们的技术老大还是坚持用一个接口。这个事情就过去了,后来朋友给我电话,说当时没听我的,后来首页改了几版,工程师都快崩溃了。
一行代码只做一件事,这个好理解,如果把代码写复杂了,你到时调试都调不出来到底发生什么错误。
现在很多IDE都自带编码规范,网上也有很多大企业的编码规范,有阿里的,有华为的。如果公司有编码规范最好,按公司的编码规范写代码。如果公司没有,建议去找个编码规范,不需要全部执行,全部是执行不下去的。
给个建议,你从找来的编码规范中,挑最重要的十到二十条来执行,像注释、命名规范、大小写规范这些是一定要有的,这样你才能写出一致的代码出来。不然从张三那里复制过来的代码,采用的是匈牙利命名法printEmployeePaychecks();从李四那里复制过来的代码,采用的是下划线命名法print_employee_paychecks(),那你的代码就没眼看了。
把一些常用的,比如字符串的处理、日期时间的处理、图形图像的处理、文件的处理等,提取出来做成工具类库,随着你的工具类库的丰富,你写代码会越来越简单,开发速度会越来越快。而且代码也简洁明了,本来可能是十几行的代码,现在只是一个函数调用就搞定了。代码维护起来也方便。
我们直接复制代码是最快的,所以很多工程师写过一段代码,再用到的时候,习惯把这段复制过来,改一改值,功能就成了。
这种是非常不好的习惯,如果这段代码是业务代码,那就更麻烦,需求是随时变的,业务调整很正常,甚至一天三变都有,如果业务代码到处复制,刚开始你还记得几个地方都改,后面改多了,可能就开始少一个,再往后少的地置就越来越多。这个就是传说中的改一个bug,会产生更多的bug的一个方面。
所以在你按ctrl+C的时候,想一想,有没有可能做成一个函数?正常都是可以的,这样你的代码质量就会高很多。
我们对看书都有经验,翻开书是目录,我们扫一下目录,就知道这本书有多少章多少节,大概在讲什么内容,如果有某一节感兴趣,直接翻到对应的页数就可以。
我们在看代码,很多时候都不知道入口在哪里,好不容易找到入口,再一看,业务实现代码,函数调用,都交叉在一起,一个函数几十行、几百行,甚至几千行的都有。我真见过三千行的函数,这个不是吹的。你说这代码怎么看,所以在前面讲到程序员不喜欢看代码。
我在讲功能开发那节课的时候,有讲功能的实现步骤,也就是设计部分,你知道实现功能的步骤,在入口的地方,实现上是这几个步骤的函数调用,就像书本的章节一样,再用注释标出来它们实现什么业务,业务在各自函数中实现,对哪个业务感兴趣,就进到哪个业务中到看对应代码。如果哪个业务出bug,只要到对应的函数中去找问题就可以,不需要把所有的代码都看了,才知道哪里出问题,改的时候还要担心会不会影响其它的地方。
这样,看你的代码就像看书一样方便,以后维护你代码的人就不会骂你,你也会比较少耳朵发痒。
你可能会说,这是结构化编程,现在用的是面向对象,是设计模式。这又有什么关系,我讲的是原理,是让代码容易编写,容易阅读,容易维护的原理。你可以把那些函数理解成是类的实例,是某个设计模式就行了。
这节课我们讲如何写出高质量的代码,这个不需要你有多高超的技术水平和框架能力,只要采用一些简单的技巧,在按ctrl+C的时候想想能不能抽象出一个公共函数,在一个文件、类、函数,甚至一行代码中,只实现一件事,有一个自己严格执行的简单的编码规范,然后在写代码时,让他看起来像看书一样方便,那你的代码质量就已经非常高了。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。