[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 05/09 17:18 / Filesize : 89 KB / Number-of Response : 310
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ぱっと見て「ヘタだなぁ」と思うコード その6



1 名前:デフォルトの名無しさん [2007/10/25(木) 03:35:55 ]
禁止ネタ(超既出)
・長い関数
・深いネスト
・グローバル変数
・goto
・memset
・malloc - free
・局所ブロック
・サンプルコードのtypo
・記述スタイル
・関数・変数名

過去スレ
その5: pc11.2ch.net/test/read.cgi/tech/1155315371/
その4: pc8.2ch.net/test/read.cgi/tech/1153312202/
その3: pc8.2ch.net/test/read.cgi/tech/1149986051/
その2: pc8.2ch.net/test/read.cgi/tech/1142741989/
初代 : pc8.2ch.net/test/read.cgi/tech/1141867015/

82 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 22:49:59 ]
>>80
そんなもんコードチェッカーにかければすぐ見つかるだろ。
まさかコードチェッカー使ってないのか?

83 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 22:50:11 ]
Pythonを使えばよい

84 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 22:53:50 ]
>>82
フツーに警告出ないようにコードを書いてるだけで防げるな。
警告出さないようなコンパイラはコードチェッカを使うか、捨てるべきか、悩むこところ。

85 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 22:57:32 ]
>>80
> こんなの多数決で考える頭はもうちょっと働かせたほうがよい 

コーディングスタイルなんて、よっぽどのセンスと見識があるやつ以外は、自分で考えたりしないで、
一般的なものに従うほうがいいよ。
(どうしてそういうスタイルになっているか、それ以外ではいけないか、考察したりするのは勉強になるけど)

86 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 22:59:39 ]
てか、=と==を間違うや奴って、そんなに多いのか?

> これはただの忠告。>>80はそれでいいならいい。私に累が及ばなければどんなコーディングでも結構。
> プログラミングの先生だって×は出さないだろうしなw

しかし、これは真実w

>>79
実行速度なら、shortよりintの方が有利のはず。


87 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 23:01:09 ]
>>80
警告を無視する習慣があることはよく分かった
その悪習を直すほうがよっぽどいいよ

88 名前:79 mailto:sage [2007/10/26(金) 23:06:04 ]
>>86
>実行速度なら、shortよりintの方が有利のはず。

だからそう書いてるだろ。よく嫁。


89 名前:80 mailto:sage [2007/10/26(金) 23:26:14 ]
ごもっとも。ちなみに、コードチェッカー自体忘れてたよw

ちなみに、ウチ(60人ぐらいかな?)にはコードチェッカーを使う人は滅多にいない。
先人の知恵を借りれば、文字間違いのエラーぐらいしか出てこないし、そんなのはコンパイルエラーで出てくるから。

コードチェッカーに頼る前にコーディングスタイルに気を配る方がよっぽどよいよ。
その方が、コードレビューやバージョン管理に割く時間が増えるからね。

もっとも、バージョン管理はCVSで一瞬で済んでしまうが

90 名前:80 mailto:sage [2007/10/26(金) 23:28:40 ]
>>87
は?警告は全部潰してますが。
どこを縦読みした?wwwww



91 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 23:29:00 ]
> 数バイトでも節約したいとか実行速度がシビアだったりしなければ。
ん?
「数バイトでも節約したい」とか「実装速度がシビアだったりしなければ」{shortを使う}って読ませたいのか?
(「数バイトでも節約したい」とか「実装速度がシビアだったり」)「しなければ」{int}って読めるぞ。
人のことを言う前に、ちゃんとした分かりやすい日本語を書け。
設計書や資料を作るときの基本だろ?


92 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 23:30:17 BE:263040825-2BP(125)]
gcc (GCC) 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)で
#include <stdio.h>

int main(int argc, char *argv[]){
 int a = 2;

 if(a = 1)
  printf("%s\n", argv[0]);
return 0;
}

というプログラムを-Wall付きでコンパイルしてみたら、
test.c:6: 警告: 真偽値として使われる代入のまわりでは、丸括弧の使用をお勧めします
という警告が出た。まあこれで何か起こってることはわかるだろう。

93 名前:デフォルトの名無しさん [2007/10/26(金) 23:30:23 ]
80はどこの社員だ?
そこだけには仕事は頼まないようにするから、教えてくれ。


94 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 23:31:00 ]
制御文の代入で警告でないってどこのコンパイラ使ってるの?

95 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 23:32:41 ]
>>89
アホなコンパイラ使ってるなら、せめてlintとか使えよ。
こわー。



96 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 23:33:07 ]
「プログラミングの先生」とか言っちゃってる時点で、学生確定

97 名前:79 mailto:sage [2007/10/26(金) 23:38:15 ]
>>91
・普通はshortを使う。
・数バイトでも節約したい場合は>>77のようにintを使った方がよい場合もある。
・実行速度がシビアならintを使った方がよい。

という意味のつもりで書いたが分かりにくかったか。


98 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 23:40:01 ]
>>80
> が引き起こすバグをどうやって見つけるのか考えた事がある?ない?
最悪、ホワイトボックスの分岐網羅カバレッジ100%のテスト段階で見つかるわけだが。
それより早く見つかったほうがコストが安いから、どうしようという話。
で、ちゃんとしたコンパイラかlint使えって結論。

99 名前:80 mailto:sage [2007/10/26(金) 23:41:10 ]
>>92
何のデモか知らないけど、わざわざ-Wallで例示するなんてヒマなんだね。

>>93
いや、もう遅いかもしれんよwww

>>94
警告は全部潰してるよ。
そもそも、コーディングスタイルで蹴ってるからそんな警告があること自体知らなかった。
君ら無駄な努力払ってるね。

>>96
妄想強すぎ

100 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 23:41:24 ]
>>89
コードチェッカの類を使ったことないだろ。



101 名前:デフォルトの名無しさん [2007/10/26(金) 23:41:48 ]
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ     >>80
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /

102 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 23:42:42 ]
>>97
ループ変数に、いつもshort iとか書いてるのか?

いやすぎる。

103 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 23:44:57 ]
>>99
> そもそも、コーディングスタイルで蹴ってるからそんな警告があること自体知らなかった。

どんだけ情報弱者なんだよ・・・

104 名前:デフォルトの名無しさん [2007/10/26(金) 23:45:03 ]
>>80 は Lattice C 使ってるとか?

105 名前:79 mailto:sage [2007/10/26(金) 23:46:50 ]
>>102
>>79に引数って書いてるだろ

106 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 23:47:00 ]
>>99
おまえの、定数を左にもってくるってのも、コーディングスタイルじゃなくて、コンパイラに頼って
バグを見つけるって発想だろ。 >>80
警告出るから、そんなことしなくていいってがコンセンサスになってるから >>72 みたいな結果になるわけよ。


107 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 23:49:29 ]
if (定数 == 変数)と書くコーディングルールがある会社、ということで、技術力が低い会社だと
レッテルを貼られるリスクを考えたことがないようだ。

108 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 23:50:08 ]
このスレにぴったりのネタ会社だ

109 名前:80 mailto:sage [2007/10/26(金) 23:54:01 ]
>>100
コードチェッカーの類?最近は全くないね。
VC++6、VS2005、gcc3.4.4などまあ常識の範囲内のコンパイラ
最近はやむを得ずSDCC使ってるけど、エンバグすら直ぐ分かっちゃうのでlint通す意味ナシ。

110 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 23:54:52 ]
>>79
普通じゃない



111 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 23:55:36 ]
>>109
日本語でOK

112 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 23:57:28 ]
>>80
if (0 = a)はコンパイラに任せるのに、その他の複雑なバグが簡単に見つかるコードチェッカーは使わないと?

わけわからん

113 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 23:59:10 ]
>>109
コードチェッカの意義とか理解してないっぽいな。。。

114 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 23:59:26 ]
言い訳するにしてももうちょっと熟考すればいいのに

115 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:00:09 ]
>>80
なんか必死だけど、どれだけ言葉を重ねても、レベルが低いことを証明することになるだけだぞ。

116 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:00:35 ]
>>107
ほう、そんなリスクがあっても引く手あまたのウチの会社って凄すぎるってこと?wwww

>>106
どういたしまして。負け犬の遠吠えと受け取っておきますm(_ _)m


117 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:01:29 ]
>>112
コードチェッカが無意味なくらい完璧にコードを書けるなら、定数を左にもってくるとか、
姑息なテクニックを使わなくてもいいよな。

118 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:03:08 ]
コードレビュー文化があって、コードチェッカーが使える環境なら、最初は使ってて
使わなくなるなんて考えられない。

ライセンスの関係で全員がコードチェッカーを使えないとしても、レビュアーがコードチェッカーを
使うことで、レビューの工数をかなり減らせる。なので、以前使ってて、使わなくなるなんてやはり考えられない。

つまり、部下のミスを見つけてなんかいないってこった。
あ、部下がいないという線もあるな。

119 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:04:48 ]
タコなコードチェッカーだったからうざくて使うのやめたってならわからなくもない

120 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:05:35 ]
コードレビューなんてしてないんだろ



121 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:06:44 ]
このスレで>>80が頑張る意味がわからない

122 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:07:03 ]
右定数を見つけると最高レベルの警告を出す80謹製コードチェッカだったら使わなくなるかもしれない

123 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:07:24 ]
コンパイラがどういうときに警告出すかとか知らないってのもどうかなぁ。
コーディングルールを守ってるから、警告でなくて知らないって話だけど、
そういうのは教条的に守るんじゃなくて、どうしてそうなってるかとか考えたほうがいいよ。

124 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:09:43 ]
>>121
自分がレベル低いなんて夢にも思ってなかったから、現実を突きつけられて自我の危機に陥ってる。

125 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:12:01 ]
定数が左ってのは、警告を出してくれるコンパイラやまともなコードチェッカーが無かった時代の名残だよな。
今ではまるで意味が無い。

126 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:12:16 ]
if (定数 == 変数)なんて、いわゆる「バカよけのテクニック」だからね。
それを使っているからといって、声高に自慢するようなことではない。

127 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:13:59 ]
前スレだかで馬鹿にしすぎたからムキになっちゃったんだろ。
お前ら自重しろ。

128 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:14:08 ]
袋叩きwww

129 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:15:42 ]
80は、左に置きたいから置いているようにしか思えない。

コンパイルエラーになることを理由にしているようだが、
それは右に置いてもコンパイラの警告が出るので互角(散々既出)。

となると、ほかに理由を提示しない今、残る理由は各人の好み。
そこで80は左を選択したということだろう。



130 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:19:37 ]
>>123
・この警告は出るのが当たり前、気にするな
・この警告は出てもいいけど本当に大丈夫かチェック汁
・この警告出したバカは氏ね
みたいに警告のランク分けとかするよね。




131 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:20:02 ]
単に後に引けなくなってるだけだろ。

132 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:23:50 ]
>>129
> それは右に置いてもコンパイラの警告が出るので互角(散々既出)。

単にこれを知らないだけだと思うよ。

133 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:24:11 ]
私はコードチェッカというものをいままで使ったことがありません
そんなに有効なものですか?

有名なものではどんなものがありますか?

134 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:27:49 ]
OSと言語は?

135 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:30:19 ]
>>133
ttp://www.swtest.jp/tools.html

静的解析ツールでぐぐれ

136 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:32:31 ]
べつに必要としているわけではなくてどのようなものか知りたいので
何でもいいですが、自分の普段の仕事ではWindowsでC++です
Cygwinも常用しているのでUNIX系でも試せると思います

137 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:36:39 ]
どんなものか知りたいなら、Cygwinでcheckをインストールして、Cで怪しげなコードを書いてチェックしてみろ。

138 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:37:42 ]
間違えた。checkじゃなくて、splintだ。

139 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:41:10 ]
WindowsのC++なら、ここから体験版をゲットするんだ。
ttp://www.techmatrix.co.jp/products/quality/download/index.html

140 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:41:52 ]
ぱっと見て「ばかだなぁ」という奴を相手にしなくていいから、
「ヘタだなぁ」と思うコードを貼ってくれ。



141 名前:133 mailto:sage [2007/10/27(土) 00:42:06 ]
>>135
あ、QACとかのことですか
使ったことはないけどプレゼンは受けたことがあります

そのときは、馬鹿に使わせるのは怖いツールだなと思いました

142 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:43:28 ]
C++用のフリーな静的解析ツールは知らないなぁ・・・

143 名前:デフォルトの名無しさん [2007/10/27(土) 00:44:18 ]
ほれ。爆弾投下!

test.cpp
 if (a = 0) printf("x");

D:>bcc32 test.cpp
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
test.cpp:
警告 W8060 test.cpp 7: おそらく不正な代入(関数 main() )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland

>>80
わざわざひねくれて if (0 == a) としなくても、ちゃんと警告出してくれるから。
ミスを防ぐため、というのは全然理由にならない。

「定数は左」って書き方って、15年以上も前に「Cマガジン」って雑誌が流行らせたんだよね。
当時の古いコンパイラは上のような警告は出していなかったかもしれない。
でも今は無料のタダのコンパイラでさえ警告出すようになって、「定数左」は意味の無いものになった。
15年も前に決着が付いて廃れたことを、いまだに「神の福音」のように信じ込んでいるヤツがいるんだな。
おまいは隠れキリシタンかw


144 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:47:00 ]
釣られるなよおまいら……。単に自作自演なのかもしれんが。
ところで、見てくれ、このコード。(実物はJavaで、本質的な部分だけ抜粋してるのだが)
おまいら、レビュー以外でこんなコードが涌いて出るのを防ぐ手段、知らないか?

void hoge(int a, int b) {
 bool result = false;
 for (int i = 0; i < 3; i++) {
  if (a == b - i) {
   result = true;
   break;
  }
 }
 if (result == true) {
  cout << "OK\n";
 } else {
  cout << "NG\n";
 }
}


145 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:47:21 ]
長文お疲れだけど、それみんなもう知ってるから・・・

146 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:55:08 ]
>>116
うん、君の会社が凄すぎるから、下民たちの為に会社名を教えてくれ。

> 警告は全部潰してるよ。
コンパイラの設定を変更して、特定の警告は表示させないようにしたのか?


147 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:56:08 ]
「みんな」 に 80 は含まれていないが。

148 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:00:53 ]
>>144
何を問題にしているのか分からないけど。
if (result == true)を気にしているのだとしたら、全員にメールでも出したら?
一番いいのは、タコなコードを書く奴は、片っ端からプロジェクト外に追放することなんだけど。
それをやったら、誰も残らなかったなんてのが笑い話じゃなくなるからな。


149 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:02:49 ]
>>144
b-a が0〜2ならOK,それ以外ならNGを出力ってこと?
不等号演算子とか教えるといいんじゃないかな。

150 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:05:15 ]
どうしようもなく汚いコードのところで仕事をしたとき、警告がでまくったけど、
ま、こんなもんかと思って、放置しておいたら、上のヒトの目にとまって、
警告が出てるじゃないかと注意されてしまった。

で、警告の原因を調べたら、そのコードを動かす環境にインストールされてる、その部署の
ライブラリがバージョン古くて、プロトタイプが、K&R方式になってやんの。

仕方ないので、makefileを書き換えて、警告を全部抑制した。



151 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:05:37 ]
つまり

if (b - a < 3)
OK;

ということでしょ
境界の辺が自信ないが

152 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:19:53 ]
>>151
b<aだとダメじゃね?

153 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:20:11 ]
プロトタイプ宣言はK&Rにはできないんじゃないだろうか

154 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:22:32 ]
それは当然 else 節を省略したのですけど
そういうことではない?
酒が入ってるので不安

155 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:26:07 ]
>>153
ああ、そうだっけ。

int hoge();

みたいに、戻り値だけで、引数のないプロトタイプだった。

156 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:31:26 ]
それは多分C言語的には完全に合法なので警告のほうがうざいと思う

先に宣言が

int f();

とあって後で定義が

int f(int a) { ... }

とANSIならばエラーエラーかな?
うろ覚えでごめん

157 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:33:18 ]
>>80の所属している会社を大胆予想。
仕事は来ていて技術力は無いという辺りから、
・富士通
・日立
・NEC
の関連会社を予想。

しかし、仕事を大量に受けているという記述から想像するに、
・人材派遣会社
に所属しているのではないだろうか。

こう考えると、技術力が無いのにそれに気が付かない理由も説明できると思う。

#JAVAのswingで画面を作っているんだけど、クラス図もイベントトレース図も存在しないって、此の先木大丈夫なんだろうか。


158 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:39:31 ]
> 80 名前: デフォルトの名無しさん [sage] 投稿日: 2007/10/26(金) 22:43:44
から3時間足らずで約70レスか。
このペースで行けば、39時間かからずに埋め立て完了か。
今までの過疎化が嘘のようだなw


159 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:41:01 ]
>>148
レビューしてすら、さくっとスルーされそうなことはわかりますた。
>>149
yes. 問題は、コレと同レベルのコードがと某社のおひさるなサイト上で動いてたってことなんだ。
さらに恐しいことは、a, bは日付を8桁の整数に変換したものだったりしたんだ……。
>>154
条件式が足りてないれす。こんな感じ?
int d = b - a; if (0 <= d && d < 3) ...


160 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:47:51 ]
というか、何をしたいコードなのか教えてくれないと、144のコードが正しいか間違っているかは判断できないぞ。




161 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:50:10 ]
正しいか間違ってるかの問題じゃなく
冗長すぎるのを問題にしていると思う

162 名前:144 mailto:sage [2007/10/27(土) 01:59:48 ]
>>159
あ、「日付を8桁の整数に」ってのは、20071027みたいなやつ(YYYYMMDD)のことね。為念。

163 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:02:36 ]
冗長かどうかも、何がやりたいのかが分からないと、何とも判断できないからね。
問題によっては、冗長に見えるやり方が最適解になったりすることもあるし。


164 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:05:19 ]
でもあれはさすがに型も明示されてるし言い逃れようがないでしょ

165 名前:144 mailto:sage [2007/10/27(土) 02:11:50 ]
>>161
です。冗長過ぎるというより、きっぱりはっきり無駄かつ無意味。
>>160>>163
一般論としてクソコードであると賛同を得られないことに絶望した。
つか、釣りか? 釣りなのか?

166 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:18:21 ]
>>165
このスレになじまない内容なので、あまり興味を持たれなかっただけかと

167 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:18:22 ]
お前が釣ろうとしてるのかと深読みしてしまったよ

168 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:24:40 ]
>>144はこのスレで希に見る良題だと思ったけど
あぁ、希だからか

ちなみに自分は144ではないです

169 名前:149 mailto:sage [2007/10/27(土) 02:29:03 ]
>>165
俺は賛同するぞ。
簡単な処理をあんなに難しく実装する才能はある意味凄いと思う。

170 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:32:58 ]
if (cond) for (;;) {
} else {
}
とか
for (;;)
 if (cond1)
 if (cond2)
{
}
ってありなの?



171 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:34:06 ]
>レビュー以外でこんなコードが涌いて出るのを防ぐ手段、知らないか?
これは質問じゃなくてただの皮肉だったのか

172 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:34:05 ]
つーか、条件式の定数を左に書くのは、代入文の検出とかいってる奴なんなの?
レベル低すぎてどうしようもない。ちげーだろ。

if( NULL == hoge_func(hoge_arg1, hoge_arg2, hoge_arg3, hoge_arg4, hoge_arg5, hoge_arg6, hoge_arg7, hoge_arg8) )
{
}

if( hoge_func(hoge_arg1, hoge_arg2, hoge_arg3, hoge_arg4, hoge_arg5, hoge_arg6, hoge_arg7, hoge_arg8) == NULL )
{
}

前者と後者、どっちが読みやすいかって話だ。
そもそも関数の引数が多すぎる、とか言われても困るぞ。
Win32APIとかだと、引数8個程度のなんてゴロゴロあるからな。
あと、後者だと、環境によっては==NULLがエディタの外に出てしまって、見えないことがあることも付け加えておく。

173 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:39:46 ]
>>172
関数より定数の方が長い場合もあるわけで

174 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:41:33 ]
>>170
文法的には間違っては無さそうだが、ひどく読みづらいな。

175 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:41:49 ]
>>173
その場合は定数を後ろに書けば良いだろ。

176 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:43:44 ]
>>172の言いたいことがケースバイケースであるなら正解
定数左が当然といってるのなら>>173が正解

177 名前:デフォルトの名無しさん [2007/10/27(土) 02:50:31 ]
ったくもう、まだ続ける気かよ。

>>172
こういう発想は無いの?

if( hoge_func(hoge_arg1
 , hoge_arg2
 , hoge_arg3
 , hoge_arg4
 , hoge_arg5
 , hoge_arg6
 , hoge_arg7
 , hoge_arg8) == NULL )
{
}

178 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:51:18 ]
だいたいさ、お前ら良く考えてみろよ。
疲労困憊のときに>>172の後者の文を見て、本当に==NULLを読み飛ばさない自信が有るか?
==NULLはエディタの外に出てしまっていて見えてないかもしれないんだぞ。
必ずスクロールして確かめる自身はあるか?
また、他人が読んだとき、必ずスクロールしてくれる自身はあるか?

そんなリスク背負うぐらいなら、場合によっては定数を先に書いても良いんじゃないか?
コーディングスタイルに拘るあまり、意固地になっちゃってどうするの。

179 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:57:03 ]
つか、Win32APIを使ってる時点で、何と比較するのか判っているのだから、定数が左にある必要は無いと思うが?

CreateWindowを使った後にHWNDを定数と比較する
その定数は何かなんて、誰だって判る問題だ
ファイルポインタを定数と比較する
その定数はなんなのか判らない奴は、Cで真面にプログラム組む事が出来るとは思えない

変な定数と比較するのなら、定数を前に持っていくより、何のためのテストかコメントを残す方が余っ程気が利いている


180 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:59:16 ]
>>177
どこで折り返すかって話になるが、
結局、自分のプログラムが何処で誰に読まれるか判らない以上、
「何列以上になったら折り返す」ということを語るのは難しい。
読み手のエディタのサイズを予測するすべは無い。

それに、どの様な書き方をしても、後に書くものは先に書くものに比べて
目立ちにくいということには変わりない。
条件式の場合は、関数の引数よりも条件そのものの方が大事だから、
大事なものを先に書いちゃおうという視点から、読み手のことを考えれば、
定数は自然と左に出てくる。逆に自分のスタイルを貫けば右に行く。



181 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 03:02:31 ]
>>179
なんでWin32API限定で話を進めるんだよ。
>>172のどこにもWin32APIに限定しますなんて書いてないだろ。
離散数学の基礎からやり直してください。

182 名前:デフォルトの名無しさん [2007/10/27(土) 03:02:42 ]
いや、昔は80桁越えたら折り返すってルールがあったんだが。

マウスの付いてるパソコンしか使ったことの無い世代が増えたなぁ。
・・・しみじみ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<89KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef