编程的永恒追求:时间开销、空间开销,对于程序员来说追求极致没有问题,但在实际项目中往往做一定的取舍,进行折中。
编程的过程其实是组件设计或者利用现有组件的过程,如果有直接拿来可用的,在时空开销都能满足的情况下,拿来主义就很好,如果不能满足,便需要自行定制。这里组件在不同的语言,不同的粒度下,都有对应的体现。
下面以c语言简单的接口函数为例,找出一个数组中第二大的整数。
// 接口设计,为避免修改数组内部数据,应为data进行const修饰
int findSecondBiggerNum(const int data[], int len) {
if(NULL == data || len < 2) {
return -1; // need take more effort, which will be mixed with found bigger num -1
}
int bigger = biggest = data[0], i;
for(i = 1; i < len; ++i) {
if(data[i] > biggest) {
bigger = biggest;
biggest = data[i];
} else {
if(data[i] > bigger) {
bigger = data[i];
}
}
}
if(bigger == biggest) { // which means all elem equal
return -1; // need take effort
}
return bigger;
}
接口是给别人用的,不同的人调用的方式可能千差万别,尽可能多的涵盖每种条件,不要对调用者做过多的假设。
接口的完完备性:在正常满足需求的前提下,函数原型的合理性与功能实现的全面性。
软件的复用,封闭式复用,开放式复用,所谓封闭就是在一个相对狭小的范畴内,team内,部门内部,相对的开放式可能会被世界范围内任何一个人使用,这中间的差别就要求对接口或者类的设计的要求,以下从几个方向阐述如何设计完备类,如有纰漏,望补漏。
与c相比c++提供了强大的类型系统,自己设计的类型与内置类型得到了同样的支持,甚至得到了加强。
阅读(3365) | 评论(0) | 转发(1) |