[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/31 00:34 / Filesize : 180 KB / Number-of Response : 913
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

イラッつとするコーディングスタイル



1 名前:仕様書無しさん [2012/03/10(土) 22:20:29.12 ]
文法的には何ひとつ間違ってはいないし、本人なりに見やすくしようとする意図は汲み取れるのだが、
どうにも気持ち悪くて、「修正してやる!」と叫びながらキーボードを激しく連打したくなる

そういう薄気味悪いコーディングスタイルを発見したら書き込むスレッド

77 名前:仕様書無しさん mailto:sage [2012/03/15(木) 19:03:15.35 ]
日付と名前は必須だろ
どこにバグがあるか特定する時に一番役に立つ

78 名前:仕様書無しさん mailto:sage [2012/03/15(木) 20:25:45.12 ]
修正履歴なんて入れてないでソース管理ツール使えよって感じだけど、ドカタの現場だとただのファイル共有ツールって認識だし使っても同じか。

79 名前:仕様書無しさん mailto:sage [2012/03/15(木) 21:04:29.64 ]
わざわざソース管理ツールをインストールするの面倒じゃん
おまえらすぐ管理ツールを変更しちゃうから古いソースを見る時に大変なんだよ

80 名前:仕様書無しさん mailto:sage [2012/03/15(木) 21:12:59.59 ]
やっぱり新しいツールや技術についていけない無能に合わせるしかないよな

81 名前:仕様書無しさん mailto:sage [2012/03/15(木) 21:13:26.95 ]
名前がファミリーネームどころかファーストネームですらなく、
親しい間でなければ使わないような愛称

鼻穴に5センチほど割り箸突っ込んでグググと水平に近づけて
後遺症が残らない程度に苦痛を与えることで反省を促したい

82 名前:仕様書無しさん mailto:sage [2012/03/16(金) 00:11:44.00 ]
俺もちょっと前にPHPで
return hoge ? false : true ;
って書いてた。恥ずかしい

83 名前:仕様書無しさん mailto:sage [2012/03/16(金) 06:55:35.96 ]
return func();
とか、気持ち悪くないか?

84 名前:仕様書無しさん mailto:sage [2012/03/16(金) 11:17:23.41 ]
返却値の柔軟性を奪っておいた方が後々不具合が少ない気はしないでもない。

85 名前:仕様書無しさん mailto:sage [2012/03/16(金) 19:59:37.11 ]
/*2008.01.01 障害対応 start */
/*2009.09.15 障害対応 start */
/*2010.12.11 障害対応 start */
/*2011.02.13 障害対応 start */
return true;
/*2011.02.13 障害対応 end */
/*2010.12.11 障害対応 end */
/*2009.09.15 障害対応 end */
/*2008.01.01 障害対応 end */

こんなのを見ると腹立つ
消すなって言われると帰りたくなる



86 名前:仕様書無しさん [2012/03/16(金) 20:10:41.24 ]
>>85
え?なんで修正した箇所のソースが残ってないの?
普通はコメントアウトして残すだろ?

コメントアウトした部分を削除する時は日付も削除するし
そんな状態にはならない

87 名前:仕様書無しさん mailto:sage [2012/03/16(金) 20:15:05.66 ]
>>86

>普通はコメントアウトして残すだろ?
普通は…な…。

88 名前:仕様書無しさん mailto:sage [2012/03/16(金) 20:20:45.49 ]
正月から大変なんだなw

89 名前:仕様書無しさん mailto:sage [2012/03/17(土) 01:07:19.71 ]
>85
そもそもSubversionとか使ってないの?

90 名前:仕様書無しさん mailto:sage [2012/03/17(土) 01:09:31.26 ]
そこかよw

91 名前:仕様書無しさん mailto:sage [2012/03/17(土) 07:04:29.13 ]
全体の設計があきらかにアレなコードで
いちいち修正をコメントで残されてもなー

92 名前:仕様書無しさん mailto:sage [2012/03/17(土) 10:36:26.07 ]
ありきたりだけど、コメントが疑問系のやつ
一回それに対する回答コメントがあってワラタ

93 名前:仕様書無しさん mailto:sage [2012/03/18(日) 07:15:33.32 ]
LINQの使い方を知って以来、foreachまみれのソースは基本的にイラつく

94 名前:仕様書無しさん mailto:sage [2012/03/18(日) 19:33:17.18 ]
foreach?gotoでループを表現しているコードをいじらされるよりだいぶマシだな

95 名前:仕様書無しさん mailto:sage [2012/03/19(月) 01:56:27.12 ]
>>14
ちゃんと意味のある関数ならいいけどな。



96 名前:仕様書無しさん mailto:sage [2012/03/19(月) 01:57:43.43 ]
>>20
C#はなるんじゃなかった?

97 名前:仕様書無しさん mailto:sage [2012/03/19(月) 11:49:33.84 ]
C#にはポインタはありません(すくなくとも表面的には)

それよりもここのタイトルの「イラッつと」って書き方にいらっと来た。

98 名前:仕様書無しさん mailto:sage [2012/03/19(月) 13:33:57.93 ]
>>97
あからさまに仕様上あるわけだが>C#のポインタ
そんなことより、スレタイに関しては >>5 で既出なんだが
ホントに直近のレスだけしか見てないんだなあ(´・ω・`)

99 名前:仕様書無しさん mailto:sage [2012/03/19(月) 13:56:14.92 ]
何のひねりもないマジレスにイラッつとした

100 名前:仕様書無しさん [2012/03/19(月) 15:44:51.04 ]
スレタイの「イラッつと」は「イラッと」の間違い?
なんかいらっと来た

101 名前:仕様書無しさん mailto:sage [2012/03/19(月) 18:12:57.12 ]
if (0 == hoge)

102 名前:仕様書無しさん [2012/03/19(月) 19:25:54.13 BE:1248768735-2BP(0)]
>>101
これはわからなくはないが見にくい

103 名前:仕様書無しさん mailto:sage [2012/03/19(月) 20:01:41.88 ]
>>101
if (0 < hoge && hoge < fuga)

これは許してちょんまげ

104 名前:仕様書無しさん mailto:sage [2012/03/19(月) 20:29:56.00 ]
>>103
それは普通

105 名前:仕様書無しさん mailto:sage [2012/03/19(月) 20:57:03.45 ]
もしかして、"<" は良くて ">"
は使わないの?



106 名前:仕様書無しさん mailto:sage [2012/03/19(月) 21:03:08.93 ]
はぁ?

107 名前:仕様書無しさん [2012/03/19(月) 21:59:50.74 ]
void hoge()
{
 if(this.expr) return;
 hogehoge();
 fugafuga();
 ...
}
俺も7年前までこう書いていたんだが、
今ではイラッとまで来ないが、なんかもやっとする。
入口一つに出口一つ、例外的に途中抜けするから例外、
と考えているんだが、そういう考えは少数派なのだろうか

108 名前:仕様書無しさん mailto:sage [2012/03/19(月) 22:14:45.37 ]
>>107
return文の利用を気にしているのかな?
それを使わないことでネストが浅くなる場合もあるよ
以下は、ソート処理で使われる比較メソッドの例

def compare(x, y)
  gender_result = x.gender <=> y.gender
  return if gender_result == 0

  age_result = x.age <=> y.age
  return if age_result == 0

  x.name <=> y.name
end

昔のgoto文不要論争と同じように、return文も全面的に禁止するのではなく、
必要に応じて使い分ける(=必要な場合に限って使う)ことを考えればいいのではないかと

109 名前:108 mailto:sage [2012/03/19(月) 22:17:52.90 ]
ミスがあったのでコードを訂正(なお、言語はRuby)

def compare(x, y)
  gender_result = x.gender <=> y.gender
  return gender_result if gender_result == 0

  age_result = x.age <=> y.age
  return age_result if age_result == 0

  x.name <=> y.name
end

110 名前:仕様書無しさん mailto:sage [2012/03/19(月) 23:21:53.63 ]
>>107
> 入口一つに出口一つ
これを守るためにフラグ変数導入したり、do〜while(0)使ったりするコードは
イラッとする。

111 名前:仕様書無しさん mailto:sage [2012/03/20(火) 00:23:49.93 ]
>>110
>これを守るためにフラグ変数導入したり、do〜while(0)使ったりするコードは
>イラッとする。
御意

112 名前:仕様書無しさん mailto:sage [2012/03/20(火) 01:32:28.25 ]
if(hoge) goto exit;

113 名前:仕様書無しさん mailto:sage [2012/03/20(火) 03:16:51.32 ]
>>107
出口一つにしたければ、

void hoge()
{
 if(this.expr) goto EXIT;
 hogehoge();
 fugafuga();
 ...
EXIT:
}

こう書けばいいよw

つか、returnなんてこの書き方の短縮形でしか
ないんだから出口を一つにする意味はない。

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回だよね






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

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

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