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桁越えたら折り返すってルールがあったんだが。 マウスの付いてるパソコンしか使ったことの無い世代が増えたなぁ。 ・・・しみじみ。