2016-12-05 54 views
0

示例代碼如此不完美。假設我需要從函數返回一個數組和一個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相同的值的這些所謂在主每一個。從設計和可讀性來看,哪一個最適合使用?

+1

@cwallenpoole示例代碼在Code Review上偏離主題。 – Peilonrayz

+0

@cwallenpoole是不是這與設計類別在這裏有關的stackoverflow?我想是的,如果它是脫離話題關閉它,我會在codereview中創建它 –

+0

你也許可以通過編輯恢復在這裏的問題,而是問一個開放式的問題,這三個版本之間有什麼區別 - 沒有提到可讀性或「什麼是最好的」。由於對這些問題的回答通常會導致以意見爲基礎,因此這裏的人們往往對可讀性問題不滿。 – Lundin

回答

-2

第二個是語義上最接近的功能(返回int)。第一個是不必要的複雜,最後一個更容易出錯,更容易被誤用。