声明:本文主要针对C/C++这种中级语言。
PS:本来想写技术文,却发现自己没什么技术-_-|||于是写个彩蛋文充数
好了废话少说开始正文, 其实编程是一种很唯美的事情,当你的指尖亲吻着键盘,一行行代码犹如音符般在屏幕上跳跃,忘我时,你会觉得自己其实是一个艺术家。不过艺术家更多需要感性创意,编程更多需要理性分析。作为一种理性的产物是要有一些必然的逻辑框架的,这就扯到了本文标题,规范化编程(其实主要是与“扯”相呼应)。
编程的规范化其实很重要。有了一定的规范,修改、添加与 Debug的工作就变得容易许多。规范化主要从三个方面入手,命名规范化,代码规范化,全局格式化。命名规范化指的是常量和变量的命名必须要通俗易懂便于处理。想象一下这个场景,为了某些需要你定义了i,j,k.....等n多变量,然后你忘了他们作用是什么......多么痛的领悟。
命名规范化除了在变量声明时还有几个方法,首先是宏定义#define。宏定义可以在编译之前用特定的字符(串)代替指定的字符(串),这样可以让一些不明觉厉的程序语言符号(如int、char)更具有可读化。而且当你宏定义某一常量,在进行调试修改时只需要做小小的处理便可将全局更新。但注意到宏定义的替换发生在编译之前,而且是全局替换,这就直接导致会产生一些比较奇葩的事件,具体事例人艰不拆......宏定义同样可以定义函数,不过真心觉得为了小小几字节的代码而削减稳定性着实不应该。用过宏定义函数的应该都被括号坑过吧......还有两个格式化方法,自定义类型名(typedef)和声明常量(const)。个人觉得比宏定义实用多了,灵活性更强,而且不用担心所有N被替换成5的这种奇葩事件。
说完了基本的命名规范化再说一下代码规范化, 所谓代码规范化指的是言简意赅,一目了然,算法与数据结构让人很快理解。虽然代码的彩蛋相当多(比如我就喜欢用goto和while(0)去节省几字节代码,喜欢用各种各样的return去终止程序),不过彩蛋的灵活性却使得可读性与可维护性的难度指数性增加,最好不要用。一个规范的代码讲究条理清晰,阅读顺序由上至下,由且只由判断、循环、递进三种形式单独或嵌套组成,且无特殊需求下,程序出口只在结句处。重复代码较多时,将其封装在一起,利用自定义函数,简洁高效。
最后说一说全局格式化,这应该是最主要的一步,格式的全局方便程序员去阅读与分析,方便程序员在特定地点寻找特定数据,大大提高效率。基本的格式化代码包括如下几个部分:引用区(Including
area)、自定义函数区(Identity functions area)、全局变量区(Extern variables area)、主函数区(main
function area)。而函数区又包括如下部分:变量声明区(Declaring variables area)、函数体区(Body code
area)、函数出口区(Exit
area)。在写源码时,首先讲这几个区域划分出来,再根据实例需求填补,会大大提高效率,Debug工作也会方便许多。
最后贴一个我自己构建的源码框架,当然每个人的喜好不同,在保证效率与规范的前提下可尽情的*发挥。
//headfile
#include<iostream>
...
//identity functions
...
//extern variables
...
using namespace std;
//main function
int main(){
//var
...
//function body
...
//end of function body
return 0;
}