[表示 : 全て 最新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/

282 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 11:16:37 BE:789120656-2BP(125)]
ソースファイル内でそのスタイルで統一されてるなら、別に定数が右だろうが
左だろうが、個人の好みだからいいと思うけどなあ。

会社とかで、規約がちゃんとある場合は別で。

283 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 11:22:03 ]
C:\test>cl /W4 test.c
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.

test.c
c:\test\test.c(7) : warning C4706: 条件式の比較値は、代入の結果になっています。
Microsoft (R) Incremental Linker Version 8.00.50727.42
Copyright (C) Microsoft Corporation. All rights reserved.

/out:test.exe
test.obj

>>278
clでもちゃんと警告出るじゃねぇか

284 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 11:25:11 BE:1473024487-2BP(125)]
gccも-Wallつけないと警告でないね。
まあ、普通は付けてると思うけど。

285 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 11:37:51 ]
>>282
スタイルには単に好みの問題と、実際にメリットのあるものとがある。
前者は ifの条件式の後に中カッコつけるか、改行してからつけるか、など。
後者はif のあとには必ず中カッコをつける、など。
定数左は後者だと思う。(可読性に問題はないと思うので)

286 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 11:52:10 ]
>>282
「統一されてればいい」ってことなら、あえて少数派のスタイルを選ぶことはないんじゃないの? >>72



287 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 12:10:59 BE:526080454-2BP(125)]
>>285
定数左は確かに代入によるバグを防げるときもあるけど、
その反面、慣れないとぱっと見てわかりづらいよね?

例えば、代入文は
x = 0;
などと書くわけで、大抵の文は左から右に読んでいく。
そして、定数は右にある。これへの慣れが強いので、
if(0 == x)などと書かれると、ここで思考が停止してしまう。

ソースコードの理解しやすさ(可読性?)も考えると、トレードオフで
どちらを選ぶかは個人の趣味レベルになるのかなあと。
上で議論されてるように、コンパイラとかで容易にチェックできるわけだし。

288 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 12:12:39 ]
コーディングスタイルに拘りすぎる奴はヘタクソ
コーディングスタイル論争に突入する奴はさらにヘタクソ

289 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 12:15:18 BE:1262592386-2BP(125)]
>>286
少数派ではあるけれども、>>285の言うようにチェッカとかを使わなくても
ミスに気づくことができるという利点があるので選ぶんだろうね。

ちなみに漏れは定数は右派。
右におくソースがほとんどだし、慣れてるし。



漏れが見たオープンソースなソフトウェアのソースは定数が右にあった。
もし、定数が左にあることにもっと優位な点があるなら、とっくに
ほとんどのソースが定数左になってると思うんだけど、いかがだろう。

290 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 12:49:32 ]
とヘタクソ厨がもうしております



291 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 12:57:03 ]
>>281
主語と目的語の区別がつかないアホには
自然言語からやり直せといいたい。

292 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 13:05:06 ]
読む分にはどっちでもいい。何の違いもない。
書くときはsubject == compareの方が流れ的に書きやすい。

293 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 13:50:50 ]
288の書いたコードは汚そうだな。


294 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 14:23:51 ]
おまえら…。

【審議中】
    ∧,,∧  ∧,,∧
 ∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` )
| U (  ´・) (・`  ) と ノ
 u-u (l    ) (   ノu-u
     `u-u'. `u-u'

【結果発表】
パッ   パッ   パッ    パッ   パッ    パッ
 [チラ]  [シの]  [裏に]  [書き]  [やが]  [れ!]
  ‖∧,,∧ ‖∧,,∧ ‖∧,,∧ ‖∧,,∧ ‖∧,,∧ ‖∧,,∧
  ∩・ω・`) ∩・ω・`) ∩・ω・`) ∩・ω・`) ∩・ω・`) ∩・ω・`)
   (    ). (    ). (    ) (    ) (    ) (    )
   `u-u´  `u-u´   `u-u´  `u-u´  `u-u´  `u-u

295 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 14:31:10 ]
if(*dst++ = *src++){
hogehoge
}

みたいなとき警告でないようにしたいのですが


296 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 14:33:15 ]
if((*dst++ = *src++) != 0){


297 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 15:11:01 ]
もうね、コーディングスタイルスレでも立ててそこでやれと

298 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 15:40:13 ]
しかし、無茶苦茶な低能が居たものだな...
if (!strcmp(str1, str2)){}
は、知らない者に対して、文字列が等価で無いこと比較しているような誤解を与えることがあるので好ましくは無いだろう
では、
if (strcmp(str1, str2) == 0){}
これはどうだろうか?
この場合、!strcmp()よりも悪化していると言える
本質的な問題を解決していないからである
しかも、余分に入力した上で、知らない者に対し更なる誤解の種をまいていると言えるからである

故に、C FAQでは、
#define Streq(s1, s2) (strcmp((s1), (s2)) == 0)
と言うマクロを用意することで
if (Streq(str1, str2)){}
と記述させる事により、文字が等価であることを比較している事を判りやすくしましょうと書いているのだ

つまり、定数を左に置く正当の理由とは言えない
その上、彼の主張の一つである、定数を左に置くことで、何と比較しているのか判りやすくなると言う弁からすると
"文字列が等価では無いことを調べている"ように強調されてしまった駄目なコードの例と化しているのである

彼は、これを大まじめに、こちらの方が判りやすいと言っているが、どう考えても、判りにくなっていると思われる


299 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 15:41:35 ]
わかったから月曜になったらちゃんとハロワ池よ

300 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 15:54:07 ]
;`;:゙;`(;゚;ж;゚; )ブフォッ!



301 名前:デフォルトの名無しさん [2007/10/27(土) 16:04:59 ]
strcmpでの定数の右左に関して言えば、圧倒的に右だろう。
if (strcmp(str1, str2) < 0)

を読むとき、不等号が見たままの形として利用できる。
つまり、 str1 < str2 として直感的に理解することができる。

同様の条件を右定数で書くと、
if (0 > strcmp(str1, str2)) となって、見たままの直感と反してしまう。

そのつどリファレンスを引いたりしたくないし、
機械的に右へ書いてしまう習慣は役に立つ。

302 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 16:05:07 ]
できる奴ほどスタイルにこだわる

303 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 16:14:56 ]
大きいほうを右に配置したいし、常にそうするから、
結果的に不等号の「>」は不要だと思うんだよなぁ。

勿論、流儀の問題でぶつかったりする心配はあるけど、
そうじゃなくて自分ひとりで「>」無しでやっていくうえで、
どうしてもでてくる不都合ってあるのかな?
「<」じゃ困ってしまうような事態があるのかな?

チラシの裏にでも書いておけって? すまんね。

304 名前:デフォルトの名無しさん [2007/10/27(土) 16:31:17 ]
だれか、288を日本語に翻訳してくれ。

で、実際のところ、定数は左に置けとか頑張ってるのって、一人だけだろ?


305 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:26:57 ]
>>301
それは「定数を左辺に」と主張している派の本質と話題をそらせて釣りだと思うけど

306 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:28:27 ]
ぱっと見て「バカだなぁ」と思うコード

307 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:09:07 ]
スレスピードがきもいよお前ら

308 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:14:17 ]
いまム板で一番勢いがあるスレだぜここは

309 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:15:40 ]
昨夜から今朝にかけての速度はもう、ある種の祭りだった。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前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