当看到一个函数定义过长时或者这段函数需要很多注释才能让人理解的时候,这时候就要考虑是不是把这个函数的部分代码提取出来,形成一个新的函数,方便调用和理解。也就是减小函数的粒度。
void printInfo() {
printf("name:", _name);
printf("sex:", _sex);
printf("math:", _math);
printf("english:", _english);
printf("chinese:", _chinese);
}
修改之后:
void printInfo() {
printfPerson();
printScore();
}
void printfPerson(){
printf("name:", _name);
printf("sex:", _sex);
}
void printScore(){
printf("math:", _math);
printf("english:", _english);
printf("chinese:", _chinese);
}
这样就把一个函数分解成两个粒度很小的但是很好理解的函数。每个函数只负责一个功能或者一个业务。函数的粒度很小且复用的机会就有很大。
分解出来的函数需要在函数名上下点功夫,应该根据函数具体做什么来命名。关键在于函数名称和函数定义之间语义距离。如果函数名可以很好的表达出函数所实现的功能,即使函数名称长一些也所谓。