2016-12-05 14 views
0

例コードは完璧ではありません。Cリターンタイプのベストプラクティス

私は関数から配列とintを返す必要があるとしましょう(1つの関数が必要なので、別々にそれらを計算する方法はありません)。 これらの3つの方法のどれがデザインに最適なのでしょうか?

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 
} 

メインにと呼ばれるこれらの各1 ARRとNUM内の同じ値を入れます

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つの機能を次のように。デザインと読みやすさの観点から、どちらを使うのがベストですか?

+1

@cwallenpoole例コードはコードレビューで話題になりません。 – Peilonrayz

+0

@cwallenpooleこれは、ここでstackoverflowのデザインカテゴリに関連していますか?私はそう思っていましたが、話題にはならないと思いますが、codereviewでそれを作成します –

+0

あなたはおそらく編集でこの質問をここで取り戻すことができ、3つのバージョンの違いを自由に質問できます読みやすさや「何が最善のものなのか」などです。このような質問への回答は、しばしば意見に基づいているため、ここでは読みやすさに関する質問に目立つ傾向があります。 – Lundin

答えて

-2

2番目の関数は、関数が実行している意味に最も近い意味です(intを返します)。最初のものは不必要に複雑であり、最後のものはエラーが起こりやすく、誤用が容易です。

関連する問題