2017-01-16 4 views
0

最近、レガシープロジェクトを維持する必要がありましたが、コーディングパターンのない混乱がありましたが、ブール型が3つの異なる方法で作成されていたことがありました。ブール型のベストプラクティス

const bool = true; //conventional 
const bool = 1; 
const bool = !0; 

コーディングパターンを持たないのはコード臭ですが、一般的に使用されているものとは異なるプラクティスを使用することでメリットはあるのでしょうか?一部のコンパイラやインタプリタでパフォーマンスが向上しましたか?私は本当にそれで扇動されました。もし誰かがそれを知っているかどうか知りたいですか?

+0

よく使われる方法は何ですか? Python、bashまたはC? – mouviciel

+0

あなたが最も信じている答えをマークすることを忘れたり、現在提供されている回答が満足のいくものではないと感じた理由を説明してください。 –

答えて

1

は、あなたはいつもtrue(すでにバテシバで述べたように)falseあるブール値を定義する通常の方法を使用する必要があります。


はJavaScript では、ほとんどの値は、if条件にtruthy値につながります。

  • false
  • 0(ゼロ)
  • ""
  • (空文字列)
  • null
  • undefined
  • NaN(特殊:この規則の例外は、次の値(source)であります数値は意味のない数字です)

あなたの例:

const bool = true; // the regular way to define a boolean 
const bool = 1; // a Number, this is truthy in an if-condition, but still, it is just a Number 
const bool = !0; // negates a number -> it actually converts it to a boolean during the negation. So, it is actually the same as bool = false; 

あなたが別の言語でプログラミングしている場合は、周りのブール常に存在ではありません。あなたが書いているプログラミング言語にブール値があるなら、間違いなくそれを使っているはずです。

いくつかの例:

  1. ジャワは、プリミティブデータ型ブール(truefalse)があり、また変換等(Boolean.TRUEBoolean.FALSE)するための方法が含まれているブールラッパークラスは、あります。他の値はif条件で評価することはできません。
  2. Perlにはブール値がありません。ただし、比較のために番号の値01を使用できます。それはまた、次の(source)を除き、truthyとして最も値を評価としては、JavaScriptに似ています:
    • 0
    • '0'
    • undef
    • ''#空のスカラー
    • ()#空のリスト
    • ('')
+0

Upvoted。私はこの答えに間違ったことは何も見えません。 – Bathsheba

1

trueとfalseを使用します。それ以外は明らかではありません。

コードを1回書くだけです。あなたは何百回も読むでしょう。

1

この投稿は、ほとんどの言語を反映していますが、特にC/C++に関連しています。

C++標準状態(§4.7/ 4):

ソース・タイプがBOOLの場合、偽の値が真の値を1に変換され、ゼロと に変換されます。

これらがすべて許可される理由は、コンパイラが 'truthy'値を単一ビット表現に変換するためです。

これらはすべて、コンパイラを実行するときに同じ量の領域を占有します。コンベンションの理由は、単に読みやすくするためです。この理由から、「コンパイラ有効な」表現のすべてが同じように好ましいとはみなされません。 Google's C++ Style Guideで述べたように:

リーダーのための最適化、ライター

は、私たちのコードベース(およびそれに提出最も 個々の成分は) かなりの時間続くと予想されていません。結果として、コードを書くよりも多くの時間が のコードを読むのに費やされます。上記 コードを記述する際に、平均的なソフトウェアエンジニアがコードをデバッグするのではなく、平均的なソフトウェアエンジニアのコードを で最適化することを明示的に選択します。

要約すれば、可読性はすべてです。

+0

Upvoted。私はこの答えに間違ったことは何も見えません。 – Bathsheba

関連する問題