アカウント名:
パスワード:
ライティングソリッドコード [amazon.co.jp](カタカナだと何がなんやら。必殺技か?)に書いてあったと記憶してますが、if (1==n) {} で解決
WRITING SOLID CODEが手元にあったので探してみたよ。↓このへん?------------------バグを捕まえるのに必要な、プログラマとしてのスキルは低減されなければならない。コンパイラやlintの警告オプションは、バグを捕まえるためにプログラマのどんなスキルも必要としない。~中略~このようにしておくと、"=="の代わりに"="をタイプすればコンパイラは誤りを指摘するだろう。なぜなら、定数に何かを代入することはできないからだ。この解決方法にどれぐらいの効果があるだろうか?なぜこのアプローチは、コンパイラのオプションを指定する場合と比べて自動的ではないのだろうか?-----------------警告オプションで見つけられるなら、無理するなってことでいいのかな?警告でないなら、コンパイラのベンダに警告が出るようにお願いしろとまで書いてあるなw
Appendix C 解答から引用
定数や式を比較式の左辺に置くのは有効である。なぜなら、それによって自動的にバグを検出する方法が追加されるからだ。だが残念なことに、この方法はどちらかのオペランドが定数か式でなければ使えない。両方とも変数だったら、このテクニックは無意味になってしまう。この方法のもう一つの問題点は、プログラマがこのテクニックを学び、コードを書くときに忘れずに使うようにしなかればならないことだ。一方でコンパイラのオプションを使う場合、コンパイラはあらゆる代入バグを警告してくれるだろう。さらによいことに、コンパイラオプションは比較式の両辺のオペランドを入れ替わることの利点を教わっていないCS 101(コンピュータ科学科の初等授業)を受けたばかりのプログラマに対しても有効である。もしコンパイラオプションがあるなら、それを使うべきである。なかったら、もっと役に立つコンパイラが手に入るまで、比較式の中では定数や式は左辺に置くようにすべきだ。
ただ、古い(役立たない)コンパイラの場合はLintで検出できるなら、#1845662さんの言うようにLintを使うに一票。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
「科学者は100%安全だと保証できないものは動かしてはならない」、科学者「えっ」、プログラマ「えっ」
あれ! if ( n = 1 ) { じゃないの? (スコア:1)
気が付かないで代入する件だとばっかり思っていました。
Re: (スコア:1)
ライティングソリッドコード [amazon.co.jp](カタカナだと何がなんやら。必殺技か?)に書いてあったと記憶してますが、
if (1==n) {} で解決
Re: (スコア:0)
15年も前に。
Re: (スコア:0)
WRITING SOLID CODEが手元にあったので探してみたよ。
↓このへん?
------------------
バグを捕まえるのに必要な、プログラマとしてのスキルは低減されなければならない。
コンパイラやlintの警告オプションは、バグを捕まえるためにプログラマのどんなスキルも必要としない。
~中略~
このようにしておくと、"=="の代わりに"="をタイプすればコンパイラは誤りを指摘するだろう。
なぜなら、定数に何かを代入することはできないからだ。
この解決方法にどれぐらいの効果があるだろうか?
なぜこのアプローチは、コンパイラのオプションを指定する場合と比べて自動的ではないのだろうか?
-----------------
警告オプションで見つけられるなら、無理するなってことでいいのかな?
警告でないなら、コンパイラのベンダに警告が出るようにお願いしろとまで書いてあるなw
Re:あれ! if ( n = 1 ) { じゃないの? (スコア:1, 参考になる)
Appendix C 解答から引用
ただ、古い(役立たない)コンパイラの場合はLintで検出できるなら、#1845662さんの言うようにLintを使うに一票。