提高代码质量的那些建议

程序员跟各行各业的手艺人一样,都是靠自己的作品吃饭。所以要想获得高收入和业界的认可就要不断的学习提高自己的业务水平。这里我总结了一些程序员提升代码质量的建议希望能对你的进阶有帮助。

1.提高代码的复用程度

不管是写新代码还是对旧代码的重构,我们一定要注意提高代码的复用性。很多小白写代码的时候只在意业务功能的实现,往往代码就写成了一坨。下次再有类似的需求的时候还得重写,以往的代码一点也用不上,这就导致了大量的重复工作。所以我们在写代码的时候一定要注重代码的复用性,对代码进行有效的分割,实现高内聚低耦合。这样解耦出来的独立模块,在别的类似的业务中就可以直接复用了。可复用的代码一般有以下两个特点:

1.代码是独立解耦的,不依赖其它的模块

2.代码是无状态的,重复调用不会有副作用

2.移除不必要的依赖

很多新手在写代码的时候,习惯Copy代码,有时候为了实现一个小功能从别的地方Copy一大堆依赖头文件到业务中来,不管这些头文件用得到还是用不到。久而久之代码就变的又臭又长,非常不容易维护。我们在写代码的时候,一定要有精简的意识,头文件用到了再引入,用不到的就移除。同时用不到到的第三方库一定要及时移除,这样不仅能提高代码的质量还能提高代码的运行效率。

3.多线程应用考虑线程安全

多线程应用中如果是只读数据,一般不会出现什么问题,但如果涉及到多线程同时写数据要考虑线程安全问题,防止多线程过程中数据重复写。在多线程同步数据的时候一定要加锁,防止线程间冲突,同时还应该考虑多线程过程中由于加锁引发的性能问题。同时在可能的情况下尽可能的避免线程间的同步问题。引入多线程的时候还应该考虑会不会引起线程死锁问题。

4.采用延迟分配的方案

写代码的时候很多人为了调用方便,直接在类的成员中声明依赖类的实例,这样的好处是不用控制成员变量的生命周期了,坏处是类实例化的时候性能变差了。所以如果类的某个成员变量比较复杂,初始化比较耗时的时候,我建议采用延迟分配的方案。延迟分配就是在类的成员变量中声明对应依赖项的指针,然后在调用的时候再进行实例化。析构或者销毁的时候再对改对象进行销毁。还有在类的调用的时候,一定要避免频繁的对对象的创建和销毁这样对性能的损耗是很严重的。

5.减少内存的分配、拷贝和释放频率

函数入参如果传递的是一个比较复杂或者占用内存比较大的对象的时候,建议传递类的引用,这样可以避免临时变量的创建和销毁,从而提升函数的执行效率。在写代码的时候我们一定要尽可能减少内存的分配拷贝和释放频率,这些都是比较耗时的操作,如果可以使用之前的缓存的话,尽可能使用之前的缓存。

6.类、方法、变量使用private修饰符

提高类的封装性,避免对外暴露多余的接口和成员变量,尽可能多的使用private权限,可以提高代码的安全性。

7.异常信息里有没有敏感信息

很多时候我们为了调试方便,会在异常信息里面输出一些敏感内容到日志,包括程序的运行逻辑以及一些用户的个人敏感信息等等。殊不知,这些信息可能会被一些别有用心的人拿到从而用来对我们的系统搞破坏。所以再对外发布程序的时候,一定要检查一下异常信息里面有没有敏感信息。

8.控制代码的权限域

编写产品的时候有些代码是有特权的,比如有些代码是可以操作服务端数据库,对数据库进行删除的.有些代码是有管理员权限的,可以对用户的操作系统产生影响。在编写这类代码的时候,我们一定要特别慎重,尽量将特权代码限定在一个有限的范围内,对其进行控制。同时对其它功能调用模块一定要秉持着最小原则进行授权,防止权限的滥用。

9.注意敏感信息的处理

在产品开发的时候,我们一定要保护敏感信息,防止信息泄漏。

哪些信息是敏感信息/p>

1.个人敏感信息

身份信息 、隐私信息、业务信息等等

2. 商业敏感信息

雇员信息、商业数据、流程信息等等

谁有权限获取相应的敏感信息/p>

最小授权原则,应该尽可能的减少敏感信息的操作模块,减少敏感信息的授权。

应用日志里有没有敏感信息/p>

日志里面一定不要输出敏感信息,这方面经常出问题。

对象序列化有没有排除敏感信息/p>

之前出现过敏感信息序列化发送过程中泄漏的问题,所以尽量避免通过序列化的方式发送用户敏感信息。

敏感信息的存储有没有特殊处理/p>

比如用户的密码不能明文存储,尽量存储密码加盐的哈希值。

敏感信息在不使用的时候一定要及时清除。

10.做好数据的安全性和有效性校验

在没有规定外部数据的校验点的时候,我们一定要在数据的传送路径上做好数据的校验,包括安全性校验和有效性校验,防止未经校验的数据侵入系统对系统造成破坏。

来源:码农飞飞

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月10日
下一篇 2022年1月10日

相关推荐