一个优秀的程序员所设计的代码一定具有以下特点:可读性强,可移植性强,独立性强。本篇文章主要介绍怎么在实际工作中落实这三点。这篇文章的目的主要是为了告诫以后工作中的自己时刻谨记并落实此三点。
1.可读性的落实
代码的可读性,指的就是规范性。所有代码都遵循一个肉眼可见的规律,程序员遵循这种“潜规则”设计出更多的功能函数。对于可读性主要有两点,其中一个是命名规则另一个是代码注释。命名规则主要包括对变量名和函数名的定义,其中变量名又包括宏、全局变量、静态变量和局部变量。一般情况下,对于定义名最好根据其实现功能采用英文全称来概括定义,若英文名冗长可以尽量将缩写(取英文前几个字母或省略元音字母),宏、全局变量和静态变量以可读性为主,局部变量以简洁为主。另外宏命名一般会采用全大写,全局、静态和局部变量会采用全小写(根据个人习惯)。函数名定义主要以函数功能的英文全称简写。
注释主要包括函数注释、必要变量名注释与代码过程中必要注释。其中函数注释主要放在函数定义头部,主要包括函数功能介绍、输入参数、输出参数和返回值等介绍。全局变量与静态变量名不能通过其名称识别其作用的必须加上注释。代码过程中主要一些逻辑的判断条件句或者一些看似不规范的代码要加上必要注释。
2.可移植性的落实
这里的可移植性除了包括代码能够在不同系统上稳定运行,还包括程序中一些算法拿出来放在别的项目中调用运行。可移植性的实现基于独立性的基础之上,单两者并不相同。对于不同系统上的运行,由于经验有限这里不做说明(但是很重要),待经验丰富以后或资深大佬能够补上。模块函数的可移植性其实就是一点,需要用到的外部变量都用传参形式传入,尽量拒绝使用全局变量和静态变量。
3.独立性的落实
我理解的独立性,除自身头文件和系统文件尽量不依赖其他的自定义功能文件的头文件。独立性跟可移植性有些类似,独立性主要面向对象是整个文件,可移植性主要面向是模块函数(自我理解)。当然完全独立的文件也符合可移植性。对于整个项目的所有文件都是实现独立性是不可能的,因为不同文件之间是会有调用和传参来产生联系。此时就要有所取舍的设计,判断哪些文件有独立性的必要。我的习惯是驱动功能的文件必须独立,调用多个其他文件函数负责作为关联文件,其依赖于各个需要使用的驱动头文件。还有一个技巧是针对避免使用全局变量的,在文件里定义static静态变量,通过功能函数传参的值给静态变量赋值,其他函数再使用此已被赋值的静态变量,即可。此方法则实现了文件的独立性,但是会影响功能函数的可移植性。可根据具体情况取舍。
以上是个人在编程上的小心得,欢迎大佬指正与补充