在软件没有形成行业,程序等同于软件的时候,那时候程序很容易体现出价值来。只要得到代码,就相当于得到这个软件。但现在就不同了。现在的程序都不是几行,你写出的程序,如果又没有注释,格式又很乱,你拿过来给我,我还得花很长的时间才能读得清楚,那这样的程序的代码有价值吗?我经常听到一些程序员在外面兜销代码,很多是学校的学生,尤其那些素质比较差的研究生,和老师做了一个项目后,他拿出来到外面到处去卖,但是他最后可能卖出去吗?最后可能还是没卖出去,因为那个程序很庞大。如果某个公司买了这个程序以后,该公司还得招一个人去读这个程序,当这个人读懂以后,他又离职了,那公司买这个代码干嘛?
- 代码的注释
代码本身体现不出价值来,有价值的代码一定是不仅格式非常规范,而且还要有很详细的设计思路和注释,这个是很重要的。首先要养成这种习惯,教科书里面很少讲为什么要做注释,注释应该怎么注。有些人爱在哪儿下注释就在哪儿下注释,甚至在语句中间也加,中间也可弄两个斜杠放两个花括号写点注释。
注释格式是非常重要的,但很少有人去注意它。现在的程序如果没有注释,则基本上是没法用的,也就跟你拿一个可执行程序没什么两样,你拿过来还不能随便改,你改了后编出来的程序绝对不能用。所以,程序如果没有详细的注释,别人就算拿到了代码也没有用,体现不出它的价值来。
Linux是个操作系统,很厉害呀!其实那些程序你拿回来,耐心地去读它,会发现,它里面乱得很,那个内核程序除了作者自己能读懂外,别人可能要花很长的时间才能读懂。Apache的作者对自己Apache那套代码是很清楚,但换一个做浏览器的人去读,也会很困难。一般人只把代码复制下来后,打个BUILD命令看看能不能正确地编译,最后能正确编译的程序就是好的,如果不能正确编译的程序就删掉吧,再下载一个,因为他没有正确的对待代码的那种思维,而只是认为那代码本身才有很大的价值,不用关心有没有注释。
如果代码没有注释和规范,是没有价值的,这也是现在为什么很多的个人跑去卖源程序的时候,很多的公司都不要。我们不是说没有技术,任何程序都能做,只是时间的问题,而且像视频中有的技术,比那些卖代码的技术还要深得多。真正要做一个有价值的程序,开发程序的思维就很重要,这种思维的具体体现就在注释及规范的代码本身。
1.3.2 调试的重要性
调试是很重要的一个部分。所有的程序都是调试出来的,不是写出来的。讲怎么去调试,实际上就是讲一种解决问题的思路。所有的程序写出来后一定是有问题的,既然有问题,就一定会有一个解决问题的思路。解决问题的方法就是调试的方法。
用VB或者是MFC做出来的程序,先运行一遍看看什么地方有问题,如果发现有问题,重新改一改,然后又重新运行。这种方法是还没有入门的调试方法,即是看直接的表象。这种方法既浪费时间,又不能消除隐患。
调试是很重要的内容,如果要进入高深境界,调试是除了了解设计程序、平台以外,一个非常重要的难关。如果要成为高级程序员,就必须过这一关。如果不懂调试,则永远成不了高手。在学习调试的过程中,对汇编语言、体系结构会有进一步的了解。
你可能觉得我把调试的作用说得言过其实了,举例子说明一下吧。请把以下的C程序改写成汇编代码:
int i;
extern int In[],Out[];
for(i=0;i<100;i++)
{
Out[i]*=In[i];
}
我发现90%的人写出来的汇编代码可能是不正常的或有错误的。要么是不了解32位汇编,要么是不循环,要么只有循环没有处理等。这是为什么呢?因为就算是一段小小的代码,如果没有经过调试,也可能错误百出。
如果你是初级一点的程序员,则如果程序出了问题,也不知道原因所在。怎么回事呀?我就是搞不清楚。要搞清楚首先要调试,这就涉及到调试的问题。比如说,放到一个文件里面的,它出错了,我查程序看了n遍,它就是没有任何问题,这时候该怎么办呢?这时的解决方法就是调试,调试能使得一个程序正常地运转起来。如果对于程序员来说写这个程序可能只用了一天的时间,但是调试可能会花他二三天的时间。一个程序绝对是调试出来的,不是编出来的。如果说哪个系统是编出来的,那它肯定会有很多性能方面的问题,包括可能有不可预测的各种各样的问题。
程序出现问题的话,要能考虑到各种各样可能的情况,绝对没有任何臆测。比如,有可能完全是编译器的错误,也有可能因你程序里面增加了什么,而对程序产生干扰,甚至还有一种可能是你的指针基本就没有给它赋值,指向了别的地方,把别的东西破坏了。这些情况太多了。还有一种常见的错误,即MFC里面很常见的一种设计思维,就是任何一个东西,只管创建,不管释放、销毁。这种思路是现在很多程序员做的程序没用几下就会死机的原因。这绝对是错误的设计思路,而MFC让你这么做,就是让你永远成不了高手,你写的程序永远不可能稳定。MFC里面的所有的结构也好,变量也好,只需要你去分配一个,几乎就不需要你去释放它。这绝对是错误的,程序一定要成对编写。成对编码是快速编写程序的一种方法,而教科书里面讲的那些都是从头到尾去编。先把那个什么变量编写上,再写第一行,再写第二行,再写第三行,最后再写个大括号。这种方法绝对是错误的。对于现在的程序来说,它效率很慢,没法即时调试,因为只有最后把所有的程序做完以后,才能进行调试,所以在这中间出现错误的几率就积累得非常大了。