2012-04-19 6 views
0

は、私はフラグか何かで機能を持っていると言う:引数に基づいて変数を設定する規則はありますか?

void foo (Param p1, Param p2, bool setVariable) 
{ 
    //if setVariable is true, set some bool var to true, else false 
} 

は、以下の他の上の1つの強い好みはありますか?

if (setVariable) 
    _someClassVariable = true; 
else 
    _someClassVariable = false; 

または

_someClassVariable = setVariable; 

明らかに第二は少ないタイピングですが、最初は読みやすくとして私を打ちます。どちらが優先されますか?

+0

引数が適切に指定されていれば、2番目の引数は読みやすいものにすることができます。しかし、これは個人的な好みの問題です。 –

答えて

3

私は通常、2番目を好むでしょう。私にとって、最初は強力な警告であり、コードを書いた人は誰でも最高の状態でほとんど能力がないということです。

私はまた、boolをパラメータとして渡すことをお勧めします。まれに、foo(true);foo(false);が本当にどういう意味なのかがすぐ分かりません。 foo(do_this);foo(do_that);

+0

最初の段落 - 私の考えを正確に。 –

+0

列挙型はかなり良いですが、私は同意します。そして今、私はそれを考えて、もし彼らが最初のものを使ったら、他の人のコードと同じように反応します。 – chris

3

私は2番目に行くでしょう、それは読みやすいものです。可読性は、両方のオプションの選択よりも変数名のほうが多くなります。変数とパラメータの名前が適切な場合、代入は自然になります。

bool conditionHolds() { 
    if (condition) 
     return true; 
    else 
     return false; 
} 

(そして、あなたはそれをやって検討しているならば、それを再考してください)

2

私は二番目のを好むでしょう:これは、あなたがしないだろう関数からブール値を返すに似ています。タイピングが少なくてもあなたの議論が十分でない場合は、同僚の意見も考慮してください。

if (condition) 
    return true; 
else 
    return false; 

のようなものをプロダクションコードで見れば私は個人的に笑います。 (変数がboolであり、これを使用してキャストメカニズムを実装していない場合)。

+0

公正であるために、 'if(condition == true){trueを返します。 } else {return false; } 'フィールド内:S – 111111

+1

@ 111111ちょうど私のポイントを証明する:bwhahahahahaha! :D –

+0

私はそれが 'else if 'の逆を持っていたと思います。時にはコードがひどいので痛いです。 – 111111

2

後者のほうがはるかに優れています。そうでなければ、コードとコンパイラ生成コードの両方で複雑さが増します(恐らくは最適化されていますが)。

私はまた、先頭のアンダースコア表記を避けるでしょう、それらの名前のいくつかは、標準ライブラリとコンパイラのために予約されています。

+0

下線は恐ろしいリンカー作成スクリプトを見ているように感じます。 –

関連する問題