ぱっと見て「ヘタだなぁ」と思うコード

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
基礎編
・サブルーチン(関数)が数百行
・ネストが深い
・マジックナンバーが使われまくり
・識別子(変数名、関数名)が意味不明
・グローバル変数使われまくり

↓応用編、詳細編どうぞ

2デフォルトの名無しさん:2006/03/09(木) 10:17:53
2げっとー!
3デフォルトの名無しさん:2006/03/09(木) 10:18:30
・コメントの装飾が妙に凝っている
・古いコードがコメントアウトで残してある(しかも履歴つき)

4デフォルトの名無しさん:2006/03/09(木) 10:25:01
>・古いコードがコメントアウトで残してある(しかも履歴つき)
それが下手と関係あるのか?
5デフォルトの名無しさん:2006/03/09(木) 10:39:34
>>4
かなりヘタ。

6デフォルトの名無しさん:2006/03/09(木) 10:47:24
古いコードって、コメントしても元に戻すことってまずないよね
俺はコメントしても、時間が経ったらコメントごと消すようにしてる
7デフォルトの名無しさん:2006/03/09(木) 10:48:45
>・古いコードがコメントアウトで残してある(しかも履歴つき)

究極は、#ifdef 0 でコメントアウト。
8デフォルトの名無しさん:2006/03/09(木) 10:49:10
イベントドリブンの環境で、「グローバル変数状態つかいまくり」状態が多いね。
イベントハンドラから呼ばれた入力データのチェックルーチンが直接コントロール
なり、フォームの入力を保持してる変数を直接見にいってるから、使い回しがきかない
とか。

9デフォルトの名無しさん:2006/03/09(木) 10:53:10
役満\(^o^)/

これも置いておきますね。
・制御文が2種類しか使われない
10デフォルトの名無しさん:2006/03/09(木) 10:57:15
>>7
#if 0
ではないのか
11デフォルトの名無しさん:2006/03/09(木) 11:13:06
いまメンテしているC++のクラスのメソッド

Public:
int initialize()
int execute()
int finalize()

以上。
12>>11 :2006/03/09(木) 11:15:46
補足。

int initialize()・・・呼ばれていない
int execute()・・・約1200STEP
int finalize()・・・呼ばれていない

orz
13デフォルトの名無しさん:2006/03/09(木) 11:17:21
>>11-12
下手なだけで、「int execute()・・・約1200STEP」を読めなくは無い。
クラスにしてくれてるだけ、メソッド分離しやすいぉ。
14デフォルトの名無しさん:2006/03/09(木) 11:49:21
いやまあヘタなコードのスレですから
15デフォルトの名無しさん:2006/03/09(木) 11:51:58
修正可能なソースはヘタじゃないですぉ。
ニッチもサッチも逝かないのが、ハードコーディングですぅ。
16デフォルトの名無しさん:2006/03/09(木) 12:12:29
>>6
古いコードは残しておく。

別にパフォーマンスにも響かないし、最近のエディタなら
邪魔だと思ったらたたむことも出来る。

とくに最適化前のコードは絶対に残しておく。計測用に
切り替えて使うこともあるから。

一度書いたものはなんであれ財産。消すことは絶対許して
いない。
17デフォルトの名無しさん:2006/03/09(木) 12:17:29
>>16
なんか力、入ってますねー。
ソースコード管理システムを使ってれば、HEAD/trunkで消してもすぐ元に戻せるんですが。
自分はソースの見通しが悪くなるようなのは積極的に消します。
残すのはコメントでリビジョン書いとくくらい。
18デフォルトの名無しさん:2006/03/09(木) 12:27:33
人力でバージョン管理やってるところって、絶対「財産」を無駄にしてるよな。
一世代くらい前ならともかく、数世代まえになると、コメントアウトでコードを
残すなんてことをやってるところじゃ、復元不可能。
19デフォルトの名無しさん:2006/03/09(木) 12:29:13
つ CVS >>16

バージョンにブランチ(枝)すると、複数の分岐で開発出来るお。
で、良いやつを本枝にマージすると完璧。
20デフォルトの名無しさん:2006/03/09(木) 12:53:55
>>6
バックアップ取れば良いじゃん
21デフォルトの名無しさん:2006/03/09(木) 12:58:44
マジックナンバーって何だっけ
度忘れちゃた
22デフォルトの名無しさん:2006/03/09(木) 13:02:09
ここはツールでソース管理されてないインターネッツですね。
23デフォルトの名無しさん:2006/03/09(木) 13:05:50
お前ら、あ、愛してる。だからバージョン管理kwsk教えて。
24デフォルトの名無しさん:2006/03/09(木) 13:10:49
Cで、NULLと0と'\0'の使い分けができてないやつとか。

文字列のクリアで
memset(str, NULL, sizeof str);
みたいな。
(memset()使ってるってのもあれだし。本人は手間をかけて安全なコーディングを
してると思ってるっぽいけど)
25デフォルトの名無しさん:2006/03/09(木) 13:13:08
>>24
NULLは意味的に間違いとしても、
memsetが何でダメ?

組み込み系ソースのfor文で回して0にしてたり、
メモリのアロケートやり直しで初期化してるつもり(本人から確認)のコードの方が驚いた。
26デフォルトの名無しさん:2006/03/09(木) 13:32:19
>>25
初期化子使えとかそういうことでは?
27デフォルトの名無しさん:2006/03/09(木) 13:35:26
>>25
strcpy(hoge, "初期値"); か hoge[0] = '\0'; で十分なところを、
memset()で全部クリアしてるってこと。
28デフォルトの名無しさん:2006/03/09(木) 13:49:45
>memset()で全部クリアしてるってこと。

これ、C++とかじゃなくて、C言語とかだと結構セキュアに動作するお。

C言語の開発中バグでメモリ破壊したときとかに。
29デフォルトの名無しさん:2006/03/09(木) 14:03:54
フフフフフフフフフフフフフ・・・が見れなくなるのでさびしい
30デフォルトの名無しさん:2006/03/09(木) 14:06:42
>フフフフフフフフフフフフフ・・・
って難だっけ?

メモリカードとかはFFで初期化したような。
31デフォルトの名無しさん:2006/03/09(木) 14:10:53
Cの文字列を入れる変数で
hoge[0] = '\0'
ならバグるところを
memset()
ならバグらないって状況を、セキュアと呼んでいいのだろうか。。。
32デフォルトの名無しさん:2006/03/09(木) 14:14:10
28自体もスレタイに沿ったコードの例のつもりで書き込んだということだろう。
33デフォルトの名無しさん:2006/03/09(木) 14:51:24
>>31
開発中にアプリがどっかーんといくときに、
OS吹っ飛ばさない、その方がボロクソデバッガでも変数とか把握しやすい、ということ。

Win16時代にC言語プログラミングしてない若造には分からんこと。
34デフォルトの名無しさん:2006/03/09(木) 14:53:13
そこでOpenBSDですよ。
3533:2006/03/09(木) 14:53:14
ちなみにC++ではヌルターミネイト自体古いというか、もうやらんじゃん。

>hoge[0] = '\0'
を評価しても、C言語ではふつー、C++ではダサダサ。
36デフォルトの名無しさん:2006/03/09(木) 14:55:03
perl で

`rm $foo`;
`mv $bar $bar.bak`;

とか。
37デフォルトの名無しさん:2006/03/09(木) 14:57:37
>>33
バグが表面化しないのくらべたら、OSごとドッカーンといくほうがかなりマシというか。
38デフォルトの名無しさん:2006/03/09(木) 15:01:37
どうも37は分かってないようだが、C言語はC++と違って大局的な書き方じゃないから、
OSがドッカーンと逝かない(普通逝かない。Win16以前しかそんな話無いし、汎用機がドッかーンと逝ったら大騒ぎで該当ツール使用禁止令も出る)アプリをバグ無しアプリと言うんだが。
39デフォルトの名無しさん:2006/03/09(木) 15:03:58
不毛だなぁ
40デフォルトの名無しさん:2006/03/09(木) 15:04:08
>>33
安全策をとるならば、文字列の終了位置であるはずのところに
'\0'を上書きしとくべきなのでは?
41デフォルトの名無しさん:2006/03/09(木) 15:07:25
>>40
 >>35
4241:2006/03/09(木) 15:09:11
で、C言語時代にはOSとかアプリ実行環境が不安定にならないことに最重点を置いたから、
ヌルターミネイトを大目にとmemsetとした。
43デフォルトの名無しさん:2006/03/09(木) 15:10:45
>>1
ヘタなスレ立てだな・・・
最近立つのはゴミスレばっかり
44デフォルトの名無しさん:2006/03/09(木) 15:12:06
if (hoge != false)
なんてのを見つけると、そこから先を読むのが厭になる。

>>40
それをしないのが、下手糞が下手糞たる所以。
45デフォルトの名無しさん:2006/03/09(木) 15:12:36
たとえば
(1)バグがある
(2)コードを追いかけたりしない
(3)とりあえず文字列をmemset()で0クリアしてみよう
(4)直った!
これは直ったわけじゃなくて、表面化しなくなっただけ。
こういうことをしてる新人がいたら、デバッグをやり直させるでしょ。

memset()で前もってクリアしておこうってのは、いきなり(4)の状態になる
可能性があるわけで、バグの存在さえ認識できない可能性がある。

46デフォルトの名無しさん:2006/03/09(木) 15:13:11
そういえば、C言語時代は構造体をmemsetってもう決まりだったお。
charも安心、intとかfloatもintelでは0になるし、実は他CPUでも0になる。
どのソース見てもmemsetの嵐だお。
47デフォルトの名無しさん:2006/03/09(木) 15:14:12
45=しつこい

どちらにせよ、
>hoge[0] = '\0'
おまいはC++時代のダサダサフ用人間。
48デフォルトの名無しさん:2006/03/09(木) 15:14:34
int foo[10];
for(int i = 1 ; i < 11 ; i++)
foo[i - 1] = 0;
49デフォルトの名無しさん:2006/03/09(木) 15:16:05
>>41
いや、それは違うだろ。
50デフォルトの名無しさん:2006/03/09(木) 15:16:24
>>45
>memset()で前もってクリアしておこうってのは、いきなり(4)の状態になる
>可能性があるわけで、バグの存在さえ認識できない可能性がある。

C言語時代にはこれを目指してmemset使われまくり(当時の慣習)でしたが、何か?
51デフォルトの名無しさん:2006/03/09(木) 15:17:21
正直、今の時代において何の役にもたたない昔話はどうでもいい。
52デフォルトの名無しさん:2006/03/09(木) 15:17:31
49=stringを知らない無知を無知と分からない
53デフォルトの名無しさん:2006/03/09(木) 15:18:16
>>44
if (hoge == true)
に比べたらまだましではなかろうか。
54デフォルトの名無しさん:2006/03/09(木) 15:18:24
>>51
なら、
>hoge[0] = '\0'
こんなコードを書く香具師は頃してしまえ。
55デフォルトの名無しさん:2006/03/09(木) 15:18:35
こちらのスレへどうぞ
http://pc8.2ch.net/test/read.cgi/tech/1127283408/
56デフォルトの名無しさん:2006/03/09(木) 15:18:55
>>53
同意。

trueは不定、falseは0固定だもんね。
57デフォルトの名無しさん:2006/03/09(木) 15:21:02
C言語コードは構造体と初期化の嵐だから、
「C言語+memset」
「C+++stringでヌル無視」
の組み合わせが良い。

>hoge[0] = '\0'

こいつはこれだ! >>ttp://pc8.2ch.net/test/read.cgi/tech/1127283408/
58デフォルトの名無しさん:2006/03/09(木) 15:21:25
>>50
OSのカーネルとか、データベースとか信頼性が要求されるコードでは、
そういうの見たことないなぁ。
59デフォルトの名無しさん:2006/03/09(木) 15:21:29
瞬時に糞とわかるコード
・mainメソッドの先頭30行くらい全部変数宣言だけになっているとき
60デフォルトの名無しさん:2006/03/09(木) 15:21:34
>>50
それは君の周りだけでは?
61デフォルトの名無しさん:2006/03/09(木) 15:23:02
>>58
 >>60
62デフォルトの名無しさん:2006/03/09(木) 15:24:04
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'

こいつヴぁか杉!!!!!!!!!!!!!!!!!!!!!!!!!!!!
63デフォルトの名無しさん:2006/03/09(木) 15:26:01
そっとしといてやれよ。
きっと、デスマーチが当たり前な悲惨な現場で育ったんだよ。
64デフォルトの名無しさん:2006/03/09(木) 15:27:07
日中こんなスレに常駐して暇潰してる奴の生産性をどうにかしてください。
65デフォルトの名無しさん:2006/03/09(木) 15:28:15
>>62
そういう暴れ方しても、言ってることに説得力でないよ。
66デフォルトの名無しさん:2006/03/09(木) 15:28:27
現代においてあんなことを言う56のコードも下手なんだろうなぁ。
67デフォルトの名無しさん:2006/03/09(木) 15:29:25
説得力が無くて結構。

至上最強の恥ずかしさ: hoge[0] = '\0'

C言語解説本の出だしでしか見た事無いぉ。
68デフォルトの名無しさん:2006/03/09(木) 15:30:40
>>66
現代においてもtrueが不定という定義は普遍ですが、何か?

逆に古い実装のtrueがdefineされてる場合にのみ正常動作。
69デフォルトの名無しさん:2006/03/09(木) 15:31:56
>>68
俺はC++のつもりで話をしたが、どうやらお前はC++とは別の言語の話のようだ。
すまんな、俺の勘違いで。
70デフォルトの名無しさん:2006/03/09(木) 15:32:35
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'
>hoge[0] = '\0'

氏んだ方がいいよwwwwwwww
71デフォルトの名無しさん:2006/03/09(木) 15:33:01
69=至上最低のプログラマ二人目

C言語ならTRUEがdefineされてるから正常動作だが、
C++言語なら言語仕様のtrueだから値がますます不定になる。
72デフォルトの名無しさん:2006/03/09(木) 15:44:12
>>44 >>53 >>71

あえて聞きたいのだが、不定でも別に問題ないんじゃないか?
例えば↓のようなコードが合っても、
if( b==true ) ;
代入時でどうせ↓のようにしてるんだから問題ないんじゃないの?
bool b = true;

↓コレだったらまあわかるんだけど。
int i = 1;
if( i == true );

↓この記述が悪いっていってる意味があまりわからん。
if( b==true ) ;
73デフォルトの名無しさん:2006/03/09(木) 15:44:40
bool b = true;
int *p = reinterpret_cast<bool*>(&b);

こうでもすれば*pの値はたしかに不定だろうが、static_cast<int>(true)は1だ。
JIS X3014:2003の4.7の4節。
74デフォルトの名無しさん:2006/03/09(木) 15:46:04
>>72
>代入時でどうせ↓のようにしてるんだから問題ないんじゃないの?
>bool b = true;

Win32APIをご存知無い?
返す値がBOOLでありながら不定(実体はハンドル。メモリポインタ)だお。
75デフォルトの名無しさん:2006/03/09(木) 15:47:19
>>74

それはWin32APIのインターフェースでTRUEとFALSEという定数で比較するようにすべきだから、
C++のtrueとfalseで比較するほうが間違ってるんじゃないか?
76デフォルトの名無しさん:2006/03/09(木) 15:47:29
>>72
そういえば、mem〜、str〜系の関数も失敗で0を返しても、
成功はポインタ返してtrueの代わりにしてるね。

77デフォルトの名無しさん:2006/03/09(木) 15:48:57
>>75
現実は真偽値の定義をとって、trueの場合は0以外の不定値をふつーに返す関数が溢れながら、
それを知らずにとは。

>代入時でどうせ↓のようにしてるんだから問題ないんじゃないの?
>bool b = true;


こいつプロジェクトメンバから外せ。
7872=75:2006/03/09(木) 15:49:01
あるぇ?BOOLの比較ってTRUEかFALSEでいいんだっけ?
Win32APIなんて懐かしいものはもう忘れた orz
79デフォルトの名無しさん:2006/03/09(木) 15:49:29
>>78
TRUE比較はダメ。
80デフォルトの名無しさん:2006/03/09(木) 15:49:34
こういうスレって必死に揚げ足取ったり重箱の済みつついたりに終始して
得る物がないんだよな。
81デフォルトの名無しさん:2006/03/09(木) 15:50:13
80=常識を知らず叩かれた香具師
82デフォルトの名無しさん:2006/03/09(木) 15:51:21
おまえら、さっさとバグつぶせよ
8375:2006/03/09(木) 15:51:49
>>77
>現実は真偽値の定義をとって、trueの場合は0以外の不定値をふつーに返す関数が溢れながら、
そういう戻り値は大概intだろ?boolのtrue、falseと比較する意味がわからん。
それにそういう関数の仕様を読めば何と比較するか書いてあるだろ。trueとfalse以外で比較することが。
それをtrueとfalseで比較するのか君は。
84デフォルトの名無しさん:2006/03/09(木) 15:51:59
TRUE,FALSE,true,falseの区別がむつかしいなら
C++なんて窓から投げ捨ててCやれば良いじゃん
85デフォルトの名無しさん:2006/03/09(木) 15:52:09
>>82
戦死にもたまには休息が必要だ
86デフォルトの名無しさん:2006/03/09(木) 15:53:44
バグと戦い2chでも戦い…
大変だねPGって
87デフォルトの名無しさん:2006/03/09(木) 15:53:46
すげー伸びてるなあ
クソスレかと思ったら良スレだったんだな
88デフォルトの名無しさん:2006/03/09(木) 15:54:20
>>83
おまい、超無知杉。

char *pc = getPt();

if (!pc) throw exception("Error");

とかやるじゃん。
8988:2006/03/09(木) 15:55:19
char *pc = getPt();

if (pc = false) throw exception("Error");
はおkでも、

if (pc != true) throw exception("Error");
はダメだろ。
90デフォルトの名無しさん:2006/03/09(木) 15:56:21
スレを読まずにカキコするが、

おまえら こういう話 大好きだよな
91デフォルトの名無しさん:2006/03/09(木) 15:56:49
どっちにしても、bool値と比較してる時点で「ヘタだなぁ」と思うよ
9275:2006/03/09(木) 15:57:21
>>88
いや、あの、それくらいは知ってるんだが…。

俺が言いたいのは↓のような間違ったtrue、falseの使い方を例示もせず
char *pc = getPt();
if (pc==false) throw exception("Error");

↓のコードだけ例示して==false使う奴はアホとかいってるのがよくないといいたいの。
if (pc==false) throw exception("Error");
93デフォルトの名無しさん:2006/03/09(木) 15:57:48
>>87
もしそう見えてしまうならまともな書籍買ってきて目を通したほうがいい。
こんな糞スレにいるより10倍の量と精度の知識が身につくだろう。
9456:2006/03/09(木) 15:59:53
>>92=ゴミ
結論。
おまいの読み間違い。
>>44 >>53 >>56
の流れだから、TRUEとの比較はダメの流れ。

89でも同じ文章を書いている。
9575:2006/03/09(木) 15:59:54
>>89
いや、ポインタをfalseで比較するのは駄目かと・・・。NULLで比較すべきかと・・・。

その元のgetPt関数だって、エラーの場合は戻り値でreturn NULL;とか書いてるはずだろ。
return false;じゃ型の不一致でコンパイルエラーだとおもうぞ。
96デフォルトの名無しさん:2006/03/09(木) 16:00:17
必死に反論してる奴見てると笑える
9744:2006/03/09(木) 16:02:03
いや、true の値なんかどうでもいいんだが。
hoge が真理値のつもりなら、なんでいちいち等価演算子
使うんだ?っつー話。
98デフォルトの名無しさん:2006/03/09(木) 16:02:04
>>95

いや、Win32/C言語の全盛期はFALSEがDEFINEされてて、

if (XXX != FALSE) { //ハンドルが無効で無い
 //処理
}

と説明本でも書かれてる。
99デフォルトの名無しさん:2006/03/09(木) 16:05:13
>>98
いつの時代の話だよ。 つーか氏ねよ
10075:2006/03/09(木) 16:05:28
>>44
おー、そういうこと?例えば↓こうとか?
int a=100;
int condition = (a==100);
if( condition == false ) ;
それなら確かに。
==とかの比較演算子はたしか偽の場合0で真の場合1でいいんだっけ?
それをtrue、falseではたしかにまずいな。
101100:2006/03/09(木) 16:06:18
やべ>>97だった。
102デフォルトの名無しさん:2006/03/09(木) 16:06:52
>>98
まともな参考書読めということでは?
10375:2006/03/09(木) 16:09:18
>>98
それはWin32APIのHANDLEが戻り値である関数の正常異常比較方法の話でそ?
>>89はchar*をtrueやfalseで比較してるので変ですよといってるのです。
10489=98:2006/03/09(木) 16:12:17
>>103
89の内容はWin32APIのつもりで書きます田。
105デフォルトの名無しさん:2006/03/09(木) 16:21:55
if (true == true)
else if (true == false)
else if (true != false)
else if (true != true)
106デフォルトの名無しさん:2006/03/09(木) 16:22:46
素人が流れ読まずにカキコ
>>88とかやってしまいそうなんだけど、やっぱりNULLで比較するべきなん?
107デフォルトの名無しさん:2006/03/09(木) 16:25:44
そらそうだ
10888=89=98:2006/03/09(木) 16:26:11
>>106
C言語なら88推奨。
C++ならNULL比較推奨。
109デフォルトの名無しさん:2006/03/09(木) 16:27:12
C++でNULL比較はやめとけ。
110デフォルトの名無しさん:2006/03/09(木) 16:27:45
やってることは、このポインタがNULLかどうか、だから
どっちでも NULL 比較だろ
111デフォルトの名無しさん:2006/03/09(木) 16:28:23
ところでさぁ、Javaは対象外?
11259:2006/03/09(木) 16:29:33
>>111
いんじゃねーの?俺Javaのこと書いたし。
113デフォルトの名無しさん:2006/03/09(木) 16:30:07
ヂャヴァはC++のパチモンだから取り上げる必要無いんでね?
114デフォルトの名無しさん:2006/03/09(木) 16:32:12
ぱっと見て「ヘタだなぁ」と思う釣り
115デフォルトの名無しさん:2006/03/09(木) 16:33:06
Javaは誰が見ても自明だから。
仕様がシンプルで良い言語だから論争にならないんじゃまいか?
116デフォルトの名無しさん:2006/03/09(木) 16:34:18
#メイン
int main(void) {

これとかこれ

nCount += 2; #カウントを2増やす

意味のないコメント
117デフォルトの名無しさん:2006/03/09(木) 16:35:19
i++; //iをインクリメント
118デフォルトの名無しさん:2006/03/09(木) 16:39:01
init_globals()とかいう関数を見かけたとき。

>>116
貴様、スクリプト言語を主流に使っているな!?
コメントが#になってまつ。
119デフォルトの名無しさん:2006/03/09(木) 16:52:00
ところで logical xor のつもりで
bool変数2つを !x != !y とやるのはアリ?
120デフォルトの名無しさん:2006/03/09(木) 16:59:08
ある関数ではFileName
またある関数ではfilename
さらに他の関数ではFilename

大文字小文字はある程度は統一しようぜ
121デフォルトの名無しさん:2006/03/09(木) 17:09:48
>init_globals()とかいう関数を見かけたとき。

初期化処理を毎回コピペしてるよりマシ。
122マイク ◆yrBrqfF1Ew :2006/03/09(木) 17:51:36
綺麗なコードを目指したらキリねえよな
精神的な健康とのトレードオフですよ。
123デフォルトの名無しさん:2006/03/09(木) 17:56:39
さっきのtrueとfalseの話って何だったの?
ついていけなかったorz
誰か要約してください
124デフォルトの名無しさん:2006/03/09(木) 18:07:55
あなたのように理解していない人が
適当に使ってしまうから困るという話です
125デフォルトの名無しさん:2006/03/09(木) 18:13:57
>>124
最初に>>56>>66-73辺りでtuueが1か不定かという話があった。

そのうち>>72-から論理値をtrueやfalseと比較するのはよいかということに移り、
C++のbool/true/falseとWinAPIのBOOL/TRUE/FALSEとポインタ/NULLがごっちゃに。
全体的にtrueやfalseと比較することを肯定する方の書き込みがあると叩くの繰り返し。
126デフォルトの名無しさん:2006/03/09(木) 18:26:38
おまえら小手先の話をごちゃごちゃする前に上司なり会社なりに
認められて役職のひとつでももらってから偉そうなこと言えよ
127デフォルトの名無しさん:2006/03/09(木) 18:29:06
CでTRUEとかFALSEとか、怪しげな値を返すライブラリがあったら、
しっかり比較したほうがいいよ。

if (hoge() == TRUE) とか。
128デフォルトの名無しさん:2006/03/09(木) 18:30:55
>>127
FALSEと比較しる!
129デフォルトの名無しさん:2006/03/09(木) 18:35:19
ifとかwhileの括弧をくっつけて書いて、括弧の内側を空けてるとか。
二項演算子をくっつけて書くとか。

if( x==10 ) {...

こんなの見ると、うへーとなる。
130デフォルトの名無しさん:2006/03/09(木) 18:39:23
>>128
TRUE 0
FALSE -1
みたいな変態ライブラリとかどうすんの?

unixのシステムコールに感化されてるのか、成功で0を返す、
エラーはマイナスで返すとか変な信条のやつがたまにいる。
131デフォルトの名無しさん:2006/03/09(木) 18:49:03
>>130
> TRUE 0
> FALSE -1
> みたいな変態ライブラリとかどうすんの?

変態ライブラリはとりあえず放って置いて、

> unixのシステムコールに感化されてるのか、成功で0を返す、
> エラーはマイナスで返すとか変な信条のやつがたまにいる。

これは、TRUEと比較すべきという根拠にはならない。
132デフォルトの名無しさん:2006/03/09(木) 19:33:01
昔のC/C++にbool型(trueかfalseだけが入る)が無かったのが諸悪の根源だな。
133デフォルトの名無しさん:2006/03/09(木) 19:35:11
if ( 真偽値 ) 以外はコンパイルエラーになればいい。
134デフォルトの名無しさん:2006/03/09(木) 19:37:26 BE:74885235-
>>132
C++も昔はboolなかったの?
135デフォルトの名無しさん:2006/03/09(木) 19:37:27
C++はCとの互換上仕方がないと思う。
つまりCが諸悪の根源。
Cなんてなくなればいいのに
136デフォルトの名無しさん:2006/03/09(木) 19:38:44 BE:279569478-
C99では intを_Boolに変換するとどうなるんだろう。
137デフォルトの名無しさん:2006/03/09(木) 19:54:26
>>134
なかったよ
138デフォルトの名無しさん:2006/03/09(木) 20:30:00
QACで引っかからないコード。
MISRA-Cで引っかからないコード。
139デフォルトの名無しさん:2006/03/09(木) 23:55:24
ちなみに言い出しっぺの>>44はCだとは言ってないから
C#だったら話が違ってくるような。

まあでもif (hoge != false)とかif (hoge == true)とか書くなら
if (isHoge)でいいだろとは思う。
140デフォルトの名無しさん:2006/03/10(金) 09:49:14
もし
(hoge == true)
の評価がtrue だった場合、以下を実行する。


ということだよな
141デフォルトの名無しさん:2006/03/10(金) 10:00:45
if ((hoge == true) == true)
142デフォルトの名無しさん:2006/03/10(金) 10:28:08
そもそもbool型を評価するのに
true false と比較しなきゃいけないケースってあるの?
143デフォルトの名無しさん:2006/03/10(金) 13:07:55
trueとfalse以外でどうやって比較するの?
144デフォルトの名無しさん:2006/03/10(金) 13:15:51
宇宙空間のような密度の低いスレだ
145デフォルトの名無しさん:2006/03/10(金) 13:17:54
ザルで水をすくう、とはこの事か。
146デフォルトの名無しさん:2006/03/10(金) 13:44:29
比較した結果がtru,falseなわけで、もともとtrue,falseなら比較する必要は無い
147デフォルトの名無しさん:2006/03/10(金) 14:19:32
ようするに比較しなくても

bool b;

if(b)
{
//処理
}

って書けばいいってこと?
148デフォルトの名無しさん:2006/03/10(金) 14:31:34
こう書けばって強制できるもんじゃなく、
プログラムってのは記述性によって、
人間に近づくもの。

自分だってこう書く。
>if(b)
>if(!b)

でも、初心者が、
>if(b != false)
と書くのは禁止出来ない。

しかしだな、
>if(b == true)
は禁止。
149デフォルトの名無しさん:2006/03/10(金) 15:22:08
a( ... ){
}



a( ... )
{
}

に直すべき?
学生のころ見た本で前者のクセがついてしまった。
150デフォルトの名無しさん:2006/03/10(金) 15:23:55
あ、a の前に型書いてない・・・if とか for でいいや。
151デフォルトの名無しさん:2006/03/10(金) 15:36:59
> でも、初心者が、
> >if(b != false)
> と書くのは禁止出来ない。

それはまずいね。

bがboolなら(b != false)もまた同じくboolなんだから。
boolのbに対して != false の比較が必要なら、
(b != false)に対しても同じく必要。
だから
if((b != false) != false)
と書きたいところだが、これでもまだ足りない。
なぜなら((b != false) != false)もまたboolだからだ。

もし
if(b) // (1)
よりも、
if(b != false) // (2)
の方が良いならば、
if(((((b != false) != false) != false) != false) != false) // (3)
こちらの方がもっと良いということになる。
もちろん
if(x == y)
より
if((x == y) != false)
の方が良いだろう。

誰が賛成できるかな。
もし(3)を禁止するなら、同じ理由で(2)は禁止になる。
152デフォルトの名無しさん:2006/03/10(金) 15:39:12
なんかワロタ
153デフォルトの名無しさん:2006/03/10(金) 15:40:53
なんて頭の悪い奴だ
154デフォルトの名無しさん:2006/03/10(金) 15:45:02
>>148
> しかしだな、
> >if(b == true)
> は禁止。

これは意味のあるコードだから禁止できない。
bがboolではなく、3値の状態 (false,true,unknown?) を確保する
クラスオブジェクトに変更となったとき、
bool operator==(bool)メソッドを用意しておけば、
「if(b == true)」記述は有意義だからな。
155デフォルトの名無しさん:2006/03/10(金) 15:46:35
>>149
オレは画面が80x24じゃなくなって行を多く表示できるようになってからは
後者のほうだな。Windows3.1の頃のプログラムの本からの影響だが。
156デフォルトの名無しさん:2006/03/10(金) 15:48:39
>>155
俺はエディタを横長画面で使うから前者だな。
157デフォルトの名無しさん:2006/03/10(金) 15:50:47
ま、スレタイとは関係ないけどな
158デフォルトの名無しさん:2006/03/10(金) 15:51:14
>>154
>bがboolではなく、3値の状態 (false,true,unknown?) を確保する

トリッキーなネーミング超禁止!!!!!!!!!

3つの状態なら、cond_false,cond_true,cond_unknownくらいにしとけ。
boolに新たな値を足すのは超販促ワザ。
159デフォルトの名無しさん:2006/03/10(金) 15:52:36
Rubyの$VERBOSEはtrue, false, nilで意味が変わってくるんだよな
160デフォルトの名無しさん:2006/03/10(金) 15:55:44
>>159
true, false, nilの状態確保は良くあることね
161デフォルトの名無しさん:2006/03/10(金) 15:56:33
Ruby禁止!
162デフォルトの名無しさん:2006/03/10(金) 15:58:07
3つの状態を保有するclassの定義をしてみろよ。
163デフォルトの名無しさん:2006/03/10(金) 16:00:37
>>161
なんでRubyってこうやって好き嫌いが激しく分かれるんだよ。
Perlは「好きだけどあまり使わない」「嫌いだけど使う」って
曖昧な奴がいっぱいいるじゃないか。Rubyへの好き嫌いは明確過ぎるぞ。
164デフォルトの名無しさん:2006/03/10(金) 16:03:14
別に好きでも嫌いでもないけど
165デフォルトの名無しさん:2006/03/10(金) 16:45:28
>>154
ぱっと見て「頼むからお前は何もするな」と思うコード
166デフォルトの名無しさん:2006/03/10(金) 16:50:09
真偽値って2種類であるところに意味があると思ふ。

DBのカラムだとNULLが絡んでくるの分かるけど、
逆に真偽値カラムは初期値入れてNULL無くせ!、と。
167デフォルトの名無しさん:2006/03/10(金) 16:53:17
C#のboolもnullable出来るしな。
もはや3値は時代の趨勢といわざるを得ない。
168デフォルトの名無しさん:2006/03/10(金) 16:55:37
>C#

カス
169デフォルトの名無しさん:2006/03/10(金) 17:03:44
bool* b;
でいいじゃん。
170デフォルトの名無しさん:2006/03/10(金) 17:20:06
C丼使わない理由が一つ増えた。

>C#のboolもnullable出来るしな。
既存のC/C++ライブラリを異色作業に困るわこれ。
過去のライブラリは使えないは、移植作業を邪魔するわで、ちょーさいあく。
171デフォルトの名無しさん:2006/03/10(金) 17:23:36
↑ぱっと見て「バカだなぁ」と思うレス
172デフォルトの名無しさん:2006/03/10(金) 20:48:02
ソースとソースの間にコメントが多すぎて流れが読めない。
173デフォルトの名無しさん:2006/03/10(金) 20:53:17 BE:224654459-
インデントがメチャクチャのソースとか、どういう経緯でそうなったのかわからん。
4桁と8桁がまじってるのとかはともかく、数行だけ3桁が混じってるとか。
174デフォルトの名無しさん:2006/03/10(金) 20:53:19
>>149
それは上手い下手じゃないから好きなほうでいいんじゃない?
俺は会社ではプロジェクトのルールに従ってる
家ではネットで拾ってきた各言語の一般的なルールに従ってる
175デフォルトの名無しさん:2006/03/10(金) 20:55:20
>>173
・別人が書いた
・適当なところからコピペした
176デフォルトの名無しさん:2006/03/10(金) 21:32:06
はい。いいえ。未入力。

普通は、NULLも入れられるboolを使うな。
177デフォルトの名無しさん:2006/03/10(金) 21:32:31
>>170
C++で書いたようなライブラリをC#で使う気にはなれんがな。

アセンブラからC/C++に移植するとコードが簡潔にできるように、
C/C++からC#へ移植するとかなりコードが簡潔に書ける。

C/C++のコードをそのままC#でコンパイルだなんて、
Cでインラインアセンブラ使って書いてるようなもんだ。
178デフォルトの名無しさん:2006/03/10(金) 21:37:02
>>176の最後
「使うな」が「使ってはダメだ」と禁止しているようにも「使うよね」と自分の意見を語っているようにも解釈できる
文脈で多態するような単語は使うな
179デフォルトの名無しさん:2006/03/10(金) 21:41:20
なんかぱっと見て、初心者が変なプログラミングスタイル覚えそうなスレになってきたな。
ここで言ってるスタイルはあんま参考にしないほうがいいかも。
180デフォルトの名無しさん:2006/03/10(金) 21:54:31 BE:74885235-
まともなソースや本を見て、判断すればいいだろ。
会社の先輩のソースとかは、参考にしないように。
181デフォルトの名無しさん:2006/03/10(金) 22:00:47
会社の先輩が書いた本なんだが?
182デフォルトの名無しさん:2006/03/10(金) 22:07:56 BE:134792093-
>>181
まともな本なの?
183デフォルトの名無しさん:2006/03/10(金) 22:59:25
python教に入ればカッコやインデント論争から楽になれるぞ
184デフォルトの名無しさん:2006/03/10(金) 23:54:44
インデント論争したいやつには
「自分用のインデントプログラム作れば?」でおk
185デフォルトの名無しさん:2006/03/10(金) 23:56:41
mallocしておいてfreeしないヘタくそなコードをどうにかしてください。
186デフォルトの名無しさん:2006/03/11(土) 00:05:13
>>185
つりかよ。
187デフォルトの名無しさん:2006/03/11(土) 00:07:01
freeしなくても良いという言い訳どぞー
188デフォルトの名無しさん:2006/03/11(土) 00:08:40
昔、某所で延々とfree()論争があった。
googleで見れるかな?
189デフォルトの名無しさん:2006/03/11(土) 00:10:43
まともなインデントに直してやったのに文句いわれたよ
190デフォルトの名無しさん:2006/03/11(土) 00:23:28
>>188
freeする必要がないのと同様、論争を見る必要もない。
191デフォルトの名無しさん:2006/03/11(土) 00:38:42
fclose()も状況によっては必要ないな。
192デフォルトの名無しさん:2006/03/11(土) 00:51:49
C++でboost::scoped_ptr始めスマートポインタ使ったり、std::vectorでいいだろと思う。
193デフォルトの名無しさん:2006/03/11(土) 01:11:16
スペースを100個入れるのに、

/*     0123456789 */
strcat(str, "     "); /* 1 */
strcat(str, "     "); /* 2 */
 :
strcat(str, "     "); /* 9 */
strcat(str, "     "); /* 10 */
194デフォルトの名無しさん:2006/03/11(土) 01:35:55
関数名に hogeFunc()、
変数名、構造体にhogeInfo、hogeData
195デフォルトの名無しさん:2006/03/11(土) 01:37:32
仕様書をそのまま書き下したようなコードは下手だなぁと思う。
まじめにすべて書き下してるから、一関数1000行とかいってしまってたり。
196193:2006/03/11(土) 01:44:37
>>193 ですごいと思ったのは、手抜きでペーストを10回、パパパとやったのではなくて、
わざわざ回数や桁数をコメントで入れてるから、本人は丁寧にやってるつもりなんだろうな、って所。
197デフォルトの名無しさん:2006/03/11(土) 02:00:10
>>193
これはひどい(わらい
memset(str, ' ', 100);
str[100] = '\0';
2行で書けるじゃん。
198デフォルトの名無しさん:2006/03/11(土) 02:02:47
あとstrcatってあんまり使って欲しく無い。
パフォーマンス悪そう。
199デフォルトの名無しさん:2006/03/11(土) 02:11:37
>>195
それは・・・ところによっては優秀なコードと判断される・・・
1対1に対応していないと気に入らない人って
未だにいるんだな、これが
200デフォルトの名無しさん:2006/03/11(土) 02:14:26
にしても徹頭徹尾誰の役にも立ちそうにない雑談スレだな。
厨房のまとまったコード晒して添削した方がよっぽど参考になるけど
そこまでして実のあるスレにしようと思う奴なんて誰もいないしな。
201デフォルトの名無しさん:2006/03/11(土) 02:14:57
おまえがやれ
202デフォルトの名無しさん:2006/03/11(土) 02:19:54
人より一段上から発言してみたい年頃。
203デフォルトの名無しさん:2006/03/11(土) 02:20:54
>>197
sprintf()なら一行
204デフォルトの名無しさん:2006/03/11(土) 02:28:57
俺の役には立ってるから心配するな
205デフォルトの名無しさん:2006/03/11(土) 02:36:35
>>170
C#のboolとnullable boolは別物
206デフォルトの名無しさん:2006/03/11(土) 05:30:40
class
{
int a,b,c,d,e,f,g;

void setABCDEFG(int a,int b,int c,int d,int e,int f,int g)
{
this->a = a;
this->b = b;
this->c = c;
this->d = d;
this->e = e;
this->f = f;
this->g = g;



}

};
207デフォルトの名無しさん:2006/03/11(土) 06:41:03

char kore-nanikana =
"  "
"凵寐"
" ▽";

// ヒント: 太陽じゃない
208デフォルトの名無しさん:2006/03/11(土) 11:38:51
質問です。
マイナスってくっつけます?

i = j - 4;
と書いているなら、
k = - 1;
とするべきでようか?
209デフォルトの名無しさん:2006/03/11(土) 12:12:14
--はどうするんだ?
210デフォルトの名無しさん:2006/03/11(土) 12:12:17
>>208
単項演算子のマイナスは、くっつける。
k = -1;
それ以外は、くっつけない。
211デフォルトの名無しさん:2006/03/11(土) 12:13:29
"-1"なら数値の-1だとわかるが、
"- 1"なら何か書き忘れたのかと思う。
212デフォルトの名無しさん:2006/03/11(土) 13:56:24
return (a*b+c-sizeof(d))+1;

こういうコード書く奴は反省正座
演算子は密着させるなって何度言ったら(ry
213デフォルトの名無しさん:2006/03/11(土) 14:09:17
オレは | 演算子以外は基本的にスペース無しで記述するけど。

というか、こんなの好み以外なんでもないだろ。
コーディング規約で既定されてるのに従ってない、とかじゃない限り、
反省正座とか、意味不明な否定をされるいわれはない。
214デフォルトの名無しさん:2006/03/11(土) 14:16:25
いや、演算子をくっつけて書くなんて、かなりキモイ。
215デフォルトの名無しさん:2006/03/11(土) 14:23:34
演算子がくっ付いたコードは死ぬほど読みにくいんだよ
そういうコード書く奴に限って213みたいに自己中な逆ギレするから困る
216デフォルトの名無しさん:2006/03/11(土) 14:24:59
thread.level.down();
217デフォルトの名無しさん:2006/03/11(土) 14:29:35
↑読みやすくしてやる
thread . level . down () ;
218デフォルトの名無しさん:2006/03/11(土) 14:32:23
そんなに読み難いと思うんなら、自分用の整形ソフトを作ればいいじゃないか

なぜそんな事を言う前にそれをやらないんだ?
それともそんな簡単な事も出来ないのに、そんな大口叩いてるのか?

だったら、すみません。私の読み易いように整形して下さいと、頭を垂れろ。
ホワイトデーにはまともな貢物の一つもよこしやがれ
219デフォルトの名無しさん:2006/03/11(土) 14:32:54
二項演算子をくっつけて書くとか、カンマの後ろを空けないとか、
制御文のカッコをくっつけるとか、ぱっと見た目、へたくそに
見えるね。
220デフォルトの名無しさん:2006/03/11(土) 14:37:21
妙に必死な腐女子SEが降臨してるようだな
誰か早く回収するんだ
221デフォルトの名無しさん:2006/03/11(土) 14:43:00
#include<hoge.h>

けっこう売れてるらしい某初心者向けの本は、
↑みたいに、<>をくっつけて書いてるらいいじゃん。(見てないけど)
ほんとみに、こういうのやめて欲しい。
222デフォルトの名無しさん:2006/03/11(土) 14:43:47
↑実害ないのに大騒ぎするバカ
223デフォルトの名無しさん:2006/03/11(土) 14:46:13
ごちゃごちゃ言ってないでおとなしくK&Rに従っとけ。
224デフォルトの名無しさん:2006/03/11(土) 14:46:48
顔の整形しとけ
225デフォルトの名無しさん:2006/03/11(土) 14:49:07
「動けばいいだろ」って、汚いソース書いてるやつのソースはまともに動いてないね。
226デフォルトの名無しさん:2006/03/11(土) 15:48:47
>>221
それがぱっと見てヘタだと思うコードなのか?
人による好みの問題で、その人がうまいかヘタかは全然関係ない気が駿河。
227デフォルトの名無しさん:2006/03/11(土) 16:00:47
width = foo + 1 +  + bar;
前に書いた俺のコードにこんな感じのものがあった。
間に何があったのか思い出せない。

幸いなのは自分が勉強に作ったものだから外への影響はないということ
228デフォルトの名無しさん:2006/03/11(土) 16:01:32
>>225
コーディングがきれいでも、汚いソースなんて腐るほどあるからなぁ。
229デフォルトの名無しさん:2006/03/11(土) 16:07:02
>>215
所詮それも慣れの問題。好みでしかない。

オレは逆にスペースがあるとキモイいもの。
間が抜けた、マヌケコードに見える。

しかし、それを他人の力量の判断材料にはしない。
所詮宗教問題だからだ。

そんなことも分かんない奴の力量は低いと判断するけどね。
230デフォルトの名無しさん:2006/03/11(土) 16:10:33
>>226
いや、そういうコードを書く人間が、まともな本やソース、環境で勉強してるとは思えない。

むしろ、変な書き方をして、本人だけはいい書き方をしてると固く信じてるってパターンじゃ
ないかと予想する。
ソース開いて、そういうコードが最初に目に入ったら。
231デフォルトの名無しさん:2006/03/11(土) 16:13:56
>>229
> 所詮宗教問題だからだ。

スキルの高い人たちの間でも、意見の分かれるスタイルの問題はあるけど、
二項演算子の両側とかカンマの後ろを空けるとか、そのあたりで意見が分かれてるのは
見たことない。
232デフォルトの名無しさん:2006/03/11(土) 16:14:50
>>230
「まとも」が何かによるけどな。
コーディングスタイルの流行なんて、すぐ変わるものだし。
233デフォルトの名無しさん:2006/03/11(土) 16:19:34
エラー処理のコードが書いてないソースほど演算子がくっついていたり
if(){
}
みたいなキモいコードブロック書いてるよな。
タブの代わりにスペース2個とか。視ねって。
234デフォルトの名無しさん:2006/03/11(土) 16:20:48
>>232
#includeの後にスペース入れるか入れないかなんて、流行すたりはないよ。
235デフォルトの名無しさん:2006/03/11(土) 16:21:32
標準的なスタイルなんて、Unix/Windows/Mac/組み込み etc..で変わるもんだしな。
236デフォルトの名無しさん:2006/03/11(土) 16:25:09
こういう瑣末なところにのみ執着する奴らはダメだな
237デフォルトの名無しさん:2006/03/11(土) 16:43:44
astyle でも使えばいいだけの事
238デフォルトの名無しさん:2006/03/11(土) 16:49:58
>>231
そらどうでもいいからな。
239デフォルトの名無しさん:2006/03/11(土) 16:58:38
なんで

#include<hoge.h>

はくっつけたらダメなの?

逆に、離したら何がいいの?

論理的に説明できずに、感覚的にキモイとか言ったら低脳認定。
240デフォルトの名無しさん:2006/03/11(土) 16:59:47
>>233
エラー処理かかないのと、スタイルは関係ない。
ただの言いがかりをつけるやつは人としてダメだな
241デフォルトの名無しさん:2006/03/11(土) 17:33:29
>>238
いや、議論するまでもなく意見が一致するから。
二項演算子の両脇を詰めろってヤツが混じってたら、かなり紛糾すると思うけど。
242デフォルトの名無しさん:2006/03/11(土) 17:34:27
>>236
瑣末だと思ってるあたりがダメ。
243デフォルトの名無しさん:2006/03/11(土) 17:39:58
>>241
自分のスタイルを他人に強要して、詰めろ、というバカが居たらそうだろう。

同様に、自分のスタイルを他人に強要して、空けろ、とかいうバカが居ても紛糾するよ。

このスレのように。
244デフォルトの名無しさん:2006/03/11(土) 17:47:11
>>242
これが瑣末だと思えない時点で、プログラマ失格。

多分姑になるといいよ。嫁いびり上手そう。
245デフォルトの名無しさん:2006/03/11(土) 17:49:30
ところでこういうスレだと誰か一人は
「Cプログラミング診断室」を引用するもんだけど
もうそういう時代じゃない?
246デフォルトの名無しさん:2006/03/11(土) 17:49:53
だから、好きなスタイルにツールで翻訳すりゃいいじゃない。

そういう機械で出来るような部分に価値を見出してもしょうがないぞ
247デフォルトの名無しさん:2006/03/11(土) 17:52:05
スタイルは統一することに価値はあっても
特定のスタイルに固執することに価値はない。
それがわからないのは趣味グラマだけだろう。
248デフォルトの名無しさん:2006/03/11(土) 17:54:03
オプソの世界では原作者への感謝と義を通すため、
元ソースのコーディングスタイル(変数名等の付け方も含む)を
踏襲するのが普通だと思うんだが…。(つまり、スタイルを気にしてない)

職業PGだって、規定があればそれに従うのみだろ…。

ここでキモイとかいってるやつは行数を増やすことだけに熱心な
アホ会社に勤めるカス職業PGか?
249デフォルトの名無しさん:2006/03/11(土) 17:56:14
行数が増えたっていいじゃねーか。
べつに行数で金取るわけじゃねぇし。
ま、行数カウントして試験計画に反映することは良くあるけどな。
250デフォルトの名無しさん:2006/03/11(土) 17:57:35
>>243
> 自分のスタイルを他人に強要して、詰めろ、というバカが居たらそうだろう。

数人で作業をやるとか、コーディングルールを決めるような状況ならある程度「強要」はあるだろ。
そういう状況でも、二項演算子の両脇を開けるとか、カンマの後ろを空けるとかは
常識のレベルだから、紛糾なんてない。
あまりに常識過ぎて、言及しないこともあるけど。
(まともなところならね)
251デフォルトの名無しさん:2006/03/11(土) 18:00:15
だいたいスタイルを強要するしないって話じゃなくて、
単にまともなプログラマーなら、こう書くって話だし。
252デフォルトの名無しさん:2006/03/11(土) 18:01:33
命名規則なら決める意味はあると思うけど、
そもそもコーディングスタイル決める意味ある?
253デフォルトの名無しさん:2006/03/11(土) 18:03:39
うわぁ、そっから話をしなきゃならんのか・・・
254デフォルトの名無しさん:2006/03/11(土) 18:04:43
結論: indent使え
255デフォルトの名無しさん:2006/03/11(土) 18:04:45
おまえらは人の読まれても恥ずかしくない自信があるコードを書くためにどんなことに気をつけている?
256デフォルトの名無しさん:2006/03/11(土) 18:06:04
訂正:おまえらは人の読まれても恥ずかしくないコードを書くために、どんなことに気をつけている?
257デフォルトの名無しさん:2006/03/11(土) 18:06:46
>>256
訂正:おまえらは人に読まれても恥ずかしくないコードを書くために、どんなことに気をつけている?
258デフォルトの名無しさん:2006/03/11(土) 18:06:46
人の
259デフォルトの名無しさん:2006/03/11(土) 18:08:43
春真っ盛り
260デフォルトの名無しさん:2006/03/11(土) 18:09:33
コーディングスタイル云々は、>254で全て解決する結論でましたので、無しでいきましょう。

>>255
publicな関数やクラスは、doxygen相当のツールで拾えるドキュメントを必ず記述する。
privateも自明なの以外はつける。

関数内にコメントは記さない。
コメントがなくても自明なコードとなるようにする。
261デフォルトの名無しさん:2006/03/11(土) 18:15:16
訂正:おまえらは人の読まれると恥ずかしいコードを隠すために、どんなことに気をつけている?
262デフォルトの名無しさん:2006/03/11(土) 18:32:44
>>261
二重に意味わかんね。
ソースを隠したところでasmでは(時間かかるけど)バレバレだしな。
263デフォルトの名無しさん:2006/03/11(土) 18:46:26
>>248
> 元ソースのコーディングスタイル(変数名等の付け方も含む)を
> 踏襲するのが普通だと思うんだが…。(つまり、スタイルを気にしてない)

それはまともなスタイルだからだろ。
二項演算子の両端を空けないポリシーで、世間で評価されてるオープンソース
のプロダクツとかある?
264デフォルトの名無しさん:2006/03/11(土) 18:52:42
まったくないな。

そもそもオープンソースの作者ってのは変質者が多い。
露出狂とでも言うか

なかにはオープンソースを餌にしてこんなオナニーを見せて喜ぶ奴もいる
#define BEGIN {
#define END }
265デフォルトの名無しさん:2006/03/11(土) 18:54:02
ホントあほらしい議論。
 色分けしてくれるエディタ使えば、演算子の前後に空白があるだの無いだの気にする必要もない事だろ
266デフォルトの名無しさん:2006/03/11(土) 19:03:50
>>263
君はgrepを知らんのか。それともオプソのソースが手元に一切ないのか。
それくらい調べればすぐにわかるだろう。
267デフォルトの名無しさん:2006/03/11(土) 19:06:32
>>265
議論というか、空白無いとダメなんだもん!君が喚いてるだけ。
皆、どうでもいいだろ、どうしても嫌ならツール使えよ、とやさしく諭してあげてる。
268デフォルトの名無しさん:2006/03/11(土) 19:10:01
まあ読み合わせするのにいちいち印刷して配る所もあるんだろ
269デフォルトの名無しさん:2006/03/11(土) 19:52:06
もうコーディングスタイルなんていいじゃん
それで「ヘタだなぁ」って思うやつが結構いるということは分かったから
270デフォルトの名無しさん:2006/03/11(土) 20:16:08
>>266
そんなことは、演算子の両脇を詰めるのがまともだと思ってる人に言ってください。
271デフォルトの名無しさん:2006/03/11(土) 20:20:42
>>269
けっこう多いっていうか、まともな人は、ほぼ全員へただなぁ、素人っぽいなあって思うんじゃない?
272デフォルトの名無しさん:2006/03/11(土) 20:31:12
>>267
> どうしても嫌ならツール使えよ、

変な書き方してる連中って、ツールも使ってないってことだろ?
273デフォルトの名無しさん:2006/03/11(土) 20:37:50
>>269
そうなの? 俺は変だなとは思うけどヘタとは思わない
同じソース中でバラバラだったら素人っぽいと思うけど
274デフォルトの名無しさん:2006/03/11(土) 20:39:31
日本人でまともなコード書く人って少ないよな。
275デフォルトの名無しさん:2006/03/11(土) 20:42:43
演算子の両側を詰める人のもたれる印象
・へた
・素人
・変
276デフォルトの名無しさん:2006/03/11(土) 20:44:46
てか下手な書き方して読みづらいっていわれてるのに
何で平気でツール使えとか言えるのかがわからん。
責任感って物がないのか?

てか単項演算子の両端をあけないのって小さくて単純なプログラムしか組んだこと無いからだろ。
そりゃたしかに
n = n + m; とか
for(n = 0 ; n < MAX; n++)
みたいなんじゃぁ間抜けにみえるかもな。
277デフォルトの名無しさん:2006/03/11(土) 20:44:50
>>270
オレは2項演算子の両脇を詰めるのが自分のスタイルだと言ってるだけで、
まともとかとかそういう話はしてない。

仕事でコーディング規約でそうあるならそれに従うが、
そうでない以上、こんなのは好みの差にすぎない。ギャーギャー騒ぐことではない。

つーか、「まともな人」とか笑わせんなよ。
論理的な理由も示せず、感覚的にキモイって理由で
批判するなんて、まともな人間のすることじゃない。
278デフォルトの名無しさん:2006/03/11(土) 20:44:57
>>263
nnnesterJは元が*nix系の書き方なのに、
途中で変数名がM$お得意のb〜とか、i〜とか入ってきて
ヘタとかじゃなく非常識極まりないものになってる。
こんな状態になると、演算子で詰めるかどうかの議論なんてアホらしくなってくる。
279デフォルトの名無しさん:2006/03/11(土) 20:47:23
自分のやり方以外の一切を許容できないのはただのアスペだろ。
なるべく一緒に仕事をしたくない類の人間だな。
280デフォルトの名無しさん:2006/03/11(土) 20:48:42
>>276
コーディングスタイル以前に、まともな知識付けた方がいいのでは?
281デフォルトの名無しさん:2006/03/11(土) 20:54:09
演算子を詰めて書くことに関して
延々とファビョってるのって213だろ
これだから腐女子は嫌なんだ
282デフォルトの名無しさん:2006/03/11(土) 20:56:03
>>271
お前の意見って、全部根拠ナシのただの主観だよなぁ。
そういう意見つて、そっくりそのまま逆に言い替えれるんだよなぁ。



空白があろうがなかろうがどうでもいい人って、けっこう多いっていうか、
まともな人は、ほぼ全員どうでもいいなぁって思うんじゃない?

こんな空白無いと「へただなぁ、素人っぽいなあって思う」人をへただなぁ、素人っぽいなあって思うんじゃない?
283デフォルトの名無しさん:2006/03/11(土) 20:56:26
sizeof (char)
284デフォルトの名無しさん:2006/03/11(土) 20:57:47
むしろ「どうでもいい」とか「人にどうこう言うな」みたいなコトを言いながら、
書き込みせずにいられない人のほうがアレなんじゃないの?
285デフォルトの名無しさん:2006/03/11(土) 20:59:13
とりあえず何が何でも上司に逆らってでもルールを破ってでも
詰めて書く派はいないんだろ。
あとは何が何でもあけないと気がすまない派という痛い存在が
いるかどうかでないの。
そこんとこどうなの?
286デフォルトの名無しさん:2006/03/11(土) 20:59:52
>>282
いや、世間でそれなりに評価される本とか、プロダクツのコードで、
二項演算子の両脇を詰めてかいてるのってある?
287デフォルトの名無しさん:2006/03/11(土) 21:03:11
とりあえず、最近見た「ヘタだなぁ」と思うコード
>>276
> n = n + m;
288デフォルトの名無しさん:2006/03/11(土) 21:10:24
>>286
今見てる、「Perlクックブック」は、
大体においてPerlのガイドラインの通り、演算子は空けているが、
空けていないところもある。

ま、重箱の隅をつつくなってことじゃね?
289デフォルトの名無しさん:2006/03/11(土) 21:11:22
>>286
>>266

まぁいいか。手元にあったオープンソース見てみた。
例えばこれは演算子の空白の数はアバウトな感じだけど。
http://www.codercorner.com/Opcode.htm

お前がなんて言いそうか大体想像つくなぁ。
290デフォルトの名無しさん:2006/03/11(土) 21:16:15
もう止めろよお前ら
実に禿げな議論だ
291デフォルトの名無しさん:2006/03/11(土) 21:23:16
議論というか、何が何でもあけないと気がすまない派という痛い存在が騒いでるだけ。
292デフォルトの名無しさん:2006/03/11(土) 21:24:55
>>276
だからさ、読み辛いのは、それを読んでるオノレの問題だろ?
少なくともオレの問題じゃない。
オレはカラーで表示されるエディタで見てるから何の問題もないんだからさ。

オノレが読みづらいならそれは自分で解決すべき問題だ。
なんで責任感が無いなんてわけの判らん発言になるんだ?
293デフォルトの名無しさん:2006/03/11(土) 21:31:03
>>289
ああ、それは知らなかった。
294デフォルトの名無しさん:2006/03/11(土) 21:31:56
コーディングスタイルなんて美的センスの問題だから決着がつくわけない。
どっちかが妥協しないとな。
295デフォルトの名無しさん:2006/03/11(土) 21:32:56

ほんとに読み辛いと思うのは

http://pc8.2ch.net/test/read.cgi/tech/1141740363/35
この35からの質問者のような 書き方だ。


ある角度αで回転した四角形があります
左上角を(x,y)とします
上辺の中心を(x',y')とします
この中心をドラッグし移動するとマウスと上辺は交差する位置を維持します
下辺2点は固定です
この時いまマウスがいる座標を(x'',y'')とします
この座標と交差する上辺の左角の座標を求める計算式を提示してください
-----------------------------
言葉が足りない上、交差する位置 とか謎言葉がちりばめられた文章

まあでも、お客様からの文章からは、こんなものは序の口。
そっから真意を探り出してくるんだぞ。

演算子の左右に空白が無いとかで読み辛いとか、ホント笑っちゃうよ
296デフォルトの名無しさん:2006/03/11(土) 21:37:02
やっぱり
a*b + c*d
だよなぁ。
297デフォルトの名無しさん:2006/03/11(土) 21:38:06
>>294
演算子の両側のスペースなんて、その手の宗教論争とは違うだろよ。
「変数名は内容を表すようにつける」とか「サブルーチンは適切な単位に分ける」とか、
そういうレベルの話。
298デフォルトの名無しさん:2006/03/11(土) 21:40:44
boostもばらばらだけど読みやすいから
スタイルなんかより設計が全てだな
一貫してるMFCやATLの読みにくいこと。
299デフォルトの名無しさん:2006/03/11(土) 21:41:00
>>297
そうだね。 演算子の両側のスペースなんて
「変数名は内容を表すようにつける」とか「サブルーチンは適切な単位に分ける」とか、
そういうレベルの話とは全く違って、全く意味の無い話だ。

演算子の両側にスペース入れるのは簡単なプログラムを作れば自動で出来るが
前者2つを自動でやるのは、現時点では不可能だし
それが出来るならプログラマなんて不要になってるだろう
300デフォルトの名無しさん:2006/03/11(土) 21:41:41
「演算子の両側のスペースは宗教論争ではない」教?
301デフォルトの名無しさん:2006/03/11(土) 21:42:43
>>297
ツールで完全に自動でどうとでもなるものを、それらと同列に?マジかよ。

302デフォルトの名無しさん:2006/03/11(土) 21:47:10
いいか、
プログラミングというのは >>295のような曖昧かつ漠然としたところから

「内容を適切な単位に分けて明確にしてそれに名前をつける」

という作業をする事であって
少なくとも、演算子の両端に空白を入れる事に必死になる事じゃないんだよ
303デフォルトの名無しさん:2006/03/11(土) 21:47:46
ツールでどうにでもなるって言ってるのは、上のほうで、人のコード読むんだから、
かってに整形すればいいって言ってるのと同じ思考なんだろうか。。。
304デフォルトの名無しさん:2006/03/11(土) 21:48:56
>>303
反論があるんなら、モゴモゴ言わずに、ちゃんと意見を言え。

ちんちん付いてるんだろ? しゃぶるぞ!
305デフォルトの名無しさん:2006/03/11(土) 21:49:12
>>302
> 少なくとも、演算子の両端に空白を入れる事に必死になる事じゃないんだよ

必死になってやるんじゃなくて、とくに意識しなくても当たり前にやるんだよな。
306デフォルトの名無しさん:2006/03/11(土) 21:51:32
>>305
読みやすいコードを書くように意識しろよ。
307デフォルトの名無しさん:2006/03/11(土) 21:52:19
何が何でもあけないと気がすまない派という痛い存在は確実に居るようです。
308デフォルトの名無しさん:2006/03/11(土) 21:53:56
>>307
逆もまたしかり。
309デフォルトの名無しさん:2006/03/11(土) 21:59:00
統計では開けてる人が90%で開けて無い人が10%ぐらい
310デフォルトの名無しさん:2006/03/11(土) 21:59:33
>>308
何が何でもあけないと気がすまない派

どうでもいい・気にしてない派
だけどな
311デフォルトの名無しさん:2006/03/11(土) 22:01:28
本当にどうでもいい人は書き込んでない。
312デフォルトの名無しさん:2006/03/11(土) 22:01:55
>>305
あなたが意識しなくても入れるというのはあなたの問題。
あなたが人のコードで空白を入れてないのがダメってのもあなたの問題。
そのコードを見て 下手だなと思うのもあなたの問題。

自分の問題をさも他人の問題のようにいわないでくれ
313デフォルトの名無しさん:2006/03/11(土) 22:03:53
>>310
ちがうでしょ
そういう対比じゃなくて、

何が何でもあけないとダメだとか、責任感が無いとか

それは違うでしょと。
314デフォルトの名無しさん:2006/03/11(土) 22:04:03
>>309
もっともっと少ないんじゃないの? (まともなのでは)
315デフォルトの名無しさん:2006/03/11(土) 22:09:41
・何が何でもあける。
・適度にあける。
・何が何でもくっつける。
・どうでもいい。
316デフォルトの名無しさん:2006/03/11(土) 22:11:29
xを8で割った余りを計算するのに

x %= 8; でも x&=(8-1); でもいいけど x&=7; はチョッと嫌だなとか

10回のループを表現するのに

for(i=0;i<10;i++) ..... でも
for(i=01i<=10;i++) ..... でも いいけど

for( i = 0 ;i <= 9 ; i++ ) ..... はちょっとダメだとかは思うけど


空白が入ってる、入ってないが価値基準ってのはどうかと思うけどね
317デフォルトの名無しさん:2006/03/11(土) 22:15:32
まだやってんのか。時間の使い方がヘタだなぁ。
318デフォルトの名無しさん:2006/03/11(土) 22:16:17
あと、3次元ベクトルを処理するコードで

#define _DIM 3 とかヘッダで定義して

for(i=0 ; i < _DIM;i++)... とか書くの 2とか4にする場合があるなら別だけど

for(i=0 ; i < 3 ; i++)... と 数字の3書いた方が何倍も読み易いのに
319デフォルトの名無しさん:2006/03/11(土) 22:17:39
756 名前: [sage] 投稿日:2006/03/11(土) 22:16:28
このプログラムについてprintf下3つが理解できないので、どのような動きを
しているのか、解説をして頂きたいのですが、お願いします。

#include <stdio.h>

char *c[]={
     "ENTER",
     "NEW",
     "POINT",
     "FIRST"
};
char **cp[]={c+3,c+2,c+1,c};
char ***cpp=cp;
main()
{
     printf("%s",**++cpp);
     printf("%s ",*--*++cpp+3);
     printf("%s",*cpp[-2]+3);
     printf("%s\n",cpp[-1][-1]+1);
}
出力  POINTER STEW
320デフォルトの名無しさん:2006/03/11(土) 22:20:48
>>319
ヘタ以前に人格を疑うな…。
つーか、ポインタの宿題じゃねーの?
321デフォルトの名無しさん:2006/03/11(土) 22:21:36
>>316
> for(i=01;i<=10;i++) ..... でも いいけど

唐突に8進数でてくるのはどうかと
322デフォルトの名無しさん:2006/03/11(土) 22:24:24
>>321
ホント色別けしてくれるエディタは有難いね。 昔は2桁の8進数を間違って使ってなかなか気付かなかった
323デフォルトの名無しさん:2006/03/11(土) 22:32:05

else 節が多いと、なんか主張が弱いというか視点のハッキリしていない人の意見を聞いてるようでイライラする


あと、条件判断で && || を同じ行で使うのも、なんか下手っぽい

if( XXX && XXXX) 使うなら

if(XXX )
if(XXXX) と書く方がいい。  実際、 && || は良く間違って使われてる。
324デフォルトの名無しさん:2006/03/11(土) 22:36:55
>>316
> 10回のループを表現するのに

その三つの例は全部ダメだろ。やざとやってんのか?
325デフォルトの名無しさん:2006/03/11(土) 22:38:42
下手とかそういう問題か?
if( XXX && XXXX){
} else {
}
こう書きたいときは二段ifにするわけにはいかない。

>&& || は良く間違って使われてる
あまりにレベルが低いのを引き合いに出されてもな。
ああ、そういうスレか
326デフォルトの名無しさん:2006/03/11(土) 22:40:09
for (i = 10; i; --i) ...
327デフォルトの名無しさん:2006/03/11(土) 22:41:01
>>316>>318
空白の有無よりも数値の意味を明確するほうが大事だと言いたいのかもしれんが、
統一されてないのはやっぱり問題だと思う。
特に ; の前後の空白が全く統一性がないのがあれだな。

プログラムでも英語の文法に従うとするなら、
句読点の前には空白を入れず後ろには空白を1つ入れることになる。
328デフォルトの名無しさん:2006/03/11(土) 22:43:01
>>325
 だからそれ1個だけならいいよ。 
 一つの手続き内に そんなのが沢山あるとか
 ダラダラ 入れ子にして るコードとか

それからチャンスがあるなら 他人のコードで バグ取りをする時は、 && || を使ってるとまず疑うといいよ
329デフォルトの名無しさん:2006/03/11(土) 22:45:13
>>328
&&はifをネストすればいいけど、||はどうしてるの?
330デフォルトの名無しさん:2006/03/11(土) 22:45:35
>>326  PICではそんな感じに書かないと最適化が働かないから、必須な場合もあるね

>>327 統一しないとダメな人は、自分でツールに通せばいいじゃない。
  そんなの変換するの一瞬でしょ? そんなことに時間を使うのは勿体ないよ
331デフォルトの名無しさん:2006/03/11(土) 22:47:36
>>330
スタイル統一するのに、時間かかっちゃう人なのか。
332デフォルトの名無しさん:2006/03/11(土) 22:49:42
330は徹頭徹尾自分の趣味しか話してないわけで。
統一も何もしたことないしする必要も無いんだろ。
333デフォルトの名無しさん:2006/03/11(土) 22:51:56
>>332
そうだね。
スタイルの話をしてるわけじゃなかった。
334デフォルトの名無しさん:2006/03/11(土) 22:53:05
>>329
 あんまりそういう事はない。
 仕様書に   かまたは  をワザワザ書いてあれば || を使うけど

たとえば、どんな時に || を使う?
大抵は 事前に判断をまとめてしまうとか case A: case B: と重ねるとかするよ
335デフォルトの名無しさん:2006/03/11(土) 22:57:31
if(l->m_subTypeType == CTNCT_INT || (l->m_subTypeType == CTNCT_FLOAT && !intOnly))

は、どう書き直すの?
336デフォルトの名無しさん:2006/03/11(土) 22:58:10
>>327
コボラー?
337デフォルトの名無しさん:2006/03/11(土) 23:00:20
>>328, >>334
ぱっと見て「ヘタだなぁ」と思う文章
338デフォルトの名無しさん:2006/03/11(土) 23:01:57
なんか判り辛いね
if (l->m_subTypeType == CTNCT_INT
|| (l->m_subTypeType == CTNCT_FLOAT
  && !intOnly))

だったら

switch( l->m_subTypeType ){
case CTNCT_INT :
case CTNCT_FLOAT:
if( 0== intOnly ) ....
}

こんな感じに別けると思うよ  ! は勘違いしやすいから 自分は0== にしてる。 どっちでもいいけどね
339デフォルトの名無しさん:2006/03/11(土) 23:03:34
> if( 0== intOnly ) ....
> }

キタ━━━━(゚∀゚)━━━━!!!!
340デフォルトの名無しさん:2006/03/11(土) 23:03:36
ようするに頭が悪いだけですね
341デフォルトの名無しさん:2006/03/11(土) 23:03:52
>>334
ふつうに、
if (code == 2 || code == 3)
if (error || out_count > XXX_MAX)
とか。
342デフォルトの名無しさん:2006/03/11(土) 23:04:12
>>334
値の範囲チェックとか。
343デフォルトの名無しさん:2006/03/11(土) 23:06:14
>>338
は?意味変わってるし。

ほーら、直感と外れる書き方するからバグ出してるよ。

あと、l->m_subTypeTypeがintじゃなかったら、どうすんの?
344デフォルトの名無しさん:2006/03/11(土) 23:07:25
if (exp1||exp2
&& exp3)

とか書いてるの見たら俺も一言言いたくなるが、そうでないならどうでもいいだろ。
そんなのプログラムの価値の1%も左右しない。
345327:2006/03/11(土) 23:07:53
>>336
いや、全然。

K&Rはなぜあんなスタイルなのかと考えた結果、
英語の文法に準拠して書いたのだろうと思い至っただけのことだが。

例えば、コンマ、セミコロンの前には空白を入れず後ろに入れる点とか、
括弧の内側には空白は入れない点とか・・・。
346デフォルトの名無しさん:2006/03/11(土) 23:09:18
妄想かよ。
347デフォルトの名無しさん:2006/03/11(土) 23:11:05
>>341
そんなコードホントに書いてるの? ミスの元だよ。

1行目の if (code == 2 || code == 3)  は
これなら即値を書いてるから後で変更もないし、このままでもいいと思うよ
>>338のようにcase 使わないかもしれないね

まさか if( (code & -2) ==2 ) とかはさすがに書かないな


2行目は

 error || out_count > XXX_MAX
 これはたぶんエラーをまとめているのだろうから、エラーとして一つのフラグにするべきだよ


348デフォルトの名無しさん:2006/03/11(土) 23:13:07
>>347
偉そうに言ってるけど、お前338でバグ出してるわけで。

ミスの元なのはどっちやら。
349デフォルトの名無しさん:2006/03/11(土) 23:13:12
日本語ヘタだなぁ。
350デフォルトの名無しさん:2006/03/11(土) 23:15:56
>>343
ああゴメン。 読み間違ってたよ。

これなら  m_subTypeType  にもう一つ 増やすと思うよ。

 CTNCT_INT
 CTNCT_FLOAT
 CTNCT_OnlyFLOAT

として 事前に intOnlyで 3つに別ける

351デフォルトの名無しさん:2006/03/11(土) 23:17:55
>>350
iniOnlyは見た目通り単なるローカル変数で、一緒に出来るもんじゃないけど。

あと、intじゃなかったらどうすんの?答えろよ。
352デフォルトの名無しさん:2006/03/11(土) 23:18:04
>>348
はは、だからオレは|| && は使わないの。 
ましてやネストなんてしないわけ

だからミスするんじゃないか。
353デフォルトの名無しさん:2006/03/11(土) 23:18:05
なんで仕様変えてるん?
354デフォルトの名無しさん:2006/03/11(土) 23:19:39
>>352
バグの元だからmallocとか使わないという人みたい。
355デフォルトの名無しさん:2006/03/11(土) 23:22:07
>>351

だから、チャント仕様を書いてくれよ。
どういう時に || を使うの? って聞いて、コード直せってのは違うだろ?

こんなコードは、オレは書かないんだから判らないんだよ。
ましてや == 使ってて float とか使うとは思いもしないわけで

この関数はどういう条件なわけ?
356デフォルトの名無しさん:2006/03/11(土) 23:23:32
>>354
そりゃ、mallocは当然ラップしてから使うよ
357デフォルトの名無しさん:2006/03/11(土) 23:25:43
都合の悪いレスは無視なんだなぁ。
358デフォルトの名無しさん:2006/03/11(土) 23:29:00
引き数は l と intOnly

l->m_subTypeType は列挙型で

  CTNCT_INT
  CTNCT_FLOAT
その他がある。

  CTNCT_INT  かまたは、  intOnly というローカル変数が0でかつ CTNCT_FLOAT  の時は・・・・・

というような仕様なら、前にも書いた通り、その通り書くよ。

自分の設計なら

  CTNCT_INT
  CTNCT_FLOAT
  CTNCT_OnlyFLOAT
の3つの条件して渡すよ
359デフォルトの名無しさん:2006/03/11(土) 23:29:07
>>347
> そんなコードホントに書いてるの? ミスの元だよ。

信頼性が高いといわれているソフトでも同じようなコードが散見するんで、
問題ないでしょ。
360デフォルトの名無しさん:2006/03/11(土) 23:29:41
>>355
じゃあこんなのはどうすんの?
仕様は見たまんまで。

Window* p=getWindow();
if(p == &topWindow || (p == &bottomWindow && p->visible)){

}
361デフォルトの名無しさん:2006/03/11(土) 23:31:47
>>345
おもしろいですね。

if( intOnly == 0 ){
ではなく、
if (intOnly == 0) {
とカッコの外側にスペースを入れるなど、まさにそうかもしれませんね。
362デフォルトの名無しさん:2006/03/11(土) 23:34:30
>  CTNCT_OnlyFLOAT

勝手に変な型をふやすなよ
363デフォルトの名無しさん:2006/03/11(土) 23:35:51
>>361
上の書き方で書けとか言われたら個人的にはサブイボ出る
364デフォルトの名無しさん:2006/03/11(土) 23:35:52
>>360 今度は間違わないように書き直すね

 (p == &bottomWindow && p->visible)) visibleであって bottomWindow  
|| (p == &topWindow )  かまたは topWindow である場合 

だね?
これがそういう仕様なら、この通りかく。 それは仕様書に従うべきだから。

で自分の設計なら、 
この処理をしなければいけない理由があって、その状態だから、この処理をするのだから
p のクラスに状態フラグを入れてしまう。
365デフォルトの名無しさん:2006/03/11(土) 23:38:07
>>363
>>338とか?
366デフォルトの名無しさん:2006/03/11(土) 23:40:45
func (arg)
?
367デフォルトの名無しさん:2006/03/11(土) 23:43:13
数学関数は、関数名と括弧の間には空白は入れないから、
そこはそれに従ったのだと思う。
368デフォルトの名無しさん:2006/03/11(土) 23:45:17
>>364
状態フラグを導入する?そっちのがヘタっぽい気が。

自分はそういう状態フラグの周辺でバグは出やすいと認識してる。

369デフォルトの名無しさん:2006/03/11(土) 23:47:40
>>360
で自分の設計ならの場合は

結局メンバをstatusHoge を増やして、

topWindow.statusHoge=true;
bottomWindow.statusHoge=bottomWindow.visible;

みたいな処理があって・・・・

Window* p=getWindow();
if(p->statusHoge){

}

ね。 こっちがすっきりするでしょ?
370デフォルトの名無しさん:2006/03/11(土) 23:48:54
>>354
俺が見た例
・malloc()禁止
 配列にサイズチェックなしでデータをためていくようなコードが当たり前のようにあるプロジェクトなのに。
 (逆にそういうレベルだからmalloc禁止か?)
・MFCは使っているのにCStringは禁止
 理由はメモリリークするからというので、どういう操作でメモリリークを起こすか質問したら、
 「わからない先輩にそうきいた」と。
・詳細は忘れたけどVBでテキストが変更されるときに飛んでくるイベントは使用禁止
 理由はバグるから
371デフォルトの名無しさん:2006/03/11(土) 23:49:21
手っ取り早くおまえらコーディングスタイルを次にあわせてくれませんか?
・2項演算子はスペースを入れる。
・if(){とかかないで{は次の行にする
・if () のように括弧の前にスペース入れない。
372デフォルトの名無しさん:2006/03/11(土) 23:49:40
>>371
やだ
373デフォルトの名無しさん:2006/03/11(土) 23:49:47
>>369
釣り?
374デフォルトの名無しさん:2006/03/11(土) 23:51:05
>>371
だぁめぇ〜
375デフォルトの名無しさん:2006/03/11(土) 23:52:11
>>371
if ()は譲れない
376デフォルトの名無しさん:2006/03/11(土) 23:52:20
>>368
 状態といっても、ようするにコレ一部でも見えてる場合はって感じの場合なんでしょ?
 だったら、そういう状態を持っているのが普通だと思うのだけど?
377デフォルトの名無しさん:2006/03/11(土) 23:52:33
各自好きなスタイルでコーディングできるエディタ作ればいいじゃん。
378デフォルトの名無しさん:2006/03/11(土) 23:52:49
>>369
悪い、ちょっと書き間違えた。
topWindowとbottomWindowは実体じゃなくて、ポインタ変数で、
ウインドウの関係が変われば書き換わるんだよ。

その場合、お前の設計はどうなる?
379デフォルトの名無しさん:2006/03/11(土) 23:55:16
>>377
好きなスタイルでコーディングできるから、ヘタクソが分かっちゃうんでしょ。
380デフォルトの名無しさん:2006/03/11(土) 23:56:18
>>370
そうなら、なおさら、top/bottom の位置関係はオブジェクト側で持っているべきだと思う

ポインタで比較するのはあんまりしない。
381デフォルトの名無しさん:2006/03/11(土) 23:58:08
>>379
設定によって
if()
と書かれたコードでも
if ()
と表示するわけだが(もちろん、その逆も)。
382デフォルトの名無しさん:2006/03/11(土) 23:58:40
>>378
たぶん top/bottomはZ軸 オーダの事で、リストのような構造を辿るというような設計なんでしょ?

でtopにする場合にリストの先頭につなぎなおす筈だから、その処理で
先頭から順にメッセージを送って、それぞれ状態を作り直せばいいじゃない
383デフォルトの名無しさん:2006/03/11(土) 23:59:12
>>361
K&Rだとキャストの後ろも
d = (double) hoge;
みたいにスペースが入ってるけどそれも同じ理由なのかね?
384デフォルトの名無しさん:2006/03/11(土) 23:59:37
バグとかアンカーミスとかあると、
こいつのやった仕事、信用できねーと思う。
385デフォルトの名無しさん:2006/03/12(日) 00:01:19
>>380
オブジェクトに相対的な位置関係情報を持たせるのはあまり上手い設計じゃないな。
自分の相対的な位置を知るためには、他のオブジェクトの位置も知らないといけないということだから。
386デフォルトの名無しさん:2006/03/12(日) 00:02:57
if(XXX )
if(XXXX) と書く奴はヘタだなって思う。

&& 演算子知らないのかよって感じ。

あと ||を避けるために変な仕様にする本末転倒なコード見たら張り倒すね。
387デフォルトの名無しさん:2006/03/12(日) 00:06:51
>>385
確かにそうだね。 では GetStatusHoge() とメソッドにしておこう。

bool window::GetStatusHoge(){
if(this->IsTopWindow() ) return ture;
if(this->IsBottomWindow() ) return visible;
}
こんな感じかな


388デフォルトの名無しさん:2006/03/12(日) 00:08:13
ぱっと見て「心配だなぁ」と思うコード

Window* p=getWindow();
if(p->statusHoge){
...
389デフォルトの名無しさん:2006/03/12(日) 00:09:25
IsTopWindow()とかIsBottomWindow()とかは、誰かが作ってくれる前提なのか。
390デフォルトの名無しさん:2006/03/12(日) 00:11:36
>>389
いや、
if(this==topWindow )
と書きかけたけど、topかどうかを知る方法はメソッドとして、
後で変更出来るべきだと思い直したから 中途半端な書き方になった

スマン
391デフォルトの名無しさん:2006/03/12(日) 00:12:39
普通にこれでいいじゃん。

bool window::GetStatusHoge(){
 return this->IsTopWindow() || (this->IsBottomWindow() && visible);
}

>>387と比べて、何がしたいか意図が明確。
392デフォルトの名無しさん:2006/03/12(日) 00:17:34
>>391
否定はしないけど、
この仕様、

ゴメン bottomの場合って言うのは間違いで、top以外なら visibleだけで処理してよ
え? topを特別にする理由? だからtopなら無からずvisibleだからだよ。 他の窓に隠れないだろ?
だから、 visibleは見えてる部分があるかどうかだよ。

え? visibleだけでいい? まあそうだね
393デフォルトの名無しさん:2006/03/12(日) 00:20:59
論理 or や and を嫌うのは、ブール代数とかが嫌いなんだろうなぁ
自然に読み下せていいと思うけどなぁ
英語も嫌いなんだろうなぁ
394デフォルトの名無しさん:2006/03/12(日) 00:25:37
>>393
というか単純な事を複雑にしたがるのが嫌ってのが大きいかもしれないね

&& || が多い人は、
妙にくどいし、重複を厭わない
不思議な事に & | ^ を使って短く書いたコードになぜか拒否反応がある事が多い。
395デフォルトの名無しさん:2006/03/12(日) 00:25:43
>>392
>ゴメン bottomの場合って言うのは間違いで、top以外なら visibleだけで処理してよ
>え? topを特別にする理由? だからtopなら無からずvisibleだからだよ。 他の窓に隠れないだろ?
>だから、 visibleは見えてる部分があるかどうかだよ。

意味不明。というかアホすぎ。
top以外なら?勝手に仕様を脳内変更だよ。

お前こう言ってただろ。
>364
>visibleであって bottomWindow かまたは topWindow である場合 
396デフォルトの名無しさん:2006/03/12(日) 00:26:21
>>394
>というか単純な事を複雑にしたがるのが嫌ってのが大きいかもしれないね

お前だドアホ!
397デフォルトの名無しさん:2006/03/12(日) 00:30:04
>>360

>if(p == &topWindow || (p == &bottomWindow && p->visible)){

オブジェクトの外側で ヘタな事やってるね

OOPなら メッセージを投げなさいな
398デフォルトの名無しさん:2006/03/12(日) 00:31:31
>>395
( (visibleであって bottomWindow ) かまたは topWindow ) である場合でしょ?

だから、この条件って何なのよ? その仕様をはっきりさせて
たぶんもっと簡単な解決法があるから
399デフォルトの名無しさん:2006/03/12(日) 00:33:24
>>397
oopなんて一言も言ってないけど。
あくまで || と && をどうやって無くすつもりかのサンプルとして書いたもので、
最初は単純なCのつもりで書いてるし。
400デフォルトの名無しさん:2006/03/12(日) 00:33:27
とりあえずこのスレを眺めて思ったことは
自分のスタイルを確立してしかも他人に対してそれを主張するのは
他人の書いたコードをうんざりするほど読み込んでからにした方が
おそらく変に偏らずにすむということだ。
401デフォルトの名無しさん:2006/03/12(日) 00:37:43
>>400
ぱっと見て「ヘタだなぁ」と思う文章
402デフォルトの名無しさん:2006/03/12(日) 00:38:38
>>399
どうやって無くすかより、
>>360みたいなコードを書く場合は
それが自分の設計なら、必要かどうかを先に検討した方がいいよ
先頭か (最後尾で表示オン) って妙な条件でしょ?
403デフォルトの名無しさん:2006/03/12(日) 00:39:25
このスレで議論されてることはほとんど、うんざりするほど読まなくても、
有名なプロダクトのソースや本をかいつまんで読むだけで、はっきり
するようなレベル。
404デフォルトの名無しさん:2006/03/12(日) 00:40:36
>>398
だから条件は、ウインドウがトップウインドウ、
もしくは、ボトムウインドウでvisibleな場合だけだって。

その場合にアラーム鳴らしたりすんだよ。

405デフォルトの名無しさん:2006/03/12(日) 00:43:54
>>402
お前、if(l->m_subTypeType == CTNCT_INT || (l->m_subTypeType == CTNCT_FLOAT && !intOnly))
は||をムリヤリ無くそうと、↓のコードに改悪したくせに。

switch( l->m_subTypeType ){
case CTNCT_INT :
case CTNCT_FLOAT:
if( 0== intOnly ) ....
}

ポインタはswitchに直せないからって、主張微妙に修正しやがって。まったく。
406デフォルトの名無しさん:2006/03/12(日) 00:49:35
>>403
議論というか趣味の押し付け合いだな。
しかも題材も捏造したコードでなぜゆえにこんなに必死になってるんだ。
407デフォルトの名無しさん:2006/03/12(日) 00:52:13
>>403
本の名前あげてみて
408デフォルトの名無しさん:2006/03/12(日) 00:53:58
どうせこのスレで集めたネタも本にするつもりなんだろう
409デフォルトの名無しさん:2006/03/12(日) 00:54:17
>>404
わかった。
ようするにトップなら無条件で、2番目なんて興味なし、でもイケメンならビリも可愛いいから喰っちゃうわよと。
こういう事?

なら、if( IsCool(p) ) {. .. } でいいじゃない。

IsCool(window * p){
if(p==トップ) return もちろん;
if(p->いけめん) //なら
if(p==ビリ) return OK;
}
これで判り易いでしょ?
410デフォルトの名無しさん:2006/03/12(日) 00:57:01
>>405
だから、それ、仕様をハッキリしてくれたら、もっと上手な方法教えたげるよ
411デフォルトの名無しさん:2006/03/12(日) 00:57:11
switch( l->m_subTypeType ){
case CTNCT_FLOAT:
 if( 0 == intOnly ){
case CTNCT_INT:
  ...;
 }
 break;
}
412デフォルトの名無しさん:2006/03/12(日) 01:01:52
>>407

・Cの文字列はmemset()で0で埋める
・#include と <・・・>はくっつけて書く
・二項演算子の両脇はあけない
・&&と||は使わない

こういうことを薦めている本を教えてください。
413デフォルトの名無しさん:2006/03/12(日) 01:03:49
>>411 好き

int f=1<<->m_subTypeType;
f &= (1<<CTNCT_FLOAT) | (1<<CTNCT_INT);
f &= (0==intOnly) << CTNCT_INT;

if(f){ ... }
414デフォルトの名無しさん:2006/03/12(日) 01:12:37
>>409
isCool関数内で&&,||演算子を使わない理由がわからん。
お前は結局、&&と||を使わなくてもなんとかけることを示してるにすぎない。

そりゃ、使わなくても書けることは分かってる。
しかし、どう見ても使わないより上手くかけてるとは言いがたい。

それではお前の 「||を使う奴はヘタ」という主張を通せない。
415デフォルトの名無しさん:2006/03/12(日) 01:14:59
>>413
そういうCTNCT_FLOATが32以上の可能性を考慮しないアホコード晒して、何が楽しいの?
416デフォルトの名無しさん:2006/03/12(日) 01:30:15
>>414
まあ、どっちでもコストは同じだとは思うよ
||も内部では条件分岐だしね。

でも、>>409のように書けばデバッグし易いメリットがある
ブレークポイントも仕掛けられるんだしね
トレース実行で、どっちの条件で落ちたか確認するのも容易だ
トレース実行すれば体感的に動作が判る=身につき易いという事
417デフォルトの名無しさん:2006/03/12(日) 01:34:51
もう一つのメリットは
論理型以外も返せるという事

こんな関数を沢山作るのが嫌なら
pascalの集合型のような方式で条件を作って返すようにすれば、and or 表方式で
簡単に条件の差し替えを実行中にも出来るように出来る

ブザーを鳴らしたい条件が後から変更されてもコードを直さないで
その場で iniファイルの設定で修正できるわけさ
418デフォルトの名無しさん:2006/03/12(日) 01:47:29
関数に切り分けることは否定していない。
結局 ||,&&を使う奴はヘタという対した理由は無しと。
419デフォルトの名無しさん:2006/03/12(日) 01:57:32
>>418
登山をするときには最も体の弱い人間にペースを合わせるのが鉄則。
同様に開発においても最も頭のよ(ry
420デフォルトの名無しさん:2006/03/12(日) 01:59:33
a || b || cより

if(a)return;
if(b)return;
if(c)return;

が、デバッグしやすいから常に優れてるというのなら、
あらゆる二項演算子も同様の記述をすべきだ。

return a + b + c;



temp = a + b;
temp += c;
return temp;

しかし、普通は逆に見がたくなるケースが多い。
つまり、同様に &&,||もデバッグのしやすさをの方を追求することは、
常に優れている方法ではない。わかる?
421デフォルトの名無しさん:2006/03/12(日) 01:59:46
あまりにも体の弱い人間は連れていってもらえないわけだが
422デフォルトの名無しさん:2006/03/12(日) 02:03:11
>>418  たとえば自分なら、こんな仕様が渡されたら

f= (p == &bottomWindow)<<2
+  (p == &topWindow)<<1
+  (0 != p -> visible )<<0

とすれば 0〜7の値となる。  さらに、
b= 1<<f;
とする。 値は1,2,4,...128 という値となる

条件判断部は
if(b&getSetting(__BEEP)){
}

てな感じにする

これで設定ファイルで この3つのどんな条件でも作れるという事になる
この場合、初期値は
f=0b011 3
f=0b100 4
f=0b101 5
f=0b110 6
f=0b111 7 で 0xF8 となる

ムダに複雑にしたように見えるかもしれないが
定型コードだから、書くのに手間はない。(というか、この設定値のGUIも作ってある)

実際、|| && を組み合わせるような条件は仕様変更の対象になり易い。
キミは修正してと言われたら帰ってビルドしなおしますと答える必要がある。
片方は、そのまま実行しながら条件を変更してみせられる。
423デフォルトの名無しさん:2006/03/12(日) 02:03:32
じゃあa && b || cで混乱するような奴も不参加だな。
424デフォルトの名無しさん:2006/03/12(日) 02:03:48
まあ、こうやって客に誉められても、オレ指定の仕事が増えるばかりで、
給料は変らない。 お勧めはしないけどね
425デフォルトの名無しさん:2006/03/12(日) 02:07:53
>>420
確かに 2項演算子を代入演算子に変換してしまうことは多いな。

見辛くてごめんね
426デフォルトの名無しさん:2006/03/12(日) 02:11:11
ああ チョッとぼけてる >>422は少し間違い
f =  (p == &topWindow)<<2
 + (p == &bottomWindow)<<1
 +   (0 != p -> visible )<<0 ;
だな
427デフォルトの名無しさん:2006/03/12(日) 02:15:47
+ と << では演算子の優先順位があれなので・・・。
428デフォルトの名無しさん:2006/03/12(日) 02:17:45
またバグ出したのか。偉そうにいってコレではなあ。
そりゃ給料変わらないわな。
429デフォルトの名無しさん:2006/03/12(日) 02:18:33
>>428
でも、この方法なら、客先で気付けばその場でビルドせずに修正出来たわけだ
430デフォルトの名無しさん:2006/03/12(日) 02:22:01
>>328

チャンスがあるなら、それからチャンスがあるなら 自分のコードで バグ取りをする時は、 &&,||をムリに変更加えたところや<< + を使ってるとまず疑うといいよ
431デフォルトの名無しさん:2006/03/12(日) 02:22:38
>>429
おいおい、お前が間違えたのはソースの方だぞ。
432デフォルトの名無しさん:2006/03/12(日) 02:22:52
>>429
バカ丸出し。これをビルドせずに修正?出来るわけないだろ。
433デフォルトの名無しさん:2006/03/12(日) 02:22:55
設定ファイルで動作条件を変えられるようにするくらい、どこでもやってるだろ。
434デフォルトの名無しさん:2006/03/12(日) 02:26:01
Cインタプリタ使えば万事解決
435デフォルトの名無しさん:2006/03/12(日) 09:49:10
結局ヘタというより、盛り上がるのはC/C++言語故の悩みってのが殆どだね。

memsetとかtrueとかしまいには、空白作法・・・・

pascal系のように綺麗でカッチリした言語にもう少し普及して欲しいねえ
っと言えば
#define BEGIN {
みたいなのを勧めるトンでもな奴と叩かれるんだろうが・・・・
436デフォルトの名無しさん:2006/03/12(日) 10:09:36
pascalってかdelphiにも宗教戦争あるじゃん
インデントにはスペースとタブどっちを使うかとか
やはり演算子の脇のスペースとか
大文字小文字の統一・混在とか
withはバグの元だから使うなとか
if文でbeginを書く位置とか、やっぱり色々あり過ぎね
437デフォルトの名無しさん:2006/03/12(日) 10:13:17
pascalもカッチリしてないよ。
begin、endをどこに書いてもいいし、空白だってそうだ。

自己満足以外の理由・根拠なしに、他の流儀を掻き乱すから叩かれるんだ。
438デフォルトの名無しさん:2006/03/12(日) 10:14:40
IDEが俺俺スタイルとプロジェクトスタイルを相互に変換してくれればほとんど解決じゃない?
読み込み時に俺俺スタイルに変換
保存時にプロジェクトスタイルに変換
439デフォルトの名無しさん:2006/03/12(日) 10:16:08
もっとこう言語使用がカッチリしていて
C並の速さで動作して、しかもGUIが簡単に作れる
ビシッと一発痺れる憧れるぅ!な言語まだ〜?
440デフォルトの名無しさん:2006/03/12(日) 10:24:30
pascalの宗教戦争はあんまり見た事が無いな

インデントにはスペースとタブどっちを使うかとか ----それこそエディタ上でどっちでも変更出来る事だろう
やはり演算子の脇のスペースとか ---- 演算子が and or だから入れるべき所に入れない訳にはいかない
大文字小文字の統一・混在とか ----大文字小文字区別しない言語だから、比較的寛容かもね
withはバグの元だから使うなとか ------- with TStringList.Create do tray ..... finally free end; とか?
begin end を採用したおかげで、そんなにネスト出来ない事もあるのかもね

まあ何より pascalはborlandの拡張まで分割コンパイルが出来なかったから
多人数で共同制作という機会が無かったのだろうな
441デフォルトの名無しさん:2006/03/12(日) 10:43:20
> pascalの宗教戦争はあんまり見た事が無いな

それ以前に使っている人見たこと無いなw
442デフォルトの名無しさん:2006/03/12(日) 10:45:55
もうね。

ソースコードにメタ情報入れて、
タブは何文字で、演算子の前後にはスペース入れてとか、

んで、エディタで読み込むときは、自分のスタイルに変更して表示、
書くときはメタ情報のもとのスタイルにもどして書く。

デザインと中身の分離だよ。そうしろよ。
443デフォルトの名無しさん:2006/03/12(日) 10:54:05
>>442
禿同
444デフォルトの名無しさん:2006/03/12(日) 10:55:36
>>442
いっそ、言語仕様をXML化して、CSSで表示するってのはどうだ?
445デフォルトの名無しさん:2006/03/12(日) 11:01:22
そういうのは必ずバグがあったり他のツールとの共存ができないなどで駄目。
やっぱりまともなコーディングスタイルをみんなが実践しないと。
演算子をくっつけてファイルサイズを節約しているそこのあなた。
{をifと同じ行に押し込めて行数を節約しているあなたも。
反省したまえ。
446デフォルトの名無しさん:2006/03/12(日) 11:02:04
>>442
有り難いことにindentのオプションをソースの先頭にかいてあるものもある。
447デフォルトの名無しさん:2006/03/12(日) 11:06:16
char* p = (char*) malloc(hoge_size);
memset(p, NULL, sizeof(p));
448デフォルトの名無しさん:2006/03/12(日) 11:08:04
>>445
じゃあそのまともなコーディングスタイルをお前が作ってくれ。
449デフォルトの名無しさん:2006/03/12(日) 11:09:36
もうさ、生のソースコードは、インデント無し、改行無し、
余計な{}無しの一行コードでいいじゃん。
そうすりゃ、誰もが整形機能を持ったエディタで見るだろう。
450デフォルトの名無しさん:2006/03/12(日) 11:33:47
>>440
もう本当に、ふだん、いい加減にソース書いてるって感じの認識だな。
451デフォルトの名無しさん:2006/03/12(日) 11:45:24
>>435
> 結局ヘタというより、盛り上がるのはC/C++言語故の悩みってのが殆どだね。

いや、ヘタだろ。
ここで盛り上がってるのって、世間じゃ意見が分かれるようなことじゃないのに。
宗教論争になりがちなタイプの話題とはぜんぜん違う。
452デフォルトの名無しさん:2006/03/12(日) 11:53:35
またソレかよ。>>450

試しに、素数を列挙するコード書いてみてよ。 
この1レスに収まるという条件で、結果出力は必要ないから
453デフォルトの名無しさん:2006/03/12(日) 12:01:50
>>451
空白絶対空けないと許さないよ君がしつこくなければ盛り上がらなかったよ。
454デフォルトの名無しさん:2006/03/12(日) 12:01:56
>>451
そもそも、ふつーの人は興味無いしね。
455デフォルトの名無しさん:2006/03/12(日) 12:02:54
木村18
456デフォルトの名無しさん:2006/03/12(日) 12:03:52
↑ъ( ゚ー^) 誤爆スマソ
457デフォルトの名無しさん:2006/03/12(日) 12:12:30
>>456
                  _ _     .'  , .. ∧_∧
          ∧  _ - ― = ̄  ̄`:, .∴ '     (    )
         , -'' ̄    __――=', ・,‘ r⌒>  _/ /
        /   -―  ̄ ̄   ̄"'" .   ’ | y'⌒  ⌒i
       /   ノ                 |  /  ノ |
      /  , イ )                 , ー'  /´ヾ_ノ
      /   _, \               / ,  ノ
      |  / \  `、            / / /
      j  /  ヽ  |           / / ,'
    / ノ   {  |          /  /|  |
   / /     | (_         !、_/ /   〉
  `、_〉      ー‐‐`            |_/

458デフォルトの名無しさん:2006/03/12(日) 12:20:57
>>454
興味ないからじゃなくて、変な書き方する人がいないから。
(まともなところは)
459デフォルトの名無しさん:2006/03/12(日) 12:28:46
まともな人たちが何人かでコードを書くんで、コーディングルールを確認しました。

二項演算子の両側は空けるってルールを作っても誰も文句は言いません。
詰めるってルールを言うヤツが混じってたら、「なんで?」「それやめましょうよ」って
ことになる。

興味ないから、議論にならないってわけではない。
(あたりまえすぎて議論にならないってならそう)
460デフォルトの名無しさん:2006/03/12(日) 12:46:32
出た。口癖の「まとも」w

まともかどうかは主観に過ぎないのに
自分の「まとも」を押し付けようとするバカw

ちなみに、絶対に詰めろ、というバカは居ないので、
押し付けてるのは、絶対に空けろ、というバカだけです。
461デフォルトの名無しさん:2006/03/12(日) 12:46:58
なんか芳ばしい匂いがすると思ったら、このスレか…。

ソース位、コンパイラの様におおらかに見る所と、
厳しく見る所のメリハリをつけれよ。
462デフォルトの名無しさん:2006/03/12(日) 12:56:04
>>459
詰めてないオプソのソースもあったろ。
お前がやーやーうるさいから出してやったのに、もう忘れたのか。
お前の脳味噌はニワトリ並か。


あと、半角の?のような特徴を残さない方がいいよ。
同一人物だってバレバレだから。
463デフォルトの名無しさん:2006/03/12(日) 13:06:39
>>459
なんで詰めるルールを作るんだ?
頭大丈夫か?
464459:2006/03/12(日) 13:46:49
頭だめですっ!もぅ頭ですっ!誰か頭たすけてっ!!
465デフォルトの名無しさん:2006/03/12(日) 13:47:30
流れを読まずに書くが、

スタイルなんて個人のもっとも読みやすい形で書くのが普通だろ?
それが、そのソースを書いた人にとって一番コーディングしやすいし、読みやすい。

人間一人一人、個性や好みが違うというのに、俺のスタイル以外はキモイ!って言うのは、
納豆が嫌いなやつに「納豆うまいだろ!何言ってんのキモイ!」とかいうのと一緒。
466465:2006/03/12(日) 13:51:23
あっ、スレタイネタを一個投下。
フラグを使う奴は「ヘタだ。」とまでは思わんが、うまくはないなぁ。とは思う。
467デフォルトの名無しさん:2006/03/12(日) 13:52:57
>>465
納豆はウマいです。勘弁してください。
468デフォルトの名無しさん:2006/03/12(日) 13:53:02
>>465
466がなければよかったのに。
残念だ。
469デフォルトの名無しさん:2006/03/12(日) 13:53:12
あっ、スレタイネタを一個投下。
OS書く以外の用途でCを使う奴は「ヘタだ。」とまでは思わんが、うまくはないなぁ。とは思う。
470デフォルトの名無しさん:2006/03/12(日) 13:57:33
また昨日の基地外が現れたのか
ID出ない板だと一人基地外が出現するだけで大盛況だな
471465:2006/03/12(日) 14:07:54
>>467
納豆うまいだろ!何言ってんのキモイ!

>>468
「フラグは使うな」ってCプログラミング診断室の人もいってるぜよ!

>>469
ちょ、おま、まねすんな。なんか恥ずかしい
画像ファイルとかの読取り、書込みでも使うと思うよ。っていうか使ったよ。
あ、でもCじゃねーな。C++だ。OSか。ならやっぱ同意。
472デフォルトの名無しさん:2006/03/12(日) 14:11:35
Ruby作者が言語作るのにCより高級な、
特にクラスのある言語を使うと頭が混乱するというような事を言ってたな。
なんとなくわかるようなわからんような。
473デフォルトの名無しさん:2006/03/12(日) 14:14:49
>>472
クラスのある言語で、クラスのある言語を実装するのは混乱する、ということを言ってたはず。
お前のニュアンスは違う
474デフォルトの名無しさん:2006/03/12(日) 14:37:36
半角の?と まともな で検索したら、キチガイが浮かび上がってくるね。
475デフォルトの名無しさん:2006/03/12(日) 14:38:34
char* p, q;
476デフォルトの名無しさん:2006/03/12(日) 14:45:01
Cの方が速いのにうまくないなぁって、アフォかと
477468:2006/03/12(日) 15:02:56
>>471
フラグの是非じゃなくてさ。
どんな優秀な作品にもケチつける人がいるように、
フラグ使用も個人の好みじゃないの?ってこと。

ぶっちゃけ、一貫したスタイルで書いてて、動けば何でも来いだ。
478465:2006/03/12(日) 15:22:26
>>477
>フラグ使用も個人の好みじゃないの?ってこと。
まあ、確かに。フラグ使ってる人もヘタなわけではないし。

>動けば何でも来いだ。
これは同意できないけど。コードはやっぱりできる限り、綺麗な方がいい。

まあ、俺が思った事とは、違う意味で言ったのかもしれないけどね。
479デフォルトの名無しさん:2006/03/12(日) 15:46:40
>>370
CString使えないんじゃMFCやめてしまっちゃええええーーこの!
480デフォルトの名無しさん:2006/03/12(日) 16:26:23
virtualでpublicなメンバ関数
481デフォルトの名無しさん:2006/03/12(日) 16:40:38
martialでcedricなシーラカンス
482デフォルトの名無しさん:2006/03/12(日) 21:46:04
>>460
主観ていうか、世間で評価されてるプロダクツとか、まともな本に掲載されてるソースとか、
圧倒的多数は二項演算子の両脇を開けるってスタイルなのよ。

「宗教論争」とか「好みの問題」とか言ってる人がいるけど、その言い方で言うなら、
二項演算子の両脇を詰める「宗派」とか、「好んでいる」人っていないわけ。

自分はヘタじゃないって思い込みたい人がこのスレで暴れているだけ。

483デフォルトの名無しさん:2006/03/12(日) 21:59:19
一律すべてにおいて、二項演算子の両端を空けたほうが絶対に
読みやすい。空けないと読みにくい、と思い込むのは宗教。

結局全体的なバランスというか、コンテキストによるんだよ。
複雑な式なら、意味のまとまりごとにスペースや括弧を入れるとか、
自己満足じゃなくて、いかに他人に伝えるかが大事なんだから。
484デフォルトの名無しさん:2006/03/12(日) 22:10:28
if( a + b >> 1 > x - y * 4 )

if( a+b>>1 > x-y*4 )

ではどっちが可読性高いか。(個人的には下。個人的にね)。


たとえば、一行に複数の文を入れるのを嫌う人がいるが、値のスワップにおいては

int tmp = a[i]; a[i] = b[j]; b[j] = tmp; /* a[i],b[j], swap */

と一行で書いてしまったほうが、コードを見渡したとき、全体を把握する際邪魔に
なりにくい場合が多い。もちろんこの場合はマクロにしたほうがいいけどな。
485デフォルトの名無しさん:2006/03/12(日) 22:11:25
もう宗教論争はいいんじゃね
486デフォルトの名無しさん:2006/03/12(日) 22:12:05
>>482
暴れてるのは「まともな」が口癖で、
文の後に括弧で言い訳みたいな注釈つけたり、半角?を使うのが特徴のお前「だけ」だよ。

>>221もお前だろ。

主観だと指摘されてるのに未だ「まともな」とか口走ってるのね。カワイソス
487デフォルトの名無しさん:2006/03/12(日) 22:16:25
演算子を詰めて記述しなさいっていうコーディング規約なんて見たことないけどな。
488デフォルトの名無しさん:2006/03/12(日) 22:20:22
「演算子の両端をあけなさい」なんていう規約があったらその規約そのものに疑念を抱くな俺は。
そういう規約には往々にして、本質的に大事なことが抜けていたりする。
489デフォルトの名無しさん:2006/03/12(日) 22:20:31
つうか、そもそもお前の論理おかしいんだよ。

お前はこう主張したいんだろう。
「まともな本では空白を空ける」 -> 「だから空白を空けるのがまとも」

しかし、お前のレスを読むと、次のように捉えてることがわかる。
「空白を空けるのがまともな本で、空けないのはまともじゃない」 -> 「まともな本では空白を空ける」 -> 「だから空白を空けるのがまとも」

こんな論理展開ありえない。

>>487
詰めて記述するのが正しい、と主張してる人は居ないので、それはどうでもいいんだよ。
490デフォルトの名無しさん:2006/03/12(日) 22:22:05
ケースバイケースでいーじゃんもう・・・
491デフォルトの名無しさん:2006/03/12(日) 22:23:41
二項演算子の両側にスペースを入れている有名な
プロダクトの優秀なプログラマに、二項演算子の両
側にはスペースを空けたほうが上手なコーディング
ですよね、と質問したら鼻で笑われるよw
492デフォルトの名無しさん:2006/03/12(日) 22:31:12
>>482
ttp://www.gnu.org/prep/standards/standards.html
の5.1 Formatting Your Source Codeには、

v = rup->ru_utime.tv_sec*1000 + rup->ru_utime.tv_usec/1000

なんて記述がありますよ。
GNUウェアは世間で評価されていないプロダクツですね。
493デフォルトの名無しさん:2006/03/12(日) 22:33:44
おれもだんだん不毛にみえてきた
「あぁ、バグでたとこをどんどん直してテストコード書いとけばいいんですよ」
って言ってた後輩がいたんだがあいつが一番正しいな、と思う
ま、そういってもここの住人は「お前が一番分かってない」と嬉々として書き込むんでしょうがw
494デフォルトの名無しさん:2006/03/12(日) 22:34:59
そういえば、-> って二項演算子だよな。
495デフォルトの名無しさん:2006/03/12(日) 22:35:33
俺のコーディングスタイルが
まともということでいいな?
496デフォルトの名無しさん:2006/03/12(日) 22:36:34
誰だよww
497デフォルトの名無しさん:2006/03/12(日) 22:37:31
俺が思うにな。まともなソースってのは、
俺と同じコーディングスタイルをしているんだ。
俺と違うコーディングタイルをしているものはまともじゃない。

そうすると、まともなコードってのはどんなのかわかってくるよ。
そのときにコードを見てみ。俺と同じコーディングスタイルだから。
で、違っていたら、それはまともじゃない。
498デフォルトの名無しさん:2006/03/12(日) 22:39:23
俺が推奨するコーディングスタイルの奴を、「まともな本」と定義する。

するとな「まともな本」のコーディングスタイルは
必ず、俺が推奨するコーディングスタイルなんだ。

この謎わかる?
499デフォルトの名無しさん:2006/03/12(日) 22:40:20
>>492
それ2つの例の両方とも、二項演算子の両端を空けてない場所があるやんけ。
500デフォルトの名無しさん:2006/03/12(日) 22:42:03
>>492
GNUが評価されてないなんてこた言う度胸はないけど、
GNUのって日本ではあまりお目にかかれないスタイルって
感じするよね
if (x < foo (y, z))
haha = bar[4] + 5;
else
{
while (z)
{
haha += foo (z, z);
z--;
}
return ++x + bar ();
}
こんなスタイル(海外のOSSではもちろんあるけど)日本で仕事する限りにおいて
すくなくても俺の周りでは見たことない
501デフォルトの名無しさん:2006/03/12(日) 22:43:05
>>499
空けてある場所もありますよね。

この二つからでる答え。
バカじゃない人ならわかりますよね。
わからなかったらバカです。
502デフォルトの名無しさん:2006/03/12(日) 22:44:02
>>500
じゃあ、お前の周りにいる奴は、まともじゃない。
503デフォルトの名無しさん:2006/03/12(日) 22:45:23
ところでお前ら、2ちゃんねるに長文書くとき

一行一行に空行空ける?空行空けない?

俺空ける派。
504デフォルトの名無しさん:2006/03/12(日) 22:47:46
くっつけて書いたら見にくいって時は空けて、
別に見にくくないって時は、空けなくていいじゃん。
そんなもん気分次第でいいでしょ?
ルール作るほどのこと?

それともどっちかにしないといけないという明確な理由でもあるの?
理由が無いルールのためのルールは作らないでよね。
505デフォルトの名無しさん:2006/03/12(日) 22:53:34
精神病の判定でそういう項目があったと思う
506デフォルトの名無しさん:2006/03/12(日) 22:56:31
>>502
そうか?422や391などみてみれば?このスレでもGNUスタイルで括弧
つけて書いてるやついたっけ? まったくいないとは思わんけど、このスレでは
圧倒的にGNUスタイルのやつは少数派でしょ
いくらなんでも見識狭すぎじゃね?
507デフォルトの名無しさん:2006/03/12(日) 22:58:28
空けても損は無いが空けなかったら駄目っていう場合がある。
だから空けた方がいい
508デフォルトの名無しさん:2006/03/12(日) 22:59:23
バグに無関係な項目ならば、
単純にその人にとって読みやすければよい。

そんな細かいことを気にすると禿げるぞ。
ただ、C++やっているならむしろ禿げるべきかもしれない。
509デフォルトの名無しさん:2006/03/12(日) 23:01:09
>>507
空けなかったらダメという場合だけ空ければいい。
510デフォルトの名無しさん:2006/03/12(日) 23:01:11
>>508
何ではげなきゃいけないんだよw
と、ちょっぴり不安だぞ
511デフォルトの名無しさん:2006/03/12(日) 23:02:32
ハゲに無関係な項目ならば、
単純にその人にとって読みやすければよい。

そんな細かいことを気にするとバグるぞ。
ただ、C++やっているならむしろバグるべきかもしれない。
512デフォルトの名無しさん:2006/03/12(日) 23:04:28
俺は絶対に禿げない。
513デフォルトの名無しさん:2006/03/12(日) 23:08:54
俺は絶対にバグらせな。。。すまん。。。
514デフォルトの名無しさん:2006/03/13(月) 03:00:53
>>484
>if( a + b >> 1 > x - y * 4 )
>if( a+b>>1 > x-y*4 )

演算子の順序あってるかい?
あってるとすれば俺ならこうかな?

if ((a+b) >> 1 > x - y*4)
515デフォルトの名無しさん:2006/03/13(月) 04:15:47
>>483
 一番の勘違いは
「自己満足じゃなくて、いかに他人に伝えるかが大事なんだから」
の部分だろうね。

余程の酔狂か仕事でなけりゃ、誰も他人のコードなんて読みたいとも思わないもの。

指導者なら仕方なく貴方の汚いコードを読まなければならず、
そして汚いコードを読まなければならない苦痛から色々作法を言いたくなるのだろう。
実際、俺たちもそんな事をつい言ってしまうが、ホントは違う。

逆に言えば作法について言わなくちゃいけない相手ってのは余程相手がヘタクソなレベルだ。

たとえば、
「cの文法から演算子の左右に空白が無ければ空白を入れて出力するフィルターを作ってごらん」
と言って、2時間くらいで書いてくるような奴には、そんな事は言わないし
実際書いてくる奴のコードは、そんな作法とか関係なく、
読みたくなるほどアイデアが込められていて面白いもの
516デフォルトの名無しさん:2006/03/13(月) 04:54:10
v = -1
v + 1

for(i=0; i<size; i++) {
if(i==0) {
} else {
}
}

俺は空白云々は好みの問題だと思う派。
==、forの()内、長い式で優先順位の高い演算子
辺りはくっつけるのが好き。
517デフォルトの名無しさん:2006/03/13(月) 04:54:14
読みたくなくても読みやすく書け
他人のためにも自分のためにも
518デフォルトの名無しさん:2006/03/13(月) 04:56:03
とりあえずプロジェクトに従う
あとは気分
519デフォルトの名無しさん:2006/03/13(月) 07:43:29
>cの文法から演算子の左右に空白が無ければ空白を入れて出力するフィルターを作ってごらん

フィルターというと標準入力 標準出力だが、
プログラム中で使えるフィルターに変更となると、出来る奴は極端に少なくなる

たとえば 1バイト毎に呼び出される手続スタイル
それより面倒なのが、1バイトが必要な時に呼ばれる関数スタイル

両方に対応出来るコードを書けといわれると
1) コルーチン
2) FIFOバッファ
を使わないといけないが、2)はともかく 1)はLONGJUMP/ファイバが使える環境でも実装出来る奴は少ない

逆に言えば、そういうツール作りさえマトモに出来ないから、
妙な所にコダワルのだとも言える。
プロジェクトで最初にそんな話題が出るなら、そのプロジェクトの奴はみんなヘタクソという事だ
520デフォルトの名無しさん:2006/03/13(月) 07:55:38
たぶん そういうの作れと言われた場合の反応

A 作れる派
 ・実際に2時間くらいで作ってみせる 3% 30分なら神レベル 0.3%

B 作れない派
 ・ そんなもの作らなくてもあるんだから車輪の最発明なんてしません 40%
 ・ どっかのコードをコピぺ 30%
 ・ 2千行くらいのスパゲッティコードを書いて、しかも動かない 20%
 ・ すなおにゴメンなさい 7%

で10人くらい集まってると、車輪の最発明だからしない派と、どこからコピペすりゃいいの派とがワイワイやってる間に
 1人が作って、それで終わりか、その一人がいなくて、半日以上時間が過ぎてゆくか
521デフォルトの名無しさん:2006/03/13(月) 08:22:53
>>515
仕事でコード書いたことないだろ?
それともゲームプログラマかなんか?
522デフォルトの名無しさん:2006/03/13(月) 08:36:05
>>521
派遣で携帯電話の仕事でもしてるの? 
523デフォルトの名無しさん:2006/03/13(月) 08:46:20
もしかして、
indent(C++,javaならastyle)というプログラムがあることを知らない人が多いのか?
いつまでやってんだ?
524デフォルトの名無しさん:2006/03/13(月) 08:50:21
>>523 知ってる上で真面目な顔して言ってるみたいよ。 演算子の両側に打鍵時に強制って・・・・ちょっと怖いよね
525デフォルトの名無しさん:2006/03/13(月) 10:09:06
どうでもいいけどcontinueやbreakって使ってる?
ループ内でネストが深くなりそうな気がしたら良く使ってるのだが、
以前一種のgotoだといわれてしまった
526デフォルトの名無しさん:2006/03/13(月) 10:19:10
goto だって平気でドンドン使うが?
状態遷移で分析した結果を素直に書くには gotoが一番さ

そんなこと言えば だいたい break なんかより switch文こそ gotoじゃないか
527デフォルトの名無しさん:2006/03/13(月) 10:20:01
>以前一種のgotoだといわれてしまった
そうだが何か問題でも?
528デフォルトの名無しさん:2006/03/13(月) 10:21:22
本質的には不要で属性上はgoto

つまりあったほうが便利

便利さの代償とバランスについては過去から延々議論されてて答が出ないので触れないほうがよい
529デフォルトの名無しさん:2006/03/13(月) 10:32:32
日本語変なやつが多いな
530デフォルトの名無しさん:2006/03/13(月) 10:35:34
ぱっと見て「ヘタだなぁ」と思う日本語
531デフォルトの名無しさん:2006/03/13(月) 10:42:25
関数の途中の return も gotoだし
else もgotoだ

結局、制御文は goto なのさ
532デフォルトの名無しさん:2006/03/13(月) 11:18:01
エネルギー保存の法則とはよく聞くが、このスレで捨ててしまった
貴重な人生の一部はいったいどこに保存されているのだろうか。
恐ろしいことにこのスレに常駐していると一分一秒ごとに
寿命がどんどん縮まっていくということを
彼らはちゃんと認識しているのだろうか。
533デフォルトの名無しさん:2006/03/13(月) 11:57:00
エントロピーは増大する一方なのだよ
534デフォルトの名無しさん:2006/03/13(月) 14:00:27
>>370
CString使えないプロジェクトなんか絶対従わんっ!
535デフォルトの名無しさん:2006/03/13(月) 14:56:35
オレのえなじーは無限大だよワトソン君
536デフォルトの名無しさん:2006/03/13(月) 15:21:51
>>532
お金というのは、捨てるという事が無ければ 常に 貰う人と差し出す人がいて、それぞれ+/-とすると
ゼロサムになるんだよね。
株の売り買いとか土地の売り買いは、ゼロサムゲーム。

でも、消費だけ生産があり、生産は価値創造。
消費は人にだけ許された行為。 消費には必ず創造がつきまとうんだ。


だから、このスレで何かが消費されたり、消耗されるとすれば、その分創造もあるという事だし
何か、誰かがこのスレに触発されて創造すれば、消費もあるという事かもね
537デフォルトの名無しさん:2006/03/13(月) 17:34:09
>>523
もしかして、indent なんてガイシュツだということを知らな(ry
538デフォルトの名無しさん:2006/03/13(月) 20:54:18
>>537
もしかしてないよ。
結論とか言って既出なのは知っていたが、それでも続いていたから書いた。
細かいことを気になさる方ですね。ニヨニヨ。
539デフォルトの名無しさん:2006/03/13(月) 21:06:04
>>489
> つうか、そもそもお前の論理おかしいんだよ。
> 「まともな本では空白を空ける」 -> 「だから空白を空けるのがまとも」

いやいや「まともな」ってつけてるのは、学生が勉強しながら書いたような本とか、
変なの探し出してきて「こんなのがある」って言うヤツがいるかもしれないからさ。

普通の本だと、二項演算子の両側をくっつけて書いてあるの、捜すの困難だろ。

540デフォルトの名無しさん:2006/03/13(月) 21:09:43
Cで
・流し読みしてあちこちでshortが目につくソース。
・構造体をfwrite()やfrwad()で丸ごと読み書きしてるソース。
・fprintf()やfwrite()などはエラーチェックしてるのに、
fclose()やfflush()はエラーチェックしてない中途半端なソース。
541デフォルトの名無しさん:2006/03/13(月) 21:15:38
shortはデータ量削減のために使うことはあるなぁ。
構造体もそのまま読み書きする事は多いね。
542デフォルトの名無しさん:2006/03/13(月) 21:17:24
で、fclose失敗したらどうすんの?





つかこのスレわざとやってんの?
543デフォルトの名無しさん:2006/03/13(月) 21:17:39
>流し読みしてあちこちでshortが目につくソース。
 これは理由があるのだろう。 理由が無ければヘタだが
 まあ今なら __int16 とかが使える環境ならそれでいいのだろうけど

>構造体をfwrite()やfrwad()で丸ごと読み書きしてるソース
 エンディアンの違いやサイズの違いで可搬性は悪くなるが
 どうせ別の環境同士でファイル交換をそうするわけじゃないなら問題ないだろ
 とりあえず速度優先って仕様かもしれないし、一昔前の環境なら、そうしないと速度出なかったからね

>・fprintf()やfwrite()などはエラーチェックしてるのに、
 fclose()やfflush()はエラーチェックしてない中途半端なソース。
 でもまあ fclose失敗したからってどう対応出来るわけでもないし
 そこまでエラーが無いなら、とりあえずファイルは出来てるさ
544デフォルトの名無しさん:2006/03/13(月) 21:18:17
>構造体もそのまま読み書きする事は多いね。
これはダメ。たまたま動いてるだけだと思った方がいいよ。
545デフォルトの名無しさん:2006/03/13(月) 21:21:33
>>544
どうしてそう思うわけ? 可搬性の問題を言ってるの?
546デフォルトの名無しさん:2006/03/13(月) 21:22:10
>>541
でかい配列を確保するとか、shortを使わされるライブラリが必要なときとか、
そういうときには使うけどさ、単独で使う用途とかあまりないんじゃない?

構造体のそのまんま読み書きは、同じ環境、コンパイラでも、オプション一つで
バグるじゃん。
547デフォルトの名無しさん:2006/03/13(月) 21:23:26
>>546
それこそ、バイナリデータを構造体にそのままfreadで読み込む為に shortを使うんだよ
548デフォルトの名無しさん:2006/03/13(月) 21:25:23
>つかこのスレわざとやってんの?
正解です。短いレスでたくさん釣れると高ポイント。
549デフォルトの名無しさん:2006/03/13(月) 21:26:34
>>543
> でもまあ fclose失敗したからってどう対応出来るわけでもないし
> そこまでエラーが無いなら、とりあえずファイルは出来てるさ

バッファのフラッシュに失敗して、最後の書き込みに失敗してるかも。
入出力のエラーチェックをして、対応してるコードなら、同じように対応すればいいよ。
550デフォルトの名無しさん:2006/03/13(月) 21:27:01
short というより SHORT とか USHORT は普通に使うけどねえ
551デフォルトの名無しさん:2006/03/13(月) 21:27:26
うわー、へたくそが多い。
こわ!
552デフォルトの名無しさん:2006/03/13(月) 21:30:04
>>549
でもさ、 fwrite / fprintf なら再度実行するような処理が出来るけど fclose/fflashが失敗なら
とりあえず何かエラーでしたよと伝えるしかないわけだ。
まあ出してもいいとは思うけどね。 
553デフォルトの名無しさん:2006/03/13(月) 21:31:11
数キロ程度のファイルとか、fclose()するまで、ファイルサイズが0だったりするな。
某OSでは、fclose()のまえにfflush()を入れないと、プログラムが終了するまで、
バッファがフラッシュされないとかある。
どうやって、エラーチェックするんじゃい。
554デフォルトの名無しさん:2006/03/13(月) 21:33:01
>>546
>構造体のそのまんま読み書きは、同じ環境、コンパイラでも、オプション一つで バグるじゃん。

そうならないように、 #pragma とかで大抵は固定出来るようになってるから、勉強しておいで
ヘタ云々の前に お勉強中の状態みたいだね
555デフォルトの名無しさん:2006/03/13(月) 21:34:31
>>552
出してもいいっていうか、ユーザに伝えるなりなんなりしないとまずいでしょ。
556デフォルトの名無しさん:2006/03/13(月) 21:38:34
>>555
まずい場合もあれば、気にしない場合もある。
表示すると簡単に言うけど、 ライブラリレベルで作成する場合には
そう簡単に表示出来るというかしていいわけでもないしね
557デフォルトの名無しさん:2006/03/13(月) 21:39:17
新春の候、皆様いかがお過ごしでいらっしゃいます か。
558デフォルトの名無しさん:2006/03/13(月) 21:44:37
>>556
入出力のみのライブラリだったら、そりゃ表示はしないでしょ。
かわりに、呼び出し側に教えるってことになるね。
559デフォルトの名無しさん:2006/03/13(月) 21:50:46
fcloseで問題になるのは、そのタイミングで
ウイルスチェッカが走ったりすること。
560デフォルトの名無しさん:2006/03/13(月) 21:51:52
shortを頻繁に使ってるって人はなんにつかってるんだろ。

大量のデータとか、通信とかIO関係まわりとかくらいしか思いつかないね。
(IO関係も、できればshortのバイナリイメージの直書きとか避けたい気分)
561デフォルトの名無しさん:2006/03/13(月) 21:52:34
>>539
頭悪いなお前

「空白を空けるのが普通な本で、空けないのは普通じゃない」 -> 「普通な本では空白を空ける」 -> 「だから空白を空けるのが普通」
562デフォルトの名無しさん:2006/03/13(月) 21:53:39
>shortを頻繁に使ってるって人はなんにつかってるんだろ。
お前はそれを一切知らずに先に批判してるのかよ・・・
563デフォルトの名無しさん:2006/03/13(月) 21:54:40
>>558
 ああ、時々、自作の errno もどきを作る人がいるよね
アレって何の意味があるんだろ? errnoで足りないなら
windowsなら GetLastError すりゃいいのに・・・・
564デフォルトの名無しさん:2006/03/13(月) 21:59:01
>>554
#pragma packを必ず使うだけで解決できるといいな。
565デフォルトの名無しさん:2006/03/13(月) 21:59:44
>>560
short はあんまり使わないけど SHORT は サイズがわかってるから使うんだよ

サイズがわかってるから、わざとラップアラウンドさせたり
そこでオーバフローの検出をしたりするわけ

たとえば、加算結果が16ビットを超えたかどうかを 0x7FFF -0x8000の2回チェックするより
16ビットのサイズの入れ物に入れてみて、同じ値かどうかチェックとすれば比較が1回ですむでしょ?
566デフォルトの名無しさん:2006/03/13(月) 22:04:09
>>561
たとえば、世に出回ってる本の何割かが二項演算子の両脇を詰めるというスタイルだったら、
俺の言ってることはそういう屁理屈になるけどさ、そういう本がないんだもん。
あっても、すごい珍しいでしょ。

二項演算子の両脇は空白が普通だよね。

詰めてるヤツは、ろくに勉強せずに「動けばいい」と、一人で、もしくは閉じた環境で、
ゴリゴリ書いてるやつ。
567デフォルトの名無しさん:2006/03/13(月) 22:06:31
windowsの場合、
ファイルの入出力をするようなライブラリの呼び出して
いちいち、帰り値で何のエラーでしたとか知るよりは
 SetLastError(0) -> ライブラリ -> GetLastError で確認
他に特別伝えなければいけないエラーは、ライブラリ内で SetLastError

てな方式に統一しておくのが一番だよ
568デフォルトの名無しさん:2006/03/13(月) 22:11:04
エラーチェックをリトライ目的と思っているコード。
fwrite()のエラーチェックをしているのに(直後の)fclose()のエラーチェックをしないコード。
fscanf()のエラーチェックをしていないのに(直後の)fclose()のエラーチェックをしているコード。
入力ファイルを内容が「あるだけ」処理するプログラムでfgets()の後にferror()しているコード。
569デフォルトの名無しさん:2006/03/13(月) 22:14:56
>>566
普通という単語は、「一般的」といった感じで使われてるけどさ、
所詮、発言者の経験した範囲内でのことでしかないのだよ。
「普通」が口癖になってる人は気をつけた方がいいよ。
570デフォルトの名無しさん:2006/03/13(月) 22:14:57
>>566
まあ、印刷するんなら、読んでもつまらないコードの部分は、少しでも体裁を整えるのは当然の事。
だからそれが正義だと言われてもねえ。 必要なら後で整形すりゃいいじゃない。
整形してないコードを渡されたら黙って整形してあげればいいでしょ?
571デフォルトの名無しさん:2006/03/13(月) 22:17:57
fcloseが失敗するなんてデストラクタが例外を投げるのと同じくらいありえないことにしてほしい。
572デフォルトの名無しさん:2006/03/13(月) 22:20:17
>>571
実際は fcloseでflash動作もするから残りのバイトを書く領域が無いとかでエラーになるかもしれないよね。
でも、それは、fcloseの帰り値をいちいちその場でチェックしなくても、
ライブラリから帰ったメインがチェックするならすればいいじゃない。
573デフォルトの名無しさん:2006/03/13(月) 22:23:09
>>572
光らせてどうする。
574デフォルトの名無しさん:2006/03/13(月) 22:23:46
>>566
> たとえば、世に出回ってる本の何割かが二項演算子の両脇を詰めるというスタイルだったら
本が世の中のすべてじゃないよ。
間違いだらけの本だって多いし。
575デフォルトの名無しさん:2006/03/13(月) 22:39:03
>>566
とりあえず手元の本ぱらぱらっとめくったら、
5冊のうち4冊で空白入ってないコードが載ってた。
576デフォルトの名無しさん:2006/03/13(月) 22:56:05
goto以上に盛り上がるテーマがあったとはなぁ。
577デフォルトの名無しさん:2006/03/13(月) 23:00:49
>>575
その本、教えてください!
578デフォルトの名無しさん:2006/03/13(月) 23:02:52
>>566
お前みたいなタイプが好きそうなK&Rより。(p.173)

p = (char *) malloc(strlen(s)+1);
if (p != NULL)
    strcpy(p, s);

文脈に応じて使い分けろってこった。
579デフォルトの名無しさん:2006/03/13(月) 23:08:14
>>566
おまえの人気に嫉妬する。
580デフォルトの名無しさん:2006/03/13(月) 23:53:06
おれは566に賛成。普通だ何だと叩く口実にしている
奴らの方が気持ち悪い。566は自分の感覚を信じて
世の中渡っていくタイプ。いわば主役。批判してるの
はその他大勢
581デフォルトの名無しさん:2006/03/13(月) 23:54:25
>566を批判も賛成もしないでスルーしている漏れが勝ち組み。
582デフォルトの名無しさん:2006/03/13(月) 23:56:59
IDでないって便利だね♪
583デフォルトの名無しさん:2006/03/14(火) 00:08:08
>>580
お前、賛成の理由が書いてないぞw

お前の言い方じゃ、>>566と逆のことを言って、
自分の感覚を信じて世の中渡っていっている
やつにも当てはまるんだが。

それに普通だなんだと言っているのはむしろ>>566の方。


まあ、どうせ自演だろうがなw
584デフォルトの名無しさん:2006/03/14(火) 00:32:21
>>566
都合の悪いレスを見ないフリするのはもうやめろ!

お前自身がまともでも普通でもねぇよ。
585デフォルトの名無しさん:2006/03/14(火) 00:53:22
そんな言い方する人は常識がないでつ
586デフォルトの名無しさん:2006/03/14(火) 01:12:33
戻り値を返り血と言う
587デフォルトの名無しさん:2006/03/14(火) 01:18:30
>>565
> たとえば、加算結果が16ビットを超えたかどうかを 0x7FFF -0x8000の2回チェックするより
> 16ビットのサイズの入れ物に入れてみて、同じ値かどうかチェックとすれば比較が1回ですむでしょ?

何でそんなに馬鹿なふりするの?
君はもっと素直な子だったじゃない
588デフォルトの名無しさん:2006/03/14(火) 01:45:56
589デフォルトの名無しさん:2006/03/14(火) 03:09:09
空白については、これか。ずいぶん細かいな。
http://www.tcct.zaq.ne.jp/ayato/programming/java/codeconv_jp/CodeConventions.doc7.html#682
590デフォルトの名無しさん:2006/03/14(火) 07:04:40
>>587
そうだな。
それで満足しちゃいけない。
さらに飽和処理まで論理演算でやらないと素直とはいえないな
591デフォルトの名無しさん:2006/03/14(火) 07:16:21
>>560
音やビットマップの情報は 8/16bitなどのサイズを使う場合が多いよ。
たしかにMMX-->SSEで、処理そのものは浮動小数点でリッチにやるとしても
結果は、8/16固定小数点にしないといけないし
ライブラリも固定小数点のものも多いから

それから、多倍長処理を書く場合も、Cなら32bitより16bitで処理する方が桁処理が楽とか
592デフォルトの名無しさん:2006/03/14(火) 07:56:03
構造体のfread/fwriteについては C なら普通の手法
C++だと構造体でもメソッドを付ければVMTがついてくる場合があるから少し危険だし
そもそもC++使うような環境なら、こんな直の手法はやらない方がいいね。
593デフォルトの名無しさん:2006/03/14(火) 08:51:38
>C++だと構造体でもメソッドを付ければVMTがついてくる場合があるから少し危険だし

こんなアホ認識は危険だな。場合がある、とかなんであやふややねん。

仮想関数テーブルへのポインタが付加されるのは、仮想関数をつけたときだけ。

構造体にユーティリティ関数をつけることは全くの無害。
594デフォルトの名無しさん:2006/03/14(火) 09:33:47
静的に解決されるからね。
決まり切った初期化とか、構造体の関数にしてるけど、これってヘタかな?
595デフォルトの名無しさん:2006/03/14(火) 09:35:42
何ともいえない。
596デフォルトの名無しさん:2006/03/14(火) 11:09:12
>>594
で、誰かが継承して 使おうとして、勝手にvirtual を付けたりして
597デフォルトの名無しさん:2006/03/14(火) 11:18:21
>>594
Delphiの try 〜 finally の代用として
関数内で構造体を定義して、デストラクタを使うというのは良くやるけどね


ちなみに
Delphiの try 〜 finally というのは
例外が投げられたり途中return で ブロックを勝手に抜けられるような時に
必ず実行される機能
598デフォルトの名無しさん:2006/03/14(火) 11:32:24
>>596
final欲しいですよねえ。何とかできないことはないけど、美しくない。
>>597
finallyも欲しいですよねえ。何とかできないことはないけど、美しくない。
599デフォルトの名無しさん:2006/03/14(火) 11:36:50
__finallyってC++標準になってないだけで、
BCB、VC++、gccに全部あるような希ガス
















hewに無いかOTL
600デフォルトの名無しさん:2006/03/14(火) 17:37:54
Delphiって文法は個人的には良いと思うんだよね
死滅してしまうにはそれなりに惜しい言語だ
601デフォルトの名無しさん:2006/03/14(火) 17:53:50
ObjectPascal って死滅しちゃうの?
602デフォルトの名無しさん:2006/03/14(火) 18:02:27
でもVC++では同一関数内で__finallyとC++のデストラクタと併用できないのが痛い。
ほかのは知らないけど。
603デフォルトの名無しさん:2006/03/14(火) 19:46:42
DelphiはIDEが秀逸だったけどPascalは基本的に嫌いだった。
っても、{;}意外の言語は全般嫌いなんだけどなw
まぁ、趣味じゃないってだけの話なんだけどな。
604デフォルトの名無しさん:2006/03/14(火) 21:39:19
>>600
Delphiは戦略が悪かったな。
タダで配ればよかったものを。
605デフォルトの名無しさん:2006/03/14(火) 22:23:16
{}が嫌いってC系言語以外は使わないってこと?
606デフォルトの名無しさん:2006/03/14(火) 22:39:46
>>604
只で配ってた時期が存在していた。
ま、そんなもんだ。
607デフォルトの名無しさん:2006/03/14(火) 22:43:37
>>605
好き嫌いと、使用不使用は話が別。
608デフォルトの名無しさん:2006/03/14(火) 23:03:41
無料で配ってたときは勢いがあったように思ったもんだが
609デフォルトの名無しさん:2006/03/14(火) 23:20:27
ボクとキミは赤いスレッドで結ばれている。
610デフォルトの名無しさん:2006/03/14(火) 23:21:33
↑誤爆。すまそ
611デフォルトの名無しさん:2006/03/15(水) 08:38:36
fead/fwriteで構造体を読み書きできないというなら、何に読むつもり?
intに読めばエンディアンの問題、
char 配列に読むといったって、char が 8bitじゃない環境(TMP32用とか)だって世の中にはあるわけで
結局はバイナリの読み書きは環境依存でしかない。
612デフォルトの名無しさん:2006/03/15(水) 09:44:52
それを吸収するのがDBでつよ。
613デフォルトの名無しさん:2006/03/15(水) 10:31:35
通信でも吸収するよね
614デフォルトの名無しさん:2006/03/15(水) 10:33:40
Cはポータブルにも書けるし無茶苦茶環境依存にも書ける。
そんだけ。
615デフォルトの名無しさん:2006/03/15(水) 10:53:11
>>611
> fead
> ()

ぱっと見て「ヘタだなあ」と思う文章
616デフォルトの名無しさん:2006/03/15(水) 11:15:23
f r e a dのミスです
617デフォルトの名無しさん:2006/03/15(水) 12:39:52
TMS320のミスです
618デフォルトの名無しさん:2006/03/15(水) 12:44:12
うちの会社のオールドミスです。
619デフォルトの名無しさん:2006/03/15(水) 12:53:15
Mr.&Mrs.スミスです。
620デフォルトの名無しさん:2006/03/15(水) 13:01:07
>>606
最初っからタダで配っていれば・・・
そして、たかがダウンロードするためにメールアドレスとか要求しなければ・・・

発売当初は、VC++並みの開発環境と、VBなみのGUIの書きやすさで、
かなり期待していたもんだがねぇ。

言語の普及なんて、色々な付加価値つけたとしても難しいのに、
金とるわ、メールアドレス要求するわじゃだめだな。
621デフォルトの名無しさん:2006/03/15(水) 13:06:24
>>616-619
プログラマの発想って、こんなのばっかり。
よほど抑圧されてんだな。
622デフォルトの名無しさん:2006/03/15(水) 13:11:23
単項演算子の両端詰めてるやつは、短いコードしか書いたこと無いんだろ?
それで偉そうに言われてもね・・・・
for文内とかならまだしも、ちょっと長い文で詰めてたらすぐ見づらくなる。
それに両端空けないときちんと動作しないこともあるから統一性を考えたら
あけたほうがいいだろ?
何度も言われてるがこれは普通の宗教論争とかじゃない。
これが普通だし、普通だと思えない奴はただ単に経験不足。
てか学生の独習して身に付けたプログラミングスタイルだろ。
自分の未熟さを必死に主張して恥ずかしくないのか?
プログラマーに多すぎるんだよ。こういうの。
他人に迷惑かけまくって(この場合だと見づらいコード)注意されたら
必死に反論してくる奴。最初はまともな反論だけど反論できなくなると
すぐむちゃくちゃな理論持ち出して強引に自分の意見を正当化させようとするやつ。
邪魔だからいやなんだけど。
さっさと書き方直せ!!いやならせめて、他人に見せるコードの時くらいは直せ
623デフォルトの名無しさん:2006/03/15(水) 13:11:28
>>613
通信?通信はrecv()で構造体を読み取った後にエンディアン合わせのためにntolとかでつよ
fread/fwriteによる構造体でのやり取りも、ntolみたいに対策とっておけば問題なしですよ。

まあ、開発するソフトが、常に同じ機種(CPU)であるという前提があれば、
読み取りや書き込みの速度も速いしfread/fwrite使ってもよし。
異なるCPUを想定するならば、ntolみたいに対策とればよし。

fread/fwriteを「絶対使ってはだめ!」という理由は絶対にない。
624623:2006/03/15(水) 13:14:11
機種互換よりは、速度を要求される局面もあるし、そうでない場面もある。
fread/fwriteのメリット、デメリットを知らなければそれは「ヘタだなぁ」ではあるけれど、
メリット、デメリットを知りながら使いこなしているのであれば「うまいなぁ」とも思う。
625デフォルトの名無しさん:2006/03/15(水) 13:20:00
スペースが気に入らんかったら
自動整形すりゃいいやん
626デフォルトの名無しさん:2006/03/15(水) 13:21:01
そろそろそのヘタな時間の使い方を何とかした方がいい
627デフォルトの名無しさん:2006/03/15(水) 13:35:41
ワードバウンダリ
628623:2006/03/15(水) 13:36:41
>>622
     /\⌒ヽペタン
    /  /⌒)ノ ペタン
  ∧_∧ \ (( ∧_∧
 (; ´Д`))' ))(・∀・ ;)
 /  ⌒ノ ( ⌒ヽ⊂⌒ヽ
.(O   ノ ) ̄ ̄ ̄()__   )
 )_)_) (;;;;;;;;;;;;;;;;;;;)(_(

コーディングスタイル(if()と{の間には改行とか細かいスタイル)なんて、
ピーマン好きとか、嫌いかとか、そういう個人の好みの問題だと思うんだけどなぁ。
そんなもの日本語でいえば「方言」みたいなもんで、読みやすいかどうかにはさほど関係はしないと思う。

コードが読みやすい、読みにくいが決定される根本的な部分は、そんな「方言」みたいな部分でなくて、
構造の組み立て方や、よけいな変数多かったりとか、そういう部分だと思う。
言葉でいえば、主語がなかったり、「あれ」とか「それ」とか頻繁に使うような奴だね。

単項演算子の両端詰めるなとかいうのは、関西弁は聞き取りにくいから直せとかいってるようなもんで、
標準語に直しても意思疎通のしやすさには、さほど影響はないかと。
629デフォルトの名無しさん:2006/03/15(水) 13:49:02
ピーマンの好き嫌いは重要な論点です
630628:2006/03/15(水) 13:55:46
>>629
ピーマンだけは勘弁してください。ピーマンだけは勘弁してください。
631デフォルトの名無しさん:2006/03/15(水) 14:53:39
慣れてないプログラマ(或いは無駄に経験だけあるSEでもいい)に取り扱い説明書かせると、
しばしば主語がオペレータになったりプログラムになったり画面になったりする。
そういう連中の書くコードもやはり、ifぶんなどで「何と何を比較して」の部分で
しばしば順序が入れ替わって読みにくい傾向はある。
632デフォルトの名無しさん:2006/03/15(水) 14:58:29
>>631
読みにくい。
633628:2006/03/15(水) 15:27:19
>>631
「そういう連中の書くコード」が読みにくいかどうかは知らんが、
一般的なコンピュータ知識しか持たない人間に向けたマニュアルに、
「検索の入力欄には%が使えます。DBのLIKE句と同じです」とか書いてあるのにはテラワロッタ

一般人にLIKE句の意味がわかるかっつの。
634デフォルトの名無しさん:2006/03/15(水) 16:14:59
>>628
ところでそのAAは何?
635デフォルトの名無しさん:2006/03/15(水) 16:15:54
>>634
餅つけ→おちつけ
636634:2006/03/15(水) 17:29:34
>>635
なるほど!
637デフォルトの名無しさん:2006/03/15(水) 17:40:18
>>622
質問1、あなたのパソコンにはモノクロのモニターがつながっているのですか?
質問2、あなたはキーワードを色で別けられないようなエディタ(例えばメモ帳)を使ってコードを読んでるんですか?
質問3、あなたは強度の色盲ですか?
質問4、あなたは、ちょっと長い文になるような数式を平気でそのまま書いているのですか?
質問5、あなたは、両端空けないときちんと動作しないようなコードを平気で書いているのですか?
質問6、プログラマーに多すぎると理解してるのに、あなたの意見が少数である事を理解出来ないのですか?
質問7、他人のコードを見る時に、自分のスタイルにして見るのに、あなたのパソコンはどれだけの時間を使うのですか?
638デフォルトの名無しさん:2006/03/15(水) 18:29:06
そもそも単項演算子はあける場合とあけない場合が混在するのが一般的じゃないだろうか。
二項演算子なら兎も角。
639デフォルトの名無しさん:2006/03/15(水) 18:37:33
なぜかfor文だけは詰めて書くことが多い僕……
640デフォルトの名無しさん:2006/03/15(水) 18:38:42
なんだこのアホ・・・・>>637
それが経験不足からくる発言だってんだろ?
大体ほとんどの人が読みづらいと思うコードを書いといて、
「読みづらいなら書き直すプログラム作れよ」とかふざけすぎ。
ちょっとは人のことも考えろカスが。

>>638
そりゃもちろん詰める場合もあるが、ここで話してるのは
何か特別読みやすくなるときを除いて両端は空けろってこと。
641デフォルトの名無しさん:2006/03/15(水) 18:40:59
複数人で開発してるという意識があるかどうかだけどな、結局
642デフォルトの名無しさん:2006/03/15(水) 18:44:49
ソースコードはドキュメントだ。このドキュメントを見づらくしてどうする。
643638:2006/03/15(水) 18:57:44
>>640
再確認するが、単項演算子でか?
if (! flag) {
* ptr = - * ptr;
++ counter;
}
って書くのか?
if (!flag) {
*ptr = -*ptr;
++counter;
}
このように全部詰めてもそれほど読み難いとは思わんぞ。
644デフォルトの名無しさん:2006/03/15(水) 19:18:11
VBってさ、二項演算子をくっつけて書くと自動的にスペース空けるのな
645デフォルトの名無しさん:2006/03/15(水) 19:42:53
>>640
貴方のように簡単なプログラム作れないようなヘタレにも世の中は優しいもの。
既にそういうソフトはありますよ。

ソースの見栄えを気にしない人は貴方が勝手に変更しても気付きもしないでしょう。

>>641
複数で開発してようと、実際にコードを設計し書いてデバッグ作業の70%は一人でやってるもの。
ソースの空白が気になって仕方ないのに、自分でどうこうする工夫も出来ないような人は、単なるお荷物。
無視した方がいいでしょう
646デフォルトの名無しさん:2006/03/15(水) 20:07:29
よそでやれ
647デフォルトの名無しさん:2006/03/15(水) 20:10:18
いやここでやれ
648デフォルトの名無しさん:2006/03/15(水) 20:22:49
教科書読んでると、空白無しなコードはよく見かけるんだけどなぁ。
空白開けろと力説してる人は、教科書とか読んでないんじゃないかと。
もしくは初心者用の本読んで満足してるとか。
649デフォルトの名無しさん:2006/03/15(水) 20:23:17
Followup-To: japan.yoso
650デフォルトの名無しさん:2006/03/15(水) 20:24:05
>>648
教科書は、初心者用ではないとでも?
つかなんだその腐った本。晒せ。
651デフォルトの名無しさん:2006/03/15(水) 20:27:52
>>650
プログラミング言語C++ 第三版とか
UNIXネットワークプログラミングとか。
652デフォルトの名無しさん:2006/03/15(水) 21:01:00
>>651
>プログラミング言語C++ 第三版とか

http://public.research.att.com/~bs/3rd_code.html
これ?

あけてあるじゃん。 と思ったけど、一部あけてないね。
どういう法則性だろ。
653デフォルトの名無しさん:2006/03/15(水) 21:03:35
> UNIXネットワークプログラミングとか。

ぱらぱらっと見た感じだと、あけてあるけど、そうでないところもあるのかな?
654デフォルトの名無しさん:2006/03/15(水) 21:20:40
if (ready()) {
 flag = true;
} else {
 flag = false
}
みたいのは下手だなと思う
655デフォルトの名無しさん:2006/03/15(水) 21:23:24
だから、空けたり詰めたりをエレガントに使うのが本当にうまいんだって
656デフォルトの名無しさん:2006/03/15(水) 21:26:46
うん、";”が抜けてるしね
657デフォルトの名無しさん:2006/03/15(水) 21:34:21
Numerical Recipes in C なんてぎゅうぎゅうだよ
658デフォルトの名無しさん:2006/03/15(水) 21:35:36
>>655
空白の話じゃないんだけど…… 違う人へのレスか?
>>656
見逃してくれ orz
659622:2006/03/15(水) 21:41:37
>>643
ごめん。+ とか - とかだから二項演算子だった。首つってくる
660デフォルトの名無しさん:2006/03/15(水) 21:51:36
西施の顰みに倣う
昔、中国の越にとても美しい人がいた。
西施という人だが、病気になってその苦しみに眉をひそめていた姿がさらにたいそう美しかったので、
そうすれば美人に見えるのだと思った近隣のブスがまねをして、しかめっつらをしたところ、
さらにブスが際立ったと、気味悪がられてしまった。


人のコードに憧れるのはいいが、肝は空白じゃないんだよ
661デフォルトの名無しさん:2006/03/15(水) 22:06:35
憧れるなんて誰も言って無いが
662デフォルトの名無しさん:2006/03/15(水) 22:11:09
びょーんすとらうすとっらぷは、「C++の設計と進化」でも空けたり空けなかったりだね。
りちゃーどは、空けてる。
空白詰めてるのヘタでしょ。


・浮動少数が等しいかを、==で判定してる。
663デフォルトの名無しさん:2006/03/15(水) 22:11:28
しかも誰も空白が肝だなんていって無いが。常識だといっている
664デフォルトの名無しさん:2006/03/15(水) 22:16:25
空白が常識ってどういう意味?
665デフォルトの名無しさん:2006/03/15(水) 22:27:20
>>655
空けたり空けなかったりしてる人って、使い分けてるわけじゃなくて、
特に意識してないんじゃないの?
666デフォルトの名無しさん:2006/03/15(水) 22:33:18
空白絶対空けろ男ウザー。

散々非難されてるのにしつこい。

こいつのコードがヘタかヘタじゃないかに関係なく、仕事一緒にしたくねー。
667デフォルトの名無しさん:2006/03/15(水) 22:35:53
>>665
まぁ意識はしないよね。
手がきれいなコード覚えてるから。
668デフォルトの名無しさん:2006/03/15(水) 22:46:00
int
main(int argc, char **argv)
{
}

とか書く奴も死んで欲しい。死んでくれる?お願い
669デフォルトの名無しさん:2006/03/15(水) 22:47:25
>>666
非難っていうか、自分をヘタじゃないって思い込みたい人が、暴れてるだけじゃん。
670デフォルトの名無しさん:2006/03/15(水) 22:48:32
>>667
特に基準があるわけじゃなくて、気分でやってるとか?
671デフォルトの名無しさん:2006/03/15(水) 22:50:18
>>665
空白は空けろよ。
空白を空けるように指示するコーディング規約はあっても
空白を詰めなさい、っていうコーディング規約はないだろ?
空白を詰めることが醜くなるだけで何のメリットもないということだよ。
キミのような経験もスキルもない奴はコーディング規約を守っておけ。
672デフォルトの名無しさん:2006/03/15(水) 22:50:58
>>622
>必死に反論してくる奴。

必死になのはお前じゃーん。なにその長文。キモイ。
つうか、空白が大好きな癖に、なんでそんなギチギチに書いてんの?
読みやすく段落ごとに空行ぐらい入れろよバカ。

>最初はまともな反論だけど反論できなくなると
>すぐむちゃくちゃな理論持ち出して強引に自分の意見を正当化させようとするやつ。

例えば、 >622なんかはかなり当てはまってるな。

>これが普通だし、普通だと思えない奴はただ単に経験不足。

お前は社会人として経験不足。たかがこんなことで暴れるなよ。
673デフォルトの名無しさん:2006/03/15(水) 22:51:23
>>671
> 空白を詰めなさい、っていうコーディング規約はないだろ?
当たり前だ。
頭大丈夫か?
674デフォルトの名無しさん:2006/03/15(水) 22:51:39
>>669
そう。お前のことな。
675デフォルトの名無しさん:2006/03/15(水) 22:53:59
Perl とか Ruby だと、関数(orメソッド)呼び出しの
括弧が省略できるために、、
+ の左右に空白があるかどうかで
評価が変わってくる場合があったような気がする。

ぱっと見てキモいなぁと思う仕様だった。
676デフォルトの名無しさん:2006/03/15(水) 22:56:14
>>673
だから、当たり前のことだから空白を詰めるなって言うんだよ。
おまえホントバカだな。まだ理解できてないの?
677デフォルトの名無しさん:2006/03/15(水) 22:56:50
世の中の本とか、有名ソフトはほとんど空けて書いてるし、
特に意識してなくて、普通に勉強してれば、空けてないのは
美しくないって感性が育つよね。
678デフォルトの名無しさん:2006/03/15(水) 22:59:06
>>676
「空白は空けなくてもいい」という仕様書を見て
「空白をあけてはいけない」と読むキミは
プログラマに向いてないと思う。
679デフォルトの名無しさん:2006/03/15(水) 22:59:17
>>654はなにが下手なの?
680デフォルトの名無しさん:2006/03/15(水) 22:59:31
散々空いてないソースの本やらソースやらが指摘されてるのに…。

このバカ感性はどうやったら育つのやら…。
681デフォルトの名無しさん:2006/03/15(水) 23:01:12
>>680
散々って、どれ?
682デフォルトの名無しさん:2006/03/15(水) 23:01:42
>>679
直接、変数に代入しろってことでは?
683デフォルトの名無しさん:2006/03/15(水) 23:01:43
>>677
当たり前のように嘘をつくのはやめたほうがいい。
684デフォルトの名無しさん:2006/03/15(水) 23:02:48
>>683
うそじゃないでしょ。

詰める派の人は、上でウソを書いてるけど。
685デフォルトの名無しさん:2006/03/15(水) 23:03:38
>>682
あ、そっか サンクス
686デフォルトの名無しさん:2006/03/15(水) 23:04:33
>>681
なんだ、文盲なのか。
それでそんなに空白に拘るのか。

はいはいそうかそうか。もういいや俺コイツ飽田。
687デフォルトの名無しさん:2006/03/15(水) 23:04:40
>>684
嘘じゃないと思えるのなら、単にコードも本も大して読んで無いってことかな?
688デフォルトの名無しさん:2006/03/15(水) 23:05:36
空けた方がみやすいときは空けるし、詰めた方がみやすいときは詰める。
詰めた方がみやすいときにバカのひとつ覚えで空けているコードを見るとヘタだなぁと思うね。
もちろんその逆も。
689デフォルトの名無しさん:2006/03/15(水) 23:06:06
詰める派というか、絶対に空けろと強要するアホ派を諌めてるだけだけどね。
690デフォルトの名無しさん:2006/03/15(水) 23:07:24
大体詰める奴って美的感覚がないよな。
部屋の中もいろいろなものがごちゃごちゃ散らかってるんだろうな。
机の上も常時モノでいっぱいww
691デフォルトの名無しさん:2006/03/15(水) 23:09:38
>>684
そもそも、詰める派なんているのか?
妄想の中で敵を作って戦ってるだけじゃないのか?
692デフォルトの名無しさん:2006/03/15(水) 23:11:55
元詰める派がなんかおっしゃってますね。
693デフォルトの名無しさん:2006/03/15(水) 23:12:46
>>687
じゃ、詰めて書いてある本って?
694デフォルトの名無しさん:2006/03/15(水) 23:16:05
>>693
ちゃんと例をあげてるじゃん。
695デフォルトの名無しさん:2006/03/15(水) 23:21:45
昔の人も言いました。
重箱の隅をつつくような・・・と
696デフォルトの名無しさん:2006/03/15(水) 23:22:48
>>694
ストラウストラップだけ?
697デフォルトの名無しさん:2006/03/15(水) 23:23:58
空ける派の人は「if(p1[(p2-p1+1)/2]<v){ /* */ }」ってコードはどう書くの?(C言語での二分探索コードの一部)
「if ( p1[(p2 - p1 + 1) / 2] < v ) { /* */ }」? もっと空けるの?
698デフォルトの名無しさん:2006/03/15(水) 23:24:11
よ そ で や れ
699デフォルトの名無しさん:2006/03/15(水) 23:25:52
空白を入れないやつはソースに対する愛情が足りないんだと思う
700デフォルトの名無しさん:2006/03/15(水) 23:26:28
701デフォルトの名無しさん:2006/03/15(水) 23:27:04
>>696
注意力が足りないんじゃないかと。
702デフォルトの名無しさん:2006/03/15(水) 23:28:30
>>701
なんかはっきり書けない事情でもあるの?
703デフォルトの名無しさん:2006/03/15(水) 23:33:22
関数の先頭で使う変数全部定義しているコードはヘタだと思うね。
704デフォルトの名無しさん:2006/03/15(水) 23:36:51
そのコードはC言語だった説を提唱する
705デフォルトの名無しさん:2006/03/15(水) 23:38:09
経験的に空白を入れないプログラマーにろくな奴はいなかった。


>>697
配列添字部分は式によっては詰めるね。俺は。

//
if (p1[(p2-p1+1)/2] < v)
{

}
706デフォルトの名無しさん:2006/03/15(水) 23:39:00
>>705
キモッ・・
吐きそう。
707デフォルトの名無しさん:2006/03/15(水) 23:40:00
>>703
このまえニュー速で、コンピュータ関係のスレで、それ言ってるヤツがいたね。
C++で、関数の途中で宣言するのやめろとか。
本とか一切読まないのかね、ああいうのって。
708デフォルトの名無しさん:2006/03/15(水) 23:40:32
詰める奴って読む人への配慮がぜんぜんないよね。
俺もよく途中で万歳した奴の尻拭いとかするけどそういうコードは今まで
すべて例外なく詰めて書かれていた。
709デフォルトの名無しさん:2006/03/15(水) 23:43:33
空白入れろって言っている奴が
一人しかいない。
710デフォルトの名無しさん:2006/03/15(水) 23:44:47
>>709
俺以外にも、最低一人はいるよ。
711デフォルトの名無しさん:2006/03/15(水) 23:45:07
>>708
あのな。そりゃ偏見ってやつだ。
会社の中の人間のソースコードなんぞ評価せず、
もっと世界のうまい人のソースコードをみてみれ。
712デフォルトの名無しさん:2006/03/15(水) 23:45:27
入れろって言うか、ヘタって言ってるだけだけどね。
713デフォルトの名無しさん:2006/03/15(水) 23:49:39
>>711
著名なプロダクツのソースで、詰めて書いてあるやつって?
714デフォルトの名無しさん:2006/03/15(水) 23:49:42
つーかなんだっけ?↓のソースだとどうなるの?ヘタの部類に入るの?
if( x == 7 ) {       /* 8個置き終えた */
  printf( "Answer\n" );
  printboard();
} else {          /* 一つ右側について調べる */
  for( z=0; z<8; ++z ) {
    tryqueen( x+1, z );
  }
}
715デフォルトの名無しさん:2006/03/15(水) 23:51:10
if とか while の後に空白を入れないで、カッコの内側をあけてるのは、ヘタっぽいね。
716デフォルトの名無しさん:2006/03/15(水) 23:52:00
>>713
いや、つめるか、つめないかは左程、重要ではないといいたい。
うまい人でも詰める人は詰めるし、詰めない人は詰めないといいたい。

具体的に誰と言われると、探すのめんどくさいから書かないが。
717デフォルトの名無しさん:2006/03/15(水) 23:52:22
関数の途中で宣言するのやめろってスゴイな。
C++の超入門書ですら必要になってから宣言しろって書いてあるのに。
718デフォルトの名無しさん:2006/03/15(水) 23:52:25
ifの後ろに空白入れる奴は頭おかしい。
719デフォルトの名無しさん:2006/03/15(水) 23:53:19
>>713
ところでずっと不思議に思ってるんだけど、
「常に空白をあけるわけではない」を「詰めて書いてある」と誤読する
理由がわからない。
720デフォルトの名無しさん:2006/03/15(水) 23:53:40
>>716
> 具体的に誰と言われると、探すのめんどくさいから書かないが。

すごいレアだから、探せないのでは?
721デフォルトの名無しさん:2006/03/15(水) 23:54:32
>>719
詰めたり空けたりしてるやつもなかなか出てこないね。
722デフォルトの名無しさん:2006/03/15(水) 23:55:05
俺は二項演算子の左右には空白を入れるけど
他人にそれを強制まではしないな。
読みにくいとまでは感じないからだけど。

1000行超える関数が多用されてて
先頭で wk とか t とか n とか言った名前の変数がたくさん宣言されてて
変数の説明をするコメントがなくって
wk があらゆる箇所で参照・書き換えされてて
50行くらいのロジックが繰り返し出てくるのに関数になってなくて
switch-case で default 句がないのにその説明すら書いてないことに比べたら
二項演算子の左右の空白なんてどうでも良くなる。
723デフォルトの名無しさん:2006/03/15(水) 23:55:10
>>721
それはいっぱいあるでしょ。
724デフォルトの名無しさん:2006/03/15(水) 23:55:36
>>718
if のあとを空けないのって、ヘタな日本人に多いね。
725デフォルトの名無しさん:2006/03/15(水) 23:57:16
>>723
たとえば?
726デフォルトの名無しさん:2006/03/15(水) 23:57:24
>>720
じゃあ、君が探してみれば?君がうまいと思ってるコードの書き方のプロダクツとやらを。

だるいだろ?
727デフォルトの名無しさん:2006/03/15(水) 23:58:35
空白入れる入れないは上手い下手に関係ないわな。
他人が読む場合のことを考えているか考えていないかに過ぎない。

空白入れない奴は他人が読みやすいかどうかなんてどうでもいい奴が多いからろくでもない奴が多い。
自分で上手いと思っていても他人からしたら糞コード。
728デフォルトの名無しさん:2006/03/15(水) 23:59:27
ifの後ろには既に(という区切り子があるのでわざわざスペースを入れる奴はアホ。
729デフォルトの名無しさん:2006/03/15(水) 23:59:51
ifやwhileの後ろは空白
関数名の後ろは詰める

逆でもいいけど
730デフォルトの名無しさん:2006/03/16(木) 00:00:18
>>725
とりあえずLinuxのカーネル(つかドライバ)コードなんかそんな感じ。
731デフォルトの名無しさん:2006/03/16(木) 00:00:38
>>726
linux,FreeBSDのカーネルとか。
732デフォルトの名無しさん:2006/03/16(木) 00:02:06
クラスを宣言するときに、
属性から書くか操作から書くかの論争並に不毛極まりないな。

733デフォルトの名無しさん:2006/03/16(木) 00:02:16
昨日見た Subversion のソースも開けてた。
734デフォルトの名無しさん:2006/03/16(木) 00:03:30
一箇所空けていたからって、
全部空けているという証明にはならない。
735デフォルトの名無しさん:2006/03/16(木) 00:04:06
>>727
>他人が読む場合のことを考えているか考えていないかに過ぎない。

詰めて書くほうが読みやすいと思って、俺はあえて詰めて書いてるけど。
詰めて書いてる人も「相手の読みやすさをまったく考えてない」わけではないと思う。

つーか詰めたほうが読みやすくね?

これはもう好みの問題だと思うのだが。
詰めた奴だって、相手・自分にとって読みやすいと思って詰めてるわけで。
736デフォルトの名無しさん:2006/03/16(木) 00:05:14
VCの標準関数のライブラリ、MFCのソース、SunのJavaライブリのソースも開けてた。
737デフォルトの名無しさん:2006/03/16(木) 00:07:19
>>736
大昔のCの入門書なんかだと詰めないとか改行せずに{とかっていうのが多い。
ようは古臭い奴らなのかも。
当然考えも古臭い。だから糞が多い。
納得。
738デフォルトの名無しさん:2006/03/16(木) 00:07:40
各種コーディングスタイル関係の論争みたいに「宗派」が分かれてたら、
好みの問題ってことになるけど、まともな本やプロダクツはほとんど、
空けて書いてる。
739デフォルトの名無しさん:2006/03/16(木) 00:08:36
>>737
で、最近の入門書はどうなんだ?
古臭くないから糞じゃないんだよな?
740デフォルトの名無しさん:2006/03/16(木) 00:09:45
>>738
で、まともな本やプロダクツってなんだ?
もし、空けて書いてある本とか言ったら殺すぞw
741デフォルトの名無しさん:2006/03/16(木) 00:10:12
>>739
まぁ昔よりはましなんじゃないか?
742デフォルトの名無しさん:2006/03/16(木) 00:10:24
具体的な話は出さずに「まとも」とか「常識」で逃げるのは変わってないのね(w
743デフォルトの名無しさん:2006/03/16(木) 00:10:41
>>741
たとえば?
744デフォルトの名無しさん:2006/03/16(木) 00:10:56
>>740
ギャハww
ブチ切れじゃんww
745デフォルトの名無しさん:2006/03/16(木) 00:12:09
>>738
というか別に君の周りでヘタだった奴がたまたま詰めて書いてる奴だった。って理由だけで、
全世界の詰めてる人間をヘタ扱いするのが謎。
746デフォルトの名無しさん:2006/03/16(木) 00:12:16
>>740
あなたの持ってる本ってどんなの?
ちょっと確認してみてよ。
空いてるだろうから。
747デフォルトの名無しさん:2006/03/16(木) 00:13:00
java3dのGMatrix.SVDはぎゅうぎゅうだね。
ニューメリカルの影響か知らんけど、
数値計算系は詰める傾向が多いね。

大多数は、基本は離して、ダラダラしてきたら適所で詰めるってのじゃない?
748デフォルトの名無しさん:2006/03/16(木) 00:13:13
>>743
まぁ言語の本じゃないけど誰もが認める名著のAdvancedWindowsのサンプルソースとか。
749デフォルトの名無しさん:2006/03/16(木) 00:14:10
>>745
周囲っていうか、世間で評価されてる本やプロダクツは空けて書いてるよ。
750デフォルトの名無しさん:2006/03/16(木) 00:16:30
ちなみに世間で評価されている本とはすなわち、空けている本のことだから。
751デフォルトの名無しさん:2006/03/16(木) 00:16:33
>>747
> 大多数は、基本は離して、ダラダラしてきたら適所で詰めるってのじゃない?

大多数は、空けるのが基本だよ。
752デフォルトの名無しさん:2006/03/16(木) 00:17:13
盛り上がってるね
753デフォルトの名無しさん:2006/03/16(木) 00:18:02
詰める派は、世間で評価されてて、詰めて書いてある本を列挙すればそれで済むことなのに
それができない。。。
754デフォルトの名無しさん:2006/03/16(木) 00:18:45
空白を開けてあるコードは糞のガイドライン

理由
・厨房のコードの90%は空白を空けて書いてある。
755デフォルトの名無しさん:2006/03/16(木) 00:19:11
まだ仮想的「詰める派」を相手に戦ってるのか。
756デフォルトの名無しさん:2006/03/16(木) 00:20:07
>>753
空けて書いてある本意外は、空けたり詰めたりで書いてあるんじゃないか?

空けて書いてある本がいくつ列挙されているか知らんがw
757デフォルトの名無しさん:2006/03/16(木) 00:20:55
>>749
逆。詰めて書く奴はすべてヘタであることを証明してくれ。

「詰める奴はヘタだ!」と決め付ける態度を取るなら、
世界のソースを全部みて、詰めて書く奴がすべてヘタであることを証明してからにしろよ。
それを調査してはじめて「詰める奴はヘタだ!」っていえる言葉だと思うぞ。

俺の周りがそうだったから、とかそんな理由だったらあまりにも失礼。
758デフォルトの名無しさん:2006/03/16(木) 00:22:29
>>756
あなたの持ってる本で、空けたり詰めたりしてる本って何冊ある?
759デフォルトの名無しさん:2006/03/16(木) 00:22:54
>>751
『プログラミング作法』は適所詰めることを推奨してるよ
>>753
いや、だから『ニューメリカル・レシピ・イン・シー』とか読んだらアンタ卒倒するんないの。
この本のコードの本当に酷いのは無理やり配列を1から始めてるところだけど。
760デフォルトの名無しさん:2006/03/16(木) 00:25:34
無駄だと思うなぁ。
いくら例を示しても無視して自分の主張書くだけだから。
761デフォルトの名無しさん:2006/03/16(木) 00:29:42
空白を入れないってことは英語の文章で単語の間にスペースを入れないようなもの。
Icanflytennis.とか言われても分かり難いだろ?
762デフォルトの名無しさん:2006/03/16(木) 00:30:12
ある二項演算子opについて
 (A) opの左右は必ず空ける。
 (B) opの左右は基本的に空ける。場合によって詰める。
 (C) opの左右は基本的に詰める。場合によって空ける。
 (D) opの左右は必ず詰める。
という4パターンがあるが、ほとんどのやつはBかCだろ?(おれはB。)
演算子によって使い分けるやつもいると思うし(例えば&&と||が混在する式では&&の左右は詰めるとか)。
で、頑張ってるやつはAか? それともDに対して文句たれてるんのか?
Dなんかいねぇと思うぞ。
763デフォルトの名無しさん:2006/03/16(木) 00:31:41
おれもB
764デフォルトの名無しさん:2006/03/16(木) 00:32:37
>>759
プログラミング作法ってカーニンハンのやつ?
たしか会社にあったから、見てみるよ。
ソフトウェア作法のほうでは、全部空いてるようだけど。
765デフォルトの名無しさん:2006/03/16(木) 00:36:25
あ、有名どころでぎゅうぎゅうの思い出した。
つlibvorbis
766デフォルトの名無しさん:2006/03/16(木) 00:36:45
「必ず空ける派」は大変だよな。本に載ってる全コードをチェックしないといけないんだから。
「場合によっては詰める|空ける派」はとりあえずほかと違ってる部分を見つければいい。
767デフォルトの名無しさん:2006/03/16(木) 00:37:13
ほとんどのヤツは(A)だから。
(まともなのは)
768デフォルトの名無しさん:2006/03/16(木) 00:38:58
俺もBだな
769デフォルトの名無しさん:2006/03/16(木) 00:40:12
>>766
そのあたりは、だいたい一貫してるのから、そんなに大変じゃないよ。
ストラウスとラップは、一貫してないけど。
770デフォルトの名無しさん:2006/03/16(木) 00:40:44
>>761
これのどこがわかりやすいんだ?w

I c a n f l y t e n n i s
771デフォルトの名無しさん:2006/03/16(木) 00:41:37
場合によっては空けたり詰めたりって人は整形ツールとか、スタイルをチェックするツールとかは使わんのかね?
772デフォルトの名無しさん:2006/03/16(木) 00:42:19
空白は決して怖くありません、自信をモテクダサイ。
773デフォルトの名無しさん:2006/03/16(木) 00:42:22
ん〜boostは空けたり詰めたりだな〜
774デフォルトの名無しさん:2006/03/16(木) 00:45:56
>>771
たいていの整形ツールは、演算子の前後に空白を入れない設定も出来る。
775デフォルトの名無しさん:2006/03/16(木) 00:47:44
よい子はツールに使われるような大人になっちゃダメだよ
776デフォルトの名無しさん:2006/03/16(木) 00:48:59
>>774
その場合は、一貫して詰めたコードになる?
それとも、空けたり詰めたり、ルールで指定できる?
777デフォルトの名無しさん:2006/03/16(木) 00:50:44
(A) 1
(B) 3
(C) 0
(D) 0
(AHO) 1 (>>770)
778デフォルトの名無しさん:2006/03/16(木) 00:51:14
 (E) opのフォントだけ小さいフォントを使い、opの左右は必ず詰める。
ですが何か?詰めても見易いよ。
779デフォルトの名無しさん:2006/03/16(木) 00:52:24
>>773
ほんとだ。
boostは空けたり詰めたりだね。
780デフォルトの名無しさん:2006/03/16(木) 00:53:55
>>771
ものによるな。
オプソものとかでいわゆるGNUスタイルで納品したほうが良さそうなのは
indentかけることもある(手でGNUスタイル書くのが苦痛だから)。
781デフォルトの名無しさん:2006/03/16(木) 00:54:08
>>778
そこだけ小さいフォントを使うってことは空白入れてるようなもんじゃない?
そのままだと見辛いから小さいフォント使ってるんでしょ?
782デフォルトの名無しさん:2006/03/16(木) 00:56:58
>>777

>>770は数字の100とかを1 0 0 って書く奴だと思われ
783デフォルトの名無しさん:2006/03/16(木) 00:57:35
たとえ空白空けるで統一されていたとしても、
それは単に整形ツールでそうなっただけのことであって、
それが良いコードというわけじゃないんだよな。
784デフォルトの名無しさん:2006/03/16(木) 00:58:30
>>770を見てもわかるように、
適切に空白を入れたり詰めたりしろってこった。
785デフォルトの名無しさん:2006/03/16(木) 01:00:03
STLPortは空けたり詰めたり
ODEは空けたり詰めたり
quake3は空けたり詰めたり
rubyは空けたり詰めたり
pythonは空けたり詰めたり

もう漁るの飽きた。やっぱある程度の成果物は
徹底して詰めてるor空けてるのはほとんどないんじゃないの?
786デフォルトの名無しさん:2006/03/16(木) 01:01:43
>>770>>761のアフォさ加減に合わせてやっただけじゃね?
二項演算子と識別子に出てくる文字種は基本的に異なるから>>761は意味ねぇよ。
787デフォルトの名無しさん:2006/03/16(木) 01:06:11
複数人で書かれたソースに対して空けたり詰めたりっていうのを調べるのは意味が無いだろ。
その部分の担当者が徹底して空ける人だったり徹底して詰める人だったりする場合もある。
788デフォルトの名無しさん:2006/03/16(木) 01:06:59
でも英語の文章考えたらifの後にスペース空けるのは自然だな。
aaaa( bbbb cccc dddd )eeee.
aaaa(bbbb cccc dddd)eeee.

こんな括弧のつけ方しないもんな
普通はこうだよな。
aaaa (bbbb cccc dddd) eeee.
789デフォルトの名無しさん:2006/03/16(木) 01:08:12
空白空けたり詰めたりでも、どうでもいいから修正されずにマージされてるんだろw
790デフォルトの名無しさん:2006/03/16(木) 01:09:18
一人で書いたソース調べる方が意味無いと思うけど。
それこそ、ほとんどが小規模なプロダクツだろうし。
791デフォルトの名無しさん:2006/03/16(木) 01:39:36
VB.NETでIfにAndやOrを使ってるコードはヘタ
792デフォルトの名無しさん:2006/03/16(木) 01:43:34
修正の結果かなんだか知らんが、常に偽になるifブロックを見ると勘弁してくれって思う。
793デフォルトの名無しさん:2006/03/16(木) 06:52:09
完全に整形されてるのは印刷する時とかの為にツールを通してるんだろ
コード書くとき、いちいち文法に関係ない空白をどうするかなんて考えもしないよ?

他人に読んでもらうために・・・・って他人のコード読むのに空白なんて何の支障にもならないと思うのだが?

プログラミングってのは、機能に名前を付けてゆく作業だから、肝心なのは名前付の方。
機能は名前通りに実装されていればそれでいいわけで
実装である演算子のレベルまでいきなり読むわけじゃない
794デフォルトの名無しさん:2006/03/16(木) 07:10:42
>>697
空白とは関係ない話だが

>if(p1[(p2-p1+1)/2]<v){ /* */ }

これが既に コナレているかどうかの方が大事かもね。
自分はこの手のコードを  wihile(c=*p++){ /* */ } 程にはパターン化していないから
中間変数を入れて2行に別けてしまうな
{ cent=(p2-p1+1)/2 ;
 if(p1[cent]<v){ /* */ }
}

中間変数を使う場合はC++でもブロックを書く事が多い
795デフォルトの名無しさん:2006/03/16(木) 07:49:55
職業プログラマってのは矛盾を抱えている。
大量に人を必要とする所ほど、人が居つかない。
慢性的なデスマーチ、疲弊し去ってゆく兵と補充される兵。
その回転の為に「他人が読めるコード」を強制しようと、
コーデングルール他、訳の判らない規約が作られ、
結果それがさらにプログラマの体力を奪い、回転を早める。
そういう現場では人もコードも使い捨て、
コードを使い捨てたくないと作った規約が余計にコードを使い捨てさせる事になってゆく矛盾がそこにある。


まあしかし、この矛盾の根っこは深く、プログラマレベルではどうしようもない。
キツイ規約は労働の証。 労働契約は努力義務でしかない。
いつまでも労働では搾取されるばかり、どこかで自分もまた転回する事が必要なのだろう
796デフォルトの名無しさん:2006/03/16(木) 11:32:47
大企業のは見ないほうがいいかもな
俺はMFCは世界最高の技術者が書いたと信じてまねてたからなw
今はJoel de Guzmanまねてるよ
見た目だけなw
797デフォルトの名無しさん:2006/03/16(木) 11:36:28
>>792
今は一時的に使わないコードだけどコンパイルはしておきたい(≒メンテナンスしておきたい)場合は敢えて
if (0) {
...;
}
ってことやるけどそれも勘弁して欲しい?
798デフォルトの名無しさん:2006/03/16(木) 12:05:37
>>797
つCVS, Subversion, VSS, GNU arch, ...
799デフォルトの名無しさん:2006/03/16(木) 12:07:33
>>645
てことは30%も他人に手が入るのに独善的なあなたみたいな人がいるんだね。
ソースが汚い分、ドキュメントやコメントを多く書いて時間稼いでるんだね
800デフォルトの名無しさん:2006/03/16(木) 12:32:28
>>797
そんな女々しいコードは嫌だ。
801797:2006/03/16(木) 12:33:45
>>798
現場で必要なテストコードなんで、入れておきたいのですよ。
最近のコンパイラならエラーチェックだけして出力には影響しないところが味噌でね。
802797:2006/03/16(木) 12:35:52
o・)Σ
女々しいっすか……
803デフォルトの名無しさん:2006/03/16(木) 12:47:19
>>801
だったらif (0)じゃなくてif (DEBUG)とかしてDEBUGを別に定義したりしない?
(プリプロセッサ通せば一緒だけど、ここはコードの話だから)
DEBUGを変数(debug)にして外部から与えるようにすれば、再コンパイルの必要もないし。
if (0)のメリットがわからんです。

関係ないけどSunのJava Tech Tipsに、if (debug)は性能を劣化させないとかいう記事があったな
804デフォルトの名無しさん:2006/03/16(木) 12:47:52
起動時の引数とか、設定ファイルとかでテストモードかどうかを
切り替えればいいんじゃないかと。
現場でコンパイルする手間も省けるし。
805デフォルトの名無しさん:2006/03/16(木) 12:53:24
仕様が確定してないとか、将来実装する予定とか?
806797:2006/03/16(木) 13:01:30
>>805
そそ、そんな感じで。
現場で「ちょっと試してよ」に対応するコードとか。
ある程度長期生き残るものならマクロで分岐するか>803のようにするんですが。
807デフォルトの名無しさん:2006/03/16(木) 13:51:58
ほら、>>793のように空白を入れない奴はろくでもない奴だろ?
他人のことを考えない独善的な人間だから思考が1人で完結してる。

>> 他人に読んでもらうために・・・・って他人のコード読むのに空白なんて何の支障にもならないと思うのだが?

客観性まるでなし。
こういう奴は空白以外の部分でも糞コードなのは間違いない。
808デフォルトの名無しさん:2006/03/16(木) 13:56:28
>>807
あなたの書き込みを読むと、全ての批判はご自分に該当するように思えますが、たぶん眼鏡が曇ってるのでしょうね。
809デフォルトの名無しさん:2006/03/16(木) 17:19:21
ぶっちゃけ何処の誰かも分からないやつの書き方なんてどうでもよくね?
ほっとけよ
810デフォルトの名無しさん:2006/03/16(木) 17:21:24
まあまあ。
汚いソース読まされてイライラさせられた人じゃないとわからんよ。
811デフォルトの名無しさん:2006/03/16(木) 17:33:42
他人のコードを読むのはコツがある。
空白とかスタイルのせいでイライラするような事はないよ。
812デフォルトの名無しさん:2006/03/16(木) 17:36:09
\|/
/⌒ヽ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ゜Θ゜)< そうでもないよ
| ∵ つ \__________
| ∵ |
\_/


他人の考え方は読める。
ジェネレートされたコードは考えも伝わってこないからツライ。
813デフォルトの名無しさん:2006/03/16(木) 18:20:36
>>788
> aaaa( bbbb cccc dddd )eeee.
こんなのが山盛りのソースのメンテナンスが、俺に回って来た!
814デフォルトの名無しさん:2006/03/16(木) 18:21:43
ジェネレートされたコードって・・・・まあ逆アセンブラ出力から全体を読むのは、それは面倒だね

他人のコードを読むといっても色々だけど読まされるとするなら
 1、単に該当箇所の修正
 2、新規に作るが動作仕様がソースからしか判らないと言われた
 3、指導者としての立場

があると思うが、
 1なら、基本的に触らないのがコツ。 修正ではなく、とにかく追加してゆく。
   その後の人はさらに大変になるだろうが、そんな事はこっちの仕事じゃない

 2なら1ファイル毎に、実際に動作させてゆく。 それが必要とする関数をエミュレートというか適当にでっち上げるような感じね
  組み込み系なら、実行環境もどきを最終的に作ってしまう事になる

 3なら、もっとおおらかにいった方がいいよ
815デフォルトの名無しさん:2006/03/16(木) 18:22:11
関数はつける、関数以外は括弧なしか、離す。
816デフォルトの名無しさん:2006/03/16(木) 18:30:59
おまえら空白の他に話すことはないのかよ
817デフォルトの名無しさん:2006/03/16(木) 18:36:44
空白くらいエディタの設定でどうにかなるだろ?
読み込んだら自動的に自分の好みの方法で表示して
保存するときに勝手に規約に沿った形にすれば良いだけなんだから。
818デフォルトの名無しさん:2006/03/16(木) 18:41:53
>>817 全て他人とは自分に奉仕するもの という発想だから、そんなメンドクサイ事はしないんでしょ。
だったらプログラマもやめればいいのに
819デフォルトの名無しさん:2006/03/16(木) 18:43:15
>>813
好きなスタイルのindentのオプションは何なの?
820デフォルトの名無しさん:2006/03/16(木) 19:17:25
>>806
コンパイラのオプションにマクロシンボル定義するオプションがあるだろ?(bccだと-D)
それ使ったほうがよくね?
821デフォルトの名無しさん:2006/03/16(木) 20:08:37
for(int i = 0; i < 4; ++i){
  switch(i){
  case 1:
    /* なにかコード */
    break;
  case 2:
    /* 別のコード */
    break;
  /* 以下略 */
  }
}
お前はfor文というものをどう考えているのか問い質したくなる。
822デフォルトの名無しさん:2006/03/16(木) 20:13:06
for(int i=0; i<4; ++i){

これ見にくいか?
823デフォルトの名無しさん:2006/03/16(木) 20:13:57
>>821
久々にまともな「ヘタだなぁ」の例で嬉しい
824デフォルトの名無しさん:2006/03/16(木) 20:25:13
>>882
俺も普段は空けるが、()内が短い場合はそんな感じ。
ただし、for (..) {だけど
825デフォルトの名無しさん:2006/03/16(木) 20:32:55
おまいら、こんなとき空行あける?

if(...) {
meirei1();
meirei2();
} else {
meirei3();
}



if(...) {

meirei1();
meirei2();

} else {

meirei3();

}
826デフォルトの名無しさん:2006/03/16(木) 20:42:54
行を空けないでインデントしろ
827デフォルトの名無しさん:2006/03/16(木) 20:56:34
>>821
こんな感じのコードは良く書く
for(int i = 0; i < 16; ++i)
if(HogeFlag & (1<<i) )
  switch(i){
  case 0:
    /* なにかコード */
    break;
  case 1:
    /* なにかコード */
    break;
  case 2:
    /* 別のコード */
    break;
  /* 以下略 */
  }
828デフォルトの名無しさん:2006/03/16(木) 21:11:17
それってforを使う意味あるの?
829デフォルトの名無しさん:2006/03/16(木) 21:20:30
>>828
意味ないよ。 1個づつ if 文書くのと等価。 でも書いちゃうんだよ
830デフォルトの名無しさん:2006/03/16(木) 21:33:36
昔見たコード。
int main()
{
switch (0) {
case 0:
someFunc();
case 1:
otherFunc();
case 2:
moreFunc();
default:
break;
}
return 0;
}
831デフォルトの名無しさん:2006/03/16(木) 21:54:30
まあ俺も最後仕様変更くらって、やっぱり必ずsomeFunc、otherFunc、moreFuncを全部呼んでください。
って言われたらそうすると思う。
832830:2006/03/16(木) 22:05:03
>>831
main()に、その他の制御構造が何もないことに注目。
833デフォルトの名無しさん:2006/03/16(木) 22:13:52
>>830
成程と思った
834デフォルトの名無しさん:2006/03/16(木) 23:33:48
>>832
は?それが何か?
835デフォルトの名無しさん:2006/03/16(木) 23:54:17
>>834
なんも思わないのか…… すごいな
836デフォルトの名無しさん:2006/03/17(金) 00:09:45
スタイルの問題なのかもしないが

// 奇数の場合
if(value%2){
  :

// 偶数の場合
}else{
  :
}

というコメントの書き方は(特にelseのところで)途惑う。
837デフォルトの名無しさん:2006/03/17(金) 00:27:32
>>835
俺もなにが言いたいのかわからん。
someFuncの実装すら書いてないんだから、main()のその他の処理も端折って書いたと思った。
838デフォルトの名無しさん:2006/03/17(金) 00:37:20
>>836

if (value % 2) { // 奇数の場合
  :

}
else { // 偶数の場合
  :
}

としてるな。
839デフォルトの名無しさん:2006/03/17(金) 00:59:04
ここからは if-else について語る?

俺は
if(cond){
  stmt;
}
else{
  stmt;
}
ですね。

以前は
} else {
だったんですが、"else{ ... }" を一まとまりにした方が、
else (や else if) の評価の順番変える時とかに都合が良かったので。
840デフォルトの名無しさん:2006/03/17(金) 01:01:41
はっきりいってコーディングスタイルの話はどうでもいい
841デフォルトの名無しさん:2006/03/17(金) 01:24:04
>>836
DB系のなんかの言語は、確かブロックの先頭にコメントが書けないので
そういうスタイルになる必然性があった希ガス。
842デフォルトの名無しさん:2006/03/17(金) 01:46:07
ドラゴンボール系???
843デフォルトの名無しさん:2006/03/17(金) 01:52:27
If Rtn = True Then
  Workbooks("A.xls").Worksheets("Sheet1").Cells(1, 1).ClearContents
  Workbooks("A.xls").Worksheets("Sheet1").Cells(1, 3).ClearContents
  Workbooks("A.xls").Worksheets("Sheet1").Cells(2, 1).ClearContents
  Workbooks("A.xls").Worksheets("Sheet1").Cells(2, 3).ClearContents
  Workbooks("A.xls").Worksheets("Sheet1").Cells(3, 1).ClearContents
  Workbooks("A.xls").Worksheets("Sheet1").Cells(3, 3).ClearContents
  Workbooks("A.xls").Worksheets("Sheet1").Cells(1, 1) = Workbooks("B.xls").Worksheets("Sheet3").Cells(I, 3)
  Workbooks("A.xls").Worksheets("Sheet1").Cells(1, 3) = Workbooks("B.xls").Worksheets("Sheet3").Cells(I, 4)
  Workbooks("A.xls").Worksheets("Sheet1").Cells(2, 1) = Workbooks("B.xls").Worksheets("Sheet3").Cells(I, 6)
  Workbooks("A.xls").Worksheets("Sheet1").Cells(2, 3) = Workbooks("B.xls").Worksheets("Sheet3").Cells(I, 8)
  Workbooks("A.xls").Worksheets("Sheet1").Cells(3, 1) = Workbooks("B.xls").Worksheets("Sheet3").Cells(I, 9)
  Workbooks("A.xls").Worksheets("Sheet1").Cells(3, 3) = Workbooks("B.xls").Worksheets("Sheet3").Cells(I, 12)
Else
  Workbooks("A.xls").Worksheets("Sheet1").Cells(1, 1).ClearContents
  Workbooks("A.xls").Worksheets("Sheet1").Cells(1, 3).ClearContents

以下省略。Then内の行数は実際の3分の1で書きました。
"B.xls"が修正された為正常に動かなくなり、私がメンテする羽目に。

約2画面分を覆いつくすコピペに背筋が凍りました。
844デフォルトの名無しさん:2006/03/17(金) 01:55:42
マジックナンバーはヘタ云々以前の話かもなあ。

java 使ったプロジェクトで singleton 使ってるコードがあって
なぜかコンストラクタが protected だった。
コメントに「privateにすべきだが、テストのためにprotectedにする」
とか書いてあった。
何のためのテストだろうと不思議に思った。
845デフォルトの名無しさん:2006/03/17(金) 01:58:36
>>844
class A{};
class TestA : A{};
だろ?
protectedメソッドをテストするにはこうする必要がある。
846デフォルトの名無しさん:2006/03/17(金) 01:58:46
protected にして844の反応を見るテストに違いない
847デフォルトの名無しさん:2006/03/17(金) 02:05:39
>845
いや、そうじゃなくて。

もともと singleton として使うクラスで、
コード書いてる人も singleton パターン自体は知っている。
のに、テストするために protected にしてる。
普通はありえないけどパッケージ内から
ぼこぼこインスタンス立てまくれる。
それを制限するためのパターンなのに、
本末転倒だろうと。>何のためのテスト
848デフォルトの名無しさん:2006/03/17(金) 03:43:23
オリジナルコードに手を加えなきゃ実行できないようなテストは(本番でも実行されることがないのだから)する必要ないと物の本で読んだ気がする。
849デフォルトの名無しさん:2006/03/17(金) 10:36:29
>>827-828
俺もたまにそうすることがある。

たとえば、CSVを char * の配列に入れたあとで、0、1、2の
カラムはそれぞれ何か違う処理をしないといけないが、3より
あとは全部同じ処理という場合、など。まあ、個別に書いても
いいんだけどね。for で回してもいいじゃない。人間だもの。
850 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄:2006/03/17(金) 11:56:51
   ( ´∀`)< みつを
851デフォルトの名無しさん:2006/03/17(金) 12:08:50
>>843
でも、マクロだと、あるいみ仕方ない面もあるね。

Workbooks("A.xls").Worksheets("Sheet1") で一旦変数に代入する程度はやるだろうけど

for 文で回してもそう判りやすくなるわけじゃないし
if 文の前に共通処理を吐き出しても、 Rtn の作成箇所から離れるのも嫌だし
852デフォルトの名無しさん:2006/03/17(金) 12:42:44
>>851
こういうものは名前付き領域のコピーで済ますとメンテは楽になる
ドキュメントがなくなると地獄が待っているが
853デフォルトの名無しさん:2006/03/17(金) 15:39:43
C++でキャストするとき、static_cast, reinterpret_castとかって使ってる?
それともCスタイルが普通?
854デフォルトの名無しさん:2006/03/17(金) 15:56:25
c++専用コードなら使うと思うのだけど cとの共用コードが多いからしょうがない
855デフォルトの名無しさん:2006/03/17(金) 16:39:31
ぱっと見て「ベタだなぁ」と思うコード
856デフォルトの名無しさん:2006/03/17(金) 18:09:32
俺が3時間ぐらい悩んだヘタC言語コード

if (logfile == NULL);
  return;

まあ、logfile はログのファイル名が入っている char * なんだけど、
これをログを出力する関数の先頭でやっていて、一切のログが出力
されなくなった。

で、コンパイル後のコードが異様に小さいわアセンブリ言語まで
出力させてなんでこんなに小さいんだろうと、冗談抜きで3時間ほど
悩んで、10分ぐらい前にセミコロン発見。orz

こんなバグ作ったの何年ぶりだろう。
857デフォルトの名無しさん:2006/03/17(金) 18:21:21
>>856 ソレは良くやるミスで ヘタというより、Cに文法上の配慮が無いのが原因だろな

コンパイラによってはreturn の後に警告が出るけど、出ないのもあるし
858デフォルトの名無しさん:2006/03/17(金) 18:27:40
ifの{}省略禁止ってコーディング規約を作るだけで解決しそうだが・・・・・・
if (logfile == NULL);{
 return;
}
とか、やられたら意味ないがw
859デフォルトの名無しさん:2006/03/17(金) 18:32:20
>>856 滅多にやらないけど、滅多にやらないから、自分がそんなミスするとは思えなくて長時間気付かないんだよな
860デフォルトの名無しさん:2006/03/17(金) 18:38:43
そういや if (...); というのを文法上許しているってのも奇妙な感じではあるな。
コンパイラが警告一つ出さないってのもまた何とも。

実際こんなの必要になる時はないよなあ。for (...); とか while (...); なら
ループして繰り返すから意味のあるものが作れるが、 if (...); は一体どういう
時に必要となるのかが想像できない。
861デフォルトの名無しさん:2006/03/17(金) 18:45:09
ブレークポイント設定したい時
862デフォルトの名無しさん:2006/03/17(金) 18:46:38
マクロを作る時に 式の結果を絶対に使わせんという場合とか
863デフォルトの名無しさん:2006/03/17(金) 19:59:39
>>860
ごく稀に
 if (…)
  ;
 else
  なんたら
というコードを見かける。
判定条件を逆にすりゃいいのにと思うが、それなりの意図があるらしいw
864デフォルトの名無しさん:2006/03/17(金) 20:40:43
>>858
while(flag);
{
 ;
}
のコーディングスタイルだと{}あっても分かり難いです 昔泣きました
865デフォルトの名無しさん:2006/03/17(金) 20:57:13
そんなもん見た瞬間気がつくよ。
コーディングスタイル関係ない。
866デフォルトの名無しさん:2006/03/17(金) 21:20:13
だそうですw
867デフォルトの名無しさん:2006/03/17(金) 21:25:25
vcだと警告してくれるけどな。
868デフォルトの名無しさん:2006/03/17(金) 21:56:17
>>865
いや、机上で流してると目は見てても脳が読まない可能性はある。
て言っても、テストが付いてりゃ範囲は局所化されるから、あとは
デバッガでトレースしてみれば直ぐにみつかる類のバグだけどな。
869デフォルトの名無しさん:2006/03/17(金) 22:17:23
ただのバグにうまいもヘタもない。
870デフォルトの名無しさん:2006/03/17(金) 22:35:43
公正取引委員会が教科書の金品を伴う売り込み規制を撤廃へ
金儲け主義の教科書が学校を埋め尽くし、教育品質の低下を招く!?
意見は下記の公正取引委員会のページより
http://www.jftc.go.jp/info/p-comment.htm
4月17日締め切り。
871デフォルトの名無しさん:2006/03/17(金) 22:46:01
>>868
俺はデバッガ(gdb)も使ったのだが、いきなり関数の最後の } に飛ぶんだよ。
もう最適化されちゃってどこから飛んでるか分かんないの。(最適化を強制的に
させないオプション使ってコンパイルすれば良かったか?)
872デフォルトの名無しさん:2006/03/18(土) 01:02:44
人のプログラムは基本的に読みにくいんじゃないっすか?
873魚チョコ:2006/03/18(土) 01:47:49
>>863
 すまん。俺それ多用するわ。

 ・ == NULL とか if != 0 とか書くのマンドクセ。
 ・ if ( !li ) とか if ( !ill ) とか、何だよ、八卦かよ。
 → なるべく 0 と比較し、かつ 0 を省略。 ! もなるべく使わない。
 → 論理の融通がきかないので、 if ( p ) ; else { } 登場。
なんと if ( p ) { ... } else ; 役に立たないっつーか警告が出る else ; まで書いておくことも少なくない。あほだ。
874魚チョコ:2006/03/18(土) 01:49:12
 あ、 if != 0 だって ミ゚m ゚ ミ ププ
手拍子で if ( p != 0 ) と書いちゃって消し損ねた。あほだ。
875魚チョコ:2006/03/18(土) 01:49:51
ねよう…… ミー仝 ー 'ミ_。o○
876デフォルトの名無しさん:2006/03/18(土) 01:50:03
#define unless(exp) if(!(exp))
877デフォルトの名無しさん:2006/03/18(土) 02:00:38
bool b;

///長いコード


if( b == true )
{

}

このtrueは「俺はbool型を比較してるんだぞ」と強調するために書いている。
文句をいわれる筋合いなどないわ!
878デフォルトの名無しさん:2006/03/18(土) 02:05:35
×if( b == true )
○if(b==true)
879デフォルトの名無しさん:2006/03/18(土) 02:13:44
その状況で b なんて変数名をつかっちゃうところがヘタクソ
880デフォルトの名無しさん:2006/03/18(土) 02:42:09
変数の存在を忘れてしまうような長いコードがダメすぎな気が。
881デフォルトの名無しさん:2006/03/18(土) 03:42:36
if の中は条件式を評価するのだから
if(cond){ .. } か if(!cond){ .. } で良いと思う。
cond == true とかは時間の無駄というか
if の中なのに true 以外の何と比較するのだろう、と。
882デフォルトの名無しさん:2006/03/18(土) 04:24:46
int i;
...
bool b = i != 0;
883デフォルトの名無しさん:2006/03/18(土) 06:30:16
変数名は有効範囲に応じて省略形ってのが格好いいと思うよ
884デフォルトの名無しさん:2006/03/18(土) 06:34:21
#define true 0
#define false 1
885デフォルトの名無しさん:2006/03/18(土) 08:12:27
C言語で無限ループを作る場合、俺は while (1) という書き方が嫌いだ。
for (;;) の方が好き。

886デフォルトの名無しさん:2006/03/18(土) 08:29:16
for (;;)  は 可変幅フォントで見ると、ちょっとH
887デフォルトの名無しさん:2006/03/18(土) 08:34:10
俺は
A:

goto A
のほうが好き。
888デフォルトの名無しさん:2006/03/18(土) 08:40:53
>>885
無限ループを作ろうとしたとき、本やネットなどで見たことなしに for (;;) で書いてた?
俺は while (1) で書いてて、後で for (;;) を知ったので逆の感覚だ
あれこれ言い合うほどのこだわりはないけど

#define ARRAY_INDEX1 1
#define ARRAY_INDEX2 2
#define ARRAY_INDEX3 3
(ry

#define ONE 1

こんなことやってるコード、現実にホントにあるんだねorz
889デフォルトの名無しさん:2006/03/18(土) 08:55:47
>>888
その名前だったらヘタだけど、意味がある名前なら連想配列感覚でいいかもよ
890デフォルトの名無しさん:2006/03/18(土) 09:12:35
>>877
if ((b == true) == true)
だったらこのほうがよいのでは?
891デフォルトの名無しさん:2006/03/18(土) 09:17:40
>>889
いや、分かりづらかったかもしれない

ループなら 1回で済ませられるのに
こんなん使ってずらずら並べてる箇所がいくつもあるんでつorz

>>890
if ( (bool) b )
はいかが?
892デフォルトの名無しさん:2006/03/18(土) 09:20:34
>>877
ぜんぜんOK
893デフォルトの名無しさん:2006/03/18(土) 10:34:03
参照型言語(VB.NETとかJavaとかC#とか)で
関数の引数に参照を渡すのと参照渡しを混同しているのを見ると大丈夫か?と思う。

同じく参照型言語で
なんらかのオブジェクトへの参照をコレクションから取り出してそのプロパティなりメソッドなりを使ったあと
最後にコレクションに格納しなおしているのを見ると、なんも考えてないんだなと思う。
894デフォルトの名無しさん:2006/03/18(土) 11:22:30
>>890
if (((b == true) == true) == true)
だったらこのほうがよいのでは?

・・・という風にして、if (ブール値)なんだということを悟ってもらうのが
普段の教え方。
895デフォルトの名無しさん:2006/03/18(土) 11:30:31
>>894
筋が悪いな。
繰り返しを発見したらループにするのが鉄則だろう。
int ct = 0;
while(b = (b == true))
 if(ct++ > 100000/*これくらいやっておけばほとんどのケースで十分*/){ puts("b == true"); goto finish; }
puts("b != false");
finish:
これで判定可能だ。
896デフォルトの名無しさん:2006/03/18(土) 11:32:20
ifの中はブール値でなければならないわけで、
変数や関数の名前が、たとえばisFoo()のように工夫されており、
ぱっとみで、ifの中はちゃんとブール値になっているなと分かるときは、
if(isFoo())でも良い。

もしvalueのように中身がブール値かどうか分からない名前の場合は、
if(value==true)する。

if((value==true)=true)なんてのは、最初のvalue==trueの時点で
ブール値だと明確になっているので必要ない。
897デフォルトの名無しさん:2006/03/18(土) 11:33:09
修正
×if((value==true)=true)
○if((value==true)==true)
898デフォルトの名無しさん:2006/03/18(土) 11:35:16
ぱっと見てブール値かどうかわからない名前をつけるなんて「ヘタだなぁ」と思う。
899デフォルトの名無しさん:2006/03/18(土) 11:36:21
if ( (bool) b ) は単にbをキャストしているだけで
bそのものがブール値だと明確になっていない(int bかも知れない)ので駄目。

b および bなんたら はブール値と命名規則で
決められているのならいいけど。
900デフォルトの名無しさん:2006/03/18(土) 11:42:13
いまさらハンガリアン?
901デフォルトの名無しさん:2006/03/18(土) 11:49:18
WebアプリのGUIは未だにハンガリアンにしてまうなぁ…
txtUserIdとか、rdoMaleとか。
902デフォルトの名無しさん:2006/03/18(土) 11:54:44
ASSERT(typeid(b) == typeid(bool));
903デフォルトの名無しさん:2006/03/18(土) 11:57:12
>>898
>>877とか>>881に言ってくれ。

> if の中は条件式を評価するのだから
> if(cond){ .. } か if(!cond){ .. } で良いと思う。

「if の中は条件式」なので単体の変数がくるとは限らない。
condとは式、すなわち、i=1や、0<i && i<10なんて場合もありえる。
"cond"ではなく"checked"なんて名前ならif(checked){ .. }でいいが、
"cond"って名前ならcond==trueにするべきだ。

要は名前の問題。

でもチェックボックスのcheckedはチェックされた状態でも、
チェックされてない状態でもない、第三の状態(未入力?)が
あったりするんだよな。まあ名前の付け方が悪いんだが。
904デフォルトの名無しさん:2006/03/18(土) 11:58:53
>>899
C/C++を使う限りbがintだろうとchar*だろうと無問題。
それで混乱する奴は単に文法に不慣れなだけだろ。
905デフォルトの名無しさん:2006/03/18(土) 12:02:17
if (b == true) { でも
if (b) { でも、asmでは同じもんができあがるだから、
意図が明確な方がいいんじゃね?
906デフォルトの名無しさん:2006/03/18(土) 12:04:06
>if (b == true) { でも
これ書いた奴がアホなのか何なのか読んでて不安になるから却下
907デフォルトの名無しさん:2006/03/18(土) 12:04:14
>884
これ(ネタだろうけど)見て思い出した
Cのソース
#define TRUE 0
#define FALSE (-1)

既出?
908デフォルトの名無しさん:2006/03/18(土) 12:05:05
>>901
それは、Camel形式だと捉えれば無問題。
909デフォルトの名無しさん:2006/03/18(土) 12:05:34
>>906
それだけ見て、アホかどうかわからんが、
全体みりゃわかる
910デフォルトの名無しさん:2006/03/18(土) 12:05:52
>>905
>>890のほうがもっと意図が明確だと思わないのか?
911デフォルトの名無しさん:2006/03/18(土) 12:10:33
エンディアンの扱いを考えていないソースを見るとちょっと嫌になる・・・
912デフォルトの名無しさん:2006/03/18(土) 12:16:46
>>911kwsk
913デフォルトの名無しさん:2006/03/18(土) 12:21:00
>>912
例えばリトルエンディアンで数が格納されたバイナリを読み込んで、
そのまま変数に格納しちゃってたりしてる奴。
リトルエンディアンなプロセッサじゃなきゃ絶対おかしくなる・・・
914デフォルトの名無しさん:2006/03/18(土) 12:27:33
>>910
>>890は、日本語で表現すると
まったく違う条件を書いていることに気がついてないの?
915デフォルトの名無しさん:2006/03/18(土) 12:29:48
>>913
要件がそうなってれば問題ないし、たいていのシステムではなってると思うけどね。
916デフォルトの名無しさん:2006/03/18(土) 12:30:31
>>913
異なるプロセッサで動かすことを要求されていなければ、問題ないだろう。
ネットワークに流すときは同一プロセッサ同士でも一応ネットワークバイトオーダに
変換してくれとは思うが。
917デフォルトの名無しさん:2006/03/18(土) 12:30:56
>>913
ビッグエンディアンで読む予定がないなら不要だろ。
プロジェクトの性格に関係なく最初から無駄にポータビリティを確保してる奴はアフォ。
918デフォルトの名無しさん:2006/03/18(土) 12:32:31
>>915
そうなのか・・・
なら私はあのプロジェクトから手を引いて、移植が失敗するのを見守るか・・・
919デフォルトの名無しさん:2006/03/18(土) 12:34:33
>>918
キミがいなくても、問題なく移植できると思う。
もし失敗するのなら、エンディアン云々以前の問題。
920デフォルトの名無しさん:2006/03/18(土) 12:41:09
なんにしても、権威主義にとらわれないことだね
921デフォルトの名無しさん:2006/03/18(土) 12:56:13
>>910
本当にそう思うなら、理由を説明せよ。
922デフォルトの名無しさん:2006/03/18(土) 12:58:11
上からざっと読んできました
プログラマーとして就職したのに全然言ってることわかりません
怖くなってきた
923デフォルトの名無しさん:2006/03/18(土) 12:59:37
if(price){...}

どう思う?
924デフォルトの名無しさん:2006/03/18(土) 13:03:18
なんとも
925デフォルトの名無しさん:2006/03/18(土) 13:04:48
「もし金なら」と思います。
926デフォルトの名無しさん:2006/03/18(土) 13:06:20
priceはブール値だとこの行だけでどうやって判断すればいいでしょうか?
927デフォルトの名無しさん:2006/03/18(土) 13:08:03
>>923
ちょっと天狗になりかけてるプログラマが書きそうだな
928デフォルトの名無しさん:2006/03/18(土) 13:30:09
>>926
言語によるのだけど C 言語には論理型はなく 論理値もどきがあるだけ
if や && || では 0かどうかという比較になる

だから 代金が0でなければと読む事になる
929デフォルトの名無しさん:2006/03/18(土) 13:36:03
>>926
priceはブール値だとこの行だけでどして判断しなければならないのでしょうか?

っつーか、なんでブール値にこだわりたがるのかそこが分からん。
930デフォルトの名無しさん:2006/03/18(土) 13:36:14
priceは実はポインタ型、とか。
931デフォルトの名無しさん:2006/03/18(土) 13:37:12
riceへのポインタということか。
932デフォルトの名無しさん:2006/03/18(土) 13:39:50
>>928
新人君に一々説明するの大変そうですね
933デフォルトの名無しさん:2006/03/18(土) 13:40:06
>>930 ポインタでも、結局はゼロかどうか
934デフォルトの名無しさん:2006/03/18(土) 13:42:50
>>932 でもCから始めた人に他の言語を教える時の方が大変。
if 文は論理型でなければいけないから始まって、
配列とポインタとは別のものですとか
935デフォルトの名無しさん:2006/03/18(土) 13:43:32
そうか、double price;というオチだな
936デフォルトの名無しさん:2006/03/18(土) 13:43:49
すでに.NETに移行しているのだから
 str = ""
 str = str & "hoge"
 str = str & "hage"
 str = str & "hige"
  :
というのは、もう止めてもいい頃だと思うぞ。
あまつさえこんな:
 str = ""
 str = str & "hoge" & vbCrLf
 str = str & "hage" & vbCrLf
 str = str & "hige" & vbCrLf
  :
…のを書いて「デバッグ時に見やすい」と得々と語るのは
もう辞めてもいい頃だと思うぞ。
937デフォルトの名無しさん:2006/03/18(土) 13:46:28
>>934
if文が論理型でなければいけない言語ならコンパイル時に落とせよ、とか思う。

ところでそれは実体験に基づいてるの?「大変」って。
938デフォルトの名無しさん:2006/03/18(土) 13:48:45
>>934
だから、この場合は (スレの流れ的に)
if (price) {じゃなくて
if (price != 0) {とかにしろってことでしょ。

# 実際に価格でこんな比較することはないだろうけど
939デフォルトの名無しさん:2006/03/18(土) 13:51:40
>>935 double でも 0かどうかという事になるよ
940デフォルトの名無しさん:2006/03/18(土) 13:57:34
bool b = !!price;
if(b){...}
941デフォルトの名無しさん:2006/03/18(土) 14:10:25
>939
実数値を0と比較してはいけない、って常識だな。
942デフォルトの名無しさん:2006/03/18(土) 14:12:51
struct{...}price;
943デフォルトの名無しさん:2006/03/18(土) 14:17:45
>>941
実数でも 0を代入すれば0だよ。

巧く動かないのは
(cos(a)*cos(a)+sin(a)*sin(a)-1) == 0
とか
944デフォルトの名無しさん:2006/03/18(土) 14:27:41
>>928
> だから 代金が0でなければと読む事になる
はぁ? Priceはブール値ですよ?
945デフォルトの名無しさん:2006/03/18(土) 14:30:24
お前は何を言ってるんだ
946デフォルトの名無しさん:2006/03/18(土) 14:30:33
えーと、この処理ですが 「もし価格なら」 実行ということでいいでしょうか?


という文章に違和感が無い奴がいたなら、
日本語をやり直してください。
947デフォルトの名無しさん:2006/03/18(土) 14:34:28
if(DEBUG_MODE) { ... }
という書き方はいいですが、

if(DEBUG_LEVEL) { ... }
という書き方はヘタだなぁと思う。
948デフォルトの名無しさん:2006/03/18(土) 14:36:21
結局Cの文法があやふやな奴が文句言ってるだけってことか。
949デフォルトの名無しさん:2006/03/18(土) 14:38:33
Cの文法というより、日本語が(ry
950デフォルトの名無しさん:2006/03/18(土) 14:39:37
行間を読まないといけないコードは
へただなぁと思います。
951デフォルトの名無しさん:2006/03/18(土) 14:39:44
ここまですべてネタだと思ってたけど違うの?w
952デフォルトの名無しさん:2006/03/18(土) 14:45:06
>>951
残り50切ってから気付いたの?www
953デフォルトの名無しさん:2006/03/18(土) 14:47:10
ということにしたいのですね
954デフォルトの名無しさん:2006/03/18(土) 14:48:28
>>948
客は言語仕様を理解してるかどうかあやしいからな。
仕様書に沿ってないとなに言われるやら…
955デフォルトの名無しさん:2006/03/18(土) 14:51:14
>>946
Cなら「もし価格が0でなければ」だからなんら問題なし。
956デフォルトの名無しさん:2006/03/18(土) 14:55:35
それがCのイディオム。
好きではないけれど。
957デフォルトの名無しさん:2006/03/18(土) 15:09:53
priceがunsinged intのとき
if(price>0){を、どうせ同じだからと言って、
if(price){と書くの?
958デフォルトの名無しさん:2006/03/18(土) 15:14:19
俺はそう書かない。
959デフォルトの名無しさん:2006/03/18(土) 15:15:39
>>957
というか 
price欄==0 をその商品が無いとか、価格が決まっていないというような事に使ってるのだろう

基本的に0をマジックナンバーにするという発想なんだろうけど、
だったら配列も 1ベースにすりゃ良かったのになあと思うんだよね。
960デフォルトの名無しさん:2006/03/18(土) 15:20:47
それはお前だけ
961デフォルトの名無しさん:2006/03/18(土) 15:22:02
そこら辺は石屋さんのせいだからなあ。そっちに文句言ってくれ。
Cの設計思想は高級アセンブラで、石の都合に合わせて作られてるんだから。
962デフォルトの名無しさん:2006/03/18(土) 15:26:25
たぶん ゼロで終端した文字列 というのから出発したんだと思う。
それをポインタでこう書けばスマートだろという方向で 0かどうかなんて設計にしたんだろ。

「どうだpascalのサイズ付文字列よりスマートで格好いいだろ? 255文字なんて制限もないし」

みたいに
963デフォルトの名無しさん:2006/03/18(土) 16:05:44
>961
どうして石の話になるんだ?
964デフォルトの名無しさん:2006/03/18(土) 16:22:41
0の時に条件分岐も、配列のインデックスが0からなのも、石の都合に合わせた結果だろ?
965デフォルトの名無しさん:2006/03/18(土) 16:30:22
CPUの殆どは
 比較結果でZフラグが立ち、Zフラグで分岐するかスキップする
  0 と比較して分岐する
のどちらかがあるから0と比較するのは意味があるようだが、
が、大抵は同じコストで負数かどうかでも分岐出来る 負数がfalseでも良かったのでは?

配列については1ならバイトサイズのオフセットをコンパイル時に入れれば良く
実際、pascalなどは好きに出来て、コードを見れば静的に解決されており効率は落ちていない。
966デフォルトの名無しさん:2006/03/18(土) 16:33:11
石とか言うやつの書くコード。 寺内貫太郎かよ。
967デフォルトの名無しさん:2006/03/18(土) 17:59:19
プライスレス
968デフォルトの名無しさん:2006/03/18(土) 18:13:09
>>965
なんとなく読みにくい日本語だな
969デフォルトの名無しさん:2006/03/18(土) 18:18:30
>>868 だって、細かく書かないと そうじゃないCPUもあるってすぐ書かれるから
970http://www.vector.co.jp/soft/win95/util/se072729.html:2006/03/18(土) 18:43:25
TextSS の64bit化おながいします

もしくは64bitにネイティブ対応した置換ソフトないですか?
971デフォルトの名無しさん:2006/03/18(土) 19:35:35
ぱっと見て「マルチだなぁ」と思う投稿
972デフォルトの名無しさん:2006/03/18(土) 19:49:38
マルチというより荒らしだろ。
973デフォルトの名無しさん:2006/03/18(土) 22:16:10
>>965
Basic言語の中には真値が-1(全bit1)のものもあるから負数がfalseはまずいっしょ。
974デフォルトの名無しさん:2006/03/18(土) 22:23:25
>>934
Cでも配列とポインタが同じものと思われると困るのですが
975デフォルトの名無しさん:2006/03/19(日) 00:06:55
Cすら使えないやつのひがみだからほっとけ。
976デフォルトの名無しさん:2006/03/19(日) 00:46:17
>>970
64bitネイティブに対応した置換? えと、たとえば俺の今使っている
Athlon 64 のマシンの Linux で動く sed とか?
977デフォルトの名無しさん:2006/03/19(日) 00:46:51
awk とか Perl とか。
978デフォルトの名無しさん:2006/03/19(日) 01:48:05
>>976
そいつ、いろんなスレに>>970をマルチポストしまくってるからレスしても見ないと思うよ。
979デフォルトの名無しさん:2006/03/19(日) 02:32:27
if( price > 100) .. は書くけど
if((price > 100) == true) .. とは書かない。
if の中では論理比較してることが自明だから。

done が bool であるならば
if(done) .. は書くけど
if(done == true) .. とは書かないようにしてる。
bool はそれ自体で論理式だから。

プロジェクトの規約で後者が推奨されたことはないが
そう書けと言われればそれに従う。
980デフォルトの名無しさん:2006/03/19(日) 06:57:33
省略可能なものはすべて省略する。
コメントさえもだ。
981デフォルトの名無しさん:2006/03/19(日) 07:32:54
ならば貴様の存在さえも私が消し去ろう
982デフォルトの名無しさん:2006/03/19(日) 08:17:38
>>979
if (price > 0) はどうなのかと…。
983デフォルトの名無しさん:2006/03/19(日) 08:43:52
>>974では const で固定されたポインタAと 配列 B[] との違う例をどうぞ
984デフォルトの名無しさん:2006/03/19(日) 08:48:29
>>983
なんでconstで固定されたって条件が増えてるの?
985デフォルトの名無しさん:2006/03/19(日) 08:55:07
>>984
そりゃルールは自分の有利なように変えるもの
986デフォルトの名無しさん:2006/03/19(日) 08:58:13
次スレは?
987デフォルトの名無しさん:2006/03/19(日) 09:01:16
>>985
そりゃそうなんだけどさ
ポインタ変数つくって[10]ってアクセスしたら落ちるよな? C言語うろ覚えだけど
constとか関係あるのかな? と思って
988デフォルトの名無しさん:2006/03/19(日) 09:25:02
意味がわかるように書いてくれませんか?
989デフォルトの名無しさん:2006/03/19(日) 09:25:21
>>986
最適化により事前に削除されますた。
990デフォルトの名無しさん:2006/03/19(日) 10:03:48
>>983
const int *a;
int b[16];

void f(const int **);
void g(int (*)[16]);
このときf(&a)とg(&b)はコンパイルできるが、f(&b)とg(&a)はコンパイルできない。
991デフォルトの名無しさん:2006/03/19(日) 11:46:11
>>990
型が違うからな。

ていうか、誰か2のスレ作れ。
もうあるのか? Linuxのおちゅ〜しゃでお気に入り
しか見てないから他のスレの情况分からないが。
992デフォルトの名無しさん:2006/03/19(日) 11:53:42
>>979

> done が bool であるならば
重要な一言でましたね。

> if(done) .. は書くけど
こう書くにはdoneがboolであると知っていなければならない。
だけど、さっきの一言でわかるように、この行を見ただけでdoneがboolなのかはわからない。

> if( price > 100) .. は書くけど
これはこの行を見ただけでifの中がboolだと明確。

> if((price > 100) == true) .. とは書かない。
だからこうは書かない。当然。

> if(done) .. は書くけど
だけど、この行はこれを見ただけではわからない。

> if(done == true)
だからこう書くほうがいい。これはdoneがboolであることをこの行で明確化するのが目的。
目的を考えると、なにかと言ってくる、if((done == true) == true) を使っての反論は的外れ。
("明確でないもの"を明確にするのと、"明確になっているもの"を明確にするのとでは、意味がぜんぜん違う)

993デフォルトの名無しさん:2006/03/19(日) 12:06:48
>>992
言ってることは分かるのだけど
if(done)は明確である、つまり真偽値以外なら全部比較しろ という方がいいな
Cなら書けちゃうからしょうがないんだけどさぁ
994デフォルトの名無しさん:2006/03/19(日) 12:06:51
boolであることを明確にする目的は?
995デフォルトの名無しさん:2006/03/19(日) 12:49:14
>>992
むしろ if (done == true) と書かれるとtrueとfalse以外の値をとりうる整数変数で、
非0でなくtrueと同値の場合だけを処理したいのかと勘ぐってしまいますが?
996デフォルトの名無しさん:2006/03/19(日) 12:51:28
>>994
コードは人間が読むものです。
997デフォルトの名無しさん:2006/03/19(日) 12:52:49
>>995
? 整数型とtrue/falseを比較すれば警告出るじゃん。
998デフォルトの名無しさん:2006/03/19(日) 12:54:45
埋め
999デフォルトの名無しさん:2006/03/19(日) 12:56:30
1000デフォルトの名無しさん:2006/03/19(日) 12:57:02
>>983
例えば

char* const A = "abcde";
char B[] = "abcde";

この場合Aの指してる文字列は書き換え可能領域にあるとは限らない。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。