Rust入驻Windows,重构是代码开发的必经之路?
重构是否为代码开发工作中的必经之路?
我觉得重构在代码开发工作中应该算作一个必经之路,而且是要定期去做的一件事。在一个软件的生命周期中,可能重构不只需要进行一次,甚至要进行许多次。
代码重构本身是为了修补漏洞、提高性能、修整代码结构、增加代码的可读性。我个人以为,下面这几种情况应当算作是代码重构能发挥重要作用的场合。
1、开发者在开发一款软件时,并未对代码方面的知识有足够的了解,比如一些常见的设计模式、同类型业务的常见解决方案和代码编写风格等,从而导致自己的代码逻辑性不强,结构混乱,做出来的东西仅仅是能用而已,运行起来没有错误,但是设计上极其不合理。随着接触和掌握到的知识变多,开发者认识到了自身的不足,决定对自己的作品进行修理,这个时候重构无疑是开发者提升自己的良好的实践手段,推翻自己的代码,重写所有的功能,我觉得这样进行重构之后,不仅程序本身会受到提升,开发者自身也会获得精神上的成就感和满足感。尤其推荐学生朋友们进行这样的重构,比如老师上课留的作业,要做一个东西,完全可以自己重构很多次,尽量保证一次比一次更好。
2、公司的产品,尤其是经历了很长时间的产品,若干新老员工共同编写了若干年的一个产品。老代码不敢动,只能不断写出冗余的代码,导致不必要的运行效率低下和结构臃肿。我曾经见过一个产品的一个代码文件中结构安排不合理,同一个代码文件中写了几千个if-else。这时候就特别需要从头开始做一次重构,把结构重新设计得合理一些,把冗余的代码进行剔除,把对应的功能进行完善和修补。
3、关于算法。不能保证每一个程序开发人员都具有非常扎实的数据结构和算法功底。大家的水平参差不齐,写出来的算法效率也不一样。底层的算法,以什么样的方式进行处理,和前端如何沟通,如何传输数据,要传几次,如何安排数据的结构,如何进行加密,这些都或多或少涉及算法和数据结构。再比如单纯的处理文件的算法,如何进行高效处理,如何优化运行时间,这些都需要深入学习和多加练习才能有对应的条件反射。所以可想而知,有些零点几秒就能跑完的算法,换另一个人来写,可能要跑几秒。而一个业务流程里,可能会有多个算法,相差的时间加起来,不是一个小数量。所以这个时候做代码重构,其实是在做算法和效率的重构,减少用户的等待时间,降低服务器的资源损耗。
4、就如这次问答的题目中所说的一样,微软使用Rust进行核心库的重构。这就是语言导致的重构。不断有新语言横空出世,新语言比原有的语言安全性高,执行效率高,或者可以和新时代的硬件结合得更紧密,那用新的语言重新写原有的功能,也会使其在执行效率和安全性的层面变得更好更优秀。
接下来说到本次讨论的第三个问题——如何写出干净优雅可维护的代码?
干净是怎么个干净法?
1、合理规范的命名非常重要。这里的命名,既包括代码文件的命名,也包括代码文件中各种类和变量的命名。好的命名,可以让开发者了解代码文件概要,了解各个方法所实现的功能,了解每一个变量中保存的是什么内容。初学者写代码最喜欢把变量用abc这样的名称去命名。我建议大家可以去网上寻找一些大企业的内部代码规范,看一看真正的业务线上一般是如何要求的,从初学的时候就开始养成良好的习惯。
2、正确的代码缩进必不可少。现在很多IDE都自带自动代码缩进的功能,这点倒不用特别担心。代码缩进有很多种风格。如果是跟着项目组一起做一个大项目,那最好大家商议一下,使用同一个代码缩进风格。最后合并代码的时候,保持一样的风格会使代码非常干净整洁。
优雅来自哪里?
1、正确的结构设计和逻辑设计。这点一般就要多看一些设计模式相关的内容了,好的设计模式可以给程序带来良好的架构。而且好的设计模式会使项目中的代码拆分变得条理清晰。
2、减少冗余代码,增加代码复用。不知道大家有没有遇到这种情况,明明是同一个功能,可是由于沟通方面出现了问题,导致前面有人写过的方法,后来接手项目的同学又写了一遍,而且功能大差不差。或者是设计本身有问题,导致某个方法变成了单文件内专用。明明只是一个参数的问题,写一个方法大家都能用,结果被写死成固定的方法,没有提炼出来成一个可复用的方法。这样的冗余实在是太可惜了。增加代码复用率以后,程序本身就可以变得优雅不少。
如何使自己的代码可维护,或者方便维护?
1、又说回命名的问题了。想让代码方便维护,首先要容易读懂。代码易读性不好,变量名字文件名字方法名字乱七八糟,拿到了看半天都一头雾水,这样的代码,就不要指望去维护,更别提拿来重构了。
2、高内聚、低耦合。尽量保证一个类中的每个成员方法只做一件事,保证最大限度的聚合。而且尽量不要让一个类内部的成员方法互相调用,这样以后做功能变更修改代码时,报错的概率会大大降低。少使用全局变量,也尽量不要用硬编码的方式去写代码。而且尽可能保证在删除其中一个模块的代码的时候,只影响依赖它的模块,不要影响到项目中和这个模块没有关系的地方。
3、与时俱进。这里的与时俱进,是说能用新的语言版本新的库版本,就尽可能在保证稳定的情况下用新的。代码越老,一些依赖的库就越不容易在新机器上得到兼容。毕竟兼容也是有限制的,随着操作系统和硬件的不断发展,已经有很多老旧的源码需要经过大量的修改才能通过新环境下的编译。而若干年后的人,看现在的人写的代码,也会发生同样的事情。让代码和时代的差距小一些,之后维护的时候应当也会方便一些。
再次来参加开发者社区的话题讨论,以上是个人的一些拙见。希望在这个开发者大家庭中,和大家互相学习,共同进步。祝开发者社区越办越好。
赞5
踩0