- 1 名前:仕様書無しさん [2012/03/10(土) 22:20:29.12 ]
- 文法的には何ひとつ間違ってはいないし、本人なりに見やすくしようとする意図は汲み取れるのだが、
どうにも気持ち悪くて、「修正してやる!」と叫びながらキーボードを激しく連打したくなる そういう薄気味悪いコーディングスタイルを発見したら書き込むスレッド
- 114 名前:仕様書無しさん mailto:sage [2012/03/20(火) 07:23:02.48 ]
- 場合わけが多岐にわたり、なおかつ「通常」の抜け方が唯一の関数だと
末尾に「通常」のreturn、そこまでのあちこちにif文と抱き合わせで複数のreturn というのは必然
- 115 名前:仕様書無しさん mailto:sage [2012/03/20(火) 11:01:41.79 ]
- >>101
これをコーディング規約にするのは 「ウチのプロジェクトには、代入と比較を間違える間抜けがいます」 つってるようなもんだよなあ。
- 116 名前:仕様書無しさん mailto:sage [2012/03/20(火) 12:20:25.49 ]
- 代入と比較を 書き 間違える人なら
全員当てはまると思いますが?
- 117 名前:仕様書無しさん mailto:sage [2012/03/20(火) 12:35:19.18 ]
- たしかVisualBasicだと比較も = 1個だけだったと思う
BASIC系全部そうかな
- 118 名前:仕様書無しさん mailto:sage [2012/03/20(火) 12:43:43.70 ]
- BASICは、ifで代入できるなんて
あほらしい仕様がないからね。
- 119 名前:仕様書無しさん mailto:sage [2012/03/20(火) 13:06:39.30 ]
- >>115は根性と精神力でプログラミングするんだろうなあ
お近づきにはなりたくない
- 120 名前:仕様書無しさん mailto:sage [2012/03/20(火) 13:40:45.28 ]
- まぁ普通は静的解析ツール使ってチェックするよなぁ。
>>101 みたいなプログラマの注意力に依存したスタイルは今どき流行らないよ。
- 121 名前:仕様書無しさん mailto:sage [2012/03/20(火) 13:54:35.84 ]
- >>101
頭の中で0がhogeだったらって考えちゃうけど、こう書いたときにどう考えてるんだろ
- 122 名前:仕様書無しさん mailto:sage [2012/03/20(火) 13:54:57.90 ]
- >>113
その手の奴で、それぞれ脱出する箇所によって終了処理が異なるから EXIT1: EXIT2: …と、returnの前に4つくらいラベルが書かれたソースを 見たことがあるな。 ネストが深くなるのがそんなに嫌なのか。
- 123 名前:仕様書無しさん mailto:sage [2012/03/20(火) 14:00:38.72 ]
- ネストが深くなっていいことは一つもないからな。
- 124 名前:仕様書無しさん mailto:sage [2012/03/20(火) 14:19:18.43 ]
- >>119
なんで根性と精神力があると間違えないと思うの? バカなの?
- 125 名前:仕様書無しさん mailto:sage [2012/03/20(火) 15:25:25.39 ]
- if (sysfn(...) < 0) {エラー処理} //sysfn()は、エラー時に"-1"を返す関数
なぜすなおに-1を使わない?
- 126 名前:仕様書無しさん mailto:sage [2012/03/20(火) 15:30:15.28 ]
- ネットで似たような処理を探してきて、意味もわからず貼り付けて、
「出来ました」 とかいうスタイル。 技術者なめとんのか
- 127 名前:仕様書無しさん mailto:sage [2012/03/20(火) 15:40:00.90 ]
- >>125
負の整数をエラーコードとしている場合、新たなエラーコードが追加されたときにもエラー処理を実行させるため
- 128 名前:仕様書無しさん [2012/03/20(火) 16:13:54.00 ]
- >>103
むしろそうしないコードにイラッつとするわ
- 129 名前:仕様書無しさん [2012/03/20(火) 16:14:36.45 ]
- >>124
こんなもん静的解析ツールが見つけ出してくれるだろ
- 130 名前:仕様書無しさん mailto:sage [2012/03/20(火) 17:55:49.64 ]
- >>127
sysfn()は、「失敗時に-1」と定義されたシステムコールです
- 131 名前:仕様書無しさん [2012/03/20(火) 19:38:01.93 ]
- システムコールの仕様は一生変わらないとお思いかね
- 132 名前:仕様書無しさん mailto:sage [2012/03/20(火) 19:42:26.65 ]
- 変わってからまたおいでw
- 133 名前:仕様書無しさん mailto:sage [2012/03/20(火) 19:44:21.26 ]
- 「失敗Aが-1だけど失敗Bは3を返す」
という構造になる確率よりも 「失敗Aが-1なので失敗Bは-2を返す」 という構造になる確率のほうがたぶん高い とにかく失敗ならヒットしたいという場合、とりあえず負かどうかチェックするのはいちおうはアリだ 「失敗なんだけど、既存のエラー処理では処理しきれない新失敗」という可能性もあるんだけど、 それはたぶんエラーコードがなにになっても結局うまく動かないだろうからどうでもいい
- 134 名前:仕様書無しさん mailto:sage [2012/03/20(火) 19:47:28.02 ]
- >130
それならsysfn()のヘッダに #define SYSFN_ERROR -1 って書かれてるだろうから俺はそれを使う。 書いてなければsysfn()を作った奴が無能。
- 135 名前:仕様書無しさん mailto:sage [2012/03/20(火) 20:19:40.05 ]
- xxxxx{
} xxxxx( ){ } カッコの列が違うと読みづらくて仕方ない
- 136 名前:仕様書無しさん mailto:sage [2012/03/20(火) 20:25:09.56 ]
- int mCode = 0; // 変数mCodeの宣言
そんなの見りゃ分かる。 mCodeが何の変数かを書いてほしかった。
- 137 名前:仕様書無しさん mailto:sage [2012/03/20(火) 20:55:44.58 ]
- >>136
もう一歩踏み込んで変数名だけでわかるようにしないと
- 138 名前:仕様書無しさん mailto:sage [2012/03/20(火) 21:34:41.41 ]
- 日本語で書かないとわけがわからなくなる値の入る変数名というのは結構あったりする
- 139 名前:仕様書無しさん mailto:sage [2012/03/20(火) 21:40:17.74 ]
- >>125
成功時に0以上の値を返す関数だから。
- 140 名前:仕様書無しさん mailto:sage [2012/03/20(火) 21:57:22.53 ]
- ・
- 141 名前:仕様書無しさん mailto:sage [2012/03/20(火) 21:57:25.05 ]
- 普通にそう考えられないやつはセンスないよね。
- 142 名前:仕様書無しさん mailto:sage [2012/03/20(火) 23:54:41.16 ]
- CのベテランがJavaにきても成功/失敗を、0/-1で返してたな。
関数名も chkHoge() みたいな感じだし。 イラっとするっていうか懐かしい感じがした。
- 143 名前:仕様書無しさん mailto:sage [2012/03/21(水) 00:20:49.82 ]
- exit 1 が失敗を現す文化がですね
- 144 名前:仕様書無しさん mailto:sage [2012/03/21(水) 00:44:15.06 ]
- >>25
式の評価順が気になって安全に振ってんだろ
- 145 名前:仕様書無しさん mailto:sage [2012/03/21(水) 01:18:59.93 ]
- >>54
これって、typedefつかっちゃダメなのか?
- 146 名前:仕様書無しさん mailto:sage [2012/03/21(水) 03:45:59.92 ]
- ループの全てをdoループで処理したらイラッとするって言われた。
forとかwhileとか使えって(´・ω・`) ループ前に変数初期化、ループの最初と最後にifで必要に応じてbreak。 ループカウンタ進めるタイミングとか、ループ抜ける条件を一覧(風)に並べられたりとか、見やすいと思うんだけどな。 イラッとするもの?
- 147 名前:仕様書無しさん mailto:sage [2012/03/21(水) 06:16:44.32 ]
- たかがループで
> ループ前に変数初期化、ループの最初と最後にifで必要に応じてbreak。 > ループカウンタ進めるタイミングとか、ループ抜ける条件を一覧(風)に並べられたり こんなことやらないといけないのは、何かおかしいと直感的に感じる。 条件などをきちんと整理すれば普通の forとか whileになるんじゃないか?
- 148 名前:仕様書無しさん mailto:sage [2012/03/21(水) 06:28:26.77 ]
- いちいちインクリメンタに意味のある名前をあたえているせいで
forの宣言行が長くなっていると予想
- 149 名前:仕様書無しさん mailto:sage [2012/03/21(水) 09:33:37.32 ]
- K&R Cっぽい関数宣言してる人がいてビックリしたことがる
- 150 名前:仕様書無しさん mailto:sage [2012/03/21(水) 09:41:20.56 ]
- C++やC99 or laterなら問題になるがC89までなら問題ない
それより関数定義のほうを見たらびっくりするだろ
- 151 名前:仕様書無しさん mailto:sage [2012/03/21(水) 12:49:10.36 ]
- >>146
> ループの全てをdoループで処理したらイラッとするって言われた。 イメージが沸き辛いんだけど、 for (int i = 0; i < N; ++i) { /* something */ } を int i = 0; do { if (i >= N) break; /* something */ i++; } while (true); みたいに書いてるのか? ループの最後にifってのがよくわからんが。 もしそうなら今までで1、2を争うイラッつとレベル
- 152 名前:仕様書無しさん mailto:sage [2012/03/21(水) 13:22:32.98 ]
- >>146
イラッつとするって言うか、死ねって思う。 do whileだと終了判定とカウンタの処理の2か所でバグ仕込む可能性が上がって 解析する場合に余計なコストがかかる。 ただのfor文だと分かった場合であっても、それ以前と仕様が変わって そうせざるを得なかった場合まで考えるから鬱陶しい。
- 153 名前:仕様書無しさん [2012/03/21(水) 17:20:34.42 ]
- >>146
俺なら全部書きなおさせる。
- 154 名前:仕様書無しさん mailto:sage [2012/03/21(水) 18:13:00.78 ]
- >>146
命令の数が増えたら読みにくいじゃん ループはforで統一するのがいいんだよ
- 155 名前:仕様書無しさん mailto:sage [2012/03/21(水) 18:28:43.38 ]
- >>154
えっ?そんな理由でforに統一してるの? 絶対一緒に仕事したくないなぁ〜
- 156 名前:仕様書無しさん mailto:sage [2012/03/21(水) 18:59:49.89 ]
- 新着があるはずなんだがぜんぜん表示されない…
- 157 名前:仕様書無しさん mailto:sage [2012/03/21(水) 19:16:16.72 ]
- whileしか使わない
- 158 名前:仕様書無しさん mailto:sage [2012/03/21(水) 19:54:01.21 ]
- ifとgotoしか使わない
- 159 名前:仕様書無しさん mailto:sage [2012/03/21(水) 22:59:55.17 ]
- 俺はwhile統一派
変数初期化やインクリメントは単独の式でやったほうがいい
- 160 名前:仕様書無しさん mailto:sage [2012/03/21(水) 23:01:01.13 ]
- >>154
for統一ってのは無いな
- 161 名前:仕様書無しさん mailto:sage [2012/03/21(水) 23:01:23.71 ]
- >>159
処理系によって遅くなるぞ
- 162 名前:仕様書無しさん mailto:sage [2012/03/21(水) 23:05:05.67 ]
- forとwhileの統一なんかは別にどーでもいいが
do whileで統一はまじでやめほしい
- 163 名前:仕様書無しさん mailto:sage [2012/03/21(水) 23:12:53.60 ]
- until文とか出てくると紛らわしい。
- 164 名前:仕様書無しさん mailto:sage [2012/03/21(水) 23:24:25.39 ]
- >161
forとwhileの違いごときで体感レベルで遅くなるような処理系って現存するのか……?
- 165 名前:仕様書無しさん [2012/03/21(水) 23:39:43.30 ]
- whileは変な書き方したら遅くなりそうな気はするな
- 166 名前:仕様書無しさん mailto:sage [2012/03/21(水) 23:44:18.23 ]
- ってもJUMPするだけじゃん
- 167 名前:仕様書無しさん mailto:sage [2012/03/22(木) 00:27:49.79 ]
- for(;;)は条件式の省略が認められてるが、while(true)は定数のboolで条件式を代用してる
- 168 名前:仕様書無しさん mailto:sage [2012/03/22(木) 01:38:23.47 ]
- >>164
現存するかは知らんけど、数年前のC++ Builderに付いてたコンパイラは forで加減算してる場合しかループ展開しなかった
- 169 名前:仕様書無しさん mailto:sage [2012/03/22(木) 06:24:32.18 ]
- gotoが使える言語で
1回だけしか実行しないループとbreakで疑似goto 多重ループを抜ける為の大量に設置された判定文 gotoは使わないでね☆ミみたいなのにとらわれすぎだと思った コメントにしっかり書くならいいと思うんだけどなぁ
- 170 名前:仕様書無しさん mailto:sage [2012/03/22(木) 08:33:09.39 ]
- >>54
thisポインタ使われてたら終わるなw
- 171 名前:仕様書無しさん mailto:sage [2012/03/22(木) 09:38:41.47 ]
- >>169
複数回のメンテを受けた後がGOTOの本領発揮 共同作業でGOTO使うなっていうのは鉄の掟 あがっている例ではその部分を関数化すれば解決するんじゃないだろうか returnによるgotoも賛否がわかれる所ではあるけれど
- 172 名前:仕様書無しさん mailto:sage [2012/03/22(木) 09:56:37.14 ]
- >breakで疑似goto
別モンだろw
- 173 名前:仕様書無しさん mailto:sage [2012/03/22(木) 10:58:08.82 ]
- >>172
上から下に流れるだけのgotoと言うかなんと言うか どっちかと言うと1回のループでなんでこんなもんが…と混乱した後に 「ただbreakで飛びたいだけでしたーwww」ってのがな…
- 174 名前:仕様書無しさん mailto:sage [2012/03/22(木) 11:06:25.62 ]
- 難読化技術はとどまることを知らない
- 175 名前:仕様書無しさん mailto:sage [2012/03/22(木) 13:13:43.25 ]
- goto使うなというのは、あなたのために言っているのではない
あなたの次の次の次の人くらいのために言っている
- 176 名前:仕様書無しさん mailto:sage [2012/03/22(木) 13:23:26.07 ]
- > 1回だけしか実行しないループとbreakで疑似goto
なんで if 使わないの?
- 177 名前:仕様書無しさん mailto:sage [2012/03/22(木) 13:28:57.86 ]
- forだと2回条件を評価しているんだがifだと1回だよね
- 178 名前:仕様書無しさん mailto:sage [2012/03/22(木) 13:40:20.34 ]
- エラー時に関数抜ける場合とかの解放忘れ防止に goto もありかな、と思う事はある。
- 179 名前:仕様書無しさん mailto:sage [2012/03/22(木) 13:51:40.67 ]
- >>175
コメントはしっかり書くと言t 俺のコメントが…消えた…? 関数にするほどの処理じゃないor関係性があった処理で戻り値無しの関数終了をイメージした何かだったんだろう 調査だったからそれで動いてたし触らないが吉としてスルーした
- 180 名前:仕様書無しさん mailto:sage [2012/03/22(木) 13:56:27.17 ]
- >>178
解放なんて例外でキャッチしてやればいいじゃん というかそれ以外の方法だとどうやっても抜ける可能性でるだろ
- 181 名前:仕様書無しさん mailto:sage [2012/03/22(木) 14:51:20.98 ]
- 例外が使えない状況もあるからね。
- 182 名前:仕様書無しさん mailto:sage [2012/03/22(木) 14:55:17.06 ]
- >>180
Exception Safetyって知ってる? 知らずにレスしてるならもっと勉強しろ。 知ってるなら、そう簡単な話ではないことくらいわかるだろ。
- 183 名前:仕様書無しさん mailto:sage [2012/03/22(木) 17:38:53.68 ]
- gotoが「絶対ダメ」なのなら、例外だって「かなりダメ」だろう
どっちにしても大域脱出なのは変わりがないのだから、極めて慎重に設計されて極めて慎重に使用されるべき 「gotoはダメだけど例外ならいいよ」なんてことはあって欲しくない あって欲しくないってことは実際にはあるってことなんだが
- 184 名前:仕様書無しさん mailto:sage [2012/03/22(木) 17:56:13.71 ]
- >>183
君、何の言語ができるの?
- 185 名前:仕様書無しさん mailto:sage [2012/03/22(木) 20:15:58.44 ]
- まぁgotoが許されるのは多重ループの脱出か
try-catchが無い場合の例外処理に限られるわな。 goto禁止ってのはそもそも、gotoが悪いんじゃなくて 処理ブロックの中を行き来するのが悪いって話だからなぁ。 ダイクストラ本人はgotoがダメとは言ってないし。 あと、breakは本来の意味では問題あるgotoになり得ない。 if( x ) { goto label1; label2: goto label3 } while( n ) { label1: goto label2 label3: }
- 186 名前:仕様書無しさん mailto:sage [2012/03/23(金) 23:51:50.59 ]
- カッコの内側にスペース入れてるのとカンマの後ろにスペース入れてないのがイラっとするわ。
- 187 名前:仕様書無しさん mailto:sage [2012/03/24(土) 07:42:22.62 ]
- これか
foo( aaa,bbb,ccc ) なんか、AKBにそういう顔をしたメンバーが居るそうだな ( ∵ )
- 188 名前:仕様書無しさん mailto:sage [2012/03/24(土) 09:44:13.79 ]
- ミサワさんか
- 189 名前:仕様書無しさん mailto:sage [2012/03/24(土) 09:59:23.99 ]
- 浜ちゃん
- 190 名前:仕様書無しさん mailto:sage [2012/03/25(日) 22:03:08.33 ]
- a = a + 1;
- 191 名前:仕様書無しさん mailto:sage [2012/03/26(月) 11:06:32.52 ]
- >>190
Luaとかはそう書かないとダメだと思った
- 192 名前:仕様書無しさん mailto:sage [2012/03/26(月) 20:21:29.78 ]
- >>190
宣言型言語に慣れるとイラッとするのかもしれない 【関数型言語(Haskell)】 a' = a + 1 【論理型言語(Prolog)】 A1 = A + 1
- 193 名前:仕様書無しさん mailto:sage [2012/03/27(火) 09:04:29.30 ]
- 1ならインクリしろって事なのかマジックナンバーだからなのか
一定の数値足すならそれが記述方法として正しいし理解しやすいと思う
- 194 名前:仕様書無しさん mailto:sage [2012/03/27(火) 09:08:07.35 ]
- あぁ同じ変数に突っ込むってのもあったか
何かしら足してるなら別物になる事が多いしなぁ…
- 195 名前:仕様書無しさん mailto:sage [2012/04/03(火) 21:38:44.46 ]
- phpばっかやっとるやつは、
きたないな、ソースも顔も。
- 196 名前:仕様書無しさん mailto:sage [2012/04/04(水) 00:34:00.34 ]
- 金を儲けると顔がきたなくなっちゃうよね
- 197 名前:仕様書無しさん mailto:sage [2012/04/07(土) 02:10:36.21 ]
- // TODO 自動生成されたメソッド・スタブ
- 198 名前:仕様書無しさん mailto:sage [2012/04/07(土) 16:30:48.93 ]
- // 仕様追加対応
if ( id > 11 && id < 13) { }
- 199 名前:仕様書無しさん mailto:sage [2012/04/07(土) 18:55:20.54 ]
- コメントをテンプレートを使って強制するとおこりがちなこと
/************************************ * 関数名 Initialize * 日本語名 初期化関数 * 概要 初期化を行う * 機能 パラメータの初期化 * 備考 特になし *************************************/ InitStatus (...) { }
- 200 名前:仕様書無しさん mailto:sage [2012/04/07(土) 18:57:08.56 ]
- たいてい、コメントブロックと関数の間に
//Initialize (...) { が存在する
- 201 名前:仕様書無しさん mailto:sage [2012/04/08(日) 17:24:39.33 ]
- \ ヽ | / /
\ ヽ / / ‐、、 殺 伐 と し た ス レ に 鳥 取 県 が ! ! _,,−'' `−、、 __/\ _,,−'' `−、、 _| `〜┐ _,,−'' _ノ ∫ _,.〜’ / ───────‐ ,「~ ノ ───────‐ ,/ ` ̄7 | 島 根 県 / _,,−' ~`⌒^7 / `−、、 _,,−'' 丿 \, `−、、 ,'´\ / _7 /`⌒ーへ_,._⊃ /`i ! \ _,,-┐ \ _,.,ノ r‐-、、 / ! ゙、 `ー--<´ / L. ,〜’ ゙、 >−一'′ ,' y' U `ヽ/ / ヽ ヽ '´ U イ ____ / __ | \____\ ___/__ / ̄ ____|____ \ \____\ //ヽ /___ /|\ \ \____\ / / ヽ / /__ / | \ \_______ / / / / / / | \ | \ / / / / _/ __/ | \__ | \  ̄―_
- 202 名前:仕様書無しさん mailto:sage [2012/04/09(月) 10:43:48.99 ]
- >198
idがdoubleかなんかになってるんだよ。
- 203 名前:仕様書無しさん [2012/04/11(水) 21:01:07.00 ]
- 俺がおかしいんだろうけど
privateかつ仮想関数でもない関数がstatic関数じゃ無かったとき。 てか、できるだけクラス内部で呼ぶオブジェクト自身の関数は、 static関数であって欲しい。 まず、インターフェースとして外に見せてる関数じゃないんだから、 static関数で十分だし、コード追うときメンバー変数弄ってる関数は 見た目がグローバル変数中で使ってる関数と同じなんで読みづらい。
- 204 名前:仕様書無しさん mailto:sage [2012/04/11(水) 21:13:17.77 ]
- this使えよとしか
- 205 名前:仕様書無しさん mailto:sage [2012/04/11(水) 21:19:09.81 ]
- this->〜();ってしてても他のヤツ保守するときサボるし
this省いてもコンパイルエラーにならんし
- 206 名前:仕様書無しさん mailto:sage [2012/04/11(水) 21:23:10.50 ]
- Objective-Cとかjavascriptだと
selfやthis強制するから便利だよな
- 207 名前:仕様書無しさん mailto:sage [2012/04/11(水) 21:32:49.03 ]
- >>203
うん、君がおかしい。 でもそれがイラッつとするなら そりゃ感情論だから仕方ない。
- 208 名前:仕様書無しさん mailto:sage [2012/04/11(水) 21:38:44.72 ]
- >>204
thisもどうかと思うわ。5個メンバー変数あっても、 実際一つのprivate関数が必要とするのは2〜3って事が多いし。 だったら直接その変数を引数渡しした方がましじゃん。
- 209 名前:仕様書無しさん mailto:sage [2012/04/11(水) 21:55:57.48 ]
- >>208
メンバー変数をわざわざ引数で渡す必要性がわからん。
- 210 名前:仕様書無しさん mailto:sage [2012/04/11(水) 22:21:59.19 ]
- >>209
グローバル変数と同じ理由 // ここだけ見ていつループが終了するか解るか? for( point = 0; 100 > point; ++point ) Function();
- 211 名前:仕様書無しさん mailto:sage [2012/04/11(水) 22:27:32.68 ]
- 極端にもほどがあるな
- 212 名前:仕様書無しさん mailto:sage [2012/04/11(水) 22:30:07.16 ]
- 数年前のコード追うときとか楽なんだよ
>>210の例でいうFunctionで実際に値が 変更されるかどうか、Functionの中身 見ないで判断することができるからね。
- 213 名前:仕様書無しさん mailto:sage [2012/04/11(水) 22:37:37.22 ]
- グローバル変数は目の敵にするくせに
メンバ変数にしただけで安心しちゃってる人は グローバル変数の何が悪いのかもう一度考え直したほうがいいね。
- 214 名前:仕様書無しさん mailto:sage [2012/04/11(水) 22:38:55.94 ]
- > >>210の例でいうFunctionで実際に値が
> 変更されるかどうか、Functionの中身 > 見ないで判断することができるからね。 意味がわからない。
|

|