v) 对齐。用TAB键对齐你的一些变量的声明或注释,一样会让你的程序好看一些。如: typedef strUCt _pt_man_t_ { int numProc; /* Number of processes */ int maXProc; /* Max Number of processes */ int numEvnt; /* Number of events */ int maxEvnt; /* Max Number of events */ HANDLE* pHndEvnt; /* Array of events */ DWord timeout; /* Time out interval */ HANDLE hPipe; /* Namedpipe */ TCHAR usr[MAXUSR];/* User name of the process */ int numMsg; /* Number of Message */ int Msg[MAXMSG];/* Space for intro process communicate */ } PT_MAN_T; 怎么样?感觉不错吧。 这里主要讲述了假如写出让人心旷神怡的代码,好看的代码会让人的心情愉快,读起代码也就不累,工整、整洁的程序代码,通常更让人欢迎,也更让人称道。现在的硬盘空间这么大,不要让你的代码挤在一起,这样它们会抱怨你虐待它们的。好了,用“缩进、空格、换行、空行、对齐”装饰你的代码吧,让他们从没有秩序的土匪中变成一排排整洁有秩序的正规部队吧。
if ( sum > 100 && ( ( fp=fopen( filename,"a" ) ) != NULL ) {
fprintf(fp, "Warring: it beyond one hundred"); ...... }
fprintf( fp, " sum is %id ", sum ); fclose( fp ); 本来的意图是,假如sum > 100 ,向文件中写一条出错信息,为了方便,把两个条件判定写在一起,于是,假如sum<=100时,打开文件的操作将不会做,最后,fprintf和fclose就会发现未知的结果。 再比如,假如我想判定一个字符是不是有内容,我得判定这个字符串指针是不为空(NULL)并且其内容不能为空(Empty),一个是空指针,一个是空内容。我也许会这样写: if ( ( p != NULL ) && ( strlen(p) != 0 )) 于是,假如p为NULL,那么strlen(p)就不会被执行,于是,strlen也就不会因为一个空指针而“非法操作”或是一个“Core Dump”了。 记住一点,条件语句中,并非所有的语句都会执行,当你的条件语句非常多时,这点要尤其注重。
29、尽量用for而不是while做循环 --------------- 基本上来说,for可以完成while的功能,我是建议尽量使用for语句,而不要使用while语句,非凡是当循环体很大时,for的优点一下就体现出来了。 因为在for中,循环的初始、结束条件、循环的推进,都在一起,一眼看上去就知道这是一个什么样的循环。刚出学校的程序一般对于链接喜欢这样来: p = pHead;
while ( p ){ ... ... p = p->next; } 当while的语句块变大后,你的程序将很难读,用for就好得多: for ( p=pHead; p; p=p->next ){ .. } 一眼就知道这个循环的开始条件,结束条件,和循环的推进。大约就能明白这个循环要做个什么事?而且,程序维护进来很轻易,不必像while一样,在一个编辑器中上上下下的捣腾。