本帖最后由 1026869700 于 2016-4-3 22:35 编辑
最近,经常见到一些高手写的程序,看完之后,除了惊讶、佩服,更多的是反思;为什么别人可以写出那么漂亮的程序?为什么别人的程序的数据结构设计的那么工整?为什么别人的程序结构写的那么工整?为什么别人的命名那么准确?等等很多地方。想想自己,写程序虽然不多,但是也有3年多了。为什么还是写的那么烂(是指在结构、命名和可读性),近一年虽然在编程思想上有了很多改变,可是结构和命名依旧很烂?自己什么时候才能做到那样,可是改变意味着要经受折磨。自己改如何面对?
说说别人写的程序吧!很明显的,数据、程序、配置分开。
关于系统数据结构设计: 根据整个系统的结构,对数据分好类,以及做好有可能操作的的准备,整个数据结构是以结构体为主打,将数据全部分成一类一类的。然后根据数据属性进行划分,进行结构体嵌套。嵌套到系统最顶层时,就剩那么几大类数据类型,那么当需要操作数据时,可以按结构一级一级索引下去。即使增加或删减数据,都很方便。整个系统中枚举、共用体与位域用的也是相当多的。程序中,很大一部分选项是可以在有限的属性中选择的,因此用了枚举,使程序的可读性更高。共用体和位域的联合使用,使程序的整体性和操作性变的更好,当需要写位时,用位域写入,需要读取时,再共用体中整体读出,可以将多个同一类的标志位划分到一个字节中,大量节约了系统空间。
关于数据与程序分开:当一个系统的需求定下来之后,那么基本上结构已经定了,更多的是需要改一些参数,那么对于一些全系统或者在系统中存在于很多地方的常量来说,需要不停的去修改,(本人曾经是把它们定义成一个全局变量,需要改变时,去改初始值)我看到的最NB的程序是,整个程序中,基本上看不到数字。数字跑哪儿去了?到被宏替换掉了。用宏代替常量的好处是,程序的可读性很高。修改也很方便。(当我每次看到这种程序时,总会发出感慨:真是变态的设计啊!!)
关于配置结构的设计:需求定了,系统逻辑就定了,可是有很多可以变化、调整的东西;例如:系统的端口转移、系统时钟、PWM初始参数、定时器的初始参数、.....(此处省略几百字)太多东西需要变化的。怎么搞???加入到一个配置文件中,用宏将他们代替掉,那么程序的可读性又提高了修改配置也方便了。还有那些预编译开关的设计,那可真是逻辑性太强悍了,本人明白原理,可是从来没有用过,实在是不知道该怎么用,对于那些把预编译用的活灵活现的人,我是佩服的十体投地。那可真是对系统的结构从需求提出的那一刻,就已经知道有哪些内容的大神级别的人搞的。今天就说到这里了。 |