C返回类型最佳实践
问题描述:
示例代码如此不完美。假设我需要从函数返回一个数组和一个int(无法分别计算它们,因此需要一个函数)。 这三种方式中的哪一种会是最好的设计方式?C返回类型最佳实践
int * return_pointer(int *num){
int *arr = calloc(5,sizeof(int));
//compute num and do stuff with arr
*num = computed_value;
return arr;
}
int return_int(int *arr){
int num = 0;
//compute num and do stuff with arr
num = computed_value;
return num;
}
void no_return(int *arr, int *num){
//compute num and do stuff with arr
*num = computed_value
}
如下
int main(){
int *arr = calloc(5,sizeof(int));
int num = 0;
// first function
arr = return_pointer(&num);
// second function
num = return_int(arr);
// third function
no_return(arr, &num);
free(arr);
}
所有3个功能将把内部ARR和num相同的值的这些所谓在主每一个。从设计和可读性来看,哪一个最适合使用?
答
第二个是语义上最接近的功能(返回int
)。第一个是不必要的复杂,最后一个更容易出错,更容易被误用。
@cwallenpoole示例代码在Code Review上偏离主题。 – Peilonrayz
@cwallenpoole是不是这与设计类别在这里有关的stackoverflow?我想是的,如果它是脱离话题关闭它,我会在codereview中创建它 –
你也许可以通过编辑恢复在这里的问题,而是问一个开放式的问题,这三个版本之间有什么区别 - 没有提到可读性或“什么是最好的”。由于对这些问题的回答通常会导致以意见为基础,因此这里的人们往往对可读性问题不满。 – Lundin