- 程序要有出错判断,并写日志文件;没有写日志的程序,出错时简直是灾难。
- 程序要有守护,能够开机自启;
- 程序通过信号退出后,要有内存资源回收、关闭文件、数据库等操作
- linux下尽可能使用命令打开进程,比如Qt,比如金仓数据库,因为有时候通过界面打开会出错,同时通过终端打开进程,可以在终端中直观的查看打印信息
- 简单的if-else语句中,我们使用计数器,不仅可以使用加法,还可以使用减法,即先定义计数最大值,然后--。
- 对常量进行赋值会出现与使用未初始化指针类似的错误,均会导致程序异常退出。
- 如:char *p = "hello"; (*p)++; 是对h字符进行赋值,程序会异常退出。
- 函数形参为指针一定要判断指针是否为空;使用返回值为指针的函数,一定要判断返回值是否为空
void filesize(const char* file_name)
{
if (file_name != NULL)
{
//再使用file_name
}
}
或者:
void func()
{
FILE* fp = fopen("test.dat","a+b");
if(fp==NULL)
return;
}
- 正如指针需要判断是否为NULL的情况,算数计算中,分母是否为0也一定要判断。
- 写程序要有始有终,程序开始时对变量进行初始化,程序执行中对变量进行赋值,程序结束后对变量恢复原值。
FILE* fi = NULL; //指针初始化
FILE* fi = fopen(); //指针赋值
//do sth.
if(fi)
{
fclose();
fi = NULL; //对变量进行复位是个好习惯
}
FILE* fi = NULL; //指针初始化
FILE* fi = fopen(); //指针赋值
if(fi)
{
fread(fi);
//do sth. //指针使用前需要进行判断是否为空
}
if(fi)
{
fclose();
fi = NULL; //对变量进行复位是个好习惯
}
- 指针一定要初始化!
- 指针可以做加减运算// int *p; p++;
- while(条件)、if(条件)中的条件常为函数的关系运算,i++,i--等情况联合使用。
- 要多些函数,尽量将程序分开,这样逻辑结构更加清晰;
- 要充分利用字符串的末尾是'\0'这一特性,尤其是写while循环的时候。
- 程序力求简洁的几种方法:利用字符串的‘\0’特性;将自增自减运算与while循环条件结合;将表达式直接放在return中;利用条件运算符;