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

このエントリーをはてなブックマークに追加
1仕様書無しさん
文法的には何ひとつ間違ってはいないし、本人なりに見やすくしようとする意図は汲み取れるのだが、
どうにも気持ち悪くて、「修正してやる!」と叫びながらキーボードを激しく連打したくなる

そういう薄気味悪いコーディングスタイルを発見したら書き込むスレッド
2仕様書無しさん:2012/03/10(土) 22:24:49.50
for(i = 0;i < IMAX;i++){・・・}
3仕様書無しさん:2012/03/10(土) 22:26:16.62
#define { begin
#define } end
4仕様書無しさん:2012/03/10(土) 22:27:07.72
pBase = (条件) ? new Child1() : new Child2();
5仕様書無しさん:2012/03/11(日) 01:07:15.09
スレタイがイラッつとする
6仕様書無しさん:2012/03/11(日) 01:10:07.48
             ☆
     ×         ' .                    ×
    x            ` .        x            ヽ . ☆
                         X   ,. -. ‐'´ ̄``丶、 ノ}          X
                     /} /: : : : : : : : : ーヘ
                 ×   / //: : : :l: .:. .} | . : : : : } . . ゜
                     _ノ_,ム′: : : |:::::::/! l.::. : !  /: :\        , ☆
               _/ /,. -‐〉 : : :_ !:;イ¬.|:i::: |i.|. :.i::: : : ヽ     ;
        ☆ . .     ,. '´!{  ゝ-‐''^¨二.ノ:〔__− V!::!LTV{::: : : :.',
            ×x .   ぃ     .イ::. : : |⌒`  }:リ'示Y1:: : : i }         x  ×
       . '´     ,. 介iー-、 {:::::::::. : : !     ^' ヒ'リ ',.|:::. :..  :.!リ          X
  X    /       /ヽ' L!  ヽ. Y::::i::::. .::. |r:ゥ- 、' `^ /:::l::::.::::.x:リ′ ; ☆ イラッ☆
   x /      / /⌒ヽ  込Jヽ:ト:{>、:ィ八_ ,.‐く  イ:ィ:::!x::X::/ ゛
   i'´       /-r‘ー、  ヘ-┴‐〉 `'i¬  ヘ.__{:::::::}.彳〔__レ1::ル'゜   ゜ .
    ー 、 --−'´   コ:..:.}:    \ 丶  .l | -、匸⌒´:_;-、ノ }_ ´        ゜ ×.
     `ヽ、    └;.:.    ..  }  〉 ヽ.| 〈__:,.イv/´〕、冫`i  x          ☆
        ` ¬ゥ´:..:....:..:..:..: ,ノ、 \ { !    {.{j_/,ィう′ !
      x '   Y:..:..:..X:..:..:.∠.._    ヽ.} |.     } `マ^V   |      X
          , ゛ヽ:..:..:..:../  ,.⊥_  /小\¬-{   ∨ヘ._,. -‐¬、
        ☆     ` ー′  j:..:..:..:Y´:´/ハ卜':..! :ヽ  ∧::ヘ .:..:... }
                      /:..:..:..:..j/:..:.`:..:´:..:..i  :..:ト-_ノ マ'’:..:..:..:..ヘ 
7仕様書無しさん:2012/03/11(日) 01:55:03.52
#define private public
8仕様書無しさん:2012/03/11(日) 02:43:59.61
String hoge
 =
 null
 ;

hoge
 =
 getSQL(
  flg1
  flg2
 )
 ;
9仕様書無しさん:2012/03/11(日) 02:44:47.10
>>8の9行目訂正
  flg1,
10仕様書無しさん:2012/03/11(日) 03:05:02.57
GNUの字下げスタイルはなんか嫌だ
11仕様書無しさん:2012/03/11(日) 06:31:52.11
コードの書き方にこだわるようじゃ3流だな。
こだわるべきはアルゴリズムだろ。
そこがきちっとしていればコードが短くなる。コードが短くなれば自然と読みやすくなる。
早くその領域に達するといいな。
12仕様書無しさん:2012/03/11(日) 07:15:38.84
他人のコードを読んだことないの?
13仕様書無しさん:2012/03/11(日) 09:14:43.77
>>11
既知のパターンで書かれているかも重要
パターンとパターンをつないでいくような作りであると、読みながら何をしたいのかが分かる。
14仕様書無しさん:2012/03/11(日) 12:56:09.17
>11
コードを短くするにはアルゴリズムではなく
関数にすることが重要。

どんなに長いコードでもたった一行にできる。
しかもすごく読みやすくなる。
15仕様書無しさん:2012/03/11(日) 13:09:35.46
というか設計だな
16仕様書無しさん:2012/03/11(日) 16:11:30.97
>>1の条件に該当するヤツは
一行が長くならないようにコメントを適当に改行してるんだけど
単語の途中を改行でぶった切られてのぐらいしか思いつかない

あとはイラッっとするので
> 本人なりに見やすくしようとする意図は汲み取れるのだが
で該当したものはない
17仕様書無しさん:2012/03/11(日) 17:29:28.29
古来から言われていることだが、ポインタ変数と普通の変数をいっぺんに宣言するとまぎらわしい。
18仕様書無しさん:2012/03/11(日) 18:26:18.08
>>17
int* ptr_A, B;
こんな感じ?
19仕様書無しさん:2012/03/11(日) 18:34:53.32
K&R流では
int *pa, b;
だね

*(アスタリスク)の前に空白を入れるのか後に入れるのかという違いだけど、
>>18のスタイルの発祥はどこなんだろ?
20仕様書無しさん:2012/03/11(日) 19:02:06.53
>>18
>int* ptr_A, B;

これで両方ポインタになるべきだと
俺は思うのだが

21仕様書無しさん:2012/03/11(日) 19:45:40.12
クラスのプロトタイプ宣言ファイルにそのクラスが使う複数の構造体の宣言を一緒に入れる
クラスのプロトタイプ宣言のなかにそのクラスが使う構造体の宣言をごっそり入れる

どう思う?
22仕様書無しさん:2012/03/11(日) 22:13:55.60
>>20
ていう思い違いをしやすいから*は識別名にくっつけろ、という話じゃね?
23仕様書無しさん:2012/03/11(日) 22:39:10.87
いやそうじゃなく文法自体が不適切なんじゃないのかって話
24仕様書無しさん:2012/03/11(日) 23:25:48.90
>>23
そりゃあ「コンパイラに優しい言語仕様」を目指したわけだし
てかそもそもそういうスレじゃないし
25仕様書無しさん:2012/03/12(月) 02:04:41.58
if(hoge != null) {
if(hoge.length() > 0) {
// 糞処理
}
}

ネスト深くせずreturnしてほしいわ
if(hoge != null && hoge.lenght() > 0) { return; }
// 糞処理
26仕様書無しさん:2012/03/12(月) 02:11:39.25
>>25

バカっ☆
27仕様書無しさん:2012/03/12(月) 02:39:19.67
定数宣言で=の位置を縦に揃えるのがあまり好きじゃない
28仕様書無しさん:2012/03/12(月) 06:45:08.76
Linux環境でC++ソースの整形コマンドってなかったっけ?
29仕様書無しさん:2012/03/12(月) 13:02:39.61
>27
俺は逆に、揃えてないほうが不快。
30仕様書無しさん:2012/03/12(月) 14:48:57.42
揃ってると見やすいけど修正しづらい
31仕様書無しさん:2012/03/12(月) 15:04:21.10
後で長い名前の定義を足した時に揃え直すか迷う
32仕様書無しさん:2012/03/12(月) 15:10:16.44
>>27 and >>29,30
縦揃えにTabを使わないのが問題なんじゃね?
自分はタブ幅4(:se ts=4 sw=4 ai)だけど、全く苦にならない
33仕様書無しさん:2012/03/12(月) 16:30:15.35
俺はインデント以外でタブ文字使われるのが大嫌い
34仕様書無しさん:2012/03/12(月) 19:58:47.49
キナ臭くなってまいりました
35仕様書無しさん:2012/03/12(月) 20:46:52.41
タブサイズを8以外にしてるのがイラっとするわ。
36仕様書無しさん:2012/03/12(月) 21:11:14.76
indentのデフォルトは2じゃね?
37仕様書無しさん:2012/03/12(月) 21:35:49.34
=の位置で簡単に揃えられない
エディタを使う奴が無能なだけ。
38仕様書無しさん:2012/03/12(月) 21:38:11.18
そもそも変数名の長さがまちまちなところに問題の根本が潜んでいる気がする
39仕様書無しさん:2012/03/12(月) 21:53:50.70
だからコボラーはCOL001,COL002,COL003…みたいな変数にしてたんだろ
40仕様書無しさん:2012/03/13(火) 00:48:50.68
エディタ表示部が勝手に検知して勝手に揃えて表示するというのはありなような気はする
画面表示がディスク上のファイルのバイナリ列と完全に一致しなければならないわけじゃないしな
41仕様書無しさん:2012/03/13(火) 06:49:57.92
2行以上のコメントを//で書いてあるとイラッとくる
42仕様書無しさん:2012/03/13(火) 07:26:43.39
>>39
変数の長さを規約で決めてしまうのか
ソースを見やすくするっていう規約の存在意義を考えるとアリだな
43仕様書無しさん:2012/03/13(火) 09:01:52.99
>>36
インデントは2でも4でも8でもいいけど、タブのサイズを4とかにしてタブでインデントしてるヤツは
イラっとするわ。
44仕様書無しさん:2012/03/13(火) 13:39:53.08
>41
それは//のほうが正しいだろ。
/*〜*/で普段のコメントが書いてあると、一部の処理を殺して試したいときに、普段のコメントがそれを邪魔する。
関数の中身に書くコメントは//じゃないと邪魔だ。

JavaDoc形式については別だぞ。
45仕様書無しさん:2012/03/13(火) 19:40:55.20
for(i = 0; i < max; i++);  ←※
{
  // 云々
}

こーゆーミスするなら中括弧の前に改行入れんじゃねえよハゲ
46仕様書無しさん:2012/03/13(火) 20:55:25.95
てへぺろ;-P
47仕様書無しさん:2012/03/13(火) 22:54:43.60
>>43
MS「(;゚Д゚)エッ…」
48仕様書無しさん:2012/03/13(火) 23:50:12.33
>>43
なんで?
49仕様書無しさん:2012/03/13(火) 23:52:59.28
>>43
なんで?
50仕様書無しさん:2012/03/13(火) 23:57:17.22
>>43はRuby使いなんじゃね?
Rubyには標準ライブラリを含めてインデント2で書かれたコードが多い
51仕様書無しさん:2012/03/14(水) 00:10:57.34
インデント2は明らかに少なすぎ。
デザイン的に空間が分かれてるように見えない。
52仕様書無しさん:2012/03/14(水) 00:35:03.78
>>43
チカンすればいいじゃん
53仕様書無しさん:2012/03/14(水) 02:52:09.84
>>52
おまわりさんこっちです
54仕様書無しさん:2012/03/14(水) 07:34:18.44
生ポインタとusingを禁止で全て書き直せとのお達し
配列長が必要なので、shared_arrayは使えない

vector<Hoge*>* hoge;

boost::shared_ptr<std::vector<boost::shared_ptr<Hoge>>> hoge;

マジキチ
下手すりゃdelete漏れを探すよりもカオスなことになりそうだぜ
55仕様書無しさん:2012/03/14(水) 13:02:41.26
>>47-49
タブサイズは8に決まってるだろ。
タブサイズを8以外にしてるやつは迷惑だわ。
インデントを8以外にしたいときにはスペース使え。

>>52
どっちにしても面倒だし、チカンするくらいならエディタの設定を変えたほうが速いだろ。

56仕様書無しさん:2012/03/14(水) 16:12:41.42
インデントはタブサイズの設定関係ないだろ
インデント以外のレイアウトにタブ使うヤツがクソ野郎
57仕様書無しさん:2012/03/14(水) 16:20:32.15
みんなそれぞれ意見がバラバラなのが面白いぜw
58仕様書無しさん:2012/03/14(水) 16:49:24.33
コーディングスタイルはしばしば宗教に例えられる
59仕様書無しさん:2012/03/14(水) 17:57:48.38
コーディングルール・コーディングスタイル議論は山のようにあって正直ウンザリなので、
このスレでは「イラッつとする」かどうかのみで判断した感情的なレスをお願いします
60仕様書無しさん:2012/03/14(水) 19:30:13.99
>>56
関係あるだろ。
タブサイズ4前提でインデントしてて、8に設定してあるエディタで見ると崩れるやつとかいる。
61仕様書無しさん:2012/03/14(水) 19:41:56.11
いまやってるphpのシステムで関数の引数を

function hoge($arg1, $arg2, $arg3)
{
$weight = arg1;
$height = arg2;
$age = arg3;

}

と必ず$arg1, $arg2…みたいな意味の無い名前の変数でうけて、関数の中で意味のある
名前の変数に移してるんだけど、
普通に
function hoge($weight, $height, $age)
でいいじゃないか。
なんか意味あるのか。
62仕様書無しさん:2012/03/14(水) 19:47:25.12
コードを追うと突如現る謎の空白行
ふと右を見ると変数の頭文字らしきものがニョキっと生えてる
タブ8とか3階層ネストするだけで宇宙に行ってまうわ
気持ち悪いったらありゃしない
63仕様書無しさん:2012/03/14(水) 20:32:57.87
Full HDなモニタ買ってもらえ。
64仕様書無しさん:2012/03/14(水) 20:42:50.52
>>61
Perl厨のせいなんじゃね?

Perlには仮引数がないから

sub hoge {
 $weight = shift;
 $height = shift;
 $age = shift;
}

ってやるよ。
65仕様書無しさん:2012/03/14(水) 23:14:52.71
>>60
すまん、インデントの意味を間違えてた
段落を意図したインデントのみタブを使えって言いたかった

こういうこと言いたかったんです
ttp://ameblo.jp/argv/entry-10000648280.html
66仕様書無しさん:2012/03/15(木) 01:23:10.20
>>65
正しい日本語使おうな。

たしかに、タブとスペース混ぜられたり、後ろに不要な空白残したりされると殴りたくなる。

てめーのことだぜ先輩!
67仕様書無しさん:2012/03/15(木) 02:07:12.65
いえ、わたくしは、イライラしながらフォーマッタでポチポチ揃えてる側の人間ですが。
68仕様書無しさん:2012/03/15(木) 09:47:40.20
昔はタブサイズは8にするべきだって思ってたんだけどね
今は1か2がちょうどよく思えてきたよ
69仕様書無しさん:2012/03/15(木) 10:36:11.89
タブのサイズを1に設定してタブを使うなら、ふつーにスペース使ったほうがよくね?
70仕様書無しさん:2012/03/15(木) 11:36:52.65
bool hoge(){
 if( fuga() != false ){ return false; }
 else{ return true; }
}

なぜreturn !fuga();としないのだ……。
71仕様書無しさん:2012/03/15(木) 12:14:05.59
/* 2011.3.11 なんかエラーになるのでとりあえず外す
 return false;
*/
}
return true;
72仕様書無しさん:2012/03/15(木) 12:26:17.66
>>70
A:論理値をリテラルと比較するような阿呆だから
73仕様書無しさん:2012/03/15(木) 13:45:30.08
>>71
3.11・・・
74仕様書無しさん:2012/03/15(木) 14:00:09.04
>>73
rev.666 2011-03-11 15:47
ほぼ100%職場おわるので中間コミット
SyntaxError出るけどこれ以上はやばいのでかんべんしてください

去年下請けと組んでやった案件の作業ログにこんなのあったの思い出したわ
75仕様書無しさん:2012/03/15(木) 14:05:41.36
修正したり追加した行に日付と名前が書いてあるのは
お前の名前分かっても意味無いんじゃ、って思うな。
76仕様書無しさん:2012/03/15(木) 18:26:58.01
日付は何故そう修正したか雰囲気がわかったりするから無いよりはマシ
それよりはまともなコメントを書けよハゲって話なんだが

担当者を入れるのは責任問題の押し付け合いをするためのものと理解している
77仕様書無しさん:2012/03/15(木) 19:03:15.35
日付と名前は必須だろ
どこにバグがあるか特定する時に一番役に立つ
78仕様書無しさん:2012/03/15(木) 20:25:45.12
修正履歴なんて入れてないでソース管理ツール使えよって感じだけど、ドカタの現場だとただのファイル共有ツールって認識だし使っても同じか。
79仕様書無しさん:2012/03/15(木) 21:04:29.64
わざわざソース管理ツールをインストールするの面倒じゃん
おまえらすぐ管理ツールを変更しちゃうから古いソースを見る時に大変なんだよ
80仕様書無しさん:2012/03/15(木) 21:12:59.59
やっぱり新しいツールや技術についていけない無能に合わせるしかないよな
81仕様書無しさん:2012/03/15(木) 21:13:26.95
名前がファミリーネームどころかファーストネームですらなく、
親しい間でなければ使わないような愛称

鼻穴に5センチほど割り箸突っ込んでグググと水平に近づけて
後遺症が残らない程度に苦痛を与えることで反省を促したい
82仕様書無しさん:2012/03/16(金) 00:11:44.00
俺もちょっと前にPHPで
return hoge ? false : true ;
って書いてた。恥ずかしい
83仕様書無しさん:2012/03/16(金) 06:55:35.96
return func();
とか、気持ち悪くないか?
84仕様書無しさん:2012/03/16(金) 11:17:23.41
返却値の柔軟性を奪っておいた方が後々不具合が少ない気はしないでもない。
85仕様書無しさん: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仕様書無しさん:2012/03/16(金) 20:15:05.66
>>86

>普通はコメントアウトして残すだろ?
普通は…な…。
88仕様書無しさん:2012/03/16(金) 20:20:45.49
正月から大変なんだなw
89仕様書無しさん:2012/03/17(土) 01:07:19.71
>85
そもそもSubversionとか使ってないの?
90仕様書無しさん:2012/03/17(土) 01:09:31.26
そこかよw
91仕様書無しさん:2012/03/17(土) 07:04:29.13
全体の設計があきらかにアレなコードで
いちいち修正をコメントで残されてもなー
92仕様書無しさん:2012/03/17(土) 10:36:26.07
ありきたりだけど、コメントが疑問系のやつ
一回それに対する回答コメントがあってワラタ
93仕様書無しさん:2012/03/18(日) 07:15:33.32
LINQの使い方を知って以来、foreachまみれのソースは基本的にイラつく
94仕様書無しさん:2012/03/18(日) 19:33:17.18
foreach?gotoでループを表現しているコードをいじらされるよりだいぶマシだな
95仕様書無しさん:2012/03/19(月) 01:56:27.12
>>14
ちゃんと意味のある関数ならいいけどな。
96仕様書無しさん:2012/03/19(月) 01:57:43.43
>>20
C#はなるんじゃなかった?
97仕様書無しさん:2012/03/19(月) 11:49:33.84
C#にはポインタはありません(すくなくとも表面的には)

それよりもここのタイトルの「イラッつと」って書き方にいらっと来た。
98仕様書無しさん:2012/03/19(月) 13:33:57.93
>>97
あからさまに仕様上あるわけだが>C#のポインタ
そんなことより、スレタイに関しては >>5 で既出なんだが
ホントに直近のレスだけしか見てないんだなあ(´・ω・`)
99仕様書無しさん:2012/03/19(月) 13:56:14.92
何のひねりもないマジレスにイラッつとした
100仕様書無しさん:2012/03/19(月) 15:44:51.04
スレタイの「イラッつと」は「イラッと」の間違い?
なんかいらっと来た
101仕様書無しさん:2012/03/19(月) 18:12:57.12
if (0 == hoge)
102仕様書無しさん:2012/03/19(月) 19:25:54.13 BE:1248768735-2BP(0)
>>101
これはわからなくはないが見にくい
103仕様書無しさん:2012/03/19(月) 20:01:41.88
>>101
if (0 < hoge && hoge < fuga)

これは許してちょんまげ
104仕様書無しさん:2012/03/19(月) 20:29:56.00
>>103
それは普通
105仕様書無しさん:2012/03/19(月) 20:57:03.45
もしかして、"<" は良くて ">"
は使わないの?
106仕様書無しさん: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仕様書無しさん: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文も全面的に禁止するのではなく、
必要に応じて使い分ける(=必要な場合に限って使う)ことを考えればいいのではないかと
109108: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仕様書無しさん:2012/03/19(月) 23:21:53.63
>>107
> 入口一つに出口一つ
これを守るためにフラグ変数導入したり、do〜while(0)使ったりするコードは
イラッとする。
111仕様書無しさん:2012/03/20(火) 00:23:49.93
>>110
>これを守るためにフラグ変数導入したり、do〜while(0)使ったりするコードは
>イラッとする。
御意
112仕様書無しさん:2012/03/20(火) 01:32:28.25
if(hoge) goto exit;
113仕様書無しさん:2012/03/20(火) 03:16:51.32
>>107
出口一つにしたければ、

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

こう書けばいいよw

つか、returnなんてこの書き方の短縮形でしか
ないんだから出口を一つにする意味はない。
114仕様書無しさん:2012/03/20(火) 07:23:02.48
場合わけが多岐にわたり、なおかつ「通常」の抜け方が唯一の関数だと
末尾に「通常」のreturn、そこまでのあちこちにif文と抱き合わせで複数のreturn
というのは必然
115仕様書無しさん:2012/03/20(火) 11:01:41.79
>>101
これをコーディング規約にするのは
「ウチのプロジェクトには、代入と比較を間違える間抜けがいます」
つってるようなもんだよなあ。
116仕様書無しさん:2012/03/20(火) 12:20:25.49
代入と比較を 書き 間違える人なら
全員当てはまると思いますが?
117仕様書無しさん:2012/03/20(火) 12:35:19.18
たしかVisualBasicだと比較も = 1個だけだったと思う
BASIC系全部そうかな
118仕様書無しさん:2012/03/20(火) 12:43:43.70
BASICは、ifで代入できるなんて
あほらしい仕様がないからね。
119仕様書無しさん:2012/03/20(火) 13:06:39.30
>>115は根性と精神力でプログラミングするんだろうなあ
お近づきにはなりたくない
120仕様書無しさん:2012/03/20(火) 13:40:45.28
まぁ普通は静的解析ツール使ってチェックするよなぁ。
>>101 みたいなプログラマの注意力に依存したスタイルは今どき流行らないよ。
121仕様書無しさん:2012/03/20(火) 13:54:35.84
>>101
頭の中で0がhogeだったらって考えちゃうけど、こう書いたときにどう考えてるんだろ
122仕様書無しさん:2012/03/20(火) 13:54:57.90
>>113
その手の奴で、それぞれ脱出する箇所によって終了処理が異なるから
EXIT1: EXIT2: …と、returnの前に4つくらいラベルが書かれたソースを
見たことがあるな。
ネストが深くなるのがそんなに嫌なのか。
123仕様書無しさん:2012/03/20(火) 14:00:38.72
ネストが深くなっていいことは一つもないからな。
124仕様書無しさん:2012/03/20(火) 14:19:18.43
>>119
なんで根性と精神力があると間違えないと思うの?
バカなの?
125仕様書無しさん:2012/03/20(火) 15:25:25.39
if (sysfn(...) < 0) {エラー処理}   //sysfn()は、エラー時に"-1"を返す関数


なぜすなおに-1を使わない?
126仕様書無しさん:2012/03/20(火) 15:30:15.28
ネットで似たような処理を探してきて、意味もわからず貼り付けて、

  「出来ました」

とかいうスタイル。 技術者なめとんのか
127仕様書無しさん: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仕様書無しさん:2012/03/20(火) 17:55:49.64
>>127
sysfn()は、「失敗時に-1」と定義されたシステムコールです
131仕様書無しさん:2012/03/20(火) 19:38:01.93
システムコールの仕様は一生変わらないとお思いかね
132仕様書無しさん:2012/03/20(火) 19:42:26.65
変わってからまたおいでw
133仕様書無しさん:2012/03/20(火) 19:44:21.26
「失敗Aが-1だけど失敗Bは3を返す」
という構造になる確率よりも
「失敗Aが-1なので失敗Bは-2を返す」
という構造になる確率のほうがたぶん高い

とにかく失敗ならヒットしたいという場合、とりあえず負かどうかチェックするのはいちおうはアリだ

「失敗なんだけど、既存のエラー処理では処理しきれない新失敗」という可能性もあるんだけど、
それはたぶんエラーコードがなにになっても結局うまく動かないだろうからどうでもいい
134仕様書無しさん:2012/03/20(火) 19:47:28.02
>130
それならsysfn()のヘッダに
#define SYSFN_ERROR -1
って書かれてるだろうから俺はそれを使う。
書いてなければsysfn()を作った奴が無能。
135仕様書無しさん:2012/03/20(火) 20:19:40.05
xxxxx{
}
xxxxx(
){
}

カッコの列が違うと読みづらくて仕方ない
136仕様書無しさん:2012/03/20(火) 20:25:09.56
int mCode = 0; // 変数mCodeの宣言

そんなの見りゃ分かる。
mCodeが何の変数かを書いてほしかった。
137仕様書無しさん:2012/03/20(火) 20:55:44.58
>>136
もう一歩踏み込んで変数名だけでわかるようにしないと
138仕様書無しさん:2012/03/20(火) 21:34:41.41
日本語で書かないとわけがわからなくなる値の入る変数名というのは結構あったりする
139仕様書無しさん:2012/03/20(火) 21:40:17.74
>>125
成功時に0以上の値を返す関数だから。
140仕様書無しさん:2012/03/20(火) 21:57:22.53
141仕様書無しさん:2012/03/20(火) 21:57:25.05
普通にそう考えられないやつはセンスないよね。
142仕様書無しさん:2012/03/20(火) 23:54:41.16
CのベテランがJavaにきても成功/失敗を、0/-1で返してたな。
関数名も chkHoge() みたいな感じだし。
イラっとするっていうか懐かしい感じがした。
143仕様書無しさん:2012/03/21(水) 00:20:49.82
exit 1 が失敗を現す文化がですね
144仕様書無しさん:2012/03/21(水) 00:44:15.06
>>25
式の評価順が気になって安全に振ってんだろ
145仕様書無しさん:2012/03/21(水) 01:18:59.93
>>54

これって、typedefつかっちゃダメなのか?
146仕様書無しさん:2012/03/21(水) 03:45:59.92
ループの全てをdoループで処理したらイラッとするって言われた。
forとかwhileとか使えって(´・ω・`)

ループ前に変数初期化、ループの最初と最後にifで必要に応じてbreak。
ループカウンタ進めるタイミングとか、ループ抜ける条件を一覧(風)に並べられたりとか、見やすいと思うんだけどな。
イラッとするもの?
147仕様書無しさん:2012/03/21(水) 06:16:44.32
たかがループで
> ループ前に変数初期化、ループの最初と最後にifで必要に応じてbreak。
> ループカウンタ進めるタイミングとか、ループ抜ける条件を一覧(風)に並べられたり
こんなことやらないといけないのは、何かおかしいと直感的に感じる。
条件などをきちんと整理すれば普通の forとか whileになるんじゃないか?
148仕様書無しさん:2012/03/21(水) 06:28:26.77
いちいちインクリメンタに意味のある名前をあたえているせいで
forの宣言行が長くなっていると予想
149仕様書無しさん:2012/03/21(水) 09:33:37.32
K&R Cっぽい関数宣言してる人がいてビックリしたことがる
150仕様書無しさん:2012/03/21(水) 09:41:20.56
C++やC99 or laterなら問題になるがC89までなら問題ない
それより関数定義のほうを見たらびっくりするだろ
151仕様書無しさん: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仕様書無しさん:2012/03/21(水) 13:22:32.98
>>146
イラッつとするって言うか、死ねって思う。

do whileだと終了判定とカウンタの処理の2か所でバグ仕込む可能性が上がって
解析する場合に余計なコストがかかる。

ただのfor文だと分かった場合であっても、それ以前と仕様が変わって
そうせざるを得なかった場合まで考えるから鬱陶しい。
153仕様書無しさん:2012/03/21(水) 17:20:34.42
>>146
俺なら全部書きなおさせる。
154仕様書無しさん:2012/03/21(水) 18:13:00.78
>>146
命令の数が増えたら読みにくいじゃん
ループはforで統一するのがいいんだよ
155仕様書無しさん:2012/03/21(水) 18:28:43.38
>>154

えっ?そんな理由でforに統一してるの?
絶対一緒に仕事したくないなぁ〜
156仕様書無しさん:2012/03/21(水) 18:59:49.89
新着があるはずなんだがぜんぜん表示されない…
157仕様書無しさん:2012/03/21(水) 19:16:16.72
whileしか使わない
158仕様書無しさん:2012/03/21(水) 19:54:01.21
ifとgotoしか使わない
159仕様書無しさん:2012/03/21(水) 22:59:55.17
俺はwhile統一派
変数初期化やインクリメントは単独の式でやったほうがいい
160仕様書無しさん:2012/03/21(水) 23:01:01.13
>>154
for統一ってのは無いな
161仕様書無しさん:2012/03/21(水) 23:01:23.71
>>159
処理系によって遅くなるぞ
162仕様書無しさん:2012/03/21(水) 23:05:05.67
forとwhileの統一なんかは別にどーでもいいが
do whileで統一はまじでやめほしい
163仕様書無しさん:2012/03/21(水) 23:12:53.60
until文とか出てくると紛らわしい。
164仕様書無しさん:2012/03/21(水) 23:24:25.39
>161
forとwhileの違いごときで体感レベルで遅くなるような処理系って現存するのか……?
165仕様書無しさん:2012/03/21(水) 23:39:43.30
whileは変な書き方したら遅くなりそうな気はするな
166仕様書無しさん:2012/03/21(水) 23:44:18.23
ってもJUMPするだけじゃん
167仕様書無しさん:2012/03/22(木) 00:27:49.79
for(;;)は条件式の省略が認められてるが、while(true)は定数のboolで条件式を代用してる
168仕様書無しさん:2012/03/22(木) 01:38:23.47
>>164
現存するかは知らんけど、数年前のC++ Builderに付いてたコンパイラは
forで加減算してる場合しかループ展開しなかった
169仕様書無しさん:2012/03/22(木) 06:24:32.18
gotoが使える言語で
1回だけしか実行しないループとbreakで疑似goto
多重ループを抜ける為の大量に設置された判定文
gotoは使わないでね☆ミみたいなのにとらわれすぎだと思った
コメントにしっかり書くならいいと思うんだけどなぁ
170仕様書無しさん:2012/03/22(木) 08:33:09.39
>>54
thisポインタ使われてたら終わるなw
171仕様書無しさん:2012/03/22(木) 09:38:41.47
>>169
複数回のメンテを受けた後がGOTOの本領発揮
共同作業でGOTO使うなっていうのは鉄の掟

あがっている例ではその部分を関数化すれば解決するんじゃないだろうか
returnによるgotoも賛否がわかれる所ではあるけれど
172仕様書無しさん:2012/03/22(木) 09:56:37.14
>breakで疑似goto

別モンだろw
173仕様書無しさん:2012/03/22(木) 10:58:08.82
>>172
上から下に流れるだけのgotoと言うかなんと言うか
どっちかと言うと1回のループでなんでこんなもんが…と混乱した後に
「ただbreakで飛びたいだけでしたーwww」ってのがな…
174仕様書無しさん:2012/03/22(木) 11:06:25.62
難読化技術はとどまることを知らない
175仕様書無しさん:2012/03/22(木) 13:13:43.25
goto使うなというのは、あなたのために言っているのではない
あなたの次の次の次の人くらいのために言っている
176仕様書無しさん:2012/03/22(木) 13:23:26.07
> 1回だけしか実行しないループとbreakで疑似goto

なんで if 使わないの?
177仕様書無しさん:2012/03/22(木) 13:28:57.86
forだと2回条件を評価しているんだがifだと1回だよね
178仕様書無しさん:2012/03/22(木) 13:40:20.34
エラー時に関数抜ける場合とかの解放忘れ防止に goto もありかな、と思う事はある。
179仕様書無しさん:2012/03/22(木) 13:51:40.67
>>175
コメントはしっかり書くと言t
俺のコメントが…消えた…?

関数にするほどの処理じゃないor関係性があった処理で戻り値無しの関数終了をイメージした何かだったんだろう
調査だったからそれで動いてたし触らないが吉としてスルーした
180仕様書無しさん:2012/03/22(木) 13:56:27.17
>>178
解放なんて例外でキャッチしてやればいいじゃん
というかそれ以外の方法だとどうやっても抜ける可能性でるだろ
181仕様書無しさん:2012/03/22(木) 14:51:20.98
例外が使えない状況もあるからね。
182仕様書無しさん:2012/03/22(木) 14:55:17.06
>>180
Exception Safetyって知ってる?
知らずにレスしてるならもっと勉強しろ。
知ってるなら、そう簡単な話ではないことくらいわかるだろ。
183仕様書無しさん:2012/03/22(木) 17:38:53.68
gotoが「絶対ダメ」なのなら、例外だって「かなりダメ」だろう
どっちにしても大域脱出なのは変わりがないのだから、極めて慎重に設計されて極めて慎重に使用されるべき
「gotoはダメだけど例外ならいいよ」なんてことはあって欲しくない

あって欲しくないってことは実際にはあるってことなんだが
184仕様書無しさん:2012/03/22(木) 17:56:13.71
>>183
君、何の言語ができるの?
185仕様書無しさん: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仕様書無しさん:2012/03/23(金) 23:51:50.59
カッコの内側にスペース入れてるのとカンマの後ろにスペース入れてないのがイラっとするわ。
187仕様書無しさん:2012/03/24(土) 07:42:22.62
これか
foo( aaa,bbb,ccc )


なんか、AKBにそういう顔をしたメンバーが居るそうだな
(  ∵  )
188仕様書無しさん:2012/03/24(土) 09:44:13.79
ミサワさんか
189仕様書無しさん:2012/03/24(土) 09:59:23.99
浜ちゃん
190仕様書無しさん:2012/03/25(日) 22:03:08.33
a = a + 1;
191仕様書無しさん:2012/03/26(月) 11:06:32.52
>>190
Luaとかはそう書かないとダメだと思った
192仕様書無しさん:2012/03/26(月) 20:21:29.78
>>190
宣言型言語に慣れるとイラッとするのかもしれない

【関数型言語(Haskell)】
  a' = a + 1

【論理型言語(Prolog)】
  A1 = A + 1
193仕様書無しさん:2012/03/27(火) 09:04:29.30
1ならインクリしろって事なのかマジックナンバーだからなのか
一定の数値足すならそれが記述方法として正しいし理解しやすいと思う
194仕様書無しさん:2012/03/27(火) 09:08:07.35
あぁ同じ変数に突っ込むってのもあったか
何かしら足してるなら別物になる事が多いしなぁ…
195仕様書無しさん:2012/04/03(火) 21:38:44.46
phpばっかやっとるやつは、
きたないな、ソースも顔も。
196仕様書無しさん:2012/04/04(水) 00:34:00.34
金を儲けると顔がきたなくなっちゃうよね
197仕様書無しさん:2012/04/07(土) 02:10:36.21
// TODO 自動生成されたメソッド・スタブ
198仕様書無しさん:2012/04/07(土) 16:30:48.93
// 仕様追加対応
if ( id > 11 && id < 13) {

}
199仕様書無しさん:2012/04/07(土) 18:55:20.54
コメントをテンプレートを使って強制するとおこりがちなこと

/************************************
* 関数名 Initialize
* 日本語名 初期化関数
* 概要 初期化を行う
* 機能 パラメータの初期化
* 備考 特になし
*************************************/
InitStatus (...) {

}
200仕様書無しさん:2012/04/07(土) 18:57:08.56
たいてい、コメントブロックと関数の間に
//Initialize (...) {
が存在する
201仕様書無しさん:2012/04/08(日) 17:24:39.33
      \       ヽ           |        /        /
          \      ヽ               /      /
‐、、         殺 伐 と し た ス レ に 鳥 取 県 が ! !      _,,−''
  `−、、                  __/\            _,,−''
      `−、、              _|    `〜┐         _,,−''
                      _ノ       ∫
                  _,.〜’        /
───────‐     ,「~             ノ    ───────‐
               ,/              ` ̄7
                |     島 根 県     /
           _,,−'   ~`⌒^7            /    `−、、
        _,,−''            丿            \,      `−、、
 ,'´\           /  _7       /`⌒ーへ_,._⊃         /`i
 !   \       _,,-┐    \    _,.,ノ          r‐-、、      /   !
 ゙、   `ー--<´   /      L. ,〜’             ゙、  >−一'′   ,'
  y'  U      `ヽ/     /            ヽ      ヽ '´     U   イ
                                ____
         /      __        |       \____\
    ___/__ / ̄    ____|____ \ \____\
       //ヽ   /___         /|\       \ \____\
     / / ヽ  / /__     /  |  \       \_______
   /  /   / /   /     /    |    \          |    \
  /   /  / /  _/   __/      |      \__      |     \  ̄―_
202仕様書無しさん:2012/04/09(月) 10:43:48.99
>198
idがdoubleかなんかになってるんだよ。
203仕様書無しさん:2012/04/11(水) 21:01:07.00
俺がおかしいんだろうけど
privateかつ仮想関数でもない関数がstatic関数じゃ無かったとき。
てか、できるだけクラス内部で呼ぶオブジェクト自身の関数は、
static関数であって欲しい。

まず、インターフェースとして外に見せてる関数じゃないんだから、
static関数で十分だし、コード追うときメンバー変数弄ってる関数は
見た目がグローバル変数中で使ってる関数と同じなんで読みづらい。
204仕様書無しさん:2012/04/11(水) 21:13:17.77
this使えよとしか
205仕様書無しさん:2012/04/11(水) 21:19:09.81
this->〜();ってしてても他のヤツ保守するときサボるし
this省いてもコンパイルエラーにならんし
206仕様書無しさん:2012/04/11(水) 21:23:10.50
Objective-Cとかjavascriptだと
selfやthis強制するから便利だよな
207仕様書無しさん:2012/04/11(水) 21:32:49.03
>>203
うん、君がおかしい。
でもそれがイラッつとするなら
そりゃ感情論だから仕方ない。
208仕様書無しさん:2012/04/11(水) 21:38:44.72
>>204
thisもどうかと思うわ。5個メンバー変数あっても、
実際一つのprivate関数が必要とするのは2〜3って事が多いし。
だったら直接その変数を引数渡しした方がましじゃん。
209仕様書無しさん:2012/04/11(水) 21:55:57.48
>>208
メンバー変数をわざわざ引数で渡す必要性がわからん。
210仕様書無しさん:2012/04/11(水) 22:21:59.19
>>209
グローバル変数と同じ理由

// ここだけ見ていつループが終了するか解るか?
for( point = 0; 100 > point; ++point ) Function();
211仕様書無しさん:2012/04/11(水) 22:27:32.68
極端にもほどがあるな
212仕様書無しさん:2012/04/11(水) 22:30:07.16
数年前のコード追うときとか楽なんだよ
>>210の例でいうFunctionで実際に値が
変更されるかどうか、Functionの中身
見ないで判断することができるからね。
213仕様書無しさん:2012/04/11(水) 22:37:37.22
グローバル変数は目の敵にするくせに
メンバ変数にしただけで安心しちゃってる人は
グローバル変数の何が悪いのかもう一度考え直したほうがいいね。
214仕様書無しさん:2012/04/11(水) 22:38:55.94
> >>210の例でいうFunctionで実際に値が
> 変更されるかどうか、Functionの中身
> 見ないで判断することができるからね。
意味がわからない。
215仕様書無しさん:2012/04/11(水) 22:42:45.84
>>213
普通は必要があるからメンバ変数として保持するわけで。

メンバ変数として保持する必要がない変数までメンバ変数として保持してる
コードは、そもそもそれ自体が変だとは思わないか?
216仕様書無しさん:2012/04/11(水) 22:44:24.83
>>214
pointがフィールドだった場合Functionメソッドが何もしなければ100回でループを抜ける
もしFunctionがpointに対し何かしていればループの回数はFunctionの実装を確認するまで不明となる
217仕様書無しさん:2012/04/11(水) 22:46:03.03
>>215
問題点が違うよ。
無駄じゃないメンバーでも問題は変わらないんだから。
218仕様書無しさん:2012/04/11(水) 22:46:26.79
>>215
メンバ変数は状態を保持するための苦肉の策でしょ
本当は禁止したほうがいいくらいだよ
219仕様書無しさん:2012/04/11(水) 22:48:06.79
なんか、static爺の匂いがしてきたぞ。
220仕様書無しさん:2012/04/11(水) 22:49:07.12
俺とプログラム議論で戦おうて言うなら徹底的にしてやるぞ
221仕様書無しさん:2012/04/11(水) 22:50:04.98
インターフェースとしてクラスを使うのか、thisを省略するためにクラスを使うのかじゃ全然違うしな
222仕様書無しさん:2012/04/11(水) 22:50:07.26
>>218
全部の変数をmain関数から引き渡せば状態を保持するメンバ変数なんていらない
っていう主張だったっけ?
223222:2012/04/11(水) 22:51:28.59
あぁ、ちょっと違った。
main関数じゃなくて、上位の関数だったかな。
224仕様書無しさん:2012/04/11(水) 22:52:52.35
>>223
インターフェースになる関数の中で呼ぶ自分のメンバーには
引数でメンバー変数を渡せって話。
225仕様書無しさん:2012/04/11(水) 22:53:08.84
なぜグローバル変数が嫌われるかといえば
変数のスコープがブロックを超越するために
生成消滅のタイミングを把握できないからだ。

メンバ変数にしたところで
スコープがクラス内に限定されるだけで
メソッドというブロックを超越する問題は解決されていない。
226仕様書無しさん:2012/04/11(水) 22:54:56.26
>>225
消滅というか変更全般だろ
下手すりゃ無限ループも起こすし
227仕様書無しさん:2012/04/11(水) 22:54:57.12
まあオブジェクト指向も所詮道具なんだから
良い所悪い所判って使えばいいんだけどね
228仕様書無しさん:2012/04/11(水) 22:58:14.63
オブジェクト指向は関係なくね
もっと構造化レベルの原始的な話でしょ
229仕様書無しさん:2012/04/11(水) 22:59:28.54
>>228
その通り。
この話題に違和感を感じるならオブジェクト指向以前に
構造化を判ってない証拠。
230仕様書無しさん:2012/04/11(水) 23:03:17.37
>>224
そもそもそんな関数をメンバ関数にしてる設計がおかしいんじゃない?
インスタンスに関係ない関数なら、クラスに入れないのが正しいのでは?
231仕様書無しさん:2012/04/11(水) 23:04:30.58
>>230
Javaとか.Net系統じゃ無理だし
232仕様書無しさん:2012/04/11(水) 23:04:36.84
>>230
インスタンスに関係ないわけじゃなくて
お行儀良くしましょうってことだよ
233仕様書無しさん:2012/04/11(水) 23:07:35.43
>>230
あるクラス内でしか使わない関数なら
不要になったとき捨てやすいように
クラススコープに隠しておきたい
234仕様書無しさん:2012/04/11(水) 23:11:24.14
>>231
別クラスにするとかあるでしょ。

>>232
基本的にはオブジェクト指向である限り、インスタンスと相互作用が
ないものはクラス内に入れないほうがいい。
まぁコーディング上の都合でちょっとしたことをさせる
(インスタンスと関係ない)小さなメソッドを入れることはあるけど。
235仕様書無しさん:2012/04/11(水) 23:11:57.08
>>233
同意。

整理整頓しようってだけの話。
236仕様書無しさん:2012/04/11(水) 23:14:21.42
>>234
別クラスで公開してしまったら他から使われる可能性があるからな
237仕様書無しさん:2012/04/11(水) 23:15:16.96
>>234
メンバ変数を直接いじるよりは、引数と戻り値を通じてやり取りしたほうが良い。
プライベートであっても、副作用があるより無いほうが良い。
238仕様書無しさん:2012/04/11(水) 23:23:21.29
>>236
副作用を起こすことを目的とした関数の場合には、
結局メンバ変数を参照渡しするか何かして副作用をおこすんだろ?
そんなに変わるとは思えないな。
239仕様書無しさん:2012/04/11(水) 23:25:37.88
戻り値で受け取ったほうがはっきりするでしょ

this.value = privateMethod( 100 );
240仕様書無しさん:2012/04/11(水) 23:31:11.70
操作するのが一つでよければね。
241仕様書無しさん:2012/04/11(水) 23:32:16.97
>>240
戻り値が一つしか返せないから不便というのであれば
タプルを持つ言語を使えば良い
242仕様書無しさん:2012/04/11(水) 23:33:20.27
>>241
言語を選ぶ自由があるなら>>206でFAじゃね
243仕様書無しさん:2012/04/11(水) 23:34:54.43
before:
for( point = 0; 100 > point; ++point ) Function();

after:
for( point = 0; 100 > point; ++point ) point = Function( point );

多少明示的にするだけでかなり違うね。
244仕様書無しさん:2012/04/11(水) 23:35:04.92
>>242
参照で返してもいいよ
245仕様書無しさん:2012/04/11(水) 23:38:10.17
>>243
ループ中にループ変数に代入する(かつ下位関数で書き変える?)
っていうコーディングスタイルがそもそもありえない。
246仕様書無しさん:2012/04/11(水) 23:39:25.25
別にこんなものは絶対こうしなくちゃていうものじゃなくて
方便で使い分ければ良いんだけど
意識してるかどうかは別の話だからな
247仕様書無しさん:2012/04/11(水) 23:39:34.35
>>245
forの例は極端だろうけどwhileとか
ループ中で副作用が発生すんのはよくあるよ
248仕様書無しさん:2012/04/11(水) 23:41:41.00
whileはループじゃねーよ
249仕様書無しさん:2012/04/11(水) 23:42:47.37
whileがループじゃなかったら何なんだw
250仕様書無しさん:2012/04/11(水) 23:54:05.04
>>245
「ループ変数」てのがすでにおかしい。
それはただの変数だ。
251仕様書無しさん:2012/04/11(水) 23:58:36.37
>>240
戻り値がオブジェクト一個で済まないなら
それこそ別クラスにすりゃよくね
クラス内部でprivateメソッドにするような
内容じゃないでしょ
252仕様書無しさん:2012/04/12(木) 00:04:11.70
おまいらスタイルの話じゃないですよ、と。
253仕様書無しさん:2012/04/12(木) 00:08:32.12
問題の本質はあるクラスメソッドにおいて
メンバ変数にアクセスしてるのかグローバル変数にアクセスしてるのか
ぱっと見区別が付かないということだったはず。

thisを強制すれば済む話だけど、
社内の統制がクソでコーディングスタイルが統一できないのであれば
何を提案しようが無駄な気もする。
254仕様書無しさん:2012/04/12(木) 00:11:39.58
>>250
ただの変数pointで
> for( point = 0; 100 > point; ++point ) point = Function( point );
こんなコード書いてきたら何も言わずに書き直すわ。
255仕様書無しさん:2012/04/12(木) 00:12:07.49
グローバル変数と問題が同じというだけで
もとからメンバー変数とグローバル変数が紛らわしいという話じゃないよ
256仕様書無しさん:2012/04/12(木) 00:12:21.59
>>253
問題の本質は
引数と戻り値を使わず、メンバ変数を直接いじるプログラムを書くことによって
思わぬ副作用に見舞われることがあるってことだよ。
257仕様書無しさん:2012/04/12(木) 00:13:27.56
>>254
わざわざ問題を単純化して話をしやすくしているのに
話をすり替えるな
258仕様書無しさん:2012/04/12(木) 00:15:04.57
>>254
それを書き直すのは構わんが
こういうケースだって問題はかわらんのよ
while( 100 > point )
{
         FunctionA();
         FunctionB();
         FunctionC();
}

while( 100 > point )
{
         FunctionA();
         point = FunctionB( point );
         FunctionC();
}
259仕様書無しさん:2012/04/12(木) 00:16:14.07
>>253
それこそスレ的には
「アプリケーションハンガリアン使え」
で済む話じゃね?
260仕様書無しさん:2012/04/12(木) 00:19:35.71
ハンガリアンは、型を表すプリフィックスであって
スコープを表すプリフィックスはハンガリアンではありません。

プリフィックスが付けばなんでもハンガリアンだと思うバカが多くて困る。

ぶっちゃけ、::や->や.を記号ではなく文字として捉えれば、
nantoka::fooとかの nantoka::もプリフィックスだってーの。
261仕様書無しさん:2012/04/12(木) 00:20:05.29
>>259
システムハンガリアンじゃね?
アプリケーションハンガリアンってと
pxSize ptSize emSizeみたいな単位とか
変数の型(とスコープ)じゃなく中身の情報含ませるものだから
262仕様書無しさん:2012/04/12(木) 00:20:46.53
263仕様書無しさん:2012/04/12(木) 00:24:14.52
話を戻そう。
プリフィクスを付けたところで
ある関数で、メンバー変数やグローバル変数が
書き換えられている事は解らないので意味がない。
264仕様書無しさん:2012/04/12(木) 00:28:07.06
全部const関数にしましょってか
265仕様書無しさん:2012/04/12(木) 00:28:19.01
>>258
どうも、例にあげてるコード自体が何となく臭いんだけど。。

メンバ変数pointが100未満の場合ループするよっていう
仕様なら(=pointがそれだけ重要な意味を持ってるなら)、
前者でいいと思う。
266仕様書無しさん:2012/04/12(木) 00:29:10.29
>>260
恥ずかしいな
267仕様書無しさん:2012/04/12(木) 00:29:42.46
>>265
マジで?
268仕様書無しさん:2012/04/12(木) 00:32:31.44
>>265
問題は直すとき。今後者のループを見ればpointを
書き換えてる関数は一発で解るけど
前者だと3個とも疑わしい
実際の具体的な名前の関数ならすぐ解ると思うかもしれないけど
具体的な名前の関数でも分かりづらい事が多い
269仕様書無しさん:2012/04/12(木) 00:35:21.54
while( 100 > point )
{
  this.proc.FunctionA(&point);
  this.proc.FunctionB(&point);
  this.proc.FunctionC(&point);
}
もうこれでいいよ。
270仕様書無しさん:2012/04/12(木) 00:36:24.40
>>269
渡さなくても良い関数には無理して渡さなくても良いんだよ
271仕様書無しさん:2012/04/12(木) 00:36:45.59
>>267
別スレッドでpointを書き換える関数(publicかもしれない)が
呼ばれたときのこととか考えるとね。

意味としては、
100 > pointが成り立っている間、
FunctionA(), FunctionB(), FunctionC()を実行しつづけるよ
っていうのが重要だとおもうんで。
272仕様書無しさん:2012/04/12(木) 00:37:42.86
>>266
お前がなw
273仕様書無しさん:2012/04/12(木) 00:39:17.57
>>271
そんな例外(プログラム的な意味ではなく)を考えたところで意味が無いでしょ。
例外は例外らしく処理を切り分けるべき。

ここでは変数pointがどの関数によって影響を受けるか
明示されていることが大事なんだ。
274仕様書無しさん:2012/04/12(木) 00:43:07.32
>>273
後者の書き方でも、結局は明示されてないということ。
むしろ、
point = FunctionB( point );
だけをチェックすればいいんだと間違えるかもしれない。
275仕様書無しさん:2012/04/12(木) 00:43:13.34
>>271
どうしても無理っていうなら別だけど
できる状況なら分かりやすくしとけばいいでしょ
276仕様書無しさん:2012/04/12(木) 00:43:17.04
>>258の流れから
while( 100 > point )
{
  this.proc.FunctionA();
  this.proc.FunctionB(&point);
  this.proc.FunctionC();
}
これで文句あるまい。
277仕様書無しさん:2012/04/12(木) 00:43:52.25
>>274
だけをチェックすればいいようにするんだよ。
278仕様書無しさん:2012/04/12(木) 00:48:40.72
279仕様書無しさん:2012/04/12(木) 00:51:55.39
オブジェクト指向はインターフェースの外の話しだし
パラダイムがどうのとかどうでもいいよ
飽くまで構造化と実用的な保守スタイルの話しだし
280仕様書無しさん:2012/04/12(木) 00:56:18.33
>>278
同じような話だけど、バカが水差して終わってるだけじゃん
281仕様書無しさん:2012/04/12(木) 07:00:21.99
何か随分と伸びてると思ったら、ゆうべはおたのしみでしたね。

メンバ変数の書き換えについては、小規模なら良い様な気もするけども、
ループカウンタを途中でいじられるのはイラッつとするな。

This必須とか制限を増やしてコーディングの自由度を下げて
誰が書いても似たコードになるようにするのが今の言語の流れかね。
282仕様書無しさん:2012/04/12(木) 12:03:48.69
>>243
実際に動かしてから死ねよって思うかソース見た瞬間に死ねよって思うかぐらいの違いしかないが
この違いのおかげでおおごとにならずに済むこともまあまあある
283仕様書無しさん:2012/04/12(木) 13:20:34.27
for( point = 0; 100 > point; ++point ) Function(); // Function()内でpointを更新
284仕様書無しさん:2012/04/12(木) 14:38:32.69
だからコメントは信用するなと……ぐふっ
285仕様書無しさん:2012/04/12(木) 16:41:17.25
なんかすげえ伸びててワロタ
286仕様書無しさん:2012/04/12(木) 21:28:30.37
ここまで読み流した
ループカウンタをメンバ変数にするな
287仕様書無しさん:2012/04/12(木) 21:28:30.63
>>281
> This必須とか制限を増やしてコーディングの自由度を下げて
逆に言えばさ、thisを書かなくても良くなったら
自由度があがるってことになると思うんだけどさ、
「thisを書かなくてよくなった、俺は自由だ!」って思う奴いるの?
つまりね、俺が言いたいのはthis必須と自由度とは全く関係ないよってこと。

× 「コーディングの自由度を下げて 」
○ 「コーディングの面倒くささを下げて」
君が本当に言いたいことはこうでしょ?

で、問題はthis省略で本当に面倒くささが下がったかどうか。
確かに書くときの面倒さはなくなったが、逆に読むときは
正確な意図がすぐには分からず面倒さは増えることになる。
これは、どっちがいいかって話。トレードオフの話でしかない。

なぜ俺が最初に「自由度とは無関係」と言ったのかというと、自由度は
上がるか下がるかしか無い。そうするとトレードオフの話ではないように見えてしまう。

本当は、this必須かどうかってのは、トレードオフの問題なのに、
this省略できたほうが優れてるような印象になってる。
288仕様書無しさん:2012/04/12(木) 21:31:27.37
解釈の自由度が下がるやん
289仕様書無しさん:2012/04/12(木) 21:52:32.47
解釈の自由度ってなに?

まさか、書いた本人が
どう解釈されてもいいように書いた!
なんて言うわけないしw
290仕様書無しさん:2012/04/12(木) 21:57:34.84
> 誰が書いても似たコードになるようにするのが今の言語の流れかね。
これもよくわからんね。

ですます調でかけ!と言われても
似たような小説にはならんだろ?

オリジナリティがある小説を書く場合、
そのストーリーでオリジナリティを出すのであって
そんな語尾をどうするか程度で、似てる似てないなんて
判断しないだろ。
291205-206:2012/04/12(木) 22:18:30.30
ごめん、眠くて>>205-206にいい加減な事書いた。
thisじゃなくてメンバー変数を明示的に引数で渡せば十分だった。
別にthis->
292is a pen:2012/04/12(木) 22:19:05.26
 
293205-206 :2012/04/12(木) 22:21:26.76
途中で送信してしまった

別にthis->〜を強制する意味はなかった。
せめてthisでも明示的に渡せば書き換えが
分り易くなると思ったが無駄だった。
294仕様書無しさん:2012/04/12(木) 22:25:38.38
>>291-293
いや違うって。
引数で渡そうが渡すまいが、
同じクラス内のメソッドだとメンバ変数に自由にアクセスできてしまうから
まずは他所へ追いやるのが先だろ。
その追いやる先というのはthis.〜から始まるサブクラスしかあり得ない。
それ以外から始まるクラスはぱっと見でスコープわからんだろ。
295仕様書無しさん:2012/04/12(木) 22:27:43.50
>>294
既にさんざん出てるけどstatic関数なら制限できるよ
296仕様書無しさん:2012/04/12(木) 22:34:18.14
>>295
でもそれがstaticかどうかってぱっと見わからないよね。
staticじゃなくてもコンパイル通るよね。
297仕様書無しさん:2012/04/12(木) 22:40:31.22
>>296
通るだけならグローバル変数だってコンパイル通るじゃん
じゃなくて、ルールでそう規制するんでしょ
レビューとかでさ
298仕様書無しさん:2012/04/12(木) 22:47:24.21
>>296
簡単な文を一行書くだけで簡単にグローバル変数は使える。
でも現実には、みんな引数渡しを使う。
組織内でダメという風潮を作れるかどうかよ。
299仕様書無しさん:2012/04/12(木) 23:24:28.33
>>282
バグに限った話じゃないけどな
改修しやすさも大きく変わる
5個関数がならんでて、5個の関数の中身調べなきゃ
改修する変数の影響が解からん場合と、
2個関数調べれば変数の動作を完全に把握できる場合とじゃ
作業に掛ける時間が大きく異なる
300仕様書無しさん:2012/04/12(木) 23:26:48.40
実装の安易さと、保守と、バグ発生の回避を同時に満たすコーディングか。
301仕様書無しさん:2012/04/12(木) 23:45:09.36
スマポにするとコンストラクタでthis使えないからな
どんどんソースが汚くなる
302仕様書無しさん:2012/04/12(木) 23:46:30.95
1段メンバー呼び出してるだけでも面倒だが、
メンバー呼び出し階層が2段でその先で
書き換えられてるとか相当辛いよな
そもそも階層増えるなら自分のクラスじゃなく
他のクラスメンバー呼べって話だろうけど
303仕様書無しさん:2012/04/12(木) 23:51:13.90
if(null == hoge)

C言語屋の年寄りってこう書くよね
最高にウザいんだけど
304仕様書無しさん:2012/04/12(木) 23:52:57.20
>>303
お前の周りだけ。
類は友を呼ぶ
305仕様書無しさん:2012/04/13(金) 00:11:15.56
C言語ならなおさら書かないんじゃないか?
文字列を==で比較する感覚に似ている
306仕様書無しさん:2012/04/13(金) 00:51:18.01
>>303
一生懸命アラ探ししてやっと見つけたのがそんなどうでもいいことなのなら
その先輩は結構デキる奴だな
もしくはお前がダメすぎて他のアラが見えないか
307仕様書無しさん:2012/04/13(金) 01:08:09.16
1年目の新参ですがこのスレは勉強になります
308仕様書無しさん:2012/04/13(金) 01:20:16.77
1年目の新参だからこのスレは勉強になります
309仕様書無しさん:2012/04/13(金) 06:15:22.90
>>303
定数を先に書くのはC初心者の象徴だろう。
310仕様書無しさん:2012/04/13(金) 06:41:06.79
>>309
俺も定数先に書くわ
何か問題あんの?
311仕様書無しさん:2012/04/13(金) 06:52:14.05
「定数を先に書いておくと、
 比較と代入を間違えて記述したときエラーになるので
 間違いを見つけ易い」
という理由でそういう記述の仕方をする人は散見するけども、
それは
「私は比較と代入を間違える可能性があります」
と宣言してるようなもんで、他の部分もちょっと信用ならないよねーという
ただの経験則。
312仕様書無しさん:2012/04/13(金) 07:07:50.84
==は「〜が一致する」的な読み方だから「1とaが一致」より「aと1が一致」がaの中身を調べてるって文章になり読みやすい…気がするから変数先だな完全に個人的な理由だが
313仕様書無しさん:2012/04/13(金) 07:14:55.68
>>311
0 > ExampleFunction( ・・・, ・・・, ・・・, ・・・, ・・・ )
定数左に書けば条件見やすいけど
ExampleFunction( ・・・, ・・・, ・・・, ・・・, ・・・ ) < 0
定数右に書くと条件が右端に行くんで見づらい
314仕様書無しさん:2012/04/13(金) 07:39:34.94
>>313
下のが見やすいんだが
315仕様書無しさん:2012/04/13(金) 08:45:33.13
>>313
変数使えばいいやん。
条件式に直接使うぐらいなら、ほとんどの場合はExampleFunctionは意味のある名前の「はず」だから
文脈そのまま読める方が読みやすいと思うが・・・まぁ慣れれば慣れるんだろうな。
316仕様書無しさん:2012/04/13(金) 10:47:49.74
伸びすぎててイラッつとしたコーディングスレ
317仕様書無しさん:2012/04/13(金) 14:45:34.51
>>311
> 「私は比較と代入を間違える可能性があります」
> と宣言してるようなもんで、他の部分もちょっと信用ならないよねーという

== とタイプしようとして = とタイプしてしまう可能性は誰にでもある
「俺は間違えるかもしれない」と言ってる奴は、「俺は絶対間違えない」って奴よりも信用できる
たとえコンパイルオプションやツールでチェックできるとしても、 (0 == foo) って書くのは悪いことじゃない

そもそも、(0 == foo) が理解し辛いって奴は、数学的センスに欠けている
地図を読むときに、常に進行方向が上になるように地図をぐるぐる回す奴に通じるものがある
そんな奴とも一緒に仕事をしなければならない以上、 規約で (foo == 0) って記法に統一するってのはあるかもしれないが、
そんな奴はお荷物だということを自覚すべき
318仕様書無しさん:2012/04/13(金) 14:52:53.94
>>317
> 「俺は間違えるかもしれない」と言ってる奴は、「俺は絶対間違えない」って奴よりも信用できる
俺なら、コンパイラがチェックしてくれるのに、「俺は間違えるかもしれない」から(0 == foo)とか書く奴は、
間抜けか頭堅い奴と判断する。

> たとえコンパイルオプションやツールでチェックできるとしても、 (0 == foo) って書くのは悪いことじゃない
悪いことだよ。

> そもそも、(0 == foo) が理解し辛いって奴は、数学的センスに欠けている
数学的センスなんか関係無いよ。言語の話をしてるんだよ。
「if foo is zero」と「if zero is foo」を同じように同じ速度で紛れがなく誰でも判断できるかどうかの話。

> そんな奴はお荷物だということを自覚すべき
お前がお荷物だよ、全く。
319仕様書無しさん:2012/04/13(金) 14:56:55.59
マジックナンバーを直書きすることはほとんどないし
定数なのにconstを忘れる可能性もあるな
320仕様書無しさん:2012/04/13(金) 15:17:29.57
0 == fooと書いたとしても、問題の解決になっていないからねぇ。
手癖みたいなもんで、書くのは勝手だとおもうが
「0 == fooのほうがいい」と主張する奴の話は当てにしない。
321仕様書無しさん:2012/04/13(金) 15:28:50.32
たとえ話をする奴は説明が下手
322仕様書無しさん:2012/04/13(金) 16:12:14.85
誰も 0 == foo の方が良いって主張してないと思うが
foo == 0 の方が良いって主張してる奴はいるけど
323仕様書無しさん:2012/04/13(金) 16:17:01.34
>>322
日本語の読解力に甚だしく欠けてます
324仕様書無しさん:2012/04/13(金) 16:28:25.79
>>322
お前にイラッつとしたわ
325仕様書無しさん:2012/04/13(金) 16:55:33.94
>>311
ちょっと頭悪すぎ
hoge == null の方がいい理由は、null == hoge と書いたときに得られるわずかな利点よりも、
直感的に理解しづらいという欠点の方が大きいから
もちろん if (hoge = null) みたいなミスを検出できる開発環境下が前提だが
326仕様書無しさん:2012/04/13(金) 17:11:28.77
>>325
いや、お前が頭悪すぎだから
>>311を百回読め
327仕様書無しさん:2012/04/13(金) 17:18:36.25
if (0 == hoge)の件は、ある程度の分量の文章を一度読んだだけでは理解できないIQの層の奴らの
琴線に触れる何かをもってるんだろうな
328仕様書無しさん:2012/04/13(金) 17:27:01.97
>>326
俺は 0 == x と書く人に対して、用心深いとは思っても

> 「私は比較と代入を間違える可能性があります」
> と宣言してるようなもんで、他の部分もちょっと信用ならないよねーという

みたいな感想は抱かないがね
329仕様書無しさん:2012/04/13(金) 17:31:55.14
>>325=>>328だとしたら、ちょっと何言ってるのかわからないレベル
330仕様書無しさん:2012/04/13(金) 17:37:41.05
え?
「私は比較と代入を間違える可能性があります」から、用心深く0 == x と書く人が糞だとみんな言ってんじゃないの?
331仕様書無しさん:2012/04/13(金) 17:42:57.72
>>328
俺なら、そんなくだらん用心深さなんか発揮しないで、読みやすいコード書けアホと思うな。
332仕様書無しさん:2012/04/13(金) 17:50:48.47
雨が降る可能性が0%でないからと言って、毎日レインコートと長靴で生活する馬鹿
333仕様書無しさん:2012/04/13(金) 17:50:49.33
>>331
で、お前は 0 == x と書く人の他の部分のコードが信用ならないと思うのか?
俺は他の部分にも同様の用心深さを期待できてむしろ信用できると思うがね
334仕様書無しさん:2012/04/13(金) 17:53:34.46
>>333
全く信用できない。
そいつは、
・コンパイラが教えてくれるのを知らない無知
・それは知ってるが、「念のため」とかいう訳のわからない理由でスタイルを崩さない馬鹿
のどちらかだから。
335仕様書無しさん:2012/04/13(金) 17:53:44.63
>>332
> 雨が降る可能性が0%でないからと言って、毎日レインコートと長靴で生活する馬鹿
ソフトウェア開発においては、それが普通
336仕様書無しさん:2012/04/13(金) 17:56:18.69
if (0 == hoge)と書く奴を「用心深い奴」と評価する奴に初めて会ったわ
337仕様書無しさん:2012/04/13(金) 17:59:37.08
if (0 == x)と書くことが良いことだと思うような間抜けのコードが信頼できるわけないだろ
338仕様書無しさん:2012/04/13(金) 18:00:54.32
条件式は左辺が評価対象じゃないとな
左読みで重要な情報を先に目に入るようにしないと、思考の効率が格段に悪くなる
339仕様書無しさん:2012/04/13(金) 18:03:58.21
returnやsizeofで不要な括弧を「その方がわかりやすいから」と取ろうとしない奴とか、
if (hoge == true)を「その方がわかりやすいから」という奴と同じ臭いがする
340仕様書無しさん:2012/04/13(金) 18:04:59.80
GNUのコーディングスタイルほどいらつくものは無い
341仕様書無しさん:2012/04/13(金) 18:08:09.13
>>311
コーディング標準とか禁じ手を全否定?
342仕様書無しさん:2012/04/13(金) 18:10:42.06
またわけのわからん奴が現れた
343仕様書無しさん:2012/04/13(金) 18:17:26.07
括弧や演算子の前後に一切スペースを入れず、空行も一切入れないスタイルにいらつく
344仕様書無しさん:2012/04/13(金) 19:14:49.43
>>317
>== とタイプしようとして = とタイプしてしまう可能性は誰にでもある


自分のを発見して「ホントにあるんだ・・・」と、変な感動を覚えた記憶がある
345仕様書無しさん:2012/04/13(金) 19:18:12.09
不毛な議論
346仕様書無しさん:2012/04/13(金) 19:18:48.78
3 x 4 と  4 x 3 は意味が違うんだ、という小学校の話を思い出した。
347仕様書無しさん:2012/04/13(金) 21:18:11.51
>>339
sizeofは括弧付けちゃうなあ・・・
348仕様書無しさん:2012/04/13(金) 21:30:47.51
>>346
3+3+3+3と4+4+4は確かに違うといえば違う
349仕様書無しさん:2012/04/13(金) 21:37:56.62
== を妄想オーバーライドしすぎ
350仕様書無しさん:2012/04/13(金) 21:51:32.59
regist
351仕様書無しさん:2012/04/13(金) 21:55:31.92
>>350
あるあるw
352仕様書無しさん:2012/04/13(金) 22:13:55.77
>>315
やだよ一時変数で済むもんワザワザ宣言するなんて
あと、具体的な名前書いても条件が画面右寄りになることで到底分かりやすくなったとも思えん
while( 0 < GetMessage( &message, 0, 0, 0 ) ){}
353仕様書無しさん:2012/04/13(金) 23:05:38.21
hoge == 0 でも 0 == hoge でも何とかなるのだが、
hoge == 0 で統一されたソースに 0 == hoge で
追加修正された時はイラッつとした
354仕様書無しさん:2012/04/13(金) 23:48:50.81
まだそのネタが続いてるのか
0 == hoge か hoge == 0 かなんてどうでもいい
>>311の頭おかしいのは

> 「私は比較と代入を間違える可能性があります」
> と宣言してるようなもんで、他の部分もちょっと信用ならないよねーという

の部分
もっと言うと、>>311は一切typoしない、typoする奴は信用ならねーって言ってること
355仕様書無しさん:2012/04/14(土) 00:00:15.21
両者を納得させるために
hoge == A は (hoge - A) == 0 にしようず
356仕様書無しさん:2012/04/14(土) 01:27:09.14
>>339
ちなみに、「sizeof 識別子」と「sizeof(型)」は別物ですよ?
混在してると解り難いってゆーなら括弧必須のルールでもいいけど。
357仕様書無しさん:2012/04/14(土) 01:29:53.09
>>352
while (GetMessage(&message, 0, 0, 0) > 0) { }

ふぅ。
358仕様書無しさん:2012/04/14(土) 01:47:16.66
100%ミスしない人間が存在しているという前提がもう頭おかしいだろ。

0==hogeが見難いのは単なる慣れ。


オレの気に入る書き方以外はクソとかどんだけ自己中なのか。
359仕様書無しさん:2012/04/14(土) 02:18:18.91
360仕様書無しさん:2012/04/14(土) 02:29:41.11
そうかいちゃダメな理由になってないだろうww
361仕様書無しさん:2012/04/14(土) 02:47:50.81
そうだね。
362仕様書無しさん:2012/04/14(土) 04:40:43.71
0==hogeって書く奴は定数がdefineされててもFUGA==hugeってやるんだよな。キモイ…
つか、==じゃない比較演算子もそうすんの?HOME>=hageとか。==だけ?
363仕様書無しさん:2012/04/14(土) 05:22:19.96
>>362
不等号に関しては、複数並ぶときに向きを揃えるっていう
数学的なお約束があるんで、それに合わせることも多いんじゃね。
 定数1 <= 変数A && 変数A <= 定数2
みたいに。
364仕様書無しさん:2012/04/14(土) 05:24:52.86
>>358
スレタイ読め
365仕様書無しさん:2012/04/14(土) 06:25:36.06
。・゚・(Д゚(0==(´∀` )

これをグループ内で提案したらものすごく気持ち悪がられた
本質的に「わざと違和感を抱かせてミスを防ぐ」トリックだから
やむをえないかもしれない
366仕様書無しさん:2012/04/14(土) 09:10:49.83
それは慣れていない所だから有効なんだろう。
違和感が無くなるほど使用されている現場ならミス防止には役に立たない。

削除の時の確認ダイアログと同じ話。
367仕様書無しさん:2012/04/14(土) 09:28:16.94
>365
>本質的に「わざと違和感を抱かせてミスを防ぐ」トリックだから
>やむをえないかもしれない

そんな理由付けが許されるならば、

int func0005()

とかも許されるな。
「これも、わざと違和感をもたらせてミスを防ぐトリックですよ」とか
「関数名がもたらす思い込みを排することでミスを防いでいます」とか。
368仕様書無しさん:2012/04/14(土) 09:38:57.26
>>367
違和感を抱かせて「あぁ。そういうことね」と思い出させる。
0==hogeを見れば、「hogeに代入しないように」ということを思い出す。

さて、int func0005()
違和感は感じるが、肝心の「思い出す」ことはなんだ?
369仕様書無しさん:2012/04/14(土) 09:52:09.53
hogeには代入してもいいんじゃないの?
代入したくないんだったらconstでも付けとけばいい話では。
(言語によってはできないのもあるのかな)
370仕様書無しさん:2012/04/14(土) 10:27:21.14
if( 0 == hoge ) はほとんどお目にかかった事無いから気にして無い。
if( hoge = 0 ) はWarning出てるのに放置されてたのをこの前見かけた。

Warning出てるのにコミットする奴にイラッつとする。
371仕様書無しさん:2012/04/14(土) 10:56:45.31
>>368
「動作を知りたければ仕様書にあたれ」とか?
372仕様書無しさん:2012/04/14(土) 11:09:30.40
だいたいそんな言語を使うほうが悪い
VB使えよ
373仕様書無しさん:2012/04/14(土) 12:33:07.09
だめだ、このスレは汚いソースコード位イライラする
374仕様書無しさん:2012/04/14(土) 12:34:52.32
イライラじゃなくイラッつとしなくちゃダメだろ
375仕様書無しさん:2012/04/14(土) 12:36:56.40
             ☆
     ×         ' .                    ×
    x            ` .        x            ヽ . ☆
                         X   ,. -. ‐'´ ̄``丶、 ノ}          X
                     /} /: : : : : : : : : ーヘ
                 ×   / //: : : :l: .:. .} | . : : : : } . . ゜
                     _ノ_,ム′: : : |:::::::/! l.::. : !  /: :\        , ☆
               _/ /,. -‐〉 : : :_ !:;イ¬.|:i::: |i.|. :.i::: : : ヽ     ;
        ☆ . .     ,. '´!{  ゝ-‐''^¨二.ノ:〔__− V!::!LTV{::: : : :.',
            ×x .   ぃ     .イ::. : : |⌒`  }:リ'示Y1:: : : i }         x  ×
       . '´     ,. 介iー-、 {:::::::::. : : !     ^' ヒ'リ ',.|:::. :..  :.!リ          X
  X    /       /ヽ' L!  ヽ. Y::::i::::. .::. |r:ゥ- 、' `^ /:::l::::.::::.x:リ′ ; ☆ イラッ☆
   x /      / /⌒ヽ  込Jヽ:ト:{>、:ィ八_ ,.‐く  イ:ィ:::!x::X::/ ゛
   i'´       /-r‘ー、  ヘ-┴‐〉 `'i¬  ヘ.__{:::::::}.彳〔__レ1::ル'゜   ゜ .
    ー 、 --−'´   コ:..:.}:    \ 丶  .l | -、匸⌒´:_;-、ノ }_ ´        ゜ ×.
     `ヽ、    └;.:.    ..  }  〉 ヽ.| 〈__:,.イv/´〕、冫`i  x          ☆
        ` ¬ゥ´:..:....:..:..:..: ,ノ、 \ { !    {.{j_/,ィう′ !
      x '   Y:..:..:..X:..:..:.∠.._    ヽ.} |.     } `マ^V   |      X
          , ゛ヽ:..:..:..:../  ,.⊥_  /小\¬-{   ∨ヘ._,. -‐¬、
        ☆     ` ー′  j:..:..:..:Y´:´/ハ卜':..! :ヽ  ∧::ヘ .:..:... }
                      /:..:..:..:..j/:..:.`:..:´:..:..i  :..:ト-_ノ マ'’:..:..:..:..ヘ 
376仕様書無しさん:2012/04/14(土) 12:44:31.81
>>357
それ何が見やすいの?
377仕様書無しさん:2012/04/14(土) 12:47:34.30
おまいらなんでC前提なん
378仕様書無しさん:2012/04/14(土) 12:53:40.47
他の言語と違って、標準的なコーディングスタイルってものがないから。
379仕様書無しさん:2012/04/14(土) 12:58:37.37
そんな言語早く捨ててしまえ
380仕様書無しさん:2012/04/14(土) 13:11:52.79
比較演算に順序が決まってる言語なんてそもそも有っただろうか
381仕様書無しさん:2012/04/14(土) 13:53:02.05
>>368
>違和感は感じるが、肝心の「思い出す」ことはなんだ?
一言では言い表せない、その関数の振る舞い全て。

>>371
その通り。
382仕様書無しさん:2012/04/14(土) 14:06:32.51
>>381
そう思うならプログラムなんて適当に書けば?
ここにいる必要ないし、この板にいる必要もない。
プログラマ辞めちまえよ。
383仕様書無しさん:2012/04/14(土) 14:11:37.03
>>381
真性の馬鹿だな。死んで欲しい。
384仕様書無しさん:2012/04/14(土) 14:25:13.34
>>381
> 一言では言い表せない
じゃあダメだろw

一言で言い表せることが重要なんだから。
385仕様書無しさん:2012/04/14(土) 17:06:28.29
イラッつとした相手が上司だったり先輩だったりすると何て言えばいいかわからない
386仕様書無しさん:2012/04/14(土) 17:15:42.21
>>382-384
お前は何と戦っているんだ?
387仕様書無しさん:2012/04/14(土) 17:17:27.90
>>385
イラッとしたら何か言わなくてはいけないという
法律でもあるのか?
388仕様書無しさん:2012/04/14(土) 17:23:41.06
普通イラッてしたら
イラって言うだろ?

昨日も満員電車で
イラって何回も言ったわ
389仕様書無しさん:2012/04/14(土) 17:30:20.61
昔ある中華料理のチェーン店でバイトしてたせいか
内装の同じ店に行くと新しい客が来たとき「イラッ」って言ってしまう
390仕様書無しさん:2012/04/14(土) 17:59:30.27
>>388
うわーキモいw
そういう中二病のやついたなー学生の時w
391仕様書無しさん:2012/04/14(土) 18:25:54.65
>>388
言わねえよww
392仕様書無しさん:2012/04/14(土) 18:26:10.67
>>55 同意
>>249 あくせる
>>289 解釈の自由度が下がる=誤解が減る
393仕様書無しさん:2012/04/14(土) 18:28:55.84
>>386
イラッつとしたら人に当たり散らすタイプなんだろう。

>>385
言い返す権利はないのよ?(´・ω・`)
394仕様書無しさん:2012/04/14(土) 18:54:49.16
>>389
しゃーせー
395仕様書無しさん:2012/04/14(土) 19:18:26.96
>>381は敢えて仕様書を読ませる為に
プログラムを読みにくくすると言ってるんだぞ。
まるでコボラーだな。
396仕様書無しさん:2012/04/14(土) 20:06:14.10
ソース暗号化しといて、readmeに「複合鍵は仕様書の中に隠されているよ!頑張ってね☆ミ」で解決
397仕様書無しさん:2012/04/14(土) 21:10:03.59
while (GetMessage(&message, 0, 0, 0) > 0) { }

while( 0 < GetMessage( &message, 0, 0, 0 ) ){}
になるだけで仕様書読まなきゃならんのか
398仕様書無しさん:2012/04/14(土) 22:32:45.64
>>395
もう関数名を「仕様書嫁123」とかにすればいいのに。
399仕様書無しさん:2012/04/14(土) 22:37:11.11
コンパイルしてしまえばコーディングスタイルなんて気にしなくてもよくなるだろ
400仕様書無しさん:2012/04/14(土) 22:43:49.11
そゆこという奴よくいるよな
401仕様書無しさん:2012/04/14(土) 22:44:20.94
コンパイルした後のコードを読んで修正してメンテナンスし続けるのならそうかもなw
402仕様書無しさん:2012/04/14(土) 22:54:21.47
>>395
有象無象のソルジャーというか土方というか、そういうのを束ねて開発する
方法論としてはアリだと思うがな。やらされる立場になったら負けということで。
403仕様書無しさん:2012/04/14(土) 23:03:55.99
やる立場になっても負けだろw
404仕様書無しさん:2012/04/15(日) 01:09:35.10
男ならコードで語れや
405仕様書無しさん:2012/04/15(日) 15:19:30.14
if (VeryLongoLongFunctionName(var1,var2,var3,var4) > 3)

みたいにクソ長い名称と比較するときは、定数を左辺に置いたほうが見やすい。
406仕様書無しさん:2012/04/15(日) 15:26:58.70
int value = VeryLongoLongFunctionName(var1,var2,var3,var4);

if (value > 3)

こうすればいいだけ
407仕様書無しさん:2012/04/15(日) 15:35:57.19
そもそも関数名すら読まないのかと疑いたくなる
408仕様書無しさん:2012/04/15(日) 15:46:23.75
引数が多くて横に長くなる時にどう書いたら見やすいかでイラッつとする。

func( var1,
var2,
var3 );

funcがやたら長い名前だと何か変な感じになるしで困る。
409仕様書無しさん:2012/04/15(日) 16:19:41.22
func( val1, val2, val3, val4,
 val5, val6, val7, val8) {
}
って書けばいいだけ
410仕様書無しさん:2012/04/15(日) 17:30:55.79
Bazooka bazooka = new Bazooka("89mm");

bazooka.setDigree(60f);
bazooka.setRoll(25f);
bazooka.setPitch(0f);
bazooka.setExpression(0.5f);
bazooka.setPos(0f, 0f, -0.5f);
bazooka.setColor(1.0f, 1.0f, 1.0f, 1.0f);
bazooka.isMorningBazooka(false);
bazooka.setTarget("Kycilia Zabi");

Result result = bazooka.shot();
411仕様書無しさん:2012/04/15(日) 19:29:26.29
>>406
いちいち変数に入れるなよイラッとする
412仕様書無しさん:2012/04/15(日) 19:33:24.86
>>411
デバッガ使わない (使えない) 人特有の症状だね>一時変数を嫌う
413仕様書無しさん:2012/04/15(日) 19:56:25.02
おまえがいってるのは一時変数じゃないだろ
それはともかく、whileやifの条件ならどっちの分岐に進んだか、
ループを抜けたか抜けないかで判断できる。
それによほどしょぼいデバッガーじゃなけりゃ戻り値確認できるし。
414仕様書無しさん:2012/04/15(日) 20:06:06.00
>>409
こいつ馬鹿

>>410
何回も変数書いてバカっぽい。
どんだけタイピング好きなの?
415仕様書無しさん:2012/04/15(日) 20:25:38.67
このスレのほとんどはGoにすれば解決しそうだな。
416仕様書無しさん:2012/04/15(日) 20:33:30.55
メソッドチェインにするか
417仕様書無しさん:2012/04/15(日) 20:33:53.56
>>414
うん、それで?

続き言わないとお前が恥をかくよ。
418仕様書無しさん:2012/04/15(日) 20:39:41.62
>>414は構造体に入れて渡すと言いだす
419仕様書無しさん:2012/04/15(日) 20:41:52.50
構造体にいれたら
関数のインターフェース変わるじゃんw
420仕様書無しさん:2012/04/15(日) 20:49:56.05
カリー化しようよ
421仕様書無しさん:2012/04/15(日) 20:56:44.35
じゃあ俺チキンカリー
422仕様書無しさん:2012/04/15(日) 20:56:56.57
毎回引数が変わるのにカリー化するのか?

カリー化がわからない人へ。

class Foo {
 Foo(x, y, z);
}

↓Foo(コンストラクタ)をカリー化すると

class Foo {
 Foo(x, y) { Foo(x, y, 1) }
 Foo(x, y, z);
}

こうなります。これがカリー化ですw
423仕様書無しさん:2012/04/15(日) 20:59:25.22
おおー、よく使うけど呼び名知らなかったわ
424仕様書無しさん:2012/04/15(日) 21:00:41.71
デフォルト引数でいいやん
425仕様書無しさん:2012/04/15(日) 21:04:36.87
>>422
違うだろ。

これだよ。

void foo(x, y, z)

↓ カリー化

#define foo1(x, y) foo(x, y, 1)

関数fooの引数のいくつかを埋めた、
”新しい関数を作る”こと
426仕様書無しさん:2012/04/15(日) 21:09:58.81
>>425
変わらんだろ
427仕様書無しさん:2012/04/15(日) 21:13:27.79
つかいま出てるのってカリー化モドキだよな

F(1, 2, 3, 4, 5);
F(1)(2)(3)(4, 5);
本来のカリー化なら呼び出し方を変えられるだけ
新しい関数を定義する必要はない
1つ関数を定義すれば自動で2通りの書き方ができる
428仕様書無しさん:2012/04/15(日) 21:37:46.36
>>427
ほう、それは便利だ!



なにが?
429仕様書無しさん:2012/04/15(日) 21:47:58.06
F(1, 2, 3, 4, 5);
F(1)(2)(3)(4, 5);

単に数学の概念上この2つが別である事がおかしいって話だよな
プログラム的にはこれが出来るとアダプター作る手間が省けて格段に楽になるんだが
430仕様書無しさん:2012/04/15(日) 22:01:57.19
実際にはアダプタ作るとか
ラッパー関数作れば終わりなんだけどな。
431仕様書無しさん:2012/04/15(日) 22:02:21.06
引数の数を変えるだけの場合。
432仕様書無しさん:2012/04/15(日) 22:48:31.36
引数の多い関数が嫌だ。
引数が多いだけならともかく、多機能にして省略可能な引数を作るクズを絞め殺したい。
433仕様書無しさん:2012/04/16(月) 00:22:40.42
「コーディングスタイル」以外の話はスレ違いですよ莫迦共。
434仕様書無しさん:2012/04/16(月) 00:53:37.95
ぬるほど
435仕様書無しさん:2012/04/18(水) 14:38:45.93
int GetSize()という関数を使うのに

if (!GetSize()) {
 …
}
436仕様書無しさん:2012/04/18(水) 15:37:32.74
>>435
ああ、これはイラッつとするな
437仕様書無しさん:2012/04/18(水) 19:50:50.31
>>435
Javaで、java.beansを使うわけでもなく、
それどころかCかC++なのにいちいちGet付けてんのがイラッとする。
Qtやらboostみたいにobject.Size();か、〜Size( object );でいいだろうに。
438仕様書無しさん:2012/04/18(水) 21:35:43.22
>>437には同意

だが、

if (! foo.size()) {
// fooが空でないときの処理
}

の書き方は全く問題なし
439仕様書無しさん:2012/04/18(水) 21:50:25.96
え?
>>438
コメントかコードのどちらかが間違ってるんじゃね?
440仕様書無しさん:2012/04/18(水) 23:13:07.07
>>439
そのsize()はboolean型で、オブジェクトが空のときにtrueを返すという仕様という罠。
441仕様書無しさん:2012/04/18(水) 23:15:14.67
>>435
とりあえず、Gが大文字なのがイラッつとする
442仕様書無しさん:2012/04/18(水) 23:26:48.71
それは言語によって推奨されとる命名規則が違うんでなんとも
443仕様書無しさん:2012/04/19(木) 07:03:01.65
Type.newと書ける言語でもないのに
関数名のキャメルケースがコンストラクターの
キャメルケースと違うのがイラッとする

const Example &object = Type();
const Example &object = Function();
444仕様書無しさん:2012/04/20(金) 05:38:44.65
どうでもいいが、

for (i = 0; i < point; i++) {...}
は許せるが、
for (i = 0; point > i; i++) {...}
はイラッとくる。

あと、K&Rスタイルじゃないコーディングもイラッと来るおっさんですが。
445仕様書無しさん:2012/04/20(金) 06:59:50.72
ラムダ式とプロパティの存在
446仕様書無しさん:2012/04/20(金) 18:04:11.69
void illatz(int n, int step)
{
printf("%d, ", n);
if (n < 2) {
printf("%d step\n", step);
return;
}
++step;
n = n%2 ? 3*n+1 : n/2;
illatz(n, step);
}
447仕様書無しさん:2012/04/20(金) 19:59:13.79
見やすく書く、
呼び出し構造を追いかけやすくする
インデントを揃える

こういう書き方ができない奴は
プログラマに向いていない。

美意識が無いやつは消えろ。
448仕様書無しさん:2012/04/20(金) 20:04:12.06
hoge禁止

fooは許せるがhogeはイラッつとする俺だが、表立ってhogeを禁じられるのはそれはそれでイラッつとする
449仕様書無しさん:2012/04/20(金) 20:06:43.00
fooとかbarは西洋かぶれっぽくて嫌味が。
450仕様書無しさん:2012/04/20(金) 23:55:09.79
>>448
お前hageだな?w
451仕様書無しさん:2012/04/21(土) 00:16:12.53
は、は、は、はげちゃうわ!
452仕様書無しさん:2012/04/21(土) 11:07:27.55
まあまあ
アイスでも食って落ち着こうぜ

ttp://www.haagen-dazs.co.jp/
453仕様書無しさん:2012/04/21(土) 12:52:00.49
俺は薄いだけだからセーフだな
454仕様書無しさん:2012/04/21(土) 17:15:03.61


ホリエモン  元ニート  でググれ


やばすぎwwwwwwwwwwwwwwwwwwwwwwwwww
455仕様書無しさん:2012/04/21(土) 18:57:29.69
a.set(b.getHoge())
こういう戻り値を直接引数に渡しているコード
デバッグしずらいんだよね
456仕様書無しさん:2012/04/21(土) 19:43:40.18
どうすべきだと思う?
いったん器に入れてから食う?
457仕様書無しさん:2012/04/21(土) 20:29:54.84
デバッガを変える
458仕様書無しさん:2012/04/21(土) 21:43:37.82
うーん、読みやすいと思うんだけどねー
459仕様書無しさん:2012/04/21(土) 22:53:11.51
デバッガ使わないやつはまったく使わないからな。

オレなら一時変数に1度いれるようにする。
460仕様書無しさん:2012/04/22(日) 06:52:26.52
場合によるが大抵は一時変数にいれるな
461仕様書無しさん:2012/04/22(日) 18:58:57.81
俺も一時変数に入れる
462仕様書無しさん:2012/04/22(日) 19:02:15.91
>>456
戻り値を表示できるデバッガを使うのが一番楽
463仕様書無しさん:2012/04/22(日) 19:29:33.48
int getHoge(){ return Fuga; }

ってのがヘッダに書いてあってもデバッグし辛い時があるけど、諦めてる。
464仕様書無しさん:2012/04/22(日) 21:44:00.17
それはインライン展開があるからしょうがない。

でも行を分けてないとデバッグしにくいよね。使わないやつには判らんだろうが。
465仕様書無しさん:2012/04/22(日) 21:56:01.47
printfデバッグだって変数につっこまなきゃできないぞ
466仕様書無しさん:2012/04/23(月) 00:33:12.37
一時変数にいれる一手間を加えると美味しいソースが出来るの?
同じ味が出せるなら手抜きした方がいいと思うんだけど。
467仕様書無しさん:2012/04/23(月) 00:38:58.96
> 一時変数にいれる一手間を加えると美味しいソースが出来るの?
簡単に味見ができる。
468仕様書無しさん:2012/04/23(月) 00:52:14.87
そんなに手間かなあ?
469仕様書無しさん:2012/04/23(月) 04:46:41.50
そんなに手間っていうより、無駄な手間って感じ。
関数名が正しければ一時変数にいれない方が文章として読みやすいし。
あと、処理系によつまては処理が早そうだし。

と書いたけど、俺も一時変数にいれた方がその後のコードが読みやすくなる場合は一時変数にいれてるな。

入れる入れないの判断基準が「デバッグ出力しやすいか」ってのと「読みやすいか」ってのとの違いか。
470仕様書無しさん:2012/04/23(月) 07:43:18.44
副作用を消せば返ってくる値が同じなので変数に入れる必要すらなくて
ただ関数の結果をピークすればいい。
471仕様書無しさん:2012/04/23(月) 08:01:12.26
>>464
コンパイラにまかせろよ

ライブラリとして外部に譲渡すること考えたらキモチ悪いだろ
472仕様書無しさん:2012/04/23(月) 13:55:23.45
一時変数に入れるのはいいが、temp だの value だの ret なんて名前だったり、const つけてなかったりしてるとイラッつとする。
473仕様書無しさん:2012/04/23(月) 22:00:40.40
>>472
そんな奴が一時変数の効能考えて使ってるとは思えないわw
474仕様書無しさん:2012/04/23(月) 22:32:09.16
中途半端な変数使うぐらいなら観察用関数使った方がましだわ
名前考えるのマンドクセ

template<class type> type &Check( type &value )
{
  return value;
}

template<class type> const type &Check( const type &value )
{
  return value;
}

FunctionB( Check( FunctionA() ) );
475仕様書無しさん:2012/04/23(月) 22:44:57.33
>>474
そうするくらいならFunctionAの結果を直接見るよね
476仕様書無しさん:2012/04/23(月) 23:11:32.50
今どき戻り値が見れないデバッガとか何を使ってるの?
16bit環境?
477仕様書無しさん:2012/04/24(火) 01:00:11.79
パートナー
478仕様書無しさん:2012/04/24(火) 10:32:44.75
>>474
これはイラッとするわ
479仕様書無しさん:2012/04/27(金) 18:52:57.59
if(!strcmp(foo,bar)){
480仕様書無しさん:2012/04/27(金) 21:16:24.59
strcmpが真偽値を結果とするような関数じゃないから不自然だね。仕方ないね。
481仕様書無しさん:2012/04/28(土) 06:30:45.48
#define 麿 malloc
#define おじゃる free
482仕様書無しさん:2012/04/28(土) 11:01:56.73
>>479
ふつーに使う
483仕様書無しさん:2012/04/28(土) 11:37:23.29
switch( mode ){
case eHoge: mode++; break;
case eHoge+1: mode++; break;
case eHoge+2: mode = eFuga; break;
case eFuga: mode++; break;
case eFuga+1: break;
}
484仕様書無しさん:2012/04/28(土) 13:21:59.68
>>480
真偽値などという型がないCが不自然なのであって
Cとしてはあれで正しい、といえなくもない。
485仕様書無しさん:2012/04/28(土) 13:36:00.81
strequal関数を作ればいいだけの話

どちらが大きいか比較して
真だった場合。
意味がわからないだろ。
if(strcmp(a,b)) とはそのように読む。

どうしてもstrcmpを使いたいなら==0とするのが正解。
0をSTRMATCHと定義し、==STRMATCHとするのがベター
486仕様書無しさん:2012/04/28(土) 14:40:19.32
>>484
不自然か?真偽値なんて、真偽値がオブジェクトだったり、
オーバーロードが必要と言う理由じゃなければ独立した型である必要ないだろ
単なる名前付けした定数で充分なぐらいじゃん
487仕様書無しさん:2012/04/28(土) 14:42:23.28
真偽値という別の名前を与えている以上
別のものであると我々人間が解釈しているのですよ。

コンピュータに合わせない。
人間に合わせる。
488仕様書無しさん:2012/04/28(土) 14:48:31.46
未だ真偽値という分け方自体が最善かすら揉めてるのにw
489仕様書無しさん:2012/04/28(土) 14:51:37.24
真偽値というか、ifの文脈で明らかにおかしいだろ
490仕様書無しさん:2012/04/28(土) 15:07:33.70
外国人にはこのように見えています

もし(文字列比較(a,b)の否定) なら
491仕様書無しさん:2012/04/28(土) 15:17:02.25
コードかきなれてるやつで、自然言語に近づけたいと
思ってるヤツなんてほとんど居ないだろ
慣れて気になるのは合理的か、回りくどくないか(考える手間が増えないか)
ぐらいだろ
492仕様書無しさん:2012/04/28(土) 15:21:04.96
じゃあなんで関数名、変数名、キーワードは
英語なんですか?

英語=自然言語ですよ。
493仕様書無しさん:2012/04/28(土) 15:24:41.47
>>492
名前だけだろ
文章の体をなしてない
494仕様書無しさん:2012/04/28(土) 15:24:54.62
if(!strcmp(foo,bar)){
これで、実効時間が一クロックでも違うのなら意味があると思うけど、
== 0 と変わらないのであれば、採用するメリットがない。
495仕様書無しさん:2012/04/28(土) 15:24:59.39
>>492
英語じゃなくてもいいけど
496仕様書無しさん:2012/04/28(土) 15:26:26.29
>>493
でも、名前は英語ですよね。

その名前から連想できるものは何でしょうか?
そこは変わらなはずですが。

むしろ、自然言語から連想できるように
キーワードを選んでいるわけだけど。
497仕様書無しさん:2012/04/28(土) 15:28:25.70
例えばifという名前が、繰り返すという意味だったりしたら
わけがわからないことになる。

そんな事するぐらいなら、ifもforもやめて、
A01、B02 とかいうキーワードの方がまだまし。

でもそうしないで、ifという単語を割り当てているというのは、
ifという単語の本来の意味が重要だってこと。
498仕様書無しさん:2012/04/28(土) 15:28:31.58
>>493
Javaなどでは、オブジェクト.動詞目的語
という命名規則が普通ですね。
499仕様書無しさん:2012/04/28(土) 15:50:55.83
>>496
日本語でも、イスラム語でもフランス語でもいいぞ。
500仕様書無しさん:2012/04/28(土) 15:53:58.39
>>496
構文に自然言語を求めてないと言ってるんだが。

大体、Unixのソースコードとか英語名称に準拠してるか?
アルファベット使ってるだけで略語だらけじゃねぇか。
アルファベット使ってりゃ自然言語だというなら、そりゃ全部自然言語だろうよ。
501仕様書無しさん:2012/04/28(土) 16:00:09.18
馬鹿って絶対に自分の非を認めないよね
故に馬鹿なのか
502仕様書無しさん:2012/04/28(土) 16:04:07.16
英語で書いてある部分なんて機能が解るシンボルとしてしか見ないな
言語自体が英語らしいかどうかなんてどうでもいいや
COBOL見たいなの見せられたら吐き気がするし
503仕様書無しさん:2012/04/28(土) 16:05:57.41
>>500
> 構文に自然言語を求めてないと言ってるんだが。

あなたわかってるじゃないですかw

自然言語を求めてないのは構文でしょう?
単語には自然言語を求めてるんですよ。
504仕様書無しさん:2012/04/28(土) 16:06:45.08
略語も自然言語。自然言語の略語。
505仕様書無しさん:2012/04/28(土) 16:22:10.58
>>492 は、「アルファベット」を見ると「英語」と言ってしまう
ローマ字未修得の小学生、あるいは戦中派に違いない。
506仕様書無しさん:2012/04/28(土) 16:25:09.14
>>505
え? 普通言語って英語を元にしてるでしょw
507仕様書無しさん:2012/04/28(土) 16:27:30.60
俺の大得意な言語は
日本語を元にしてますよ。




なんてなーwwww
508仕様書無しさん:2012/04/28(土) 16:32:49.85
>>506
UKとUSAの人間が読めなくても英語なのか?
509仕様書無しさん:2012/04/28(土) 16:33:55.58
>508
if が読めないのですか?
510仕様書無しさん:2012/04/28(土) 16:34:11.97
string や compare が読めないのですか?
511仕様書無しさん:2012/04/28(土) 16:34:34.45
TSUNAMI, HENTAIは英語だけど
Heigh Visionは日本語という不思議。
512仕様書無しさん:2012/04/28(土) 16:35:51.86
英語が分かる人

「strcmpって何?」
「string compare の略だよ」
「なるほど!」
513仕様書無しさん:2012/04/28(土) 16:36:21.62
>>509
"if"だけじゃなぁ。interfaceの略かもしれんし、
イタリア語かもしれんし、フランス語かもしれんし。
514仕様書無しさん:2012/04/28(土) 16:36:57.36
>>511
英語わからないならムリしないほうがいいよw
515仕様書無しさん:2012/04/28(土) 16:38:06.09
>>509
ifとかdefaultとか予約語じゃない言語もいっぱいあるぞ
関数型系とかSmalltalkの派生とか
516仕様書無しさん:2012/04/28(土) 16:38:10.51
>>513
英語と考えれば辻褄が合うでしょw

だからほとんどの言語=英語が元になっているわけです。
517仕様書無しさん:2012/04/28(土) 16:39:29.02
>>516
if( a == b )
これをよめるヤツはプログラマーぐらいだろ
518仕様書無しさん:2012/04/28(土) 16:40:07.42
>>515
予約語かどうかは本質じゃねーw

プログラム言語はほとんど英単語が
元になってるってことだろ。

英単語そのものか、英単語の略語ばかりだ。
よってコーディングする時は
英語の意味を考えなさいということ。
519仕様書無しさん:2012/04/28(土) 16:41:12.04
>>517
ifが英語だからプログラマーは読めるよね。

gtaweg( a == b)

これ、読めるかい?
520仕様書無しさん:2012/04/28(土) 16:41:29.02
>>518
cat と cdr はどういう意味?
521仕様書無しさん:2012/04/28(土) 16:42:12.07
>>519
言語仕様読めば解るんじゃね?
522仕様書無しさん:2012/04/28(土) 16:43:51.60
>>519
プログラマー外の英語圏の人間はすぐ解らんだろうと
いう意味で書いたんだが
523仕様書無しさん:2012/04/28(土) 16:43:51.88
Lisp の car や cdr が、以下の略であることぐらい、Lisp をかじったことのある人なら知っているでしょう。

Contents of the Address part of Register number
Contents of the Decrement part of Register number
524仕様書無しさん:2012/04/28(土) 16:44:53.93
>>522
そりゃそうだろ。
そんな話はしていない。


ほとんどのプログラム言語は
英語が元になってることに異論はないね?
525仕様書無しさん:2012/04/28(土) 16:45:31.86
>>523
やっぱりcatやcdrも英語の略なんだね。
526仕様書無しさん:2012/04/28(土) 16:48:37.26
>>524
COBOLレベルなら英語が元になってるとは言えるかもしれんが
シンボルだけ英語使ってるものを英語が元になってると言われると
違和感が有るぞ
527仕様書無しさん:2012/04/28(土) 16:49:23.26
> シンボルだけ英語使ってる
あ、認めたw

シンボルだけじゃなくて
意味も英語の意味を使ってる。
528仕様書無しさん:2012/04/28(土) 16:51:22.35
文法は英語じゃなくが
単語は英単語だし
意味も英単語だ。

なのだからその意味に当てはまらない使い方をしたらダメ。
529仕様書無しさん:2012/04/28(土) 16:56:57.83
>>528
> 意味も英語だけど
int 変数 = 0;

classs Type { public Type(){} }

英語の意味でどう読むんだ?
530仕様書無しさん:2012/04/28(土) 16:59:31.80
>>527
俺は構文が英語じゃないから、言語全体は自然言語に近い必要はないと
いう意味でしかレスしてない。名前云々のレスといっしょにすんな。
531仕様書無しさん:2012/04/28(土) 17:04:57.39
>>529
変数は日本語ですが?

int ・・・ integerの略。なるほど整数か!
class ・・・種類
Type・・・型
public・・・公開

英語だと考えれば、辻づまがあう。
532仕様書無しさん:2012/04/28(土) 17:05:54.91
>>531
単語の意味じゃなく英文として読めよ
533仕様書無しさん:2012/04/28(土) 17:06:08.67
>>530
俺は単語が英語だから
その英語の通りの使い方をしろと言ってる。

534仕様書無しさん:2012/04/28(土) 17:07:24.65
>>532
なぜ英文として読まないといけないの?

俺は最初から構文は英語じゃないが
単語が英語であり、
その意味のとおりに使えと言ってるだけですが?
535仕様書無しさん:2012/04/28(土) 17:13:37.49
>>534
俺は最初から構文は英語じゃないからコードが英文に準じる必要はないと言っている

まぁ、>>500で余計なことは書いたが。
536仕様書無しさん:2012/04/28(土) 17:15:42.11
なら単語が英単語になっている理由は?
537仕様書無しさん:2012/04/28(土) 17:15:57.31
英単語の意味を無視していいなら、
英単語を使う理由はない。
538仕様書無しさん:2012/04/28(土) 17:19:33.03
名前と構文をごっちゃにするなって
ダンボールに英語のラベルはってあったら、
ダンボールが英語に準拠してんのかよ
539仕様書無しさん:2012/04/28(土) 17:21:25.05
そうですが何か
540仕様書無しさん:2012/04/28(土) 17:21:47.37
つられて英語と書いてしまったが
そもそも、自然言語に準じる必要が無いといだけで
英語かどうかは重要じゃないだろ。
541仕様書無しさん:2012/04/28(土) 17:28:03.72
>>539
XSLTとXMLの仕様をごっちゃにしてそうな発言だな
542仕様書無しさん:2012/04/28(土) 17:30:35.83
多分最近のaviにはH.264が入ってることが多いから
>>539にとってaviはH.264がなんだろうな
543仕様書無しさん:2012/04/28(土) 18:55:32.75
ダンボールの中身が英語に準拠しているかもしれないと期待することは出来るかな
544仕様書無しさん:2012/04/28(土) 20:41:52.10
プログラムは自然言語ではないが
自然言語に似せて書くのが上手い書き方だろ。
何故なら、コンピュータが読むものであると同時に、人間が読むものでもあるからだ。
545仕様書無しさん:2012/04/28(土) 21:33:26.78
>>544
「個人的見解」って頭につけといた方がいいですよ。
546仕様書無しさん:2012/04/28(土) 21:34:38.61
>>545
まずお前から実践なw
547仕様書無しさん:2012/04/28(土) 21:53:43.30
>>544
人間が読む場合と、コンピュータが読む場合があるところまではいい。
ただし、人間が読む場合は、人間らしい人間が読む場合と、コンパイラみたいな人間が読む場合と、宇宙人が読む場合があるんだよな…

「個人的見解だが」
すべての人間に読みやすいプログラムというものは存在しないと思う。
なので、読む人に合わせた書き方が求められる。
これは、もはやソースコードを介したコミュニケーションであって、そういう意味では、やはりプログラマは物書きだなーと思うし、コミュニケーション能力が求められる仕事だなと思う。
548仕様書無しさん:2012/04/28(土) 22:17:18.20
>>547
すべての人間ではなく、
大部分の人間といえばいいだけの話。
549仕様書無しさん:2012/04/28(土) 22:40:44.94
>>544
COBOLが読みやすいか?
ならCOBOL使えばいい。
ひまわりでもかまわんぞ
550仕様書無しさん:2012/04/28(土) 22:51:04.29
551仕様書無しさん:2012/04/28(土) 22:56:54.08
>>550
すごいな。

たまたま英文風に読める文章を
持ってきて全てを語るなんてw
552仕様書無しさん:2012/04/28(土) 22:58:44.27
>>550
そのページが読みにくいのはなんでだ?w
553仕様書無しさん:2012/04/28(土) 23:04:43.00
>>550
自然言語とプログラム言語は白と黒のようにはっきり分かれておらず
プログラマは皆、灰色の領域で仕事をしているのだと判らせてくれる。
554仕様書無しさん:2012/04/28(土) 23:05:57.12
>>550
>['toast', 'cheese', 'wine'].each { |food| print food.capitalize }
英文まねても読みづらいだけだな。
555仕様書無しさん:2012/04/28(土) 23:07:10.90
>>554
そもそも英語が読みやすい言語かっつうのもあるしな
556仕様書無しさん:2012/04/28(土) 23:11:55.82
しかし、単語は英単語であり、
その英単語の意味通りを使い方をしているのは
どの言語も同じなのだ。
557仕様書無しさん:2012/04/28(土) 23:25:22.95
何が問題か解ってないコミュ障が居るな
558仕様書無しさん:2012/04/28(土) 23:30:53.03
じゃあ、話を最初に戻そう

if(!strcmp(foo,bar)){

問題はこれ。

strcmpは文字 比較の略であり、
ifはもし。

つまり、「もし(文字比較)なら」
という意味になるので、これはイラッとするコーディングである。
559仕様書無しさん:2012/04/28(土) 23:33:13.51
この話に対して、プログラム言語は、
英語の文法と違うとか的外れのこといいだして、

そうじゃなくて、単語は英語であり
単語の意味通りの使い方をするべきという
話だよって教えてるだけ。

それを分からず、文法が〜文法が〜と
的外れのことを言い続けてる。
560仕様書無しさん:2012/04/28(土) 23:38:06.42
>>558
! が Not ならいいの?
561仕様書無しさん:2012/04/28(土) 23:43:31.70
違うね、ごめん。
562仕様書無しさん:2012/04/29(日) 00:00:23.13
>>559
英単語と名前の話が一番ずれてる
563仕様書無しさん:2012/04/29(日) 00:02:23.85
>>559
>つまり、「もし(文字比較)なら」
>という意味になるので、これはイラッとするコーディングである。
問題は、文としての書き方なのに何でお前は名前に拘ってんだ?
564仕様書無しさん:2012/04/29(日) 00:08:33.22
> 問題は、文としての書き方なのに
どこ見てそう思いましたか?
565仕様書無しさん:2012/04/29(日) 00:09:46.10
>>564
「もし(文字比較)なら」
566仕様書無しさん:2012/04/29(日) 00:10:20.91
strcmpの戻り値が真偽値ではない、
真偽値ではないものを、もし(if)で使うなという
話ですよね?
567仕様書無しさん:2012/04/29(日) 00:11:05.12
>>564
文の話じゃねーよ。
真偽値を返さないものを
ifで使うのが気持ち悪いという話だよ。
568567:2012/04/29(日) 00:11:30.38
× >>564
>>565
569仕様書無しさん:2012/04/29(日) 00:12:46.49
なぜ真偽値じゃないものをifで使うのが気持ち悪いかというと
ifが、もし〜なら という意味だからでしょうね。
570仕様書無しさん:2012/04/29(日) 00:17:59.45
>>567
だからif文の中で真偽値を返さないものを返してる文の書き方がおかしいんでしょ
571仕様書無しさん:2012/04/29(日) 00:21:13.19
>>570
文がおかしい?
じゃあ、どういう文ならおかしくないというの?
”文”ですよね?
572仕様書無しさん:2012/04/29(日) 00:28:03.95
>>571
真偽値を返す関数を使った文だったらよろしいんじゃないでしょうか
573仕様書無しさん:2012/04/29(日) 00:29:31.39
>>572
つまり、式を変えるってことですねw

あれ?文の話じゃなかったのかいw
574仕様書無しさん:2012/04/29(日) 00:31:34.03
直感と反するのが気持ち悪い
一緒だったらって判定に!使うな
575仕様書無しさん:2012/04/29(日) 00:32:25.05
strcmpは「一緒だったら」ではなく、
「比較したら」
576仕様書無しさん:2012/04/29(日) 00:37:31.36
>>573
文として分かり辛いから文の中の式を直すってのがおかしいか?
577仕様書無しさん:2012/04/29(日) 00:38:41.57
もし(おなじである(a, b))なら

なら気にならない。
578仕様書無しさん:2012/04/29(日) 00:39:49.83
>>576
文はおかしくなかったから、文はそのままで
式を書きなおしたんだろw

お前、文がなにかわかってるのか?

if文の定義・・・if (条件式) 真文

仕様書見てもこんな感じでしか書いてないぞ。
579仕様書無しさん:2012/04/29(日) 00:40:38.23
>>577
つまり、英単語の意味と合っていないということか。
580仕様書無しさん:2012/04/29(日) 00:40:50.64
>>575
大元のif文はどう見ても一致してるかの判定
それ以外の意図で書いてたらなお悪い
581仕様書無しさん:2012/04/29(日) 00:40:53.63
もし(ひかくする(a, b))なら

だとわかりにくい

さらに

もし(文ひか(a, b))なら

だからもう死ね
582仕様書無しさん:2012/04/29(日) 00:43:04.40
>>578
仕様書には書いてないから実現は可能だが、プログラムには意図を込める事が出来る。
プロなら使わない手はない。
583仕様書無しさん:2012/04/29(日) 00:44:04.46
>>582
で、何が言いたいの?
584仕様書無しさん:2012/04/29(日) 00:44:39.33
>>583
より分かりやすく書けって話だよ。
585仕様書無しさん:2012/04/29(日) 00:45:43.69
>>580
> 大元のif文はどう見ても一致してるかの判定

もし(否定 比較する(a,b))

これを「aとbが一致した場合」と解釈するのは難しい。
586仕様書無しさん:2012/04/29(日) 00:47:20.56
もし( 比較する(a,b) == 差が0なら)

こう書けばわかりやすい。
587仕様書無しさん:2012/04/29(日) 00:49:40.01
>>585
書き方のぜひはともかく文字列一致判定の定型文だろ
588仕様書無しさん:2012/04/29(日) 00:52:37.27
>>586
どんな顔してこんな当たり前の書き込みするのか興味深い
589仕様書無しさん:2012/04/29(日) 00:59:33.34
>>587
こんなのを定型文と言わなきゃいけない事自体がおかしい。
590仕様書無しさん:2012/04/29(日) 01:00:23.87
>>588
え? 当たり前のことを言ったような顔を
しているだけですが・・・?
591仕様書無しさん:2012/04/29(日) 01:05:32.77
>>578
if文 = if statement

CやC++だと、そもそも式も文も同じ意味なんだが
592仕様書無しさん:2012/04/29(日) 01:10:42.27
C/C++のif文は、値を返さないので式として使えませんよ?

if式っていうのはこういうものです。(Scalaの例)
val msg = if (true) "true dayo" else "false dayo"
593仕様書無しさん:2012/04/29(日) 01:12:18.69
>>591
文と式の違いも知らん奴が
さっきから喚いていたんだなw
594仕様書無しさん:2012/04/29(日) 01:37:33.40
日本語として正しいテキストのやり取りでこれだけ揉めてるんだから、
言語としての正しさは、意思疎通の効率化の一要素でしかないってのを
自ら証明してる罠
595仕様書無しさん:2012/04/29(日) 01:37:58.64
>>594
日本語でおk?
596仕様書無しさん:2012/04/29(日) 01:40:09.09
>>595
日本語の議論でもこれだけ揉めるのだから、やはりプログラムは奥深くて楽しい。
597仕様書無しさん:2012/04/29(日) 01:40:59.74
What's your point?”
598仕様書無しさん:2012/04/29(日) 01:48:55.76
何か伸びてると思ったら、何の話してんの?
599仕様書無しさん:2012/04/29(日) 03:27:22.81
毎年この時期は色々とアレな人が湧くなあ、というお話。
600仕様書無しさん:2012/04/29(日) 05:25:20.32
↑ここまでイラッとするレススタイルの話

↓ここからイラッとするコーディングスタイルの話
601仕様書無しさん:2012/04/29(日) 05:27:33.91
終了
602仕様書無しさん:2012/04/29(日) 05:30:53.97
>>598
理系のボクにはよくわからないお話。
603仕様書無しさん:2012/04/29(日) 05:32:15.06
>>602
理系とか関係なく
単にあなたがお馬鹿であるだけ。
604仕様書無しさん:2012/04/29(日) 18:30:27.78
三項演算ってのがあってだな・・・
605仕様書無しさん:2012/04/29(日) 18:31:41.69
それで?
606仕様書無しさん:2012/04/30(月) 11:28:44.34
ハンガリアン記法を使うなら使うで統一してればまだいいが、
ハンガリアンな変数名とそうでない変数名が混在しているソースコードはバカだと思う。
607仕様書無しさん:2012/04/30(月) 14:32:32.64
b p m_ g_ だけ付けてる。
608仕様書無しさん:2012/04/30(月) 14:57:12.58
それはハンガリアンではない
609仕様書無しさん:2012/04/30(月) 15:26:03.24
>>606
ハンガリアン記法で統一されていても、記法が実態と合っていないと、
もっとイラッつとする。不具合修正後にたまに見かけるんだが……。
610仕様書無しさん:2012/05/01(火) 04:35:45.89
システムハンガリアンをコーディング規約に盛り込む連中は漏れなく無能。
611仕様書無しさん:2012/05/01(火) 09:48:20.21
プログラムのお勉強的な意味でどうしてこんな事が必要だったのかを
若手に学習させるためにシステムハンガリアンは割りと良いんだよなw
612仕様書無しさん:2012/05/01(火) 13:26:21.50
システムハンガリアン使ってるヤツは、ハンガリアン使うときどうするんだ?
例えば、↓とかどう修飾してる?

ptX; // ポイント単位のX軸
cmX; // センチメートル単位のX軸
dbY; // デシベル単位のY軸
613仕様書無しさん:2012/05/01(火) 13:35:03.26
fPtX
nCmX
dDbY
614仕様書無しさん:2012/05/01(火) 13:42:21.92
イラッとするな
615仕様書無しさん:2012/05/01(火) 14:30:32.62
他人のコーディングスタイルは常にイラッつとするものなんだよ
616仕様書無しさん:2012/05/02(水) 21:39:30.85
なにがハンガリアンだよハムスターかよ!
俺はローマ字で変数を使うからな!
617仕様書無しさん:2012/05/02(水) 22:13:12.04
だったら日本語でかきゃいいのに
最近のコンパイラーは日本語使えるんだぞ

#define 整数 int
#define 無 void
#define 本体 main
#define 戻す return

整数 本体(無)
{
 整数 値 = 0;
 戻す 値;
}
618仕様書無しさん:2012/05/02(水) 23:35:31.92
キモイwww
619仕様書無しさん:2012/05/03(木) 00:05:17.09
そうか?
英語で命名しても認識する時は日本語だからそんなに気にならないけど。
620仕様書無しさん:2012/05/03(木) 03:58:47.27
なでしこ思い出した
621仕様書無しさん:2012/05/03(木) 04:01:24.82
ひまわりでやれ
622仕様書無しさん:2012/05/03(木) 04:29:44.89
>>617
マクロの謝った使用法の中でも最悪だなこれ。
623仕様書無しさん:2012/05/03(木) 05:00:42.74
変数名に$aとか$bとかマジ勘弁
624仕様書無しさん:2012/05/03(木) 05:13:27.17
>>623
VMS「…(´・ω・`)」
625仕様書無しさん:2012/05/03(木) 10:37:35.39
>>623
でも $i は良いんでしょ?
626仕様書無しさん:2012/05/04(金) 13:03:50.07
$iiiまでは許してくれ。
627仕様書無しさん:2012/05/05(土) 04:07:53.59
$とか通るのかよ。アセンブラでおかしくなるだろ?
628仕様書無しさん:2012/05/05(土) 06:16:15.35
phpならきっと・・・
629仕様書無しさん:2012/05/05(土) 19:21:20.26
むしろPHPでは$つけわすれるのがエラーの筆頭だろ
630仕様書無しさん:2012/05/05(土) 23:03:56.89
Perlも?
631仕様書無しさん:2012/05/07(月) 03:22:45.46
Perlは頭に何付けるか考えなきゃいけないから
他の言語を直前までやってたときに新規でソースファイル起こしたときの最初の数分だけかな忘れるのは
632仕様書無しさん:2012/05/07(月) 03:52:46.25
#define ZERO 0
#define ONE 1
#define TWO 2

#define ELEVEN 11

驚愕したそして
12以降は普通に使われていた
俺は泣いた
633仕様書無しさん:2012/05/07(月) 07:09:08.37
よくあるコード改善本の指摘に「できるだけマクロを使うな(コンパイラを働かせろ)」というのがあるけれど
実際どれくらいメリットがあるのだろう・・・?
634仕様書無しさん:2012/05/07(月) 19:42:52.59
「マクロを使わない=コンパイラを働かせる」
の意味がわかんないんで教えて
635仕様書無しさん:2012/05/07(月) 20:36:38.67
Cの本読めば最初の章に出てくるだろ




マクロの部分を処理するのは、コンパイラではなくプリプロセッサ

(気を利かせることができて賢い)コンパイラを使え = (単純で馬鹿な)プリプロセッサを使うな
636仕様書無しさん:2012/05/07(月) 21:30:39.56
てか、マクロを多用するコードの方がコンパイラの仕事が増えるような気が。
637仕様書無しさん:2012/05/07(月) 21:34:21.83
一緒だと思う。
638仕様書無しさん:2012/05/07(月) 22:28:35.51
マクロ展開した後のソースがどんだけデカくなるのか見たことないのかよ!
コンパイラさん凄い頑張ってんぞ!
639仕様書無しさん:2012/05/07(月) 23:53:37.14
>>633

知らない方がいいよ。それを知ったとき、おまえは地獄にいる。
640仕様書無しさん:2012/05/07(月) 23:56:57.94
>>636
ようは、コンパイラをプログラマの道具として使えってことだよ。

コンパイラが分かる形にしておくと、
コンパイルした時にミスを色々教えてくれる。

静的型付け言語ならではの、コンパイラを使った
快適プログラミングテクニックが生かせる。
641仕様書無しさん:2012/05/08(火) 10:40:28.54
プリプロセッサを働かせずにコンパイラを働かせろということだと思うが、
コードの肥大を防ぐのが目的なのかなんなのか
642仕様書無しさん:2012/05/08(火) 10:47:16.38
マクロは基本的に定数定義とか、移植性の向上のために使ってるな。
643仕様書無しさん:2012/05/08(火) 12:20:14.89
マクロ禁止って暗にCをディスってるような気がする。
C++かC#陣営の策略に違いない。
644仕様書無しさん:2012/05/08(火) 16:18:08.66
コメントは40カラム目から
645仕様書無しさん:2012/05/08(火) 17:30:22.51
>>644
うわ、それ強制されたことあるわ
646仕様書無しさん:2012/05/09(水) 07:53:56.36
switchには必ずdefaultをつけるべし
ifには必ずelseをつけるべし
647仕様書無しさん:2012/05/09(水) 08:32:49.88
それ嫌いだわぁ
else書いといて中身無しとか

せめてプログラミング作法くらいは皆読んで欲しいところだ
648仕様書無しさん:2012/05/09(水) 11:01:52.47
switch () {
default:
  ;
}
これはあり。というか、俺はいつもそうやってる。
defaultの考慮漏れはしていないし、defaultではやることないよという表明。

> ifには必ずelseをつけるべし
これはあまり見たこと無いな。
「if〜else if〜には必ずelseをつけるべし」なら、見たことあるし、俺も実践してる。
switchのdefaultと同じ理由。
649仕様書無しさん:2012/05/09(水) 11:27:41.36
たまに頭が回らん時とか、if文の条件が書きづらい時とか
if( !(条件) ){ 処理 }
ってしないで
if( 条件 ){}else{ 処理 }
って書くのも他人から見たらイラッつとさせてるんだろうなと思った。
650仕様書無しさん:2012/05/09(水) 21:39:26.50
>>633
1.オーバーロード可能になる
2.using宣言、もしくは名前空間の別名で短い名前が使える
この2点だけでも結構楽になる。
651仕様書無しさん:2012/05/09(水) 23:27:06.14
リポジトリからソースを落とすとThumbs.dbがついて来た。
システムに必要なファイルだろうから消すなだと。
652仕様書無しさん:2012/05/10(木) 22:36:52.26
>>649
何もやることないよ
というより
書き忘れたのかと思ってしまう。
653仕様書無しさん:2012/05/11(金) 00:07:09.59
>>648
> defaultの考慮漏れはしていないし、defaultではやることないよという表明。
オレだったら、それはコメントに記述するなあ
654仕様書無しさん:2012/05/11(金) 00:34:49.93
そういえば以前の上司がどうしても『defaultは最後に書け』と言ってゆずらなかったな。
655仕様書無しさん:2012/05/11(金) 00:56:41.06
デフォルトに出会った時点で分岐終了するウンココンパイラなかったっけ
656仕様書無しさん:2012/05/11(金) 01:16:38.05
名付けて、運コンパイラ
657仕様書無しさん:2012/05/11(金) 14:08:06.49
>>653
defaultが無いとwarning出す静的解析ツールとかありがちなんで、俺はコードで書く。
658仕様書無しさん:2012/05/11(金) 17:24:17.65
>>653
俺はdefaultに assert(false) を入れとくなあ。
ミスの検出にも役立つし。
659仕様書無しさん:2012/05/11(金) 17:28:42.09
そこに

assert(false); // 来ないはず

とか書いてあるソースは見た事ある。
来ないはずの所に来るバグがあるって事なんだろうな、と思った。
660仕様書無しさん:2012/05/11(金) 17:54:19.52
>>658
いや、来ないのでは無くて、来ることもあるが処理は無しよ、って意味なんだけど。
来ないはずならエラー処理入れるわ。
661仕様書無しさん:2012/05/11(金) 21:13:10.20
いいこと考えた

assert(true); // 入れとけばいいんじゃねw
662仕様書無しさん:2012/05/12(土) 00:02:23.15
定義増えた場合の取りこぼし対策でASSERTいれるのはアリ
663仕様書無しさん:2012/05/12(土) 04:08:02.61
でふぉるとさんはどんな条件にも引っ掛からなかったダメな子を許容してくれるお姉さんキャラ
たまに「絶対に書いておけ」と言う参考書がある為に
//ここに来る事は無い
と言う書き残しをして居る時があるが
nullやDBNull判定をすり抜けて来た0や空白さんがたまに来る
初期値はシステムで統一しろ
664仕様書無しさん:2012/05/12(土) 04:28:51.61
ifにelseは必要ない。
なぜなら、条件を満たしているか?という質問をするならば
みたいしていない場合が存在するのは明らかだから。

switchに関しては、case一個だけ書くことなんてまずない
Aの場合、Bの場合、Cの場合、じゃあそれ以外はどうなるんだ?
ということになる。

取りうる値がA、B、Cの三つしかないというのであれば、
Aの場合、Bの場合、それ以外(default)。でいいはず。
defaultがないということは、なにか意味があるということなので
それを明記するのが良い。
665仕様書無しさん:2012/05/12(土) 04:31:07.25
>>659
assertionはdefaultだけで使うものではない。
何のためにassertionを使っているかを考えれば分かる。
666仕様書無しさん:2012/05/12(土) 04:52:54.88
>>664
>ifにelseは必要ない。
お前は何を言っているんだ
667仕様書無しさん:2012/05/12(土) 05:50:36.01
bool値を返す関数で
bool func(){
if(exp){
return true;
}else{
return false;
}
}
668仕様書無しさん:2012/05/12(土) 05:52:39.62
途中で書き込んでしまった。。
bool値を返す関数で
bool func(){
 if(exp){
  return true;
 }else{
  return false;
 }
}
って書いてるのがイラッとする。
669仕様書無しさん:2012/05/12(土) 06:49:59.39
>>666
あれじゃないか○○であるの条件のelseは明示的に書かれていないだけで○○ではないのif文
つまり読みやすいとは別として理解しやすいと言う部分、何がしたいかをはっきりさせたい場合はifを2回書いた方がいい
つまりelseは要らない
670仕様書無しさん:2012/05/12(土) 06:55:40.08
>>669
「それ以外」の条件をいちいち列挙するの?面倒くせえ
671仕様書無しさん:2012/05/12(土) 08:26:14.32
面倒くさいだけじゃ済まないぞ

わざわざ別に書いてる位だから、本当は別の条件があるのに記述漏れがあんじゃねーかって疑念が湧くし、
ifに入る条件がより限定されるような修正する際に、
else使うなら一箇所の修正だけで済むものを、使わない場合はelse相当のif文も修正が必要になる

どう考えてもバグの誘因になる

言語仕様でelseが無いとか、switchのdefaultが無いならともかく、
言語仕様としてあって、更にそれを使うのに適した場面なら、それを使う方が良いと思う

まぁ、全部にelseやdefaultを入れろって縛りはどうかと思うけど
672仕様書無しさん:2012/05/12(土) 09:42:39.16
>>668
どう書けばいいのでしょう・・・

ご教授していただけると嬉しいです
673仕様書無しさん:2012/05/12(土) 10:23:26.26
return (bool)exp;

だろ?
674仕様書無しさん:2012/05/12(土) 10:29:07.54
else書くなって言ってるんだろ
675仕様書無しさん:2012/05/12(土) 13:21:10.78
gotoは基本的に使用しないこと
ただしエラー処理や多重ループから抜ける場合などは使用した方が見やすくなる


・・・ったく、いつまでクヌースの呪縛に捕らわれてんの?
全面禁止だろ、いまどき
676仕様書無しさん:2012/05/12(土) 14:00:43.31
>>675
全面禁止ってことは、
breakもcontinueもreturnもダメってこと?
これらはgotoと同じ事出来るんだけど。
677仕様書無しさん:2012/05/12(土) 14:25:20.15
いや、だからだよ
今の言語はブロック制御に則ったジャンプ命令があるのに
いつまでALGOL時代の「goto」という命令に捕らわれてるんだって意味
678仕様書無しさん:2012/05/12(土) 14:34:49.81
>>675
いつまで構造化プログラミングの呪縛に縛られてるの?
679仕様書無しさん:2012/05/12(土) 15:23:16.21
>>678
アウフヘーベンするならともかく、goto使うところに戻るんじゃただの退化じゃん。
680仕様書無しさん:2012/05/12(土) 15:47:39.09
>>677
それらで出来ないことだって有るだろ。
681仕様書無しさん:2012/05/12(土) 16:08:22.41
>>679
今更gotoがどうとかどっちでもいいじゃん
682仕様書無しさん:2012/05/12(土) 16:55:46.12
>>673
return (exp) ? true : false;

かな

でも、おれ、三項演算子好きじゃない

こまった・・・
683仕様書無しさん:2012/05/12(土) 17:30:18.41
三項演算子を好んで使うやつなんか存在するのか?
684仕様書無しさん:2012/05/12(土) 18:02:26.13
bool func(){
 bool result = false

 if(exp){
  result = true;
 }

 return result;
}
685仕様書無しさん:2012/05/12(土) 18:08:45.16
return exp;
686仕様書無しさん:2012/05/12(土) 18:13:32.23
>>683
エレキ屋あがりが「オブジェクトファイルを開いてみろ!if-elseと比べてこんなにシンプルだぞ!」と
しきりに勧めてくるのだが・・・・・実際どうなんだろうと思う
687仕様書無しさん:2012/05/12(土) 18:38:40.32
最近カンスト付きの加減算で好んで使ってたりしてる。
無理に使えとは言わないw

num = ((num+hoge) > max) ? max : (num+hoge);
688仕様書無しさん:2012/05/12(土) 23:08:11.15
ifが戻り値を返したいって時は
三項演算子使うだろ。

var a;
if(exp1) {
 a = 1;
} else if(exp2) {
 a = 2;
} else {
 a = 3
}


var a = (exp1) ? 1 :
     (exp2) ? 2 :
          3;

どっちが見やすいかなんて一目瞭然だと思うが?
689仕様書無しさん:2012/05/12(土) 23:15:57.08
>>688
複数の判定がいるならswichかテーブル使ってしまうなぁ
690仕様書無しさん:2012/05/12(土) 23:19:05.66
三項演算子を使って一行で書ける時はよく使う。
>>688はイラッ
691仕様書無しさん:2012/05/12(土) 23:21:21.33
>>689
switchだって戻り値返せないだろ?

var a;
switch(exp) {
 case cond1 : a = 1; break;
 case cond2 : a = 2; break;
 default : a = 3; break;
}


var a = (exp == cond1) ? 1 :
     (exp == cond2) ? 2 :
                3;

値を返すならこっちのほうがシンプル
692仕様書無しさん:2012/05/12(土) 23:23:03.00
処理を分岐させたいなら
if、switch

条件に応じて値を返したいなら
三項演算子
693仕様書無しさん:2012/05/12(土) 23:42:10.01
一番のネックは三項演算子をやたらに憎む奴らが多い事なんだよな
まあ、IFの変わりに使うひとが大量に居たせいだと恨んでるけとw
694仕様書無しさん:2012/05/13(日) 00:05:26.98
三項演算子くらいラムダ式に比べたらまだまだまだまだ可愛い。
695仕様書無しさん:2012/05/13(日) 00:07:43.98
>>693
関数型言語では三項演算子(風)の記述が主流

三項演算子を嫌うような老害は
このあと消える。
696仕様書無しさん:2012/05/13(日) 00:09:47.61
老害って言葉好きだね。いつまでケツが青いままのつもり?
697仕様書無しさん:2012/05/13(日) 00:14:04.30
>>676
一緒じゃねぇよ全然ちげぇよ。
ダイクストラが提起した問題は、gotoそのものや、ジャンプじゃない。
処理ブロック(forやifといった分岐反復のまとまり)のネストを無視して、
処理ブロックから、処理ブロックに飛べる事が問題なんだ。

なんでgotoがあるのにbreakやcontinueがあるか解ってんのか?
698仕様書無しさん:2012/05/13(日) 00:15:36.69
>>688
3講演子の条件式をカッコでくくってんのがイラっとする
699仕様書無しさん:2012/05/13(日) 00:18:57.46
>>698
カッコがないと見難い
700仕様書無しさん:2012/05/13(日) 00:20:09.10
>>697
ダイクストラが提起した問題は、gotoそのものや、ジャンプじゃない。
処理ブロック(forやifといった分岐反復のまとまり)のネストを無視して、
処理ブロックから、処理ブロックに飛べる事が問題なんだ。

だから、処理ブロックから、処理ブロックに飛ぶようなことをしなければ
gotoを使ってもいい
701仕様書無しさん:2012/05/13(日) 00:22:12.48
x = 10 + ( n ? n / 100 : 0 );
こういうことしたいとき、条件にかっこつけやがると

x = 10 + ( ( n ) ? n / 100 : 0 );
こんな感じでカッコが二重になんのが非常に見づらい
702仕様書無しさん:2012/05/13(日) 00:22:42.49
>>700
そうだよ
703仕様書無しさん:2012/05/13(日) 00:24:24.94
>>700
だからCにもgotoが残ってる
ネストを飛ぶとき警告だすぐらい仕様にいれても
よかったとはおもうが
704仕様書無しさん:2012/05/13(日) 00:24:46.55
当たり前だろw

条件式が変数一つの時に
カッコつけるなよw

(exp)という書いてある時のexpってのは
変数の意味じゃないだろ。
705仕様書無しさん:2012/05/13(日) 00:25:39.55
>>675
結局お前、否定されたぞw

goto全面禁止とかありえないってさ。
706仕様書無しさん:2012/05/13(日) 00:29:38.06
>>703
警告出すのは、ネストの中に入る時だろ?
ネストから出るときは、returnなどと一緒なので問題ない。
707仕様書無しさん:2012/05/13(日) 00:30:44.82
>>706
ネストからネストに飛ぶときの話
708仕様書無しさん:2012/05/13(日) 00:31:40.42
IClass a = (state) ? new ClassA() : new ClassB();

みたいに「確実に何か代入されるけど条件によって違う」場合に使うんじゃないかなぁ
709仕様書無しさん:2012/05/13(日) 00:32:39.01
>>704
式だろうと見づれぇよ
x = 10 + ( ( n > 0 ) ? n / 100 : 0 );

こっちの方が明らかにすっきりするわ
x = 10 + ( n > 0 ? n / 100 : 0 );
710仕様書無しさん:2012/05/13(日) 00:37:03.95
>>708
大抵変数作るのがめんどい時だろ。演算子なんだから。

function( 5 > n ? 1 : 9 );
とか
( max > n ? alpha : beta ).Execute();
みたいな場合。
711仕様書無しさん:2012/05/13(日) 00:37:47.22
x = 10 + n > 0 ? n / 100 : 0 ;

見難い
712仕様書無しさん:2012/05/13(日) 00:38:15.20
>>707
> ネストからネストに飛ぶときの話

”ネストから” ってのは必須条件?
713仕様書無しさん:2012/05/13(日) 00:40:26.30
x = (n > 0)
 ? n / 100 + 10
 : 10;
714仕様書無しさん:2012/05/13(日) 00:42:26.39
>>710
それはifでやれよ…
715仕様書無しさん:2012/05/13(日) 00:45:29.39
>>712
ネストを1段上げる、ネストを1段下げるなら
goto使わんでも出来るし問題にならんだろ
716仕様書無しさん:2012/05/13(日) 00:47:09.13
>>713
そんな書き方すんならifつかえよ
717仕様書無しさん:2012/05/13(日) 00:49:00.52
>>716
「ここで確実にxが変わる」ってわかるじゃないか

「if使え」っていうことはわかんないのか。困ったな
718仕様書無しさん:2012/05/13(日) 00:51:14.52
>>717
カッコつけてブロックでインデントするぐらいならif使えといってんの
見づらいだろ
719仕様書無しさん:2012/05/13(日) 00:53:09.54
x = ((10 + n > 0) ? n / 100 : 0);
みづらい・・・
カッコが好きならいっそ全部くくりゃいいのに
x = ((10 + n > 0) ? (n / 100) : (0));
720仕様書無しさん:2012/05/13(日) 00:58:03.94
>>718
ifだと

if (n > 0)
{
 int x =
}
else
{
 int x =
}

って書けないじゃん
先にint xって書いても節でxx = って書くかもしれない
もちろんコンパイラがワーニング出すけど
721仕様書無しさん:2012/05/13(日) 01:00:41.19
>>714
面倒だろ。特にメンバー関数なんかは、引数2回書くのがだるい。
かといって、オブジェクトをifでポインターに入れて、
そのあとメンバー関数呼び出すのも面倒い。

( max > n ? alpha : beta ).Execute( arg_first, arg_second, arg_third );
722仕様書無しさん:2012/05/13(日) 01:03:46.98
他人に見せるか他人のを読むかという前提で
「おれがめんどくさい」っていわれたら
もう何も言うことはない
723仕様書無しさん:2012/05/13(日) 01:04:16.78
>>715
なんの話してるの?

gotoで警告出す時の条件の話でしょ。
使わない時の話はしてないよ。
724仕様書無しさん:2012/05/13(日) 01:04:32.84
>>720
んな事はどうでもよくて、カッコつけて見づらい書き方するんなら
三項演算子つかうの止めろと言ってるんだよ
725仕様書無しさん:2012/05/13(日) 01:06:01.68
条件式や値のコードが極端に長くないなら、

処理を分岐させたいなら
if、switch

条件に応じて値を返したいなら
三項演算子

この2つで決めればいいだけだろ。
726仕様書無しさん:2012/05/13(日) 01:07:20.76
>>724
カッコつけて見やすくする書き方なら
問題ないでしょw

727仕様書無しさん:2012/05/13(日) 01:07:59.44
>>724
変な書き方してたら「何か変なことしてるな」ってわかるじゃん
1行でさらっと流したら絶対見落とすぜ
728仕様書無しさん:2012/05/13(日) 01:08:48.84
>>723
gotoつかってネスト上げたり下げたりするのは、
他の構文と同じだから、警告だすなら
ネストからネストに飛ぶ時だけでいいでしょって話。
729仕様書無しさん:2012/05/13(日) 01:10:41.61
>>727
x = n > 0 ? n / 100 + 10 : 10;
こうだったら文句いわんよ
730仕様書無しさん:2012/05/13(日) 01:12:30.19
条件に括弧つけるのはif文の代わりって意味なんじゃないの?
俺ならbool値にも括弧つけるよ (flag)? って
731仕様書無しさん:2012/05/13(日) 01:14:08.44
三項式はメンバ変数のコンストラクタ渡しとかで使う
732仕様書無しさん:2012/05/13(日) 01:14:12.54
>>728
だから、”ネストから”ってのは要らないよね?

単に「ネストに入るときだけ」に警告でいいよね?

って話。
733仕様書無しさん:2012/05/13(日) 01:16:39.41
>>729

x = nantoka > 0 && nantoka < 100 ? nantoka / 100 + defvalue : defvalue;

こんな感じですか?
カッコつけたほうがいいよ。
734仕様書無しさん:2012/05/13(日) 01:18:39.26
x = nantoka > 0 && nantoka < 100 ? nantoka / 100 + defvalue : nantoka >=100 && nantoka < 200 nantoka / 100 + defvalue2 : defvalue;

こんな感じですか?
カッコつけたほうがいいよ。

735仕様書無しさん:2012/05/13(日) 01:19:08.41
訂正

x = nantoka > 0 && nantoka < 100 ? nantoka / 100 + defvalue : nantoka >=100 && nantoka < 200 ? nantoka / 100 + defvalue2 : defvalue;

こんな感じですか?
カッコつけたほうがいいよ。


736仕様書無しさん:2012/05/13(日) 01:20:35.76
x = (((10 > a) ? a / 4 : 0)>((5 > b) ? b : 0) ? (( c == d) ? 4 : 2 ) : (( e || f ) : 3 : 1 );
737仕様書無しさん:2012/05/13(日) 01:20:38.32
x = (0 < nantoka && nantoka < 100) ? nantoka / 100 + defvalue :
  (100 <= nantoka && nantoka < 200) ? nantoka / 100 + defvalue2 :
  defvalue;

こんな感じですか?

738仕様書無しさん:2012/05/13(日) 01:21:41.88
やっぱりカッコ多すぎると分かり辛いな
739仕様書無しさん:2012/05/13(日) 01:22:24.89
>>732
ネストに入るだけなら問題ないって
740仕様書無しさん:2012/05/13(日) 01:24:58.07
>>735
nantoka > 0 && nantoka < 100 ?
nantoka / 100 + defvalue : nantoka >=100 && nantoka < 200 ?
nantoka / 100 + defvalue2 : defvalue;

?で切ればいいだけだからすぐ解るじゃん
カッコあると余計迷う
741仕様書無しさん:2012/05/13(日) 01:26:16.70
>>736
x = ( (10 > a) ? a / 4 : 0 ) > ( (5 > b) ? b : 0 )
   ? ( (c == d) ? 4 : 2 )
   : ( (e || f ) ? 3 : 1 );
742仕様書無しさん:2012/05/13(日) 01:26:50.03
>>737
最初と条件違うじゃねぇか。間違えるならカッコつけんなよ。
743仕様書無しさん:2012/05/13(日) 01:29:49.62
x = 10 > a ? a / 4 : 0 > 5 > b ? b : 0 ? c == d ? 4 : 2 : e || f ? 3 : 1;

744仕様書無しさん:2012/05/13(日) 01:30:20.32
>>740
見難い
745仕様書無しさん:2012/05/13(日) 01:35:12.76
三項演算って言語によって動作が違うから困る
746仕様書無しさん:2012/05/13(日) 01:35:19.87
>>741
どの部分が条件文なのかが見やすいね。
747仕様書無しさん:2012/05/13(日) 01:41:15.20
長い三項演算子を一行で書く奴が馬鹿ということでw
748仕様書無しさん:2012/05/13(日) 01:49:00.22
>>741
x = ( 10 > a ? a / 4 : 0 ) > ( 5 > b ? b : 0 )
  ? ( c == d ? 4 : 2 )
  : ( e || f ? 3 : 1 );
749仕様書無しさん:2012/05/13(日) 01:51:18.27
?より左が全部?より右の条件だって知らない人おおいの?
750仕様書無しさん:2012/05/13(日) 02:09:52.04
>>747
長かったら何行に分けようと莫迦だろう。
あと、副作用のある式が含まれてる場合も。
751仕様書無しさん:2012/05/13(日) 16:23:11.54
>>750
なんで馬鹿じゃなく莫迦と書いた?
752仕様書無しさん:2012/05/13(日) 16:31:51.39
>>750
話しするたびに、無駄に疲れさせるタイプだとみた。
こういうタイプは浅い理解しか出来ないクセに
他人には1を聞いて10を知れみたいな理解を求める人が多い。
753仕様書無しさん:2012/05/13(日) 16:48:25.33
>>751
別段意味はないよ。
強いていえば、救い様のないレベルであることを
強調したい気持ちが伝わるといいなー、程度。

そこ大事なトコだった?
754仕様書無しさん:2012/05/13(日) 17:10:39.27
>>753
表現の仕方がイラッとする。
コーディングも同じようにイライラさせてると推測する。
そういう意味で大事なトコ。

755仕様書無しさん:2012/05/13(日) 18:20:24.05
>>740
commit前にformatter通すというルールがあるところだと、こういう、
改行で複雑な式の区切りを示すってやりかたはできないなぁ。
自然と、長い複雑な式は使わないようになってくる。
756仕様書無しさん:2012/05/13(日) 19:17:09.64
1行の文字数制限とかアホだよなーと思う。
右のほう見に行かなきゃ見えない部分は、どうせ後から読む奴には重要じゃない情報しか無いから。
全体の流れの把握を助けるために、敢えて長くしてるんだってばよ。

もちろん>>740のようなコトをやってない前提だけど。
757仕様書無しさん:2012/05/13(日) 19:37:53.74
エディタのフォントサイズを10にしてる
文字はみにくいが、全体が見渡せる。
758757:2012/05/13(日) 19:48:00.58
フォントサイズを小さくしてるからカッコがあった方がパッと見わかりやすい
759仕様書無しさん:2012/05/13(日) 20:38:36.97
>>755
そもそも長い三項目演算子書かなきゃいい
現実はせいぜいこんなもんだろ
z = n + ( 0 < x ? y / x : 0 );
760仕様書無しさん:2012/05/13(日) 21:35:42.19
「三項演算子の中にベタ書きで処理を入れるな」と
761仕様書無しさん:2012/05/13(日) 22:14:41.06
長い行のときだけスペース入れずに書いてあるのはかなりイラッとする
複数行にするよりスペース省いてでも無理やり一行で書いたほうが見やすいと思ってるのか
762仕様書無しさん:2012/05/14(月) 18:17:39.06
括弧でくくると見やすくなるの法則って、何法則だっけ?
763仕様書無しさん:2012/05/14(月) 18:20:08.27
プレグナンツの法則
764仕様書無しさん:2012/05/14(月) 19:04:53.78
C言語のくせに、インデックス指定が1から始まるのは
嫌がらせとしか思えない。
765仕様書無しさん:2012/05/14(月) 23:58:57.22
場合によるだろう
month[0] == January, month[1] == February, month[2] == March ……よりも
month[1] == January, month[2] == February, month[3] == March ……のほうが直感的だ
766仕様書無しさん:2012/05/15(火) 00:46:28.70
そういう問題じゃねぇ
下手したらバグの温床になる
0版にはゴミは入るし、
配列の要素数とループカウンターの
上限があわねぇし
767仕様書無しさん:2012/05/15(火) 01:19:55.22
その理屈だと日付も0日からはじめるべきじゃね?
day[0] == 1, day[1] == 2
768仕様書無しさん:2012/05/15(火) 02:46:24.41
そんなもん配列にいれんな

じゃダメ?
769仕様書無しさん:2012/05/15(火) 03:04:10.81
日付も0からはじめろ
770仕様書無しさん:2012/05/15(火) 04:01:20.32
噂の9月0日か…
確か1年を30日が12回ってゲームあったな
プログラマにとっては楽そうだなと思った
771仕様書無しさん:2012/05/15(火) 10:41:01.70
>>770
FF11のことかw
772仕様書無しさん:2012/05/15(火) 12:42:31.47
カレンダーの仕様がおかしいから変えちまえ!ってことか潔いな
773仕様書無しさん:2012/05/15(火) 13:05:26.93
Luaの配列のインデックスが1からで結局綺麗に書くの諦めた覚えがある。
774仕様書無しさん:2012/05/15(火) 18:23:08.80
上に行ったら下から出てくる。
左に行ったら右から出てくる。

こんな世界もプログラマにやさしい。
775仕様書無しさん:2012/05/15(火) 18:54:18.17
> 左に行ったら右から出てくる。
これはいいんじゃね?
776仕様書無しさん:2012/05/15(火) 20:17:29.03
0はnullやfasleと混同しやすいから、バグを生む
777仕様書無しさん:2012/05/15(火) 23:56:12.94
fasle ?
778仕様書無しさん:2012/05/16(水) 00:12:07.19
#define fasle false

問題は解決だ
779仕様書無しさん:2012/05/16(水) 00:37:47.33
>>778みたいな定義があった上で
そこら中でfalseとfasleが混在してたら
イラッ☆つとくるじゃ済まねーぜ
780仕様書無しさん:2012/05/16(水) 23:30:24.88
1ヶ月に28日有る月は何ヶ月有る?
781仕様書無しさん:2012/05/16(水) 23:52:23.69
12ヶ月
782仕様書無しさん:2012/05/16(水) 23:52:58.77
訂正、1年あたり12ヶ月
783仕様書無しさん:2012/05/17(木) 01:08:31.49
無限
784仕様書無しさん:2012/05/17(木) 09:15:07.96
コーディングスタイルの問題というのかわからないけど、
10年前の改修履歴が残ってるのを見るとイラッつとする
785仕様書無しさん:2012/05/17(木) 17:28:54.79
「コメント禁止。ソース内ではなくExcelファイルに対応するコメントをまとめること。」
という内部規約のプロジェクトのソースを貰った。

案の定ソースとコメントがずれまくっててシャレにならん・・・
786仕様書無しさん:2012/05/17(木) 17:47:12.96
コメント禁止の方はそれほど問題じゃ無いな
俺、コメントなんかほぼ書かないし
787仕様書名無しさん:2012/05/17(木) 20:35:40.97
関数作るのに申請が必要。
関数名は申請番号をつける。
788仕様書無しさん:2012/05/17(木) 22:46:50.74
>>784
けれど、その履歴が熟成された30年物だったら……?
789仕様書無しさん:2012/05/18(金) 00:27:51.60
行数を出来る限り短くするのが俺のポリシー

なので極力変数は切らない。
分岐は参考演算子のネスト。

俺流コーディングスタイル。
790仕様書無しさん:2012/05/18(金) 02:14:19.65
if(ture or fasle){

contineu;

}esle{

fasle retrun;

}
791仕様書無しさん:2012/05/18(金) 03:05:53.38
>>790
はぁ?
これでリターンする言語なんてあんの?
792仕様書無しさん:2012/05/18(金) 03:08:30.98
ああああ そゆことか。 こりゃ確かにイラつくわw
793仕様書無しさん:2012/05/18(金) 07:46:00.94
>>657
それはコーディングスタイルの話じゃないよね
794仕様書無しさん:2012/05/18(金) 08:04:32.31
/*
この関数なんだか挙動がおかしいからとりあえずコメントアウト
中の人が悪さしているかも
fn();
*/
795仕様書無しさん:2012/05/18(金) 21:32:33.68
>>791
C言語
int true = 1;
int false = 1;
796仕様書無しさん:2012/05/18(金) 22:58:22.00
>>790
間違い探し?
797仕様書無しさん:2012/05/19(土) 20:24:54.71
baseClassとかでいい物を、clazzと書く
798仕様書無しさん:2012/05/19(土) 20:51:41.00
コボラの書いたコードで

1ファンクションに3万ステップあった。
799仕様書無しさん:2012/05/19(土) 22:09:26.69
それはもはやコーディングスタイルの問題ではなく
そいつのプログラミングスキルの問題だな
800仕様書無しさん:2012/05/22(火) 22:47:53.70
>>684
それ自分はよくやる。戻り値を変数に居れて最後にリターンしたいから。その際に変数名で悩みたくない。
801仕様書無しさん:2012/05/23(水) 06:05:53.66
>>800
いやこれの注目点はif文の条件の出所じゃね
クラス変数としても使うなら引数として用意して欲しい
802仕様書無しさん:2012/05/23(水) 06:44:26.47
>>800
処理の見通しが悪くなるから俺はイヤだな
関数の前半で値が確定してるにもかかわらず
最後でreturnされたら、影響が後半で発生してないか
いちいち考えなきゃならんのがメンドイ
803仕様書無しさん:2012/05/23(水) 09:33:43.27
え?>>684>>685で答えが出てるんじゃないの?
804仕様書無しさん:2012/05/23(水) 10:39:15.55
>>684は解釈の仕方がいくつかあるなw
自分的には finally 使わないで書く事多いからよくやる。
805仕様書無しさん:2012/05/23(水) 19:23:20.20
>>803
分岐とreturnの間に別の処理があるつもりで
反応してるやつも多いんだろ
806仕様書無しさん:2012/05/23(水) 22:13:17.23
>>805
まさかそのままだったのかwww
当然ながら処理が省略されてるもんだと思ってたw
807仕様書無しさん:2012/05/23(水) 23:25:54.83
>>806
確かにコレがそのままなら、>>685で終わりw
808仕様書無しさん:2012/05/24(木) 09:12:00.04
分岐とreturnの間に戻り値に影響しない処理が入ってたらそれこそイラッとする
809仕様書無しさん:2012/05/25(金) 09:29:11.35
引数をアンスコ+大文字にする奴が居てイライラする

int func(int _Hoge, int _Hage)

みたいな感じ
810仕様書無しさん:2012/05/25(金) 09:35:20.83
>>809
C/C++なら、「それは非常識だ」と罵っていい。
811仕様書無しさん:2012/05/25(金) 19:09:41.26
public:

private:


この順番、どうよ?
812仕様書無しさん:2012/05/25(金) 19:38:14.00
というか無駄にprivate:があるのがイラッとする
privateメンバーがあるなら、classのデフォルトアクセスレベル。
全てpublicならstructのデフォルトアクセスレベルでいい。
813仕様書無しさん:2012/05/25(金) 21:14:25.63
>>811
classを使いたい奴が第一に欲する情報は、公開されているメンバに関するもの
それが先頭にまとめられていれば見やすい
よってそのスタイルは何ら問題ない
814仕様書無しさん:2012/05/25(金) 21:51:40.56
>>813
言いたいのはメンバ関数だと思うが、それはさておき
クラスの素性を知るには、そのクラス特有の基本的管理データ、つまりprivate変数を見るべきじゃないのか?
815仕様書無しさん:2012/05/25(金) 21:59:23.64
漢のなかの漢な規約では
構造体は一切使わず、全てクラスを使う
潔いから、というのがある
816仕様書無しさん:2012/05/25(金) 22:36:31.36
>>814
普通はprivate変数を見なくても分かるように設計します。
クラスを編集するときの話は別な。
817仕様書無しさん:2012/05/25(金) 22:59:17.56
コーディングスタイルの話じゃないけど、javaの記憶クラスのデフォルトが
publicでもprivateでもない中途半端なのがイラッつとする。
818仕様書無しさん:2012/05/25(金) 23:08:03.36
>817 しかも、明示的に"package"等と書けないのがイラッつきを加速させる
819仕様書無しさん:2012/05/26(土) 00:33:39.55
>>813
pimpl使えば気にならんだろ
class XxX
{
public:
;こう始まるほうがウザイわ
820仕様書無しさん:2012/05/26(土) 00:34:37.90
>>814
privateのメンバって、実装上の理由でたまたま持ってるだけだったりするから

クラスの素性を知るには、公開されているI/Fをまず調査する。
821仕様書無しさん:2012/05/26(土) 00:35:16.85
>>817
原則publicよりinternalスコープ使えって事だよ
いわせんな恥ずかしい
822仕様書無しさん:2012/05/26(土) 03:39:46.06
>>110
うちマジで、
> 入口一つに出口一つ
になりそうで、逸脱するときは手続きとれって事になりそうなんだけど、
まぁ俺今品証で直接は関係ないんだけど、文句でないのが不思議だ。
レガシーコードの中には間違いなくあると思うんだけどな。
みんなソース見せてくれないんで知らないけどw
823仕様書無しさん:2012/05/26(土) 04:32:07.43
perl書くときに、どうせ人に見せる事もないので、
C言語のように、main文がほしいと思って

#!/usr/bin/perl -w
use …

&main;

sub main{

}

と書いてますが、イラッつとしますか?
824仕様書無しさん:2012/05/26(土) 19:45:38.20
他人に見せないのなら気にすることはない
825仕様書無しさん:2012/05/26(土) 20:32:38.77
>>823
最初からそう書くことは少ないけど、段階的にそうなることはあるなw

ベタで書く→サブルーチンを分ける→途中の修正で、面倒くさいからとグローバル変数を直接参照する
→収拾がつかなくなってきたところでmainを分離して、出てきたエラーを一気に修正する
826仕様書無しさん:2012/05/26(土) 21:27:34.77
オブジェクト指向ですね
827仕様書無しさん:2012/05/26(土) 21:55:23.91
違うから
828仕様書無しさん:2012/05/26(土) 22:30:59.78
>>823

-w は今時使わない
& は今時使わない

お前のコードは古い。
829仕様書無しさん:2012/05/26(土) 23:05:10.42
即ちイラッつとするコーディングスタイルである
830仕様書無しさん:2012/05/27(日) 10:52:44.39
軽口叩いてるコメントって書くのはいいけど読まされるとイラッと来るからやめて欲しい
831仕様書無しさん:2012/05/27(日) 11:13:42.55
まともな神経してたら、書くのも違和感を覚えるだろう。
832仕様書無しさん:2012/05/27(日) 12:26:47.70
変数名や関数名にROMAJIを使わないでください
833仕様書無しさん:2012/05/27(日) 16:58:11.32
samuraiとかninjaみたいに、英語にしたくてもアッチの国でローマ字で通っちゃってる言葉の場合はどうすればいいだろう。
834仕様書無しさん:2012/05/27(日) 17:07:07.97
>>833
それは立派な英語だろ
835仕様書無しさん:2012/05/27(日) 21:23:27.48
配偶者特別控除なんて変に英訳されたらたまらん。
836仕様書無しさん:2012/05/27(日) 21:54:28.02
それはコード内で識別子に使わずに文字列データとして扱うべし
837仕様書無しさん:2012/05/27(日) 23:21:47.22
HaiguusyaSpecialKoujo
838仕様書無しさん:2012/05/27(日) 23:36:18.74
某社の自治体向けパッケージではそのまま「配偶者特別控除」だな
個人的には漢字識別子名は邪道だと思うが、視認性がずば抜けてるのは認めざるをえない
839仕様書無しさん:2012/05/28(月) 00:23:45.53
// オブジェクト作成に必要なコードをこの下に挿入します。
840仕様書無しさん:2012/05/28(月) 01:17:07.48
if(1==a) というスタイルで書かれたソースをメンテしたときに、
for(i=0;10>i;++i)
i[dst]=i[src];
というコードを追加してやった。
841仕様書無しさん:2012/05/28(月) 02:08:59.50
>>840
普通に意味分かんない。
dst[i] = src[i] か?
842仕様書無しさん:2012/05/28(月) 06:21:33.73
a[b]でもb[a]でも参照するアドレスが同じ言語があるらしい
そう皆さんもよくしってるあれです
843仕様書無しさん:2012/05/28(月) 07:01:57.72
意味がわからずただ反抗するバカっているよな
844仕様書無しさん:2012/05/28(月) 07:02:58.73
意味がわからずただ反抗するバカっているよな
845仕様書無しさん:2012/05/28(月) 14:10:25.95
>>809
_大文字や__はCなら予約語だな。
#ifndef __HOGE_H__
とかもイラッとする
846仕様書無しさん:2012/05/28(月) 14:33:29.24
>>841
Cすらわからん奴がここにいるとは、信じられん
847仕様書無しさん:2012/05/28(月) 14:45:44.74
わかりやすく書け、ってちょっとイラッつとしたw
848仕様書無しさん:2012/05/28(月) 16:14:24.26
そういうネタだろう
849仕様書無しさん:2012/05/28(月) 17:40:17.47
>>832
ローマ字でもあってればまだいい。
一見英語なんだけどつづり間違いってのがあって
どんだけ直したかったかw
850仕様書無しさん:2012/05/28(月) 20:22:44.61
ここでもまたUwaRiteか
851仕様書無しさん:2012/05/28(月) 20:38:56.59
この板の伝説の逸品のひとつだな
852仕様書無しさん:2012/05/28(月) 21:38:10.07
>>840
if(1==a)
for(i=0;10>i;++i)
はありだな。定数が左に来ないと
比較演算子が画面右に寄って見づらい
853仕様書無しさん:2012/05/28(月) 21:50:05.01
結局>>840はどういう意味なんでしょうか?
Cはやったことが無いのでまったく意味がわかりません
誰か教えてください。
854仕様書無しさん:2012/05/28(月) 22:00:25.08
Cの配列はポインタみたいなものだっけ
もう五年くらい触ってないから忘れた
855仕様書無しさん:2012/05/28(月) 22:03:06.42
>>852
10>iはちょっといやじゃね?
数学の書き方からの借用でi<10が世界標準なきがする
856仕様書無しさん:2012/05/28(月) 23:18:07.63
857仕様書無しさん:2012/05/28(月) 23:53:36.86
>>853
通常、a(変数)==1(定数)って書く条件式を逆に記述してるから、他も入れ替えて記述したった!って事よ。
858仕様書無しさん:2012/05/29(火) 03:05:01.58
バカじゃないなら=を書き忘れた時の対策になる書き方の癖を付ける前に
=を書き忘れない癖を付けるもんなw
859仕様書無しさん:2012/05/29(火) 03:08:17.86
フェイルセーフ
860仕様書無しさん:2012/05/29(火) 04:51:14.73
癖の問題じゃねえよどう考えても
861仕様書無しさん:2012/05/29(火) 05:48:59.62
int arr[]={
  1
  ,2
  ,3
  ,4
  ,5
};
という最高にメンテしやすい表記編み出したんだけど使っていい?
862仕様書無しさん:2012/05/29(火) 06:32:50.37
>>857
左に変数書くのは常識でも何でもないのに身勝手極まりない話だよ
寧ろ左に定数置く方が多数派だろうに。

if( S_OK == Xxxx() )
オプソや、MS、Oracleなんかのサンプルコードじゃ大概
こんな風に左定数。
863仕様書無しさん:2012/05/29(火) 06:34:03.20
>>857
>i[dst]=i[src];
この部分は動くんですか?
864仕様書無しさん:2012/05/29(火) 06:44:33.06
>>863
*( i + dst ) = *( i + src );
865仕様書無しさん:2012/05/29(火) 08:14:25.89
言語実装上の間抜けな穴と認識している
動作が同一だからといって文法に基づく意味が同じとはいえない
866仕様書無しさん:2012/05/29(火) 12:40:39.34
>>858
一つの言語しか使えない土方はそうかもしれんが、
たいていのプログラマは複数の言語を使うわけよ
等号が = な言語で仕事しているときに、ちょっとデバグでC++のソースを触ったりすると、
間違えることもあるのだよ
867仕様書無しさん:2012/05/29(火) 13:06:33.50
まともなプログラマなら「運が良ければエラーになる」ようなものに頼らない。
868仕様書無しさん:2012/05/29(火) 14:57:58.26
逆にSQLとか書いてると==でエラー吐かれてずっと悩む時があるもんな…
869仕様書無しさん:2012/05/29(火) 16:41:24.05
ねーよ
870仕様書無しさん:2012/05/29(火) 18:19:43.91
>>863
自分で試さない奴がいちばんイラッつとする。
871仕様書無しさん:2012/05/29(火) 19:43:14.85
int a = 0 ;
int b = 0 ;
scanf("%d %d" , &a , &b ) ;
a ^= b ^= a ^= b ;
printf(" a = %d \nb= %d\n" ,a , b ) ;

みたいな感じで、一行スワップ書いたら怒られた
872仕様書無しさん:2012/05/29(火) 19:53:53.57
怒られたのはたぶん scanf() なんて使ってるから
873仕様書無しさん:2012/05/29(火) 20:11:27.21
scanfって一度の使ったことない
874仕様書無しさん:2012/05/29(火) 20:38:37.38
>>872
>>873
いや、実際にscanf使ったわけじゃないから。
875仕様書無しさん:2012/05/29(火) 21:54:21.53
>>872
何でだよ
scanfのパターンマッチが理解出来てねぇだろお前
876仕様書無しさん:2012/05/29(火) 22:07:31.87
aとbが同じ値のときのこと考えてないから怒られたらんじゃね?
877仕様書無しさん:2012/05/29(火) 23:15:03.81
>>871
自己満のトリッキーコード書く奴は怒られて当然
どうしてもそれがやりたきゃせめてマクロ化だろ
878仕様書無しさん:2012/05/29(火) 23:20:00.07
>>871はそれ書いて何がしたかったの?
格好つけたかったのか?
879仕様書無しさん:2012/05/29(火) 23:27:30.27
入力にscanfを使っても何も感じない馬鹿が1名いるな
特有の臭さがあるんでこいつのレスはすぐ分かる
880仕様書無しさん:2012/05/30(水) 01:19:50.06
やっぱsscanf_sくらいは使って欲しいよな!
881仕様書無しさん:2012/05/30(水) 04:12:19.10
sscanfなんざ使うよりscanfの方が安全だし、
文字の取りこぼしも少ない
実際scanfを使うことは少ないが、
一時ファイルなんかを対象にfscanfを
使うことは多い
882仕様書無しさん:2012/05/30(水) 06:17:59.87
まあたまにやりたくなるよな
地獄のミサワ

「ふ〜ん、このトリッキーコード、3年位前に俺も思いついたわ〜」とか
883仕様書無しさん:2012/05/30(水) 07:01:00.94
sprintf(buf,…);
int len=strlen(buf);
884仕様書無しさん:2012/05/30(水) 10:43:58.62
>>881
ひょっとしてギャg(ry
885仕様書無しさん:2012/05/30(水) 10:44:55.03
>>866
ない。
886仕様書無しさん:2012/05/30(水) 10:45:33.57
>>862
ひょっとしてギャg(ry
887仕様書無しさん:2012/05/30(水) 10:47:55.32
>>861
前職場の同僚にいたなあ>先カンマ
今のC/C++だと後カンマで書けと言わんばかりの仕様なんだが
888仕様書無しさん:2012/05/30(水) 15:59:23.52
アホみたいにステップ数を稼ごうとするのはコボラー時代からの悪習
889仕様書無しさん:2012/05/30(水) 17:46:05.44
前に見たC++のコードで

while(1) {
int Hoge = Hage();
if (Hogeの判定) {
goto Label;
}
break;
}


Lablel: :

ってのがあったんだけど、エラー処理にgoto使っているせいで変数宣言に
いちいちエラーが出るのを回避するためににやっていたみたい。
よくまあ思いつくなぁwwwと思ったんだが、ちょっとイラッつとした。
890889:2012/05/30(水) 17:48:27.06
× Lablel
○ Label
891仕様書無しさん:2012/05/30(水) 18:20:27.23
>>889
longjumpだっけ?
関数越えのgoto
それしないだけマシだと思う。
892仕様書無しさん:2012/05/30(水) 19:34:40.78
>>886
は?scanfの使い方も知らん素人が
マ板なんか来るなよ
893仕様書無しさん:2012/05/30(水) 20:00:39.11
>>892
背伸びしてレスしても恥かくだけだよ
fscanfとsscanfは稀に使うことはあるが、scanfを使うことはまずない
894仕様書無しさん:2012/05/30(水) 20:03:28.25
>>893
fscanfの話してたんだけど
つかレス番まちがえた >>884 だったな紛らわしい
895仕様書無しさん:2012/05/30(水) 20:05:56.45
try/finallyやまともな一行入力ライブラリが
標準でついてない糞言語にイラッと来る
896仕様書無しさん:2012/05/30(水) 20:21:25.16
>>887
長いSQL書いてたときは間カンマ(カンマで1行とる)にしてたなぁ。
あとSQLだと、

WHERE 1=1
AND a=hoge
AND b=hage
...

なんてのも。
897仕様書無しさん:2012/05/30(水) 20:21:26.50
898仕様書無しさん:2012/05/30(水) 20:23:08.56
WHERE
  1 = 1
 AND
  a = hoge
 AND
  b = hage
899仕様書無しさん:2012/05/30(水) 21:03:52.60
900仕様書無しさん:2012/05/30(水) 21:06:58.12
全体として少数派
901仕様書無しさん:2012/05/30(水) 21:08:52.98
てっきりコピペしてそのまま使わせないためにそうしてるものかと思っていた時期が私にも
902仕様書無しさん:2012/05/30(水) 21:49:22.51
>>897
そもそもネストが深すぎだろw
903仕様書無しさん:2012/05/30(水) 21:59:51.00
サンプルなんて盲信するなよ
904仕様書無しさん:2012/05/30(水) 22:40:23.90
どこぞの教科書やサンプル通りに右に定数書くヤツは
条件分岐で何を一番に見るか考えてない
905仕様書無しさん:2012/05/30(水) 23:30:29.43
>>904
$ tar xfJ linux-3.4.tar.xz
$ cd linux-3.4/
$ find . -name '*.c' | xargs pcregrep '==\s*[A-Z0-9_]+' | wc -l
127939
$ find . -name '*.c' | xargs pcregrep '[A-Z0-9_]+\s*==' | wc -l
6971

フム・・・・
定数が右ばかりにあるLinuxは危険だ。
今すぐインターネットから切断した方がいい。
906仕様書無しさん:2012/05/30(水) 23:34:56.89
定数というより式であるモノを持って来てドヤ顔
しかも何が問題か解ってないという
907仕様書無しさん:2012/05/31(木) 00:03:00.58
そもそも「定数を左に置く」なんてC/C++のバッドノウハウであって、
警告レベルを上げたり静的解析ツールかませば一発で解決すること
まぁ、C/C++はともかくとして、それをC#やJava等の他言語で実践している奴にはマジでイラッとくる
908仕様書無しさん:2012/05/31(木) 00:10:14.91
なんてこった読みやすくて素晴らしいGNUスタイルは定数を右に置くのか
しかし、定数だけGNUスタイルに合わせるのは問題だな
改行もインデントも至高のGNUスタイルにあわせなきゃっ!
909仕様書無しさん:2012/05/31(木) 00:12:53.26
未だ定数を左に置くのはエラー出すためだけだと思ってるヤツが居るんだな()
910仕様書無しさん:2012/05/31(木) 00:17:41.38
>>909
他に何があるっていうんだい?
911仕様書無しさん:2012/05/31(木) 00:20:34.98
定数を右に書くヤツは数個前のレスすら読めないそうだ
912仕様書無しさん:2012/05/31(木) 00:27:53.74
while( GetMessage( &message, 0, 0 ) > 0 )
読みづらいっつうの
913仕様書無しさん:2012/05/31(木) 00:46:07.20
>>912
BOOLに不等号使う必要あるのか?w
914仕様書無しさん:2012/05/31(木) 01:09:42.63
GetMessageの仕様は酷すぎて呆れるレベルだな
915仕様書無しさん:2012/05/31(木) 01:30:53.87
C/C++では、腐ったswitch文の代わりに if 〜 else if 〜を使うことも多い
その場合、左定数の方が圧倒的に見やすい
916仕様書無しさん:2012/05/31(木) 01:50:01.18
はぁ
917仕様書無しさん:2012/05/31(木) 02:30:23.65
左定数狂信者はもう分ったから
918仕様書無しさん:2012/05/31(木) 04:35:02.89
右定数
 信号は、赤いか
 信号は、黄色いか
 信号は、青いか

左定数
 赤いか、信号は
 黄色いか、信号は
 青いか、信号は

中華プログラマには下の文法の方がしっくり来るかもな
919仕様書無しさん:2012/05/31(木) 06:30:59.91
英語の語順と一緒だろ
920仕様書無しさん:2012/05/31(木) 11:39:35.76
>>912の何が問題なのかわからない・・・
921仕様書無しさん:2012/05/31(木) 11:47:51.67
if(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx < y)
よりは
if(y < xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)
のが単純に読みやすい
922仕様書無しさん:2012/05/31(木) 12:51:20.72
==だと左
大小だと<を使いたいから定数の一は固定じゃない
こう言う人だって居るんですよ!
1 < a && a < 10
923仕様書無しさん:2012/05/31(木) 17:24:41.21
>>921
つまり、定数か変数かは関係なく、
文字列の長さで右辺か左辺を決めるという流派か。
924仕様書無しさん:2012/05/31(木) 17:36:07.36
惜しいけどもうちょっと頭使って一般化してみよう
925仕様書無しさん:2012/05/31(木) 18:53:36.70
if(0 == a){}
else if(1 == a){}
else if(2 == b){}
else if(3 == a){}
926仕様書無しさん:2012/05/31(木) 21:13:34.56
if for while の後に空白がないのがイラッとする
927仕様書無しさん:2012/05/31(木) 21:14:46.44
>>922
それは見やすいからいいけどな
928仕様書無しさん:2012/05/31(木) 21:27:45.64
>>921
そもそも長くて読みにくいと思うような式を条件式には書かんなぁ。
929仕様書無しさん:2012/05/31(木) 23:23:30.89
>>918
語順で分かりやすさが変わると思うなら
中置法言語なんかやめて後置法言語つかってろよ
930仕様書無しさん:2012/05/31(木) 23:24:47.76
>>928
条件式でしか使わん変数作って回避だろ下らねぇ
931仕様書無しさん:2012/06/01(金) 00:13:20.80
俺の場合は、変数左に置いてた方が「この条件式ではこの変数の値が見たい」ってのが明らかで追いやすいと思ってるなあ
932仕様書無しさん:2012/06/01(金) 00:14:30.01
>926
(・∀・)人(・∀・) デスヨネ
933仕様書無しさん:2012/06/01(金) 01:40:05.38
>>929
順序で読み安さ(理解しやすさ)は変わるだろ普通。
934仕様書無しさん:2012/06/01(金) 01:53:16.84
>>925

if(0==a){}
else
if(1==a){}
else
if(2==a){}
else
if(3==a){}
else
if(4==a){}
else
{}
935仕様書無しさん:2012/06/01(金) 03:00:32.19
>>934

>>925
×if(2==a){}
○if(2==b){}

左も左なりに危険
936仕様書無しさん:2012/06/01(金) 06:22:54.00
他クラスの参照をメンバ変数に持っていたり、関数の引数にしていたりするクラスの宣言をするヘッダファイルに
それらのクラスのヘッダをincludeするのは禁止


これのせいで、ソースのほうに順番に注意しながらそれらのヘッダをinclude
たしかにものの本にはヘッダにヘッダをincludeするのは好ましくないとは書いてあるが
なんか・・・・・違うのではないかと思う
937仕様書無しさん:2012/06/01(金) 08:44:17.56
>>936
C++だとしたら、ヘッダ内にヘッダで使用するクラスの宣言を書けばよいだけでは?
ヘッダ内で実態が必要ならともかく、参照やポインタだけなら宣言があればすむはず。
938仕様書無しさん:2012/06/01(金) 09:23:13.00
==の左右はどっちでもいいけど
>や<の左に定数を置かれるのはちょっと嫌(>>922除く)
数学の癖があるからだろうけどね。
939仕様書無しさん:2012/06/01(金) 10:06:51.32
>>936
そういう場合はincludeの代わりに前方参照宣言を書くか
pimplを使えばincludeに依存しないように出来る。

とはいえinclude禁止はやりすぎだね。
引数や戻り値の型がstringみたいなtypedefやtemplateだったらどうにもならん。
940仕様書無しさん:2012/06/01(金) 10:19:10.91
>>938
数学で言うなら比較は = 代入は := がよかったなぁ
a = a + 1 とか初見なら悩むぞ
941仕様書無しさん:2012/06/01(金) 13:18:21.21
pascal!
942仕様書無しさん:2012/06/01(金) 13:33:07.64
あの使い分けはたすかる
943仕様書無しさん:2012/06/01(金) 13:52:33.75
>>940
でも等号より代入の方が使用機会が圧倒的に多いんだよなぁ
代入の度に2文字タイプするのはうんざりする
944仕様書無しさん:2012/06/01(金) 16:44:52.73
APL「代入は“←”だろうjk」
945仕様書無しさん:2012/06/01(金) 20:08:41.42
>>939
includeのネストを禁止するだけだから、ソースの方にincludeすればいいだけ。
ただ、俺もそれはあまり好きじゃないな。
ヘッダ内で参照する型や定数を外部から差し替えられるとかtrickyな使い方は
思いつくけど、なんか他にはっきりしたメリットってあるのかな。
946仕様書無しさん:2012/06/01(金) 21:34:57.03
>>945
ソースにincludeはもうやっていてinclude順を注意するのが大変って事でしょ。
前方宣言やpimplでそれを減らせるよって話。

あるヘッダを使うのに他のヘッダを沢山includeしなきゃコンパイル出来ないのは異常だと思うな。
947仕様書無しさん:2012/06/01(金) 21:46:41.82
includeが問題じゃなくて
ヘッダーに伴う速度低下が問題なら、
前方宣言用ヘッダー用意しとくと
ある程度楽になると思う
948仕様書無しさん:2012/06/01(金) 22:01:26.26
>>946
あぁ、そっちじゃなくて「どうにもならん」の方。
949仕様書無しさん:2012/06/02(土) 01:36:58.67
boost、特にプリプロセッサを活用してるとアホみたいに重い。
なんとかしたいんだが?
950仕様書無しさん:2012/06/02(土) 05:21:27.89
タイムマシンを作ってビョビョーンスポッスポがC++を作る前にあぼーんしろ
951仕様書無しさん:2012/06/02(土) 15:49:08.83
そして元の時間に戻ってみると、ブビ達の楽園があったとさ
952仕様書無しさん:2012/06/02(土) 16:03:32.18
OLEが存在しないんでDelphiの天下だろ
953仕様書無しさん:2012/06/02(土) 18:54:48.43
C++がなかったとしても、ちょっと違うだけのJava類似言語が出てただろう。
954仕様書無しさん:2012/06/02(土) 22:05:53.19
もしかして: ビョビヨーンスポッスポッ

グーグル先生はゆかいだなー
955仕様書無しさん:2012/06/02(土) 22:18:21.51
>>949
プリコンパイルヘッダを作るくらいしかないかなぁ

956仕様書無しさん:2012/06/03(日) 01:08:39.31
>>944
APLとか初めて知った←はすごいなw
957仕様書無しさん:2012/06/03(日) 01:13:55.93
Smalltalkもそうだけどな
だいたい構文:=の方が有名かもしれんが
958仕様書無しさん:2012/06/03(日) 01:25:15.62
まじかw:=だけだと思ってたぜ
959仕様書無しさん:2012/06/03(日) 01:33:26.62
折角だからネタでもw
boolと比較する奴。組み合わせが多くて思考エネルギーが奪われるwww

if (isDone() == true)
if (isDone() != true)
if (isDone() == false)
if (isDone() !== false)
960仕様書無しさん:2012/06/03(日) 01:43:41.40
!==ってどうなるんだ?
961仕様書無しさん:2012/06/03(日) 01:49:30.02
>960
型が違うと成立。
型が同じで値が違うと成立。
型が同じで値も同じだと不成立。

!=だと、型が違っても暗黙キャストで値が同じになると成立。
962仕様書無しさん:2012/06/03(日) 02:01:00.93
>>960
すまんwww俺テキトーにコピペしてたw
963仕様書無しさん:2012/06/03(日) 02:03:35.53
>>961
マジでwそんなのあんのかwww
964仕様書無しさん:2012/06/03(日) 02:17:01.06
>>963
javascriptじゃなかったか?
965仕様書無しさん:2012/06/03(日) 02:20:37.44
>963
『この変数はこの型の値のみを格納する』って決まってる言語ではありえない発想だけど、
『ひとつの変数にどんな型でも格納できる』って言語もいっぱいあるからね。
後者の言語では、数値の 10 と文字列の "10" を比較するようなケースもある。
前者の言語だと関数で判定するとかになるだろうけど、後者の言語は演算子で対応してるものが多い。
966仕様書無しさん:2012/06/03(日) 02:25:51.42
>>964
おお、厳密非等価演算子というのか!ありがとう
しらんかったべんきょうになるなーwww

967仕様書無しさん:2012/06/03(日) 02:39:32.40
> 『ひとつの変数にどんな型でも格納できる』って言語もいっぱいあるからね。

最悪だな。

普通一つの変数には互換性のある型しか
入れないものだろう。

同じ名前の変数を違う用途に
使い回しでもしてるのか?
968仕様書無しさん:2012/06/03(日) 02:45:11.75
>>965
> 前者の言語だと関数で判定するとかになるだろうけど、後者の言語は演算子で対応してるものが多い

後者の言語って演算子が多くなりがちだよね。
== だけじゃなくて、 === だったり ne だったり

前者の言語は型ごとに演算子をオーバーロードできる言語が多いから
シンプルになる。
969仕様書無しさん:2012/06/03(日) 03:07:06.08
>967
たとえばPHPの標準関数strposは、『第1引数の文字列のうち、第2引数の文字列はどの位置にあるか』を返す関数だ。
先頭を 0 とし、見つからなかった場合は false を返す。

$temp = strpos("abcdefg", "abc");
if ($temp == false) { /* 暗黙の型変換により 0 と false は同値なので実行される */ }
if ($temp === false) { /* 暗黙の型変換が行われないので 0 と false は同値ではないので実行されない */ }

2行目の条件文はおそらく間違いであり、3行目が正しい条件文だと思われる。
ではなぜこのような、間違いを誘発しやすい仕様なのかというと、理由はいくつかあるようだが、
1番大きいのはPHPがインタプリタ言語であるということだろう。
コンパイル言語ではコンパイル時点で型チェックを行えるため、型チェックに処理負荷がかからない。
いっぽうインタプリタ言語は、型チェックを行うとしたらそれは実行時に行われるため、すべての変数に型が定められていたら、
代入や比較の演算をおこなうたびに型チェックの負荷が発生し、しかもそれはコーディングの技術で回避するのは不可能となる。
だから、型チェックは『必要なときにのみ明示的に行う』という仕様になっている。
970仕様書無しさん:2012/06/03(日) 03:14:45.50
で、ほとんどが「必要な時」になるので
単に間違いやすいだけなものになるんだよね。
971仕様書無しさん:2012/06/03(日) 03:19:11.17
スクリプト言語って大抵お気軽に使えることを
前提に作っちゃって、想定外に規模が大きいものに使われ
始めると、お気軽に使える機能が、バグを誘発しやすい機能に
なっちゃうんだよね。
972仕様書無しさん:2012/06/03(日) 03:51:34.01
>>967
とはいえ変数に型がついてる言語も多く無いからどこでもは通用せんだろ
C++, C#, D, Go, Delphi, Ada, PL/SQL, Simula, ActionScript, Dart, VB, VB.net, Java, Eiffel, Haskell, OCaml,
Fortran. COBOL(?)

動的型付け
*sh( bash, zsh等 ), bat, R, PowerShell, BeanShell, VisualWorks( Smalltalk ), Objective-C, Lisp, Schame, Logo,
APL, Perl, PHP, Python, Ruby, ECMAScript, Groovy, Clojure, E, BASIC, PL/SQL, VB, VBScript, MATLAB,
Lua, ColdFusion, AppleScript, PostScript, Erlang, Tcl, MUMPS

ついでに型無し
BCPL, B, Forth, SNOBOL, RPG
973仕様書無しさん:2012/06/03(日) 03:52:08.20
>>969
見つからなかったら-1を返すようにしとけばいいのに。。
やっぱPHP って詰めが甘いよな。
974仕様書無しさん:2012/06/03(日) 08:21:57.29
PHPである奴だな、型まで比較する奴。
975仕様書無しさん:2012/06/03(日) 11:51:08.51
>>972
シェルは盛りすぎだろ。あれは文字列でしかないぞ。
976仕様書無しさん:2012/06/03(日) 11:55:13.13
>>975
シェルだって配列や連想配列持てるぞ
あと、OOPL以外の動的型ならある意味どれも文字列で持ってると
正規化(みなす)できるだろ。関数の代入だって、実際はハンドルだろうと
関数名を持ってるとみなすことが出来る
977仕様書無しさん:2012/06/03(日) 11:58:26.97
PowerShellとか$aに.NETなクラスインスタンス全部ぶら下げられるし
978仕様書無しさん:2012/06/03(日) 13:52:09.78
次スレタイ案

イラッッつとするコーディングスタイル
イラッつつとするコーディングスタイル
979仕様書無しさん:2012/06/03(日) 14:00:40.65
2 イラッつとするコーディングスタイル
980仕様書無しさん:2012/06/03(日) 14:04:11.94
イラッつとするコーディングスタイル == 2
981仕様書無しさん:2012/06/03(日) 14:11:11.03
++イラッつとするコーディングスタイル == 2
これならスレタイで内容が一発だろ
982仕様書無しさん:2012/06/03(日) 14:11:48.60
連投したかと思ったら被っただと…
983仕様書無しさん:2012/06/03(日) 14:28:12.33
だから定数は左辺にしろとあれほど議論されただろうに
2 == イラッつとするコーディングスタイル
984仕様書無しさん:2012/06/03(日) 14:32:34.97
そもそもマジックナンバーやめれ
985仕様書無しさん:2012/06/03(日) 14:42:39.48
つまりこうしろと

TWO == イラッつとするコーディングスタイル
986仕様書無しさん:2012/06/03(日) 14:48:07.41
>>983
馬鹿、右辺に定数書いたほうがイラッとするから右でいいんだよ
987仕様書無しさん:2012/06/03(日) 14:49:46.46
>985
イイカンジのウザさだな
988仕様書無しさん:2012/06/03(日) 14:56:21.57
>>985
いいな?
989仕様書無しさん:2012/06/03(日) 15:01:46.91
>>925に対する>>934の見落としで、定数右辺説は終わってる
990仕様書無しさん:2012/06/03(日) 15:04:39.44
右辺に定数置くのがウザイってのは、代入ミスのチェックじゃなく
比較演算子が右によるからだと何度いわせれば・・・
991仕様書無しさん:2012/06/03(日) 15:07:36.55
もっともマクロや関数使えば左辺定数強制できるけどな
SUCCEEDED( Function() )
992仕様書無しさん:2012/06/03(日) 15:08:56.92
このスレ吐き気する
993仕様書無しさん:2012/06/03(日) 15:12:11.01
来たぞ

TWO == イラッつとするコーディングスタイル
http://kohada.2ch.net/test/read.cgi/prog/1338703896/
994仕様書無しさん:2012/06/03(日) 15:14:00.16
左辺定数厨を皮肉ってんのか
995仕様書無しさん:2012/06/03(日) 15:19:52.26
うめ
996仕様書無しさん:2012/06/03(日) 15:20:20.66
one
997仕様書無しさん:2012/06/03(日) 15:21:06.93
two
998仕様書無しさん:2012/06/03(日) 15:39:30.02
(2 == イラッつとするコーディングスタイル) && (nextMethod());
999仕様書無しさん:2012/06/03(日) 15:42:57.19
1000仕様書無しさん:2012/06/03(日) 15:43:20.17
((2 == イラッつとするコーディングスタイル) && (nextMethod())) == TRUE
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。