目的
简洁、可维护、可升级、可兼容、易理解和二次开发。
面向过程编程
面向对象编程
- 成员变量
- 成员方法
- 私有 vs 开放
函数间参数的传递,传入传出
- 增加入口参数个数
- 通过全局变量
- self,this
- 是否方便未来扩展,上下兼容
执行效率 vs 开发效率(易理解,易维护)
变量命名:
- 具体复杂
- 简洁好理解
- 大小写、下划线,全称、缩写
鲁棒性
异常判断:
i = 0 ;
first = 1 ;
while (1) {
VlSiftKeypoint const *keys = 0 ;
int nkeys ;
/* calculate the GSS for the next octave .................... */
if (first) {
first = 0 ;
err = vl_sift_process_first_octave (filt, fdata) ;
} else {
err = vl_sift_process_next_octave (filt) ;
}
if (err) {
err = VL_ERR_OK ;
break ;
}
if (verbose > 1) {
printf("sift: GSS octave %d computed\n",
vl_sift_get_octave_index (filt));
}
/* optionally save GSS */
if (gss.active) {
err = save_gss (filt, &gss, basename, verbose) ;
if (err) {
snprintf (err_msg, sizeof(err_msg),
"Could not write GSS to PGM file.") ;
goto done ;
}
}