ここでの「普通のプログラマさん」の定義は俺の職場の賃金の安いプログラマさんのこと。
たとえばこんなコード
int count = 0; while(true) { count++; if(count == 10000) { count = 0; print("debug"); } shori(); }
while文のたびにデバッグ出力をいれていてはコンソールがすぐにいっぱいになってしまうので、1万回に1回だけ入れるコードだ。
ちなみにこの人はまずこの発想を思いつかずに「ここにデバッグ出力は入れられません(あふれるから)」と言うレベル。
カウンタ回してたまに入れればいいでしょ?と提案したらこのコードになった。
int count = 0; while(true) { if(count++ % 10000 == 0) { print("debug"); } shori(); }
んで試しに(コードの良し悪しは別にして)このように書き変えてみたら「普通のプログラマさん」は「?????」な感じ。
え?上のコードとこのコードがほぼ同じ動きをすることすら分からないのか?
別の話
C言語で
int ary[3];
と宣言しておいてary[4]とか平気でやる。いわく、ary_len(別に宣言してある配列の大きさを表す変数)の値をきちんと変えてるからOKだそうだ。それでも運さえよければ動くからな。
こっちにあるVisualStudioという便利なものでデバッグすると毎回代入のたびにダイアログでるんですけど(笑)
まあもちろん報酬が違うので文句はないのだが(笑)
そんなプラグラマは報酬云々どころかただ働きしてくれても嫌だ。 人のこと言えないけど……
前自分の会社に関数の中でメモリ確保して関数の外で開放するとかやってるプログラマいた。関数も重複部分をコピペしてるくせに一回しか使わない処理を別関数にしたり「お前わざと...
関数の中でメモリ確保して関数の外で開放するとかやってるプログラマいた これ、全くやらずに済む方法があるなら教えてほしい。 関数の中で巨大な配列を確保した場合とか、ポイン...
if(count++ % 10000 == 0) は if(!(count++ % 10000)) じゃね?ふつう。いや、わかんないけど。 あとインクリメント演算はステートメント中のどのタイミングで実行されるかが未定義だった気がするか...
intが32bitとかなら0xffffffff超えたらやばそうな気がする。 元の様に定期的に0にするほうがいいはず。
元増田です。 元記事で「同じ動きをする」の前に「ほぼ」と書いたのはintがオーバーフローするときに1万回に1回ではなくなっちゃうことを考慮したものです。 「== 0」を書いた理由は...