1 :
デフォルトの名無しさん :
02/02/03 14:45 誰が作ったんだ?このコーディング規約。意味わかんねーよ。 つか適用すると逆に悪くなるじゃねーか。 そんな、バカなコーディング規約を書いてください。 言語は問いません。
@ノハ@ ( ‘д‘) < 一応2Getずざーー
3 :
デフォルトの名無しさん :02/02/03 14:47
ひとーつ、Ruby以外の言語は糞!
ひとーつ、グローバル変数は一切使用禁止。
String型の変数名は s からはじめること
変数の最初は小文字。
while( 1 )が通らない。
malloc、new禁止・・・わからんこともないが、でもなー
ポインタ型の変数はpから始めること
終端が'\0'で終わるモジレツ変数にはszを付けること
「じゃあ、pszHogeって何よ?」 って言うと答えない。矛盾だらけのハンガリアン信者。
12 :
デフォルトの名無しさん :02/02/03 15:08
言語はRuby以外禁止!
DWORD型の変数名はdwからはじめること。
クラス名はCからはじめること。
「じゃあ、構造体名はSからはじめるのか?」 って言うとそうでもない。矛盾だらけのハンガリアン信者。
16 :
デフォルトの名無しさん :02/02/03 15:10
typedef unsigned int uint typedef unsigned char uchar でも、これはこれで便利 という罠
でも、変数名にしろ型名にしろ、全部大文字とか区切り無しで大文字小文字 とか見ると頭がクラクラする。
「じゃあ、列挙型名はEからはじめるのか?」 って言うとそうでもない。矛盾だらけのハンガリアン信者! 氏ね。おまえはプロジェクトに必要ネエ
>>17 Javaは区切りなしで大文字小文字を推奨してるね。
まあ、郷に入りては郷に従え ってところか
コメントに顔文字不可 誰もそんなことしないっつーの
typedefした型名には_tを付ける。
クラスのメンバ変数は m_ 、グローバル変数は g_ をつけること。
23 :
デフォルトの名無しさん :02/02/03 15:14
どんなコーディング規約にせよ、徹頭徹尾規約を遵守していて 例外なんてひとつも無い というなら それはそれで見やすいコードになるから。 大人数のチームでプロジェクトを進めるときは 規約のあるなしで大きく効率が変わるのも また真実。
Javaの名前付け規約は・・もうね、アホかと。バカかと。
>>19 Smalltalkもね。
Lispとは大違い(w
全ての関数にコメントを書くこと。
>>21 うちの会社では typedefした構造体 には_tをつけてた。
見やすかったよ
boolean 型 ― hogeFlag int 型 − iHogeHoge 文字列型 − strHogeHoge その他オブジェクト型 − objHogeHoge ※オブジェクト型は曖昧になるのでなるべく使用しないこと … Java です
>>22 g_は100歩ユズってよしとしてだ、
なんでメンバ変数なのにわざわざm_Hogeなんてつけるのさ?
見やすいとでも思ってるん歌?
おねいちゃんにティムポこすられてもがまんすること
おどりこにさわらないこと
かいしゃのトイレでヌかないこと
>>30 こういう勝手なこと外に見える部分でされると困る。
会社のデスクトップにオタ絵を貼らないこと。
出社拒否しないこと
勝手にイースターエッグを仕込まないこと
無茶でも納期に間に合わせること
会社のものを勝手に持ち帰らない。
客先のねーちゃんに仕込まないこと
ファイルのコピーを「ダビング」と言わないこと
見積もりは最後に1.25倍すること
たばこで絨毯焦がさないこと。
仕事中の2ちゃんのリロードは3回まで
バグで進捗焦がさないこと
客先で深夜にやるな!! 警備から報告あったとき死ぬかと思ったぞ!! カメラは全て見ているんだ!!
第1章4項 規約 識別子名に「O」「0」「1」「l」「I」などの文字を使用しないこと。 補足 誤読の可能性を排除することで、ソースコードの可読性を向上させるよ う心がけること。
コーディング規則が一切無いこと。 人によって書き方違って修正が大変じゃないか、ゴルァ!!
サブルーチン一つにつき、書類一枚 記入事項 ・変数の型 入力・出力の区別 ・動作 等など 研修が終わると誰も、そんなことやってなかった 過去の記録は何もなかった ある重要なプログラムにバグがあるので改修した あとで、4年前にも同じ改修が行われていることが発覚した 同じプログラムのバージョン違いがあり、用途別に使い分けるのだが どのバージョンが必要かは一部の人間しかわからない おまけに日々、改造コードが発生している ちなみに、コーディング規約は当方の部署ではやってません
SunのJavaコーディング規約 キャストの括弧の後にスペースを入れるっちゅうのは何とかならんもんか? 誰もやってないだろ。
sz ってハンガリアン記法だったんですね。 つい最近初めて見かけて、「どういう教育受けてるんだコイツ」と 思っていたところです。
54 :
デフォルトの名無しさん :02/02/03 17:42
>>31 >>1 の趣旨からすると、規約にもりこんでも効率があがらない
規約をかけといっているのだから
>>22 はその意味で書いたのでは?
まぎらわしいから、今実施しているコーディング規約の場合と
意味がないとおもう規約は明記してください。
例 規約 メンバー変数はm_ とする
XXXXなのでやっても意味がない
たしかVC++ではデフォルトでm_となるようなきがしました。
クラスのメンバー変数はm_ とする については
設定した値はクラスないで有効になるのだから、グローバルとおなじで
多少は意味があるとおもいます。
55 :
デフォルトの名無しさん :02/02/03 17:45
非明文化規約 プロジェクトマネージャ、ディレクターは神なので、 彼らが黒といったら黒である。 罰則規定 違反した場合、社内の特高警察に捕まって首になる。 さらに再就職を妨害される。 こういう会社が意外とあちこちにあるような…
56 :
デフォルトの名無しさん :02/02/03 17:49
ただいまコーディング規約策定中です ハンガリアン記法の悪い点って何ですか?あるいはその他のいい点でもいいです。
今だ!!100ゲットォォォォォォオォオォォォォォォォォオォオォオオォ!!
58 :
デフォルトの名無しさん :02/02/03 17:55
女のバグは三回までノーカウント
59 :
デフォルトの名無しさん :02/02/03 17:56
ごめん、激しく誤爆してもうた、、。 しかも狙ってたスレの100は他人にゲットされてるし。。。
お願いだから、コーディング規約を プログラミングしない人が決めないで下さい。 スキルの低い人が決めないで下さい。 一人で決めないで下さい。 考えないで決めないで下さい。 調べないで決めないで下さい。 変なのを考え出さないで下さい。
変数名なんぞ int a,b,c,d,e; こんな感じでいいんだYO!!
えー。ここは、バカなコーディング規約を書くスレなので
>>63 はバカなコーディング規約例です。
65 :
デフォルトの名無しさん :02/02/03 18:04
クラス名も A001,B002... 関数名も A000101、A000102... で、1関数1ファイル。 こないだF通の請けでこういうのがあったよ。ロートルアホ氏ね!
>63 イテレータで使う一時変数程度なら同意i,j,k,l,m,n
わはははは。 クラス名でそういうのは初めて見た。
68 :
デフォルトの名無しさん :02/02/03 18:07
>63 メンバとかグローバルにそんなのあったら発狂するな
>>65 これまだ見たことない。本当にあるのなら見てみたいな。
いったんコンパイルしてからデコンパイルしたらいいかも。
e.c.b.c.set( a.c.s.get() );
71 :
デフォルトの名無しさん :02/02/03 18:11
>>70 多分クラスの暗号化(リバース妨害機構)の結果だと思われ。
A0001.java A0002.java … A0227.java B0001.java B0002.java … B0328.java C0001.java C0002.java … もうね (略
>>65 リファクタリングブラウザが普及したら
簡単なマクロで一括変換できそう。
でF通にソースを渡すときにはマクロを実行するという決まりができる。
昔、関数に渡すのは変数でしか渡していないプログラムを見たことある。 void foo(int x) { ... } void bar() { int a; a = 1; foo(a); /* foo(1) と書いていない */ } これってなんか意味あったのかな ?
インナークラス禁止
んー、デバッカで追えないからかな?
>>74 a=1;
ここでブレーク貼れば関数へ渡す前に引数を操作できる。
foo(a);
78 :
デフォルトの名無しさん :02/02/03 18:23
>>75 うちのが凄いぞ。インスタンス変数のprivate禁止。
Stringのフィールドは必ず定義時に""で初期化すること。 class Hoge { String s1 = ""; String s2 = ""; Hoge(String s1, String s2) { this.s1 = s1; this.s2 = s2; } ・・・・・・・
80 :
デフォルトの名無しさん :02/02/03 18:24
>>78 なんのなんの。
インスタンス禁止。全部静的メソッド&グローバル変数。
…だったらC++使うなよ。
>>79 そりゃ Hoge hoge = new Hoge(); のときのためでしょ。
82 :
デフォルトの名無しさん :02/02/03 18:26
昔malloc禁止ってのがあったな。 いろんなところにstaticな配列がバッファで取られてた。
なんか・・・馬鹿なコーディング規約 と思い込んでる馬鹿の方が多いな。 中にはほんとに意味不明なのもあるけど、大抵は なんらかのメッセージが込められているんだから その意図を汲み取ってほしいなぁ。 文句言う前にちっとは考えてみろ
>>77 あ、それよくハマったな。変数にしときゃ良かったっての。
foo() が自作ならステップインしてその中で変えりゃ良いけど、
DLL の中とかだと俺の手に負えん…
85 :
デフォルトの名無しさん :02/02/03 18:29
>>83 うんうん。一理ある。
だけどコーディング規約に理由も書いていてほしいな。と思う。
たとえば
規約 ローカル変数禁止
理由 俺がわからんから。
とか。
87 :
デフォルトの名無しさん :02/02/03 18:33
関数の長さは画面に収まる程度
>>83 環境の制限に基づいているなら、確かにそうなんだけどね。
プロジェクトの構成員がバカばっかりだから、そいつらでも
分かるように、というのも、立派な理由かもな…
最終的にはそいつら使って納品するしかないわけだし。
89 :
デフォルトの名無しさん :02/02/03 18:36
90 :
デフォルトの名無しさん :02/02/03 18:38
ポインタ使用禁止
>>88 そのバカがバカな物を作らないため&バカを育てるための
コーディング規約だと思う。
バカにとってはいい決まりで、そうでないものにとっては
悪い決まりってあるのかな?
ここのどこかで昔見た。 全ての定数は、マクロ定義すべし。 #define ONE 1 #define TWO 2 …。
93 :
デフォルトの名無しさん :02/02/03 18:43
>>92 for(i=0;i<10;i++)
これも許さないってこと?
>>92 constじゃいかんのか?
ん? そういうことではない?
>>83 C → C++ 移行時も、C → Java 移行時も「面倒だから」「スタイル変えたくないから」
「流儀がよく分からないから」という理由でコーディング規約引き継いでるプロジェクト
多々存在。だから Java で A0001.java や m_ とかも「馬鹿な規約」に入ると思われ。
>>92 それは典型的な バカなコーディング規約 だね。
#defineされたらデバッガじゃ追えないから
constな変数に収めるのが通例だね。
#define TWO_THOUSAND_ZERO_TWO 2002 printf ("今年は %d 年です。\n", TWO_THOUSAND_ZERO_TWO);
>>81 >そりゃ Hoge hoge = new Hoge(); のときのためでしょ。
そんな生易しいアホさ加減では無い!
他のオブジェクトフィールドも全てnullで初期化するというルールや
intも0で初期化するというルールまであった。
ついでに各Collectionも使用禁止。
クラス名は全て小文字で書く事。
101 :
デフォルトの名無しさん :02/02/03 18:48
祭りはここですか?
>>100 そりゃ非道い
規約編纂者を火炙りにしろ
>>96 意味が違う。
for( i=0;i<96;i++){
とかで
#define connection_max = 96;
for( i=0;i<connection_max ;i++){
とするようにという意味だと思われ。
ソースの1箇所変更で全て変えられるようにという規約を誤解した新人の話。
8Tab,4インデントなコーディング規約。
>>104 ゼロも定数なんだけどね・・・ま、いっか。
その会社に幸荒れ!!
=余計だった
JavaでCollection使わなかったら、かなりとんでもない ソースが完成しそうだなあ… 昔、ポリモルフィズム使用禁止、ダウン&アップキャスト禁止 ってのがあったな。
#define CUG1 1 #define CUG2 2 #define CUG3 3 とかやってたので #include <hoge.h> static const int GROUP_STAFF = CUG1; static const int GROUP_CUSTOMER = CUG2; static const int GROUP_ADMIN = CUG3; … if(user_group == GROUP_ADMIN){ … } とかやったら、規約に反しているという理由だけで書き直させられた。 いまだに納得が行かない。ちなみにこのソースの開発・デバッグ・テスト 全て俺担当。他人に触らせる予定なし。納品対象外ソース。 最終的にローカル変数 user_group も fUsrGrp に書き直させられた。 むかついた。
>>111 むかついたのなら、規約の方を改善するように努力すべき。
永遠にアンタが担当をするわけでもないだろ。
いつどこでだれに担当がかわってもいいように構えておくのが
PGとして最低限の心構えだ。
うちのJavaによるシステム開発のルール。 その1 RMI&CORBA使用禁止。 あのさあ…
俺規約 1)変数は全て小文字 アンダーバーで区切ること 2)インターフェースは最後の手段。全部変数にする。 3)配列名と[]の間はタブで空けること。 4)配列のつもりなら int name [] 5)オブジェクトのつもりなら int [] name 6)両方混ざってるなら int [] name [];
>>77 ときどき自分で思ったことあるけど、
改めて言われると納得。
デバッガに関数呼び出し時の引数を変更できる機能が
あると良いのかもしれない。
>>113 ライブラリが信用ならないから使うな。
もし欲しければ同等の機能は自分で開発しろ。
という意味では?
俺規約 7)RMI&CORBAは最後の手段。
その2 J2EE使用禁止。 その3 オープンソースライブラリ使用禁止。 オイオイ…
119 :
デフォルトの名無しさん :02/02/03 19:01
変数名の先頭には_をつけること。
8)HORBも禁止。自分で作る。
>>118 オープンソースというよりGPLだったのでは?
122 :
デフォルトの名無しさん :02/02/03 19:02
10) 既存のコンパイラは使用禁止。自分で作る。
>>116 うちの経験2年程度+ロートルCバカオヤジ混成のJava
エキスパートチームの方がよっぽど信用できないよ。
>>112 害虫なので言うべき立場ではない。ちゅうかとっくにこの会社切ったけど。
害虫で切り盛りしてたんで、今の技術についてゆける社員いなくて倒産
一週間前らしい。Web サイトは三年前から更新されておらず。
125 :
デフォルトの名無しさん :02/02/03 19:03
>>121 GPLで配られているライブラリって商用には使えないんだっけ?
126 :
デフォルトの名無しさん :02/02/03 19:04
>>78 >うちのが凄いぞ。インスタンス変数のprivate禁止。
まえに何処かで、「privateは極力使うべきではない!」
と力説する人を見たことが有る。
おれもロートルCバカオヤジだから ちょっと心が痛いかも。
>>125 使える。ただし、中にいれちゃったらGPLものになるので
バイナリ納品先にはソースを公開する義務が発生する。
俺規約 9)社内ライブラリ使用禁止 理由:天才の俺様に他人のソース使えと言うのは屈辱である。 天才には天才のやり方がある。 かような一般PG向けのライブラリなどちゃんちゃら可笑しくて 使っていられないのである。
130 :
デフォルトの名無しさん :02/02/03 19:06
>>130 おそらくクラスを構造体の延長としてしか捉えてないからだと思う。
みんな 引くなー
>>129 使えるものは使った方がいいとおもうよ。
くだらないデティールに拘って効率落とすよりは
バンバン既存のライブラリを使用すべきだ。
バグがあるかもとか遅いかも、というのは
まったく別問題で、そんなものはあとから
いくらでも潰せる
補足 明確な機能区分がまったく出来てないライブラリは 使うべきじゃないけどね
VBはいいけど、VBオンリー使いはバカばかり。 コーディング規約はいいけど、コーディング規約 決めてるだけな奴はバカばっかし。 似たようなもんだな。
(Java っす) パフォーマンスの観点より: 1) synchronized 使用禁止。 2) メソッドには必ず static final をつけること。 3) extends は使用禁止 (サブクラス不可の意)。 … 会議中に資料読んでて突然 ( ´,_ゝ`)プッ … ( ´,_ゝ`)ププッ 金の折衝がつかず結局プロジェクト離脱。後はこんな感じ | |__∧ |∀・)ニヤニヤ ⊂ ) | / |_)  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
コーディング規約決定って、その人の知識と見識の良し悪し が、実装そのもの以上に如実に現れるんだな。 俺は絶対そんな立場にならないようにしたいな。恥晒す だけの立場なんて。
>>137 苦肉の策だね。
VMの質を上げればいいんだけど。
VM開発なんてどこもやらないやれないしね。
関数の仕様書の書き方だけ徹底させた。 あとはテストがしやすいように関数間の距離をなるべく空けさせるよう 指示した位かな。
>>139 synchronizedがおかしかった事なんかないけどな。
使ってる奴がアホでデッドロック起こしまくって、追跡方法も
知らないで四苦八苦しているシチュエーションなら、死ぬほど
出くわすが…
癌は、命名規約作っただけ、モジュールに番号振っただけで開発物 管理した気になってる管理者だな。
>>142 ウチには勤怠管理だけで役職手当貰ってるバカがいるよ。
synchronized使わないでマルチスレッドどうすんだろ?
>>144 mainスレッドしか使わないんだよ、きっと。
後はマルチプロセス。JVMをforkしまくり。ゲゲ。
146 :
名無しさん@おひさまのよう。 :02/02/03 19:34
>>144 サーバサイドなんで、どうする気なんでしょうね。というか、書いた人が明らかに
Java 知らず、「Java パフォーマンスチューニング」あたりの生齧り知識を並べ
立てただけのようでした。もう完全にヲチモードです。多分 SingleThreadModel
を使うことになるでしょう :-P
>>147 完全なシングルスレッドじゃサーバは出来ない〜!
JavaはブロッキングI/Oしかないんだから、ソケットの監視ができないよ〜!
どうすんだろね。ほんとに。
>>148 今時マルチスレッドにたよっているお前が痛い。
ということにしたい?
察するところ、ファイルロック使うんだろうな・・・。
ちなみに技術力もノウハウも無いのに、過去のコネと営業力だけで仕事取ってきて 協力会社集めて、なおかつリーディングも取ろうとしている会社です。もう発注元も 見切りをつけて次は他へ頼もうという気らしいです。いったい何を作る気なんでしょ うね。そもそも extends しなきゃサーブレット作れないのに…。会議に参加した協力 会社の人達はみんな苦笑していました。金の折衝〜とか言いましたけど、本意は キナ臭いのでさようなら〜です。
>>151 ちく裏あたりで社名晒してくれよ。参考にするから。
Nてーてー出たかな?
スレッド使用禁止 ソケット・パイプ使用禁止 プロセス間通信はファイルを使って行うこと っつーのがあったな。ちなみに、ファイルの排他制御してなかった(なんだかなぁ)
プロジェクト回数と表情 1回目( ´,_ゝ`)ププッ もうアフォかヴァカかと・・・・ 2回目(TдT)マズー 又来たよーん 3回目(-_-) 力関係を見せ付けられた・・・。逆らっても無駄・・・。 4回目(゚ε゚)キニシナイ!! そして彼は、かつて馬鹿にしていたアフォS∃に育っていくのであった。
>>155 こうやってパカは継承されていくの……。
ありがとう。怖い物を見せてもらいましたよ……。
157 :
デフォルトの名無しさん :02/02/03 22:16
変数名は混乱を避けるために、 変数を作った人の名前を必ず前につけること。 結果: for( HayashiT_i=0 ; HayashiT_i <= 0 ; HayashiT_i ++) 名前空間?(笑
>>157 会社名を明かす義務が生じたらしい。
明かせ。
162 :
デフォルトの名無しさん :02/02/03 22:28
163 :
デフォルトの名無しさん :02/02/03 23:07
>>159 どっちかというと転職は嫌いなので、遠慮しときます
>157 絶対ネタだね。いくらなんでも信じないよ。
ハンガリアンだかモンゴリアンだか知らないけど、 関数を短く纏めてればローカル変数にpだのszだのつける必要はないのにさ。 そういや、インクルードファイルからインクルード禁止っていう規約の会社もあったな。
166 :
デフォルトの名無しさん :02/02/04 00:47
委譲禁止。 びっくりしたよ。
1ソース1クラス(因みにJavaね)。インナークラス厳禁。なんでも、.javaに対し、.class が複数あると、管理できなくなるそうな・・・。
168 :
デフォルトの名無しさん :02/02/04 01:09
コーディング禁止
>>167 .classファイルが増えすぎて管理しきれないってのは解る気がする。
俺の所もクラスファイル5000超えたし(藁
つーか、その為にパッケージが有るんだがな。。。
ウチの会社も理解できない奴が多くて困る(藁
170 :
デフォルトの名無しさん :02/02/04 01:14
言語:C 規約:標準ライブラリでさえも使ってはならない。
>170 djb大先生ですか?
172 :
デフォルトの名無しさん :02/02/04 01:30
.classばらばらに管理してるのは、頭悪すぎだと思われるが… Cだって.objファイルでなんか管理しないでしょ?
173 :
デフォルトの名無しさん :02/02/04 01:33
なんか異様にレス速度早いぞ? おまえら早く寝ましょう
174 :
デフォルトの名無しさん :02/02/04 01:38
言語:Java Cloneable使用禁止。 Serializable使用禁止。 間抜けなコピーロジック(クラス毎にシコシコ実装)とストリーム読み書き ロジック(こっちもクラス毎にシコシコ実装)がコード全体の3割くらいを 占めている。
175 :
デフォルトの名無しさん :02/02/04 01:56
自社の技術担当重役製オナニーライブラリ以外使用禁止。 恐ろしくて使いたくないんだが、使わないと首。 「頼むからバグってませんように!」毎日両手を合わせて ますが、裏切られる毎日。1年後には顧客(ノンバンクだか らヤクザがらみかも…)に追い込み掛けられて首吊り自殺か なあ…
ひと〜つ、人の世の生き血をすすり、 ふた〜つ、不将な悪業三昧、 み〜っつ、醜い浮世の鬼を、 退治してくれよう,桃太郎侍!
177 :
デフォルトの名無しさん :02/02/04 02:23
ここちくりスレにしない?
定数と比較するときは if (hoge == 0) ではなく if (0 == hoge) とすること‥‥だそうだ。ハゲしく萎えたYO!
if ( hoge == 1 ) 等のように変数,演算子,括弧の間は1文字空ける。 おかげで親指が勝手に動く癖がついたYO!
>178 それは一応意味は有るよ。 ==を間違って=と書いたとき、 if(hoge= 0) だとエラーが出ずコンパイルが通ってしまう(&意図したとおりには動かない)が、 if(0= hoge) だとコンパイルエラー(定数には代入できないYO!)が出る。
178がJavaだったら皆で笑おう
>>180 でも a = b と b = a の間違いはチェックできないし、最近のコンパイラなら警告
出してくれるから、あまり嬉しくない気が。
183 :
デフォルトの名無しさん :02/02/04 03:18
>>178 C使ってた頃はよくやったが?
typoで if (0 = hoge)するとコンパイラが弾いてくれた。
小僧が書いたif (hoge = 0)で泣いた事、数知れず。
lint
185 :
デフォルトの名無しさん :02/02/04 03:27
>>176 のつづき
よぉ〜つ、横にもハゲがある・・・
>>169 OOだとクラスは爆発するもの・・・。
ひょっとしてOOで組んでます?
追記:Javaでは爆発します。
JAR くらい使え JAR …
190 :
デフォルトの名無しさん :02/02/04 14:49
>>175 うちも同じく自社製データベースアクセスライブラリ以外使用禁止。
しかし、便利な機能など何も無く標準のデータベースアクセスライブラリ
(の一部)をラッピング&機能縮小しただけ。
便利な機能(?)といわれているのは接続するデータベースサーバを
指定しなくても設定ファイルからみるから楽だと。
おかげで二つ以上のデータベースサーバに接続できない。
しかも汎用と名前を付けてるのに読みに行く設定ファイル名は固定だから
プロジェクトごとに改造している。
あとトランザクション系のメソッドが無かった。
言ったら必要ないと思ったそうだ。もちろんつけさせたが。
他にも不自由な点がたくさん。
不自由な点を改善すると標準のライブラリとほとんど同じになるので
標準ライブラリを使おうといったら、「利点がない。」だと。
なに言ってやがる、自社ライブラリは、バグだらけ。汎用性がない。
機能が少ない。と欠点だらけじゃないか。
>>190 あーウチもウチも。コーディング規約とはちょっと脱線するけどね。バグだらけ+明らかなドキュメント不備。
結局、ウチら開発側がブラックボックスの中までステップ実行してバグや仕様を見つけてる。
1. 「○○より先に××呼ばなきゃだめなんか〜」
2. 「○○って必須なのかよ〜、どっから持って来んのよ〜」
3. 「DeleteMode って文字列なんだけど、保留するときは何指定すれば良いんだよ〜」
4. 「これの呼び出しで発行されるのって、この SQL だったんか〜」
5. 「なんで Get〜 呼び出すたびに毎回DBに SELECT 行ってんだよ〜」
6. 「じゃ Repeatable Read 必須やんか〜 デッドロック起こすんじゃね〜のか?」
等々、1 機能使うだけで大騒ぎです。
グチはマ板で…
「ソースファイルのヘッダ部には開発担当者の名前、住所、 メールアドレスおよび携帯番号を記述すること (厳守)」 会社から携帯もらってるの何人いたっけ… 俺の私物なんすけど… いや、それ以前に何かがおかしい… 派遣いっぱいいるし…
>>193 コーディング規約じゃないけど、某所での話。お客さん側から
「サーバのアカウントを作成するので、既にファイルサーバで自分に
割り当てられている ID と名前、住所と年齢を記入してください」
という連絡があった。なぜ住所と年齢が? みんな訝しがったがとりあえず書い
といた。週末、俺のアパートに年齢特約のパンフ持った保険の勧誘員が現れた。
実話。 「えーと、アレ。モンゴリアン方式で。」
そいつチョップしてやれ
>>157 ネタ決定。ネタだと思われたくなければ、理由を聞いてきてくれ。
198 :
デフォルトの名無しさん :02/02/04 21:09
うちではDelphi使っているのだが、 先輩は「どうせコンパイラが型チェックしてくれるから、 妙な変数名付けるのに時間食うくらいなら、ほかのコード作れ」と言われた。 漏れの先輩はただのDQNか?神か?
199 :
デフォルトの名無しさん :02/02/04 21:13
windowsの m_sdafj;dl みたいなm_ ってセンス悪いよね・・・ ダサい そういうのを使ってるやつの服装は大抵ゲイツっぽい!?
200ズザー
>>198 自分で変数名に型情報を付加するよりもコンパイラが吐いた型エラーを見て後から直すほうが時間がかかるのでDQN
>199 代わりの案キボーン ハッタリが利いてクールなやつを1つ
203 :
デフォルトの名無しさん :02/02/04 22:24
コーディング規約決めた奴のアホさ加減をさらし者にするスレですね。 どこの会社でも無限バカが責任者になるですね。 並みのプログラミング持っていれば絶対しないことをしまくるですね。
>202 代わりもなにもm_なんて使わなければいいだけだろ? クラスウィザードで自動作成されようが、片っ端から削除。 こうしてソースの健全性は保たれた。
m_をつける理由はあるが、m_をつけてはいけない理由はないんだよなぁ。
>202 @をm_に変換するプリプロセッサをつくるとか。
>205 >m_をつけてはいけない理由はない それはm_を自作クラスにまで付けてる様な不感症ヴァカの理論だろ。
>>207 ではm_ をつけない方がいい理由を説明してください。
面倒だからですか?
また始まったよ…
>>210 もうマム板で m_ の話はいいよ。最近来た連中は知らんのか。
だいたい揚げ足取る気満々なのみえ見えだし。
クラスやパッケージなどの名前空間の意味が分かってない アホが、妙な接頭辞をクラスにつけることを強制している。 class a.aaa.AAAHoge class b.bbb.BBBHoge …イランだろ。
>>210 説明を要する時点で不感症ヴァカってこと。
LISP系はもしも気に入らん仕様(名前とか構文とか)があっても 全て自分でリプレースできるから良い。実はプログラマ天国だぞ。
>215 定説って事ですね♪
>>216 それは確か、xyzzyのLispモードで関数に色がつかない理由でしたね。
>>157 KenThompson_i、DennisRitchie_j、BillJoy_k
なんて変数があったら恐れ多くて変更できないYO!
>>219 KusakabeYouichi_i だったら間違いなく全回収だな。
むしろ、1つみつけたら、全ソースgrepすべき。
>>214 JAVAだよね言語は? 当方VC++ パッケージ?
>>215 説明ができないと、人を説得することは、できません。
ここ2chでのいいのがれは、一般社会では通用しません。
-----------------------------------------------------------------
m_は好みの問題だけど、VC++では一般にデータめんば−に
使用されているからしたがっています。
------------------------------------------------------------------
変数名は日本語から連想されるアルファベット3文字の組合わせ。 ・ラベル&ワーク変数の名付けには、変換テーブルを使用。 ・構造体名&メンバ名は、別の変換テーブル&構造体毎の独自ルールを使用。 ・変換テーブル&構造体の仕様書は、Excelワークシートで管理。(変換は全て手動) 例:×○部=ドキュソプログラマ → KY1 = DQNPGM はっきり言うて、WinMe+64MB RAM でOffice2k 使って仕事するのはキツイ。 案の定スワップしまくりでHDが次々昇天してる。 修理代につぎ込むよりメモリ買えと言いたいが、派遣で新人の上 仕事が遅いので何とも言えん。 ちなみに自分の何倍も仕事が速い周囲の先輩方は、PCには疎い(PC自作程度で驚く)ので 環境が改善される見込みはまったくナシ。 鬱だ…
225 :
デフォルトの名無しさん :02/02/06 03:04
鈴木太郎は"鈴木太郎" 自宅というスコープに帰れば"お父さん" 会社というスコープに入れば"係長" スコープでの役割に応じて呼び方は変わるけど、 たかだか、流行廃りのある処理の都合上、いじくる奴らの都合上 "m_鈴木太郎"とは呼ばれない、呼ばれたく無い。 設計書とコードで表記かわったらかなわん・・・ 元ネタ知らんから蒸し返してスマソ。 鈴木太郎って誰だ?(w
>>224 WinMe+64MBにかすんでしまってるが、
> 変数名は日本語から連想されるアルファベット3文字の組合わせ。
これすごくないか?
int wndyokhab = this.Width; //WiNDow no YOKo HABa
とかするのか?
m_ってようするにスコープが関数の変数と区別するためだろ。 スコープがグローバルの場合g_で、クラスの場合m_で、関数の場合何も付けない。 まぁm_でなくてもこの三つが区別できればなんでもいいんだけど。 クラスと関数のスコープの違いについて意識することはあるので、 あった方が便利と感じているのだが。
今からこのスレは日本語をアルファベット3文字で書いてみるスレになりました。
MFC使うときはm_つけるし、JavaやC#のときはつけない。 生C++のときは、迷うけど、結局つけてる。つけて損は無いし。
m_だったり、_だったり色々あるけど、 言語処理上のスコープの違いを変数名につけちゃダメ 言語仕様の予約語privateとか使うのみ。 ってのが流行なのかな。教条主義な人たちは言語固有の型を表す プリフィックスdw,sz,pなどもダメとおっしゃってます。 俺としてはそんな細かいことどーでもよくて、 開発プロジェクト内で決まり事が内容どーでもいいから 決まってればいいじゃないかぁーだな。
232 :
デフォルトの名無しさん :02/02/06 03:45
>>230 言語毎にいちいち変えるのしんどくない?
つかったりつかわなかったり、どーしようか悩んだり・・・
>>232 そんなの苦にならないけどなぁ。
むしろ自作クラスがライブラリ内のほかのクラスから浮くほうが気になるから
郷に入っては郷に従ってるよ。
>>233 郷に入っては郷に従ってるよ。
なるほどー、道理。
たまに(よく?)郷に入ってみたもののみんなバラバラってあるよね。
あたしたち誰についていったらいいの?と途方にくれるピグミン状態。
>>231 szはともかくdwやpは重要だと思うなぁ。
while禁止。 無限ループするから。 forは…?
>>237 もちろん禁止。
do〜whileに至っては減俸モノだ。
240 :
デフォルトの名無しさん :02/02/06 17:13
>>239 それは許可。
よって、どうしてもforやwhileと同じ構造を作りたいときは
すべて再帰によって行うべし。
確かに再帰なら無限ループはしないな。 いつかはスタックが尽きるだろうし...
「ネストは3段まで」 おかげで不必要にトリッキーなコードが続出。
遅くなるからローカル変数禁止ってのがあったな。 10年以上前のヤツだけど。 俺はそんなもんには従ってなかったが。
いよいよgotoの出番だな。
>>242 同一ファイルなりクラスなりに関数でくくりだすだけじゃん。
トリッキーになるのは、コーダがアホだから。
>>243 今は逆で、グローバルが遅くなるよ
(全てのケースには当てはまらないかも)
247 :
デフォルトの名無しさん :02/02/06 22:08
>>240 可読性が低くなりやすい再帰を禁止する方が、まだ分かるような…
public static void main(String[] args){ main(args); }
再帰のみって・・・
250 :
デフォルトの名無しさん :02/02/06 22:18
あぁ、止まるのはOKなのか・・・
252 :
デフォルトの名無しさん :02/02/06 22:28
>>249 【問】
再帰のみで for、while、do〜while を実装せよ。 ( 5点 )
>>214 あるある。メソッド名にまでプレフィックスを付けようとか言い出しやがった。
さすがに阻止したが。
254 :
仕様書無しさん :02/02/06 22:36
>>249 関数型言語だと常識的なコーディングだが、C でやったら無茶苦茶に遅くなる
わな。(まさか末尾再帰の展開をしてくれる C コンパイラとか無いよな)
>255 gccのコンパイラオプション参照。 でもgccだけで出来てもちっとも嬉しくないことに気づく。
257 :
デフォルトの名無しさん :02/02/06 22:43
>>255 あるよ。それも一般的によく使われているもので。
昔からgccはするよ。
Linux + gccで int main(int argc,char ** argv){main(argc,argv);return 0;} したら、せぐふぉった... (´-`).。oO(なんでだろ?)
>>256 ほんとだ。-mtail-call なんてオプションがあるのね。
>>259 それはreturn 0;がmain()の後にあるから末尾再帰ではない。
よってスタックオーバーフロー。
int main(int argc,char ** argv){return main(argc,argv);} つーこった。
>>227 yes。実際には類似単語が多いのでもっと読みづらいが。
ちなみにコメントは半角カナだったり。(w
例:WNDYOKHAB = GMN.YHB /* ウインドウ ヨコ ハバ ハ ガメン ヨコハバ */
(全て大文字なのと、"横幅"の表記が2種類あるのは実例に基づく。)
でもこんなのはまだ序の口。
このソースをデバッガ無しでチェックせんとアカンのよ。(´д`;)
265 :
デフォルトの名無しさん :02/02/07 02:34
なんかアセンブラやってた時代を思い出すな
>>264 規約であるところがなんともあれだが、
略称表記&何パターンかあるというのはありがちだな。
データベース絡みで特に。
kkk←KEIHIKAIKAKE(経費買掛)
kkk←KANRIKAIKEI(管理会計)
kmk←KAMOKU(科目)
kmk←KOMOKU(項目)
KEIHI, KH, KIH ←どれも経費
JSK,JISSEKI,JISEKI←どれも実績
SHOHIN,SYOHIN,SYOUHIN,SHOUHIN←どれも商品
:などなど
鬱だ。
269 :
デフォルトの名無しさん :02/02/07 03:50
>>268 もういっそ日本語にする、という手もある。
近頃は2バイト文字も許されるしね。
>259 いちいち変数を記述するのに仮名漢をOnにしたり、offにしたり するのは鬱陶しい。
272 :
デフォルトの名無しさん :02/02/07 23:38
同一の何かを示すシンボルに、いろんな文字列を使用するの、止めて欲しい。 勘違いしやすいし、GREPやFIND使えないし、ろくなことがない。 そんなルール決めてる奴は、マトモなソース書いたことないんだろうなあ。
たとえば、 >bool ブール処理済み?; >ブール処理済み? = true; にたいして、どんな入力補完をすれば、 仮名漢をまったく使わずに済むんだね?
274 :
デフォルトの名無しさん :02/02/07 23:47
>>273 ちょっと賢いIDE使えばメソッドやインスタンス等々の一覧が
メニューで選べるから、それでいいんじゃない?
まあ、いやなら日本語名を使わない選択肢もあると思う。
規約で 「日本語名を使うな!」 ならまだ判らないでもないけど
「日本語を必ず使え」 なんて言うわけ無いしね。
275 :
デフォルトの名無しさん :02/02/07 23:49
>>273 鬱になりそうなテクニックとして
boolean is生理;
public String get源氏名();
なんて頭にアルファベットをつけるとか(・∀・)
276 :
デフォルトの名無しさん :02/02/07 23:52
ていうか、変数名やメソッド名って、ほとんど全部コピペで済まさないか? 俺は結構長めの変数名をつけるほうなので、いちいち手入力してられない。
277 :
デフォルトの名無しさん :02/02/07 23:54
>>276 同意。
最初の一回にしても、コメントを書くのを止めればその方がタイプ量は
少なくて済む。
278 :
デフォルトの名無しさん :02/02/07 23:56
>>275 ワラタ
でも、マジメな話、日本語変数名ならプレフィックスよりサフィックスが
いいと思う。ジャパニーズ記法とでも名付けるか? (藁
>>278 プレフィックスの方が熱くていいんだけどなぁ
unsigned int 震えるぞハート(); とか
void 燃え尽きるほどヒート(); とか
280 :
デフォルトの名無しさん :02/02/07 23:58
>>278 boolean 生理かよ! = false;
public String 源氏名ゲトー(); みたいな。
281 :
デフォルトの名無しさん :02/02/07 23:58
void 源氏名設定(String 源氏名) String 源氏名取得() boolean 生理?() これはちょっと…
変数名をメニューから選ぶとかコピペとかってプログラム書くスピードが遅くないか?
実際、変数とかテーブルのフィールド名に日本語使うのってどうよ? 初めてVBのバリバリ日本語入りのソース見たときは鼻血でそーになったが、 作ったやつがあまりに平然としてたんで(以降コーディングスタイル変わらず)。 おれはソースの中に2バイト文字使うのは嫌なんだが おれの考え方が古いだけなのか・・・
>>282 マジな話、タイプミスが無くなるという効能があるんだけど
どっちみち間違えなきゃイイ話で。関係ない話でゴメン
>>282 エディタの短文入力機能を使う。複数ソースでありがちな変数名の揺らぎもなくなって
いい感じだYO
>>283 日本語の方がしっくりくる場合もあるからね。
データベース系だと日本語は最近はポピュラーだったりする。
287 :
デフォルトの名無しさん :02/02/08 00:07
>>286 確かにね。クライアントの社内用語なんかだと、英訳しようもないし、ローマ字にすると
綴りが不安定になるし、いっそ漢字で・・・・ということも多いね。
288 :
デフォルトの名無しさん :02/02/08 00:10
日本語変数名だと、IME入れたり切ったりするの面倒じゃないのかね? まぁ、Viで日本語入れるのも慣れれば平気だから慣れの問題なのだろうか。
289 :
デフォルトの名無しさん :02/02/08 00:11
カラム名で KOKYAKU_JYUSYO とか書いたり、 KKYKU_JYSHO だのとワケワカラン省略するくらいなら、 顧客住所 としてくれたほうが、開発成果物の信頼性増しそうだよな。
うちの会社はDQN極めてるな・・・ 上が版画利案信者だから、pszとかつけてないだけでレビュー落ちた記憶がある・・
>>290 その位許してあげなよ。それともウチ来る?
224のところにだけは逝きたくねぇ!!!
>>290 逆にレビュアを吊るし上げるぐらいの勢いで頑張ってくれ。
業界の明日を背負って立つ若人よ。
294 :
デフォルトの名無しさん :02/02/08 01:37
「変数名はローマ字で書け」 m_iBunpairitsuKauntaa /* 分配率カウンター */ m_iBunnpairitsuKauntaa /* エラー */ m_iBunpairituKauntaa /* エラー */ m_iBunpairituKaunta /* エラー */ せめてヘボン式かどうかくらいは決めてくれないか。
∧_∧__フムフム・・ ( ´ー`/ / ( ,/_〇 ♪ | |旦 ♪ ∧∧ セッケイショ | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ヽ(゚∀゚)ノ デキマシタ!! | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ( へ) | | く ∧_∧ モンゴリアーン!! |\ΦДΦ) /| ○ < ζ) < ○ 人人 | > 旦 > | < ∧∧ キュワアアアアア!!! | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ヽ(゚Д゚ )ノ | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ( へ) | | く
298 :
デフォルトの名無しさん :02/02/08 09:23
class jo { … private: int inagakiメンバー; }
299 :
デフォルトの名無しさん :02/02/08 09:25
モンゴリアン ってなんだっけ? 心臓マッサージをセルフで直にやっておきながら 自分は人間だとうそぶいた青年だっけ? 特技は雄叫び?
チョップ
テソザソ
データを溜めておいて一気に送るのは flash が正しいのでしょうか?それとも flush でしょうか?
>303 辞(略)
>>303 光に変換して目潰し攻撃をするならflash、
クソデータとして便所に流すならflushだな。
306 :
デフォルトの名無しさん :02/02/08 11:46
おい、おまいら! おまいらだったら、次のような項目を変数名やDBのカラム名にするとしたらどうするよ? 管理番号 部品番号 制作工程コード 制作工程区分 受注日 受注者 発注日 発注者 ちなみに漏れの会社だと KANRINO BUHINNO KOUTEICD KOUTEIKBN JYUCHUDATE JUCHUSYA HACYUBI HACYUSYA なお、スペルミスではない。仕様書に確かにこう書いてある(w 文句言ったが「もう出来ているので今更変えられない」だそうだ。
307 :
デフォルトの名無しさん :02/02/08 11:57
>>306 おれなら、この例の場合なら 日本語のままだな。
ご愁傷様
どうせなら JUCHUSYA と HACYUSHA ってしてほしかったなぁ、おしぃ。
PATSUBANGOとか
関数ごとにファイルを分けること。 mainのみで2kステップオーバーのプログラム書く奴が続出。
>>310 俺なら、簡単なプログラム一つ作って、納品前に関数ごとにファイルにバラすように
するかなぁ。。。
しかし、ネタでは聞いたことがあったが、そんな馬鹿な規約が実在したのか。static
変数/関数の意味がないやん。
一体誰がこんなコーディング規約作ってるんだ? やっぱコーディングできないSEか? PGに作らせろや。
>>306 >受注日
>JYUCHUDATE
>発注日
>HACYUBI
・・・「〜DATE」と「〜BI」、どちらか一方に統一しようよ・・・
>>313 >JYUCHUDATE
じゅちゅうだって。なのさ。
>>306 struct hoge {
int mngno; /* 管理番号 */
int partno; /* 部品番号 */
struct manufacturing { /* 制作工程 */
int code; /* コード */
int category; /* 区分 */
} manufacturing;
struct request {
char date[DATEWIDTH]; /* 日 */
char name[NAMEWIDTH]; /* 者 */
} receipt, client;
};
>306 Cなら#define KanriNumber "KANRINO" VBなら Const KanriNumber= "KANRINO" とかやってみたら?
>>311 うちの規約ではstatic関数は禁止ですが、何か?
318 :
デフォルトの名無しさん :02/02/09 19:07
1行80文字程度を推奨 ってことになっていたのだが、几帳面にも81文字以上の場合 に必ず改行するやつがいた。 最近ディスプレイも良くなってきたので、規約の幅を広げたが、 それに合わせて(以下略)
319 :
デフォルトの名無しさん :02/02/09 19:09
そろそろ、1024×768 つう中途半端に狭い画面を、廃止 or 禁止して欲しいYO!
>>318 でも、この人、幅には几帳面でも関数の長さの規約は
全然守ってくれなくて、妙に長い関数を書いてくれる(藁
322 :
デフォルトの名無しさん :02/02/09 20:19
RDBMSの仕様よく知らないんだけど、テーブルやビューやカラムの 名前って、文字数制限とかがあるの?
ソースの規約じゃないけど、 「ソースを修正するときは日付を付加してバックアップを取れ」 ってのがあったな。 UNIX使ってるんだからSCCSくらい使い方憶えろYO! お陰でHDがパンパンになりもがいてます。 compressすると日付が変わるからダメなんだそうな。 tarも使い方わかんないってさ。manは使えるのに・・・ ぜんぜん関係ないが、めちゃかわいい子に「マンコマンド」って言われてほわ〜んとなったよ。
326 :
デフォルトの名無しさん :02/02/10 20:22
良スレかと思いきや、お馬鹿さんも多数…。 m_* が美しくないという話はわかるが、「スコープを名前で分けるな」というのは意味不明。m_* は美しくないから *_ 使えというのは、スタイルの問題だから、どっちかに統一してくれればいいけど。
じゃー メンバ変数には全部 this-> 付けとくってのは? (宣言の時とかは除く)
関数は作成者の名前を付けるコトになっている。マジで。 STanaka_ResetColorとか、コレ自体慣れれば以外と気に ならなくなるが、オレの知らない名前が異常に多いのが気に なった。社長しか知らないヤツが10人くらいいた。 勝手に名前変えて使ってるがバレると怒られる。
自力名前空間ですか?
>>327 VBじゃ使えん。VBではthisに相当するものはMeなのだが
PublicじゃないとMe.fooと出来ない・・・。
this->はコンパイラが強制してくれない。 強制されるような文法だったらよかったんだけど
C++のthis->は主張が強すぎる気がするけど JavaやC#は結構this.つけるようにしてるよ。
そもそも C# だと、何らかの規約を作らないと、フィールドとプロパティが 同名になるだろう。 キャメルスタイルとパスカルスタイルで分けるくらいじゃ足りない。 (かといって小文字だけ or 大文字だけにアンダースコアは見づらい、書きづらい) ローカル変数とメンバー変数とメンバー関数とプロパティと…って分けていくと やっぱり m_* か *_ 使う方がわかりやすいという事になる。
>>333 プロパティとクラスで名前がぶつかったときは悩んだ。
ガイドラインではどちらもパスカルだし。
が〜ん、キャメルスタイルとパスカルスタイルの意味がわからん。 簡単でいいから教えてくれ。
>>335 PascalStyle and camelStyle.
>>334 意外とそういう場合ってあるんだよね。
漏れはそういう場合結局湾曲した名前にするんだけど、どうしてる?
public/protected な名前にはプリフィックス&サフィックスつけたくないし
(漏れは private な名前には積極的にプリフィックス&サフィックスつけてる)
public class Phase; private Phase phase; public Phase Phase{get;set;} // コマタ! こんな感じでねぇ。 結局プロパティのPhaseをCurrentPhaseにして決着したけど。 C++ではクラスはCから始めてたからこんなこと無かったのに。
>>338 public Phase CurrentPhase{get;set;}
みたいに意味を具体的にしてやれば?
>>335 MSが.NETで推奨している命名のガイドラインがMSのUSサイトにあるよ。
そこのNaming Guidelineには
Pascal Casing
Camel Casing
Upper Casing
の解説があります。
うげ、ほんとだ。なくなってる。 MS撤回か!? 全訳したのに。
>>338 ごめん。
途中までしか読んでなかった。
>>339 =343
あの場合はCurrentとかの修飾語をつけることが出来たけど、常にそうとはいかないよねぇ。
クラスとプロパティで同じ名前になるのは設計が間違ってるんだろうか・・・
うちの会社はカウンタ変数は必ず「i」なんです。 integerではオーバーフローするのでカウンタ変数をlong にしても絶対「i」中途採用者はみんなあきれる。
iteratorの i というのが定説。 integerから来てるわけではないので、longでiでも別にええやん。
348 :
デフォルトの名無しさん :02/02/11 22:53
>>345 そんなところでいちいちあきれてる人たちが、まとめてヤヴァイと思われ。
ローカル変数のシンボルなんて、極言すればぶつからなきゃいいだけなので、
ルールがあるなら従うだけでしょ。
345は、ハンガリー人。
>>345 むしろintのときはiでlongになったらlだったらもっとあきれる。
途中で型変更したらint l;になっちまう。
>>345 まじで、その中途採用の人と、その人を無邪気に尊敬している
アンタがヤバイと思うよ。気をつけなよ。
>345 オレが出向してた会社なんて 「変数の名前は極力短くする」なんてアホな規約があるもんだから 変数見ただけじゃ目的がわかんねーの、コメントの嵐でコードが 読み難い。2度とあの会社のVBの仕事したくねー。 t as Long '単価 jd as date '受注日 sd sa date '出荷日
やっぱWNDYOKHABにはかなわねぇ
354 :
デフォルトの名無しさん :02/02/11 23:49
>>345 ,347,350
long は long integer。
iはfortranの時代の名残り。
iから始まる変数は型宣言しなくてもinteger(j〜どこまでだっけ?)
>>326 は設計手法やメタ言語などを学んでみては?
実装する言語に依存しないで設計する世界を知らないのか?
設計どおりに実装したこと無いのか?
ここだけみてるとプリフィックス*_付ける派が多いね。。。
小手先だけのプログラマが増えているのかなぁ。
>>354 m_付ける奴に付ける薬は無いので放置。
>354 i,j,k,l だったかと
i,jは紛らわしいからヤヴァイね、特にコピペしてから直すときとか。 コピペするなって?ごもっとも。
>>345 だから、FORTRANがなぜデフォルトでi〜が整数だったのかは、iteratorのiだからというのが定説だってこった。
>>354 「とか言ってみるテスト。」
を付け忘れてるよ。学生さん。
>>355 理由もなく m_ を嫌う奴につける薬もないと思うね。
俺はメンバーなのかローカル変数なのかっていうのは区別するべき事だと
思うので m_ もしくは最後に _ つけるのは有効だと思う。
ループのカウンタは色々と試してみたけど、やっぱり長すぎても害かも…
座標とかの場合 nX, nY とかはわかりやすい。
個人的には cnt (カウンターの意), cur (カレントの意)くらいが
「意味があって」「長すぎない」バランスの取れた所だと思うな。
ライン
>>357 コピペは別にいいと思うけど、一括変換できないからやだね。
シンボル名なんて、動作には影響ないんだよね? デバッグ時に苦労しないようなルールになっていれば、それでいいじゃん。 そういう意味じゃ、ハンガリアンは、趣味の問題ってことで。 で、for文のカウンタがiだと誰か困るのか? どんなfor文書いてんだYO!
FORTRANのiはintegerのiだとオモテタ。ありがとう
>>358 。
一つ賢くなったよ。
学生には戻りたくないです。
>>360 普通にUML使って設計して、JavaとC++両方で開発してますが?
気が利いたこと言ったつもりなのかな?
>>360 とか言ってみるテスト。
でよろしいでございますでしょうか?(w
366 :
デフォルトの名無しさん :02/02/12 00:14
>363 別に困らないとは思うけど規約が存在するコトがダサい。
ループのiって、数学のΣからの慣用じゃないの?
>>365 いくらハイレベルで設計しても、実装するときには現実の言語のフレームワーク
に押し込める必要があるわけで、そこで
メンバ変数はローカル変数とは寿命が全く異なるから、見た目で分かるように
しておけ
っつーのは妥当な話だと思われ。
>>360 は現実の言語を忘れてハイレベルの議論だけするのは、アカデミックな世界
だけにしとけっつー皮肉だろ。(個人的には、メタ言語とかの世界にひたるのも意味
がないとは思わんが、現実と両天秤にかけられないヤツには用がない)
>>366 じゃあ会社辞めるか、上司を説得して規約変えろ。
喫煙所の談話好きバカ?
するってーと、Σのiはiteratorだよ。 ってーのが定説?愛はどこまで掘り下がるんだ?(w
ループの i は FORTRAN の INTEGER の i っていうのは 昔からよく聞いた気がするけど iterator の i だっていう意見を聞いたのはここ2〜3年な気がする。 Iterator パターンからの連想な気がするな…。
なるほど、とてもわかりやすい説明ありがとう。 つける|つけない のは意味が無いという方々より とても素敵。 身の回りは、まぁつけないで現実うまく逝ってるよ。 現場(おれももちろんこっち側)とアカデミックな世界の 差っていつ埋まるのかね。
>>372 現場に何の功績も無い日本のアカデミックな連中は、現場に追いつく
ことも無く衰退するだろうねえ…
国立情報学研究所とか、物凄い人数使って今さらなもの作ってるし。
>>372 埋まっちゃ困ると思うんだが。
現場でやってるようなことを、いまさら研究してもしょうがないし。
えーとえーと、 研究成果がアカデミックすぎて現場で使えない。 予算や期間が限られてる現実無視しまくりとか。 現場がそもそも成果を覚える頭がなかったり気がなかったり。とか こーいった差のつもりで書いてみたのですが。。。
>>373 日本でも「世界有数の」と冠詞がつくような研究者もいるんだけどね。NTT で
回線理論やってた某氏とか。(名前忘れた…)
>>375 現場っつってもピンきりだが、キリならそうだろね。
でもピンの現場は、会社同士で情報共有して、大金投資して、日本の大学なんか
の研究者とは比べ物にならならない、血に飢えた研究者どもが血道を上げてやっ
てるからな。
>>376 俺がいた大学の研究室にも世界で5本の指に入るって先輩が居たな。
世界で5人しか研究してなかったけど。
>>377 ピンキリはピンが下でキリが上ですよ...
仕様書にソートはピンからキリの順でと書いて
あった時、間違えたりしないで下さいね。
>379 ヴァカ発見。広辞苑みて反省しる! >ピン(pintaポルトガル 点の意味) >1.カルタ・采の目などの1の数。 >2.はじめ。第1。最上のもの。 >キリ(cruzポルトガル)の訛。 >十字架の意から転じて、十の意。
>>379 そうなのか?
> 【ピン】
> 第一番。また、最上のもの。
iterateはごくふつーの英単語だと思われ。
_■_ ________________ |∵∴∵|:::ー-ーーー-ー─ーー--ーーーー-ーー-ー,|| |∵∴∵|:::: 磯野家の系図 i || |∵∴∵|:::: ; || |∵∴∵|:::: 波平─-──┬─-──フネ :; || |∵∴∵|:::: │ | || |∵∴∵|:::: │ ; || |===|:::: 波平───サザエ ! ||===-3 |∵∴∵|:::: │ ; || |∵∴∵|:::: │ ; || |∵∴∵|:::: 波平─ワカメ | || |∵∴∵|:::: │ i || |∵∴∵|:::: │ ; || |∵∴∵|:::: タラチャン | || |∵∴∵|:::ーーー ーー- -ーー-ーー-ーー-ーー─ ||  ̄■ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
384 :
デフォルトの名無しさん :02/02/12 01:48
オレの会社はコーディング規約なんてねーよ。 就労規則もねーし。 ボーナスもねーや。
>>380 反省しるよ。
ピンからキリまで。ピンは1=安い、悪い。キリ=12、高い、良い。
の意とならたんだが。キリは花札12月の桐ね。
広辞苑様にはかなわんなぁ・・・
>>384 つまり、コーディング規約も無いところには
誰も仕事出さないということか。
387 :
デフォルトの名無しさん :02/02/12 02:06
>384 ハッキリ言うなよ、貴様!図星じゃねーかよ(笑)。 開発者以外メンテできねーから納品後の評判がわりーんだよ。 でも、楽だから辞めません。31才年収300万でも辞めません。 カミさんに○ーソンでバイトさせてるけど辞めません。
>>347 jとkは?
数学の方から来たと思ったんだが。
>>388 漏れ
>>347 じゃないけど。
アルファベット順に i, j, k
i はもう使ってるから次の j
j も使ってたら次の k
昔の人はこういう考え方だから嫌だ。
これが「現場のやり方」?
だとしたら少しは研究者の成果を取り込まないとね。
(「ループ用のカウンタぐらいいいだろ」って言われそうだけど、
割れ窓理論でいくと、カウンタでこれを許容すると、他のものにまで
適応するバカが出てくるのは自然の流れだからね。)
っていうか、やっぱりカウンタなんてどうでもいい気がしてきた。
>>65 とか
>>72 みたいな、COBOLer あがりの親父が決めた
どうしようもないルールとか押し付けられる事を考えると。
カウンタの命名規約ぐらいマタ〜リとした雰囲気で許そう。
ピンとキリは諸説あってどちらが上なのかは謎だよ。
>>389 カウンタのめいめい規則に適用できる"研究成果”って何?
394 :
デフォルトの名無しさん :02/02/12 03:29
ループカウンタは i,j,k 座標系は x,y,z 何も問題なからおう。
ピンとキリはどっちが上なのでしょう? ・ピン 「最上のもの。 (広辞苑)」だから ・キリ ・諸説ありどっちが上かは謎 という意見がでて、ちょっと混乱してます
397 :
デフォルトの名無しさん :02/02/12 04:01
先週土曜日、最寄の駅でたらふく飲んで家に向かいました。 帰り道ちょっと寒かったので自分の体の状況を完全に 把握できていなかったかもしれません。 アパートの階段を上り、家のドアを開けトイレのドアを開け 便器の前に立ってジーンズをおろそうとした瞬間、 全て放尿してしまいました。 えもいわれぬ瞬間でそのまま身をゆだねました。 新しい僕の誕生です。
>>392 いや、カウンタだけじゃなく、名前はすべて「意味のあるものを使おう」という事。
個人的には i は(こじつけの Iterator の略という事で)理解できるけど、
j, k と続けるのは理解できない、悪い慣例だと思う。
>>393 いや、中身はともかくスタイルはいいと思った。
【規則】【理由】【例外】【備考】にわけて書いてあるから
何故そうするのか、何に関しては適応外なのかがちゃんとわかる。
備考はいらない気もするけど。
>>398 二重ループぐらいだったらいいんじゃない。
たとえばバブルソートとかの。
さすがにkまで使うことはあまりないけど。
i, ii, iii... i, i2, i3...
401 :
デフォルトの名無しさん :02/02/12 05:23
>>398 コーディングルールについて真面目にかたろうとしたりすると、
こんな事にしかならないという意味かもね。
"あとから分かる事が出来れば、それ以上はどうでもいいこと"
ということでしかないからなあ。
>>401 「よりよいプログラミングの為のコーディングルール」
っていうのはみんな考えないの?
コーディングルールは「ただプログラマーを縛り付ける為の物」だとでも?
もしそう考えてるんだとしたら、哀しすぎる。
アセンブラだけを使いながら「高級言語?あんな物使えるか」
って言ってる人と同じな気がする。
>>402 法律を変える方法が決まっているように
コーディングルールを変える方法も決めなければならない。
法律を変えることができるのが法律に従っている国民であるように
コーディングルールを変えることができるのはコーディングルールに
従っているプログラマでなければならない。
404 :
デフォルトの名無しさん :02/02/12 05:54
>>403 その言語の仕様自体を理解していないあ、バカ管理職やバカSヨが
決めている会社ばかりだと思われますが…
(たとえそれ以外で有能であっても、これについてはバカである場合
が多そうです)こいつらの職責にすべきではないという話ですね?
ファイルをopenしてはいけない。
コンパイル禁止。
コーダはCVSへのアクセス禁止。
>>404 その通り。常識的に考えるとできるわけないじゃん。出来るんだったら、
有名どころのコーディングルールの理由を説明してみろってんだ。
理由のない、もしくは不当なルールは悪。
ただし忘れてならないのは、今プログラマがコーディングルールを
決められないのなら、決められるように努力する責任があること。
標準はメモ帳。
410 :
デフォルトの名無しさん :02/02/12 06:08
win32のプログラミングだと、カウンタは長整数型が一番処理が早い と聞いたことがあるので、lngCounter2 lngLoop2 などはどないでしょ。 慣例的にカウンタの変数名が長いと違和感あるけど。 しかし、デバッグ時なんかに理解しやすい変数名にすると、 一括置換とか微妙にしにくいんだよね。途中まで一緒の変数名とかあったり。
Windows禁止。
>>410 リファクタリングブラウザが早く普及すればいいのだけど...
>>412 なるほど。
やっぱりそういうツールがあるんだね。
でもテキストエディタでやっちゃうんだなこれが。
>>403 たしかにそうだね。で、具体的にはどうしたらいいんだろう?
「コーディングルール変更提案」をして「理由」を発表して
賛成多数なら変更?
民主主義だと権力だけはあるクソの方式が有力になる気がするのと
あんまりコロコロ変えられると、過去のソースと統合性が取れなくなって
余計に混乱する気がする。
やっぱり策定段階でわかる人達がちゃんと決めて、変更は慎重にしないと大変だと思う。
リファクタリングブラウザって何っすか!? すごく興味を引かれる名前なんすけど。
Ether 禁止。 全て赤外線通信で。
>>414 具体的にといわれると難しいですね。どんな方法も完璧は無いので、
とりあえず悪い方法は改善していくという考えで行くと。
> 民主主義だと権力だけはあるクソの方式が有力になる気がするのと
これの悪い所は民主主義じゃなくいですね。クソの方式は本来却下
されるから、悪い所は「権力だけはある」なので2ちゃんみたいに
匿名にするとか。
でも、悪い方法でも賛成多数で通る可能性があるのもいやですね。
人数じゃなくて賛成理由と反対理由の数で決めるというのはどうだろう。
> あんまりコロコロ変えられると、
そんなに、コロコロは変わらないと思います。たしかに始めのうちは
変わるかもしれませんが、どんどん良くなるので後になればなるほど
変わらないんじゃないかな。
> 過去のソースと統合性が取れなくなって
過去のソースと整合性が取れないというのは、ルールを変更しない理由の
一つになると思います。この理由と変える理由を比べて変えた方が
いいのであれば変えればいいんじゃないでしょうか。もし過去のルールが
悪いなら、悪いルールに従う方が問題が起こると思います。
それに悪いルールならソースの質も再利用できないくらい悪いんじゃないかな。
> やっぱり策定段階でわかる人達がちゃんと決めて、変更は慎重にしないと大変だと思う。
変更を慎重にするのは当然でしょう。プロジェクト中にちょくちょく変えては混乱します。
しかし、変えてはならないというのはもっと悪いことだと思います。
変更したい理由は通常プロジェクト開発中に発見されるので、それを書いておくといいかな。
あと最初は、変更するルールを賛成多数にしたとしても、
変更するルール自体もルールなので、これも変えられるべきじゃないかな。
とりあえず、完全な理想にするのは難しいだろうけど、少しでも理想に
近づいていこうと私は考えます。
某カード会社・・・ VBにてif文禁止! 構造化にはifはいらんのだと。 よーわからん。 さ、出勤だ。
リファクタリングブラウザはリファクタリングを効率よく行うためのツールです。 リファクタリングはコードを良いコードに改善することで、多くの改善項目が ありますが、その一つに名前を適切なものに変更するということがあります。 手動(一括置換)でこれを行うには、同じ名前があったりして危険が伴います。 リファクタリングブラウザを使うと、意味的に同じものの名前だけを安全に 変更することが出来ます。 トライアル版だけ手に入れて試してないけどJBuilder6の有料バージョンに内蔵さています。 まだ名前変更くらいサポートされてないみたいだけど。 早くコードの同じ部分をくくりだしたり、長い関数を分割したりといった テキストエディタでやるにはリスクが高い機能がサポートされないかな。 バカなコーディング規約で作られたものを簡単にまとも変更できます。 といって話を戻しておく。
>>413 > でもテキストエディタでやっちゃうんだなこれが。
テキストエディタでやってもいいけど絶対にバグを入れないよう
しかも早く修正することをお願いします。
コード修正と言われると昔の WebSphere Studio の自動修正にバグが あってソースにバグ入ったのを思い出す…
423 :
デフォルトの名無しさん :02/02/12 08:18
某大手電器メーカーで、納入するVCのプログラムはデバッグモードで コンパイルしてくれと言われた。 理由を聞くと「あんた、コンパイラ信用できるの?」などと妙なこと 言われた。(w そのくせ、VBはネイティブコンパイルなんだけどねぇ。
デバッグモードって MFCxxD.DLL がないマシンで動くんだっけ? 俺も似たようなこと言われたので「VC 付属のデバッグ用 DLL がないと 動きません。実機に VC は入らないですよね?」って言って納得して もらった事があるんだけど、デバッグモードでも単体で動くなら俺が 間違ってた。
>418 Select Caseでやってみる
>>418 On Goto/GoSubでやってみる
>>424 スタティックリンクはどう?
でも・・・デバッグモードって・・・
かなり遅くなるじゃん。
>>427 遅くなるんだっけ?
やたらと情報が詰め込まれて肥大するだけだと思ってた。
>>428 ん〜〜前にテキストエディタ作ったときは1000倍くらい遅くなったかなぁ。
デバッグビルドしてることに気づかずに、何でこんなに遅いんだ〜〜ってしばらく悩んだ。
インライン展開が抑制されるし。ASSERT全部残るし。
>>429 最後の一行で納得しました。無知な私を許しておくれ・・・
431 :
デフォルトの名無しさん :02/02/12 13:03
前任者のソースを発見したのでup /* 始点側の調整 */ void AjustLeft ( void ) { int roop; for ( roop = 0 ; roop < 2 ; roop++ ) { AJUST_LEFT[roop] = 0; } 中略 switch ( status ) { case ACTIVE: AJUST_LEFT[0] = ajust; case NEGATIVE: AJUST_LEFT[0] = 0; } } 特別に明文化された規約はないんだけど... 誤字と意味のない改行、空白...やたらと多いグローバル変数、引数のない関数 修正する俺の身になってくれ
>>431 俺の気のせいかもしれないけどダメな奴って誤字多くない?
俺もしょっちゅう指摘してる。
言葉なんてプログラム技術とは関係なさそうなんだけど。
ロープ(ローマ字)の始点と思われ。
命や金絡みのお客さんは「バイナリ」がテストの対象って所あんのよ。 バックサポート用の開発も引きずられてそういう話になってたんだけど、 向こうの事情考えたら分からんでもないし。 結局、異常系含めて全フロー通すにはデバッグコンパイルが必須 ⇒ そのまま使うなら実機全部に VC が必要 ⇒ どうしまっか? という話を して、お客さんが全フローを優先させたという話。
ぬをぁ、たいした話じゃないのに上げちった
IME 使用禁止
句点コードのみOK
>>398 いまさらだけど。
名前はすべて意味のあるものを〜ってのには同意だけど、
ループカウンターのi, j, kってのは語源はともかく広く使われてるし、
そういう意味では「i, j, kという名前には意味はある」と思ってる。
ループの中でiって出てきたら、これは多分ループカウンターだなって思うでしょ?
441 :
デフォルトの名無しさん :02/02/12 14:43
マジに質問。 ハンガリー人は、何のためにあんな変数名にしてるの?
>>441 Javaなどではそれほどでもないが、
CやC++などでは型に関する情報が重要になるときも多い。
あるデータが厳密に4バイトであるとき、
dw***などとしておけばいちいち宣言を確認する必要も無くなるし、
ポインタとそうで無い変数も、同じく厳密に区別されるべきなので、p**としたほうが都合がよい。
昔々、16bitと32ビットのポインタを使い分け、 intが16bitだったりした頃は、lpszとpsz、iとdwの 違いは重要じゃったんじゃよ。
あれ、ここは「ピンとキリはどっちが上か?」ってスレじゃなかったっけ?
lpszやpszのszってなに? string + zero って感じ?
>>443 なるほどー。
今やってるプロジェクト、
>>30 に近い規約があるけど、これはどーですか?(Javaで)
無意味だな
ハンガリアンって、 データを抽象的に捕らえる、ハードに密着するところはなるだけ局所的にする。 って考えが普及してない時代に考え出された技法。 いまだに喜んで人に薦めてるヤツがいるけど、害悪以外の何ものでもない。
変数名の先頭にクラス名を付けろと仰るんだが、たとえば List l = new ArrayList(); みたいなときは、どうするんだろう。 グチ、スマン。
ハンガリアン信者じゃないが。 w,dw,n,str/wndなどのオブジェクトの種類をあらわす接頭辞,p あたりはつけても罪は無いと思う。 要するに、型じゃなくて意味に注目したハンガリアンなら。 行番号=lineNumberよりnLineのほうが少しだけ記述量が少ない(藁)とか利点もなくも無いし。 shとかulなんか氏んでもいいと思うけど。
451 :
デフォルトの名無しさん :02/02/12 16:42
lineNumberは行番号、nLineは行数だと思ってしまいます。
行数はlineCount->nLineCountとなる罠
型に注目するハンガリアンって結局、過去の栄光ってやつ。
>>442 うん、たしかにそういうときはある。
さらっとソースを斜め読みしたいときなんかは特に
ポインタと変数の区別がつかない命名されてると
ちょっぴりイラつく。
ハンガリアンを無邪気に人に薦めるヤツって、まとまったコードは MSのサンプルくらいしか読んだことないんだろ? ハンガリアン使わない読みやすいコードってのが想像つかない。
>>454 リンク先、あえてfloatとdoubleを分けんでえーだろと思てしまう。
>>454 それとクラスと構造体もわけんでえーだと思う。
boolとBOOLがともにbSuccessになる罠
>>454 BYTEやDWORDなどの値重視の型やLPSTRまでカウンター変数として使ってるのが謎
>>454 どうでもいいのけど、そのサイト。
内容はオリジナリティーなんてちっともないのに、
リンクがどうとか権利がどうとかへんなところが細に細かいな。
(オリジナリティーが無いっていうかパクリっぽいところもちらほら)
漏れはプリミティブ型(.NETだとstruct) は ハンガリアンライクな
prefix は有用だと思うな。あと C/C++ におけるポインタの p も。
実体なのか、参照なのかが名前でわかるとすごく楽。
あとはスコープを表す場合も有効。
メンバーフィールドは suffix の _ をつけるといい。
>>448 データ抽象ってもっとメタな視点の時に使う言葉だと思ってたんだけど。
interface/abstract class に ConcreteClass を対応させる時のように。
入力された文字列中のトークンのポインタの配列のポインター list< Token* > *lplistlptokenInput;
そもそもハンガリー国民はハンガリアン表記してるの?
>>464 ハンガリー出身のMS社員が考えたっていうだけでハンガリー人みんなが使ってるわけじゃないでしょ。
ってマジレスしちゃ駄目だった?
>>463 多分、「こんな酷い事になるんだよ」って言いたいんだろうけど、
そもそもそんな複雑な物を表すのが間違いでしょ。
普通はそのシンボル自体が持ってる直接の意味くらいまでしか表さないよ。
>>463 は一つの問題提起。
lplistlptokenInputなんて、激しく読みにくいけど、しかしこういう名前をつけておくとこれだけ複雑な構造も変数名を見ただけでわかる。
人間の短期記憶は同時に7つくらいのことしか覚えられないそうだ。 lplistlptokenInput だけで5つくらい使うぞ。
469 :
デフォルトの名無しさん :02/02/12 19:21
age
470 :
デフォルトの名無しさん :02/02/12 19:25
分けないとわかんない… lpList_lpToken_Input くそだな。
pImputTokenListでなくて?
>>467 >lplistlptokenInputなんて、激しく読みにくいけど、
>しかしこういう名前をつけておくとこれだけ複雑な構造も変数名を見ただけでわかる。
他人がみたらアホかと思うぞ?
>>471 463はあえてハンガリアンの原則に忠実なので、実際にあんな変数名つけるやつはいない・・・と信じたい。
>>463 現実にいたらまずそいつの顔ぶん殴るよ。マジで。
出社するたびに。
つまり必要の無い人間って事なんだけど、通じるかね?
お前ら、スレの趣旨忘れてねーか?
476 :
デフォルトの名無しさん :02/02/12 20:29
ハンガリアンな規約を導入しようとするヤツを悔い改めさせるネタ希望
ハンガリー人に聞いてみれ
ハンガリー人はハンバーガー好きですか?
479 :
デフォルトの名無しさん :02/02/12 20:41
カンガルー
チョコレート禁止。 餅はOK。
ちなみにはんがりー記法を使っていたハンガリー出身のプログラマは チャールズ・シモニィ(Charles Simonyi)。 いまでもMSに在籍してるかどうかは分からない。
viの作者とどっこいどっこいだな。 vim使いの俺が言うのもなんだが
>>482 vi の作者っつーと Bill Joy だが彼のソースはなんつーか凄いね。インデントが深
くなるとか、気にもしちゃいねぇ。(あれできちんと動くものを作ってしまうあたり、天
才なんだよな、やっぱり)
ともかく、ハンガリー記法について熱く語るのはそろそろ終わりにして、バカなコーディ
ング規約について話を戻さんか?
ハンガリアン以外にバカなコーディング規約は無かった、ということでよろしい?
>>484 1 ファイル 1 関数とか、変数名は短くとか、他にも笑えるのがいくつか存在
したが。
486 :
デフォルトの名無しさん :02/02/12 23:48
今、やってる仕事に限っての話ですがVBで外部関数の使用を禁止されてます。
487 :
デフォルトの名無しさん :02/02/13 00:00
BASICなら古式にのっとりスパゲッティ・プログラムかけ!ってことだろ。 そいやVBにはGOSUBないなあ。
>>487 たしかあったよ GoSub。プロシージャ内に収めるんだよ。
490 :
デフォルトの名無しさん :02/02/13 00:08
>>456 >ハンガリアンを無邪気に人に薦めるヤツって、まとまったコードは
>MSのサンプルくらいしか読んだことないんだろ?
>ハンガリアン使わない読みやすいコードってのが想像つかない。
最初の2行からは「ハンガリアン薦める奴は井の中の蛙!あんなの役にたたねーよ」というのがバンバン伝わってきますが、
最後の1行はどうみても「ハンガリアン万歳」ですね。
結局、あなたの意見はどっちなのよ。
>>490 ハンガリアンを無邪気に人に薦めるヤツ が、ハンガリアン使わない読みやすいコードってのが想像つかない。
って意味なんだろう。多分。
492 :
デフォルトの名無しさん :02/02/13 00:13
>>490 456じゃないが、
(ハンガリアンを無邪気に人に薦めるヤツには)
>ハンガリアン使わない読みやすいコードってのが想像つかない。
ってことだろ。
まぁそう読むのが自然だろう。
主語の省略によって曖昧な文になる典型だな。
>ハンガリアン使わない読みやすいコードってのが想像つかない。 +んじゃねーの、 ってことでは。
494 :
デフォルトの名無しさん :02/02/13 00:21
オレの2つ前の会社は「関数は処理内容がわかる日本語にする」 ってのがあった。Fc_請求データ作成実行、Fc_集計ファイル書込実行。 漢字はパンチするのが面倒でした。
495 :
デフォルトの名無しさん :02/02/13 00:28
秋田のN社におけるVBのコーディング規約は恐ろしい。 '1 If A = B Then '2 Call SUB_A '3 Else SUB_A '4 End if
496 :
デフォルトの名無しさん :02/02/13 00:33
>>495 で、どういう規約なの?サンプルコードだけではわからん・・・。
>483 vimも結構凄いと思う。 さすがに3000行の関数とかは無いけど、 1000行クラスの関数ならいっぱい。
498 :
デフォルトの名無しさん :02/02/13 00:35
行番号付けろってことか? VB知らんのだけど。
500 :
デフォルトの名無しさん :02/02/13 00:38
>495 コメントでステップNoふるのが規約なのかな?
>>498 確かに分岐する意味はないが、
規約の話とコードそのものが糞とは関係ないのでは?
この短さでツッコミどころが結構あるから、どの辺に注目すればいいのかが
わからんかったのよ。
>>499 そういうことなら、納得。
コメントでなくても行番号は付けられるけど、普通は付けないからなぁ。
503 :
デフォルトの名無しさん :02/02/13 00:45
>>495 「ステップ単価の仕事の時は少しでも長コードにする」
って規約なんじゃない?
>>498 の指摘通り
ダミーのIF文なんでしょうね。
504 :
デフォルトの名無しさん :02/02/13 00:48
>>501 <==ジーンズ?
どうやって行番号付けるの?
505 :
デフォルトの名無しさん :02/02/13 00:50
メソッドの入口と出口でログを残す。
>>497 オープンソースのコードの場合は、全体的に見た場合の保守性の高さや、拡張性
よりも
とりあえず手を入れようと思ったときに、すぐに手を入れられる
っつーのが重要だったりするから。そうやって拡張を繰り返した結果として、ドラゴ
ンが棲んでるようなコードになることは、ままある。
(良い悪いじゃなくて、単に違うってことね)
sendmail も割とキテるよな。あれは過去のしがらみとかも引き摺ってるから、もう
どうにもならん。
>>505 なんかアスペクト指向プログラミングで聞いたようなネタだな。
>>507 ネタでは無い。
入口はともかく出口はたくさんあるから大変よね。
>>508 ああ、ネタというのはそういう意味ではなくて
既存のプログラミング言語だとうまく書けないけど、アスペクト指向だときれいに
書けるという話が出てた
っつー意味。即効性がある話でなくてスマン。
510 :
デフォルトの名無しさん :02/02/13 01:01
○部町水○局 「コメントは話し言葉にしない」...ってアタリメーだろ普通。 コーディング規約以前に社会人としての常識だろ普通。
>>28 あのセリフはVF界では有名のようだが、ここで見つけるとは…。
>>510 そう?私は結構、話し言葉風になる場合があるけどな。
「機能拡張の時は、このクラスを継承するのではなく
IHoge インターフェイスを実装するクラスを変更して下さい。」
みたいな。
この場合は話し言葉じゃなければなんて書いたらいいんだろう?
「変更するべきである」とかかなぁ?
513 :
デフォルトの名無しさん :02/02/13 01:18
コメントに 「たぶん」とか「一応」とか「思う」とか「大丈夫なはず」とか「いちかばちか」とかは あまり書かないようにしましょう。
>>513 「いちかばちか」以外は全部、私の日常語で頻出する言葉なのですが、
さっきから私のPCに接続を試みてるのはあなたですか?
機能拡張の折、このクラスを継承せず IHogeインターフェイスをば実装したるクラスを変更したまえ
516 :
デフォルトの名無しさん :02/02/13 01:23
去年の新人で 「ココでガーって一括して配列にいれる」って感じ でコメントしてるヤツがいた。
>>512 それは話し言葉じゃないって。
機能拡張の時には、このクラスを継承するんじゃなくて、IHoge インターフェース
を実装するクラスを変更してね
こういうのが口語。
「だ・である」と「です・ます」は統一されていれば、どちらでも構わないでしょう。
個人的には、肩がこらない「です・ます」の方が好みですが。
>>503 なるほど!
495の意味が、今まさに点から線になったよ!
>>504 >>501 <==ジーンズ?
ジーンズです・・・なーんてね。
>どうやって行番号付けるの?
10 x = 10
20 y = 20
30 Debug.Print x + y
とか。そのまんま、古来のベーシックのように。
機能拡張に際しては、当クラスを継承すべからず。 IHogeインターフェースを実装するクラスを変更すべきなり。
521 :
デフォルトの名無しさん :02/02/13 01:56
>>519 オレ516しまった、もしかして解りやすいコメントだったのか?
あの時は、ソフトに激怒してしまった。
IHogeインターフェースを実装しる!
>>433 ロープは`rope'。
`roop'だと、`roup'の同義語で「や鼻孔から粘液の出る家禽のウイルス性伝染病」という意味だよ。
s/「や鼻孔/「眼や鼻孔/ # 正直、突っ込むときに間違うと鬱
526 :
デフォルトの名無しさん :02/02/13 03:17
VBでイベント禁止。 たぶんCommand_Clickとかを受け取るな、じゃなくてクラスから イベントを発生させるなという意味なのだろうけど、 ほう、どうやってクラスからイベントを通知するんだ。 こうなったらフォームにインタフェースImplementsしてクラスに渡して 呼び出してやろうかと。文句いわれるつもりで見なかった振りしたけど 何も言われなかった。反論するつもりだったのに残念。
527 :
デフォルトの名無しさん :02/02/13 04:19
なんで最近の言語は行番号つけないの多いの?ヽ(^。^)丿 あれもあったほうがいいかもな〜 デバッグしやすいぞ〜 ラベルとか嫌いヽ(^。^)丿
>>527 邪魔だから。あまりにも非効率的だから無くなった。
>>528 全部の行に番号を振ったところで、ほんとに使うところは一部分だしね。
使う部分だけに「関数」とか「ラベル」として名前を振った方が見やすい。
…ネタニマジレス だな。
>530 ネタにマジレスするネタなんだよ。 (当方、再帰適用可能)
532 :
デフォルトの名無しさん :02/02/13 10:31
なあなあ、馬鹿なコーディング規約はその辺にしてさ。 「ム板公認! まともなコーディング規約」ってのを 作ってくんない? 俺、アマグラマだから、その規約に 従うからさ。
1.言語はHSP
2.ローカル変数は使用禁止
3.構造体は仕様禁止
4.理解しやすいように使用するデータ構造は配列のみ
>527 つうか行番号表示するエディタ使えばイイ
>537 VBの場合、エラーが発生した行を特定するために行番号を「プログラマが」付ける必要があるのよ。
>433 >524 タダ単にloopのつもりでroopって書いてると思うけどね。 変数はほとんどグローバル 関数に引数、返り値なし 行数稼ぎの空改行 意味なく広いコメント欄 2値しかないのにわざわざswitch使うとか ループカウンタはroopだし、複数使う場合は配列だよ 誤字とか意味の取り違いは結構多いよ AJUST -> ADJUST ROOP -> LOOP ACTIVE<->NEGATIVEはACTIVE<->INACTIVEかPOSITIVE<->NEGATIVEだろ 普通にTRUE<->FALSE使えよ
分かりにくくなるからリスト構造は使うなって言われたことある。 ツリーじゃなきゃいいんだろってことで片枝しか使わないツリー作ってた。 ヒネクレモノでごめんなさい。
げげ。 ×ツリーじゃなきゃ ○リストじゃなきゃ あいーん。
>>540 分かりにくくなるから?
俺がバカで分からんからだろ。
>>538 VBってどうしてそう2chでつっこまれる要素満載で作ってあるんだ?
不思議だ。
>>535 構造体を使わないって言うのは、何気に同意できる規約だな。
どうせクラスにしてしまうんだし。
Win32APIで使う構造体は別として。
545 :
デフォルトの名無しさん :02/02/13 14:39
>>543 マジレスすんのも何だが、
a) COBOL→VBに移行した連中が設計をする。
・当時の環境(VB4等)
・新しい技術に興味なし
・コピペ、力技大好き
b) 曖昧な言語仕様に慣れた連中の製造
・新しい技術に興味なし
・考えるのが苦手
・動けばオケ
if(a==true || b==true){
return ツッコミ;
}
546 :
デフォルトの名無しさん :02/02/13 17:07
>>545 を見て思い出したんだが
(1) if(a==true || b==true){
って、
(2)if(a || b){
でも一緒だよな。
でもな、俺のいたプロジェクトでは、(1)のように書けという
コーディング規則があったんだよ。
ちゃんとaとbの変数名を工夫すれば、
わざわざこんなことしなくても分かるよ……とか思った。
同じようなコーディング規則ある人います?
>547 いいのでは?
>>547 a, b が bool じゃないとか、実は C++ で operator==() が定義されてるとかいう
非常識な自体を除けば、全く同じ。可能な組み合わせは
(a, b) = (false, false), (false, true), (true, false), (true, true)
しかないんだから、それぞれの場合について (a == true || b == true) と (a || b)
の値を紙に書き出して比較してみ。
isXxx という変数名にすれば。 ただし Xxx は肯定形で。
551 :
デフォルトの名無しさん :02/02/13 21:31
んじゃ、IsNotEofで
552 :
デフォルトの名無しさん :02/02/13 21:52
>>546 今更ながらつっこませてもらうが、そのコードは超危険だ。
a==true
でtrueの定義ってなによ?
前にあったな、ブール代数を単体で条件式に入れないで、ちゃんと 条件式で書けって奴。しかし期待に反して厨どもがこんなコードを 大量生産した。 if(a != true) if(b != false) 微妙に読みにくいし…
>>552 C/C++ はね。Java の話か、言語実装抜きな話なんじゃないの?
555 :
デフォルトの名無しさん :02/02/13 22:44
545のコードはC/C++ではないに一票。 きっとHoge言語。==はくどいの意味。
>>552 assert(a==true||a==false);
↑これをコードじゅうにばらまいとけ
>>553 カナーリワラタ
ギャグでも思いつかん。吉本芸人並だな、そいつら。
情報不足のレスが波紋を呼んですまんです。
>>547 >>552 の言う通り、Javaの話です。
全然違う言語育ちのプログラマが集まった、
Cで実装するプロジェクトで、
真偽値の型名の定義でもめた話もどっかで聞いたなあ。
BOOLかbooleanかBooleanかboolか。
そんなもん、リーダーがばしっと決めればいいことだと思うんだが。
559 :
デフォルトの名無しさん :02/02/13 23:33
>>558 >そんなもん、リーダーがばしっと決めればいいことだと思うんだが。
リーダーからして「へっ?booleanって何?ねぇ何?」とか言ってそう。
それくらい自分で出来なくてどうしる!
全部定義しる!
リーダー+コーダー=リコーダー
リーダーの笛でコーダーが踊ります
>>559 「愛と正義のビッグガール とんでboolean」のことだよ。
>>532 ム板公認は不可能。
コーディングルールなんてものは、あるものを開発する
チームなりコミュニティなりで合意&共有されてればそれで
OKなもの。
MSはハンガリアン、JavaはJavaなり。GNUはGNUのルールと。
絶対的な価値があるコーディングルールは存在しない。
存在すると思うのは間違い&幻想。
今更ですが m_ についての私的論。 最近腐ったコードばかり見てるので、アホな事抜かしてるかもしれんけど。 ・public メンバはスコープを付けて使う事が多いから、m_は不要と言うより邪魔。 それ以前に一部の例外を除いてメソッドだろうし…(メソッドには付けんわな) ・protected メンバは多重継承を用いた場合、定義位置を容易には見つけられない場合がある。 そんな場合に備えてオブジェクトにはm_を付けておくと良い事があるかもしれない。 (grep一発でprotectメンバ列挙等。) ・private メンバの定義個所は簡単に探せるのでprotectメンバほどm_の必要性は無い。 むしろprivateメンバには付けない方が、protectメンバに付けた時のメリットが増す。 個人的結論: protectなメンバオブジェクトに限って、m_を付けるメリットは(少し)あるかも。
Java なら javadoc 出せば継承した protected フィールドが列挙される。 java 限定の話だけど。
>>566 >private メンバの定義個所は簡単に探せるので
探す事自体がウザいのだけど…。見た瞬間に判断したい。
>privateメンバには付けない方が、protectメンバに付けた時のメリットが増す
m_ にこだわってるけど、区別するという意味なら protected には p_ とか
別の物をつければいいと思う。
>> 201 瞬間コンパイルと考え合わせると、 エラーを見て訂正、と、 型情報付きの名前を考える&それを使用箇所全てでタイプ、の どちらが「時間を食うか」だと微妙だなあ…
google 使用禁止
>>558 Booleanはボーリアンと発音すること。
#昔ボーリアンがボーリアンがと連発する人がいて、何かと思ったら
#booleanのことだったよ。今では彼も博士号取ったかな?
Cにおいて、 1.変数名の先頭を合わせること。 2.ポインタの宣言*は変数名につけること(型名につけるのは禁止) これによって、 char *foo; unsigned long bar; と書かなければならないのだが、そうするとtabだけでは合わせられない。
>>572 ずれた。
char *foo;
unsigned long bar;
これでどうだ?
indentの書式でそういうのねえ?
>>574 インデントをそのようにしておかないと診断ツールが警告を
出すので、ツールに合わせろとさ(欝
その診断ツールを作った奴の基準は何なんだろう?
>>576 「COBOLやFORTRANはカラムの規定がしっかりしていて美しいなあ」のような基準だと思われ。
pythonサイコーとかダッタリシテ。 (python風インデントのC++トランスレータとか実装してたら笑うが。)
>>577 なるほどねぇ。何だか警告コメントには、変数名の位置が揃って
いないと可読性が低下して、誤りを招く恐れがあるとかないとか
あったような。
こういう人間はコラムニストと呼んでよいのでしょうか?
580 :
デフォルトの名無しさん :02/02/14 23:49
手続型言語の経験のないヤツはコーディング規約を守ってくれない。 ビジュアル系の経験しかない連中が規約にケチつける。
>>580 さんは、規約を作ってケチをつけられた経験が
おありなのでしょうか? どんな人がどんな規約にど
んなケチをつけたのか知りたいなぁ。
漏れも規約づくりをしているけど、守る人はきっちり
律儀なまでに守ってくれるし、守らない人はそもそも
規約すら読んじゃいないし、はっきりわかれるねぇ。
つうか素人が規約つくんじゃねーよ。偉大な先人が作った規約をそのまま使え。
>583 機械語でなければ、問題ない。
偉大な先人が作った規約が全てのプログラマにフィットするとは 思えませんが。
規約はフィットさせるために作られるのでは無い。それは、甘え。
>>586 そうですか。
それでは、偉大な先人が作った規約をそのまま使うメリットは?
結局自分達で作った規約なんていうものは自己満足 だし、それが良いなんて思うのは自意識過剰。 自分で規約つくって運用しはじめたら分かるよ。 同業者にオープンな世界でレビューされておらず運用実績もないような規約は脆い。 最終的に偉大な先人が作った規約がやっぱり良かったんだという場所に落ち着く。
>>588 偉大な先人も、最初は自分で規約をつくって運用しはじめたんじゃ
ないでしょうか。たしかに実績は重要な要素だと思いますが、
それに拘っていては議論が進展しないし、レビューもされないと
思います。
質問しますが、588 はコンピュータプログラミングの基礎研究をされているんですか? 今さらコーディング規約なんていう次元から始めるなんて 商業プログラマとして生産性わるいですよ。
591 :
デフォルトの名無しさん :02/02/15 00:59
589に同意。 偉大な先人も最初から偉大な先人じゃあるまい。
592 :
デフォルトの名無しさん :02/02/15 00:59
前のコードを残して修正するように決めてるところって、 よく見るんだけど ↓こんなのとか /* 20020214 muneo delete start */ /* *p = 'A'; */ /* 20020214 muneo delete end */ /* 20020214 muneo add start */ if (*p == 'A') { /* 20020214 muneo add end */ c = 0; /* 20020214 muneo add start */ } /* 20020214 muneo add end */ 俺のまわりだけ?こんなアホなことやってるの 二重三重に修正コメントが入ってたりして、わけわかんない。 しかもその部門でCVS使ってたりするのが、もっとわけわかんない。
先人達の作った規約に従うのはもうウンザリです。 でも金融系@汎用だから未来永劫変わらんかもな。(´д`;) 某銀のバグ騒動は他人事じゃないヨ… (実際他人事じゃないという噂も…ウヘ)
>>590 588 と書いてありますが、たぶん私の事だと考えてお答えします。
(長文で申し訳ありません)
個人的には、コーディング規約というのは生産性を高めるために
作成するものだと考えています。生産性を高めるのが目的なので、
個人のニーズにフィットするように改変もしくはゼロから作成
するのは自然な事だと思います。
先日、私は Perl プログラムを書きました。Perl の文法は一部を
除くと C に似ているので、偉大な先人が考えた GNU coding を
使用しようと考えました。GNU coding standard では中括弧は
一旦改行してから開くのですが、Perl では if、while の本文が
単文であっても中括弧を必要とするので、大量の「開き中括弧
だけの行」が作成されてしまいます。そこで私は GNU coding を
自分に合うように改造し、中括弧を条件式と同じ行に置くように
しました。(「本文 if 条件式」 という文法もありますが、条件式
を強調するために前に出したかったのです。)
もちろんこれは全ての人にフィットするものではありませんから、
590 さんが大量の「開き中括弧だけの行」を作成するのも自由です。
しかし結果として、その改変版 GNU coding を使用することによって
ソースプログラムの見た目は開発者にとって綺麗に見えるように
なりました。それはつまり、正産性が向上したといえるのです。
傍観者は放置した方がいいよ。 いろんなスレでしょーもないこと言って荒らしてるから。
596 :
デフォルトの名無しさん :02/02/15 01:50
完全にカプセル化された、信頼できるオブジェクトさえあれば ガチガチの規約は不要だと思います。
597 :
デフォルトの名無しさん :02/02/15 01:55
>596 んじゃ、オブジェクトをプログラミングするにあたって 規約は存在しないのか。
598 :
デフォルトの名無しさん :02/02/15 01:58
ひとりでちまちま作るには個人のニーズで十分。 チームで作るにはチームのニーズ。 チーム内のルール決めるときに偉大な先人の考え適用するのもあり。 未来永劫つーかソフトウェアのライフサイクル内で、ある特定の 個人が開発、メンテをやり続けることができるのであれば、 ガチガチの規約は不要。だが、趣味のプログラムで無い限り、 ソースコードは人手に渡る。
599 :
デフォルトの名無しさん :02/02/15 02:03
>598 そうゆうコトですわ。 ごく稀に自分が必要とされたいが為に、複雑怪奇に 記述するヤツもいるが。
600 :
デフォルトの名無しさん :02/02/15 02:14
商業ソフト開発の生産性とは 開発チームとしての生産性>開発後のメンテナンスの生産性> 個人の生産性(個人が考えている生産性)の順の要素の複合ですね。 個人のニーズは一番後回し。
>ごく稀に自分が必要とされたいが為に、複雑怪奇に >記述するヤツもいるが。 かの名言にあるとおりだな。 「本当に必要な人材は、いついなくなっても大丈夫な人材だ」 パラドックスだ。
603 :
デフォルトの名無しさん :02/02/15 02:23
>>594 インデントとか括弧の位置は、それぞれ勝手に作って、
まとめるときにフォーマッター一発かませばすむ程度の問題。
c,c++だとCVSなどにcheckinするまえにindentしる!
emacsでindent-regionしる! など。
変数名とかif文の条件式はどー書くなどの中身のルール決める
方が重要。
全てクラスで書けだとおおおお!!!!!!
605 :
デフォルトの名無しさん :02/02/15 02:33
>604 言語はなんだ。 Javaとかだったら、当たり前だが。
>>601 読んだよ。昔の制約がある頃の仕様を引きずってる気もするが、
ルールとしては某製作所より多いところが山ほど(藁)
先輩方はルールを覚えて自在にやってるだけでしょう。
覚えるまでは大変だろうけど、覚えてしまうと悩まなくてすむ。
考える楽しみはぱっと見減るけど、本当に考えないと
いけないロジックとか実装とかに集中出来るメリットがある。
汎用機TSSのエディタはそんなもん。
ちょっと気が利いたところだと、PC上でコード書いて、端末エミュの
ファイル転送でアップロードして使ってるね。
607 :
デフォルトの名無しさん :02/02/15 02:39
>604 昔は正直、長いロジックを見てうっとりしてた。 C++になってから、自己陶酔できなくなった。
608 :
デフォルトの名無しさん :02/02/15 02:43
Forで回すかDoでまわすか、そこまで決まってる会社ってあるの?
609 :
デフォルトの名無しさん :02/02/15 02:49
会社ではなくプロジェクト毎のローカルルールだが、 ループのスタートとエンドが数値的に連続した範囲でかつ 移動ステップが固定の場合というか順番に処理を行う場合は for(i=0; i<10;i++){} ループ内で一定条件そろうまで回す場合は while(status == true){} do か whileかは処理内容依存。
610 :
デフォルトの名無しさん :02/02/15 02:56
初歩的な質問になっちゃうんです... 全く同じループだったら、どの回し方が一番高速なんですかね?
611 :
デフォルトの名無しさん :02/02/15 03:01
言語処理系にもよるけど、 for文を展開するオプティマイズがある場合は、 forが高速なのでは?(当たり前か・・・) for (i = 0 ; i < 2 ; i++) { a+=i } を a+=0; a+=1 ; てな具合に展開。
612 :
デフォルトの名無しさん :02/02/15 03:03
Forでカウンタ変数をLongにするのが一番高速。 ↑先週授業でならった。
613 :
デフォルトの名無しさん :02/02/15 03:05
↑授業で使ってるのがそーいう結果が出る処理系なだけ。 どこでも通用するように教えた先生反省しる!
614 :
デフォルトの名無しさん :02/02/15 03:08
>613 もっと言ってヤレ。 実務経験のない先生様はかわいそうだね。
615 :
デフォルトの名無しさん :02/02/15 03:10
てか そのガッコはVB専門がっこだべ?
616 :
デフォルトの名無しさん :02/02/15 03:12
>>613 612が部分的にしか聞いてなかったという可能性もあり。
>>612 おそらくVBなんだろうが・・・
なぜ高速になるのか、理由を説明してみ。
そこを理解していないと意味ないぞ。
>>602 名言かどうかはともかく、言いえて妙だな。
617 :
デフォルトの名無しさん :02/02/15 03:16
実際問題として、パフォーマンスチューニングの大半は 設計やロジックの見直しで行われる。ForがいいとかLongに するべ、というようなところまで踏み込むのはかなり特殊 というか少数というか、極限というか・・・
かといって、全部variantってのもかなり‥‥
>>612 そもそも開発環境下だと Long より Integer のが早いぞ。
(コンパイル後は Long の方が早くなるが)
Cの頃の話だけど規約って程でもないが癖かな 主語、述語が逆転しちまうんだよな CodeSearchじゃなくてSearchCodeとかな 今は Code.Searchだから逆転することはないが どうでもいいことだな
>主語、述語が逆転しちまうんだよな >Code.Searchだから逆転することはないが codeがserachするのか 中学英語やり直したほうがいいよ
>621 日本語だと目的語‐述語の順だけど、 欧米語だと述語‐目的語が普通だわな。漢語もそうか。 主語が省略されてることが多いのは日本語的だが。 まあ、どうでもいいことだけどな。
>>620 LongがIntegerより遅くなるなんてはつみみです。
今なら target.search(code); かな。
626 :
デフォルトの名無しさん :02/02/15 19:17
Codeに関するメソッドを集めたクラスならば、 Code.search(引数)とかでいいんじゃないんですか?
自分のネーミングセンスを疑おう
628 :
デフォルトの名無しさん :02/02/15 19:45
>>627 別にいいじゃん。
一貫性があれば大抵おっけー
そんなところで労力を使う方が問題あり
search()がCodeクラスのスタティックメンバだったら、ちょっとイヤ。
For ループに入る前に回数が決定しているもの。 Do ループの処理により回数が決定するもの。 これは規約ではない。正しい使い方をしらないだけと思われ。 ちなみにForの方がDoループより確実に高速。 処理系依存とかいっている奴はおかしい。 Long と Integer は処理系依存。動作するPCのハードウェアにも依存。
>>630 > 動作するPCのハードウェアにも依存
PCのハードウェアによって Long や Integer のサイズが変わるのか…
632 :
デフォルトの名無しさん :02/02/15 22:46
>>630 黙ってみてるのが傍観者。
静かにしてろよ。
副問い合わせ禁止。なぜだ。
634 :
デフォルトの名無しさん :02/02/15 22:49
コーディング規約というより、自分の癖ですが、 クラス内のコードでメンバ関数を実行するとき、 Cfoo::Cfoo() { this->Initialize(); } という感じで、必ずthisを付けます。 普通の関数と見分けやすいので、こう書いてますが変ですか?
>631 変わらないに決まってんじゃん? それと、632には喋ってないよ
>634 変じゃない。よい習慣。
そ・そうっすか!? 他の人の書いたコードで同じ事している人見たことないもんで・・。 MFCのソースなんかも普通に呼び出してるし。
>631 俺が間違ってた。ハードウェアには依存しない。
Integer (16bit) Long (32bit) という処理系があったと仮定する。 16bit CPU のPC でどっちが早く動きますか? 32bit CPU のPC でどっちが早く動きますか? >631=638 見当違い。 >639 理由は?
641 :
デフォルトの名無しさん :02/02/15 23:21
>634 それ、結構多いですよね。
>>639 やっぱ変ですか?
普通の局所変数に
void func(void)
{
auto int i;
}
とするのと同じ位変ですか?
それと、あなたがthisを書かない理由はなんですか?
643 :
デフォルトの名無しさん :02/02/15 23:25
>>641 >>634 前の出向先がそうでした。
サブクエリ使えば速攻で作れるレポートなのに禁じ手なので
むちゃむちゃ苦労した。
auto は、変とまでは言わないが冗長。
>>641 ほー!? 多いですか!!
知らなかった。
自分は、アマチューワなんで回りの状況が良く分かりません。
少なくとも、自分が今まで見た他人のコードでは見た事なかったんで。
646 :
デフォルトの名無しさん :02/02/15 23:29
Long,Int とりあえず大は小を兼ねるでLongを使ってます。
647 :
デフォルトの名無しさん :02/02/15 23:32
>645 サブクエリ禁止と言うかサブクエリを必要としない でーびー作れってことなんじゃないの?
>638 レジスタ長になるのは、intだけ? intは良くきくけどほかはいわれないような気がする・・・。 それとも、あれってC依存・・・?
649 :
デフォルトの名無しさん :02/02/15 23:38
>646 何の言語だかわからん。 とかいう揚げ足取りするやつがでそうだ。
>Long や Integer のサイズ 処理系依存、つか、処理系の開発ターゲット依存だ。
>>634 普通の関数と区別つけたいならむしろ普通の関数のほうを
::FooBar()
で呼び出すべきだと思うが。
それともスーパークラスのメソッドと区別つけたいの?
>>652 自分としては、普通の関数を ::FooBar()みたいに呼ぶほうが、抵抗あります。
それでも、メンバにFooBar()というメソッドがあって、外部のFooBar()を
呼びたいときは、::FooBar()としますが・・
はっきりいって、thisを絶対にしたほうが(言語仕様的に)ソースが綺麗じゃないですか?
メンバは、this->FooBar()、外部関数は、普通にFooBar()と出来る様になりますし。
>それともスーパークラスのメソッドと区別つけたいの?
いえ、ノーマル関数と区別したいだけです。 まあ、単なる癖ですよ。
>>653 > はっきりいって、thisを絶対にしたほうが(言語仕様的に)ソースが綺麗
意味不明
言語仕様的には、区別できれば(コンパイラは)文句いわない
>言語仕様的には、区別できれば(コンパイラは)文句いわない それは、thisを付けようが付けまいが、外部の同名の 関数を呼び出す時は、::FooBar()としないと、コンパイラが区別出来ないと言う事? thisとしなくても、thisポインタが最初から渡されているんで同じと言う事ですか? 文章で伝えるのはムズい・・
>>655 何を言ってるのか良く分からんが
言語仕様的にソースが綺麗
っつーのが 653 には理解不能なんじゃないの。俺にも意味がわからん。
thisとしなくても × thisを書かなくても ○
C++言語の文法的に、thisを絶対書かないといけない様にすれば クラス内でメンバ関数を呼ぶときは、 this->Func(); クラス内でメンバ関数と同名の関数を呼ぶときは、 Func(); と、出来るのではないかという事が、言いたいのでした。 分かりましたか? 言語仕様的じゃなくて、文法的でした。
>>658 なるほど、よく分かったが同意はしない。
メンバ関数から、同一クラス内のメンバ関数を呼び出す
外部の同名の関数を呼び出す
機会を考えると、前者の方が圧倒的に多い。一般的なケースは簡潔に、例外的な
ケースは目立つようにしたほうが、
書くのが楽
例外的な部分が、「注意を要する」とすぐに分かる
から嬉しい。
>なるほど、よく分かったが同意はしない。 うーん、やっぱり好みの問題ですかね? 自分は、やっぱメンバにthisを書きたいです。 僕ももう少し経験を積めば、そんな風な考えになるのかな?
>>659 の例外的なケースの方を修飾すれというのに同意。
でもOOP的には、オブジェクトをはっきりさせた方が良いと思うので655にも同意。
#折衷案としてpublicには付ける、privateには付けないっつーのはどう?
662 :
デフォルトの名無しさん :02/02/16 03:56
>#折衷案としてpublicには付ける、privateには付けないっつーのはどう? VBみたいだなぁ〜。
>>662 VBはMeつけるのとつけないのでは違いがあるから気をつけてな〜。
(Meをつけるとプロパティ経由になり参照渡しにならなくてパフォーマンスも落ちる。
フォームのプロパティ or フォーム上のコントロールはたぶんMeつけてもつけなくても同じ。)
>>658 その感覚でいけば
for(i=0;i<n;i++){.
...
{
int i;
for(i= ... ←これは内側のスコープの i であることを明示的に修飾しなくてはいけない
}
}
ということになりそうだが・・・
>>663 >Meをつけるとプロパティ経由になり
どういう前提の話だろう??
Meを付けても付けなくてもプロパティを呼び出せば、プロパティ経由じゃない?
Public Property Get xxxx() As 〜
Public Property Set xxxx(yyy As 〜)
とあって、同じクラス内の別の場所で、
xxxx = ZZZZでも
Me.xxxx = ZZZZでもプロパティ経由でしょって意味ね。
>>665 ゴメン、説明が足りなかった。
Publicの変数のとき。
宣言がPublic xxxx As Integerのとき、
Meをつけないときは、変数を直接アクセスしている感じになって、
Meをつけたときは、
Public Property Get xxxx() As Integer
Public Property Let xxxx(ByVal i As Integer)
のような、プロパティを経由して変数にアクセスしている感じになる。
もちろん、外部からはプロパティ経由。
そういう意味なら了解! 666だね。
>>640 Integer と Long の話は元々 VB の話だったのだ。
当時、Win98/VB6 で計測したが、IDE上では Integer が、
コンパイル後のExeでは Long が早かった。
多分、IDE上では Long に対して、なんかチェックのルーチンが入るんじゃないかな?と想像した。
いついかなる時も最適化コンパイルされたネイティブコードだけを想定するのは間違い。
で、IDE上でわずかに速くなってなんか嬉しいのか?
>>669 IDE上でのテストが速く済む(w
>>668 つーか、それ本当か? 今試したがLongの方がわずかに速かったぞ。
>>668 ,670
そんなもん計測時の状態(実験環境(CPU,メモリ,OS,VB)、他のプロセスの起動数)、
計測の方法(コード、時間計測に使用した関数)によって変わる程度の微小な差だ。
何回計測した結論なのよ。
そういう話抜きでは、無意味すぎ。
Cだけど 昔COBOLやっていたせいなのか 関数名と変数名が大文字で その名前自体がコード化されている。 PP13KA()とかね。 最後のAはその関数のバージョン。次はB。
>>655 つまりメンバ呼び出しにthis->をつけたいのは
「普通の関数と見分けたいから」
ではなくて
「インスタンスが暗黙のうちに渡されていることを明示したいから」
なのだろ?それなら論理的には納得できるし、好みの問題かもしれん。
ウチだとやっぱ int のが早かった。(10回くらいやってちょ) Private Declare Function timeBeginPeriod Lib "winmm.dll" (ByVal uPeriod As Long) As Long Private Declare Function timeEndPeriod Lib "winmm.dll" (ByVal uPeriod As Long) As Long Private Declare Function timeGetTime Lib "winmm.dll" () As Long Private Sub Main() Dim lngStartTime As Long Dim lngEndTime As Long Dim intCnt1 As Integer Dim intCnt2 As Integer Dim lngCnt1 As Long Dim lngCnt2 As Long Dim blnUseLong As Boolean blnUseLong = False Debug.Print IIf(blnUseLong, "Long", "Integer") timeBeginPeriod 1 If blnUseLong Then lngStartTime = timeGetTime() For lngCnt2 = 0 To 1000 For lngCnt1 = 0 To 32766 ' Next Next lngEndTime = timeGetTime() Else lngStartTime = timeGetTime() For intCnt2 = 0 To 1000 For intCnt1 = 0 To 32766 ' Next Next lngEndTime = timeGetTime() End If Debug.Print "結果:" & lngEndTime - lngStartTime timeEndPeriod 1 End Sub
>>673 >「インスタンスが暗黙のうちに渡されていることを明示したいから」
>なのだろ?それなら論理的には納得できるし、好みの問題かもしれん。
いや、そこまで深く考えてません。
自分の場合、ただ見やすいという理由でthis付けてるだけです。
いや、ホントにタダの癖ですよ。
コーディング規約的な話をしだせば色々ありますねぇ・・
ポインタには、先頭に必ず"p"を付ける
int *phoge;
クラス名には、"C"を付ける
class Cfoo{
・
・
};
クラスメンバには、"m"を付ける
class Cfoo{
private:
m_hoge;
};
などなど、上に挙げたようなのは、すべて文法的に取り込めば
他人のコードも少しは読みやすくなりませんかね?
あっ、自由度が無くなるんでダメ?
かなり反感買いそうなんで流してください・・。
676 :
デフォルトの名無しさん :02/02/16 23:44
>>675 強制するのもいいかも知れません。ただし、その言語が相当自信作ならば、です。
はじめて Java の事を知った時、エントリポイントすらクラス内に書かなければいけないほど OO 「的」な文法を強制されるなんて!と思いましたけど、
Java を勉強する中で、この文法が何を伝えたかったのかが解りました。
逃げ場を無くす事は、場合によっては非常に有効ですね。
>>675 とは一緒に仕事したくありません。
ぜひ異なる分野へ転職してください。
679 :
デフォルトの名無しさん :02/02/17 00:49
それ以前の発言はおいといて、
>>675 に関しては同意。これくらいは統一しないと
人のコード読んだり、引き継いだりするとき
かなり困るんだけど…。
気ままに自分だけの感覚で命名される方が
よほど困るんだが…。
680 :
デフォルトの名無しさん :02/02/17 01:32
>>679 それはm_hogeのhogeの命名が悪いせいであって、
m_を付けたからって解決しない。
>>680 具体的にはメンバー変数はどういう名前をつければいいんでしょう?
引数でわたってくる変数とメンバ変数名は、内容的には似ている物が多くなる気がするのですが?
常にベストな命名ができる基本方針等ありましたら是非ご教授くださいませ。
よしなによろしく。
>>681 this使うとか。
そして話題はエンドレスにループ。
・m_つける奴が会社勤めだったら、ぜひ辞めて欲しい。 ・フリーになって一人でやって欲しい。 ・ソースは納品しないで欲しい。 ・その代わりあなたの納品物は無料永久サポート対象です。 ・永久とは言葉のあやで、実際にはあなたが死ぬまでです。
>>683 感想文はこの板じゃないぞ。
技術的な議論ならここだが。
m_ を嫌う理由がちゃんと言えない奴が一番のアフォ。 「僕の気分がよくないんでちゅ〜〜!」 という自己厨は動物園の檻に(・∀・)カエレ!! ちゃんと檻の前の看板を見ろよ。「チンパンジー」って書いてある所がお前の家だ。
685=クロ高のゴリラ
688 :
デフォルトの名無しさん :02/02/17 01:59
>>686 このスレに書くということは、
OE5はバカなコーディング規約の元で開発されたということですか?
>>688 dwXXXって変数が実はshortだったりしたんだろ。
>>687 なにそれ?誉め言葉?
なぜ俺が"クロ高のゴリラ"なのかなんて言えないんだよね。
"理由も無く" m_ を嫌う君はさ、理由もなく人を何かだと言うんだよね。
ちなみに俺は別に m_hoge 推進派じゃないよ。 hoge_ でもいい。
ちゃんと区別できるならね。
m_hogeもhoge_も同類だろ。 ちゃんと区別できるって何を?
つか、メンバかどうかってそんなの規約で決めないといけないほどめんどくさいか? まさかグローバル変数使いまくりとか?
また同じ事を繰り返してる馬鹿がいる
イタイ691のいるスレ
697 :
デフォルトの名無しさん :02/02/17 02:46
m_稲垣 スマソ...書きたくなってしまった。
何が何でもクラスで書けという規約。というか言語。
699 :
デフォルトの名無しさん :02/02/17 02:48
L はリップの L
>>694 グローバル変数はともかく、ローカル変数とメンバ変数ってたまに名前が
重なりそうにならん?
701 :
デフォルトの名無しさん :02/02/17 02:50
>>700 重なるときもあるけど、私は元気です。
言語によるけど重なったらエラーになったような
ならなかったような。
Javaとか新しいCはエラーになったような
記憶があいまいだけど
>>700 そういう発想なら、おれはローカル側に別名つけるよ
x(メンバ)
tx(ローカル)
>>700 それ忘れてた(鬱
でも、そんなに問題にならなそうな気がする・・・
>>694 このスレの上の方で、うまい説明してくれてる人がいた。
「生存期間が違うので、区別をつけた方がいい」だったかな。
俺が書くといけてない説明になるなぁ。
俺は「見た瞬間にメンバ/非メンバを判断したい」んだけど。
多数のクラスをいじってると、どれがメンバでどれが違うかなんて
覚えきれない。
スクロールしてメンバかどうか確認したりすると、
どう書こうと思ってたのか忘れたりする。
m_ (もしくは最後の_) は、「そなえあれば憂いなし」ってやつですね。
704や、もうやめなはれ(w
やっぱハンガリアンは悪、つーことで、 ─────終了。
>>703 気がするというか、
重なったことに気づかないと、すごく不幸になる
(一時間デバッグで悩んだ挙句に、こんなバグだと気が抜ける)
ので、たかが m_ 二文字で避けられるなら安いものじゃん、と俺は思ってる。
粘着だなあ
711 :
デフォルトの名無しさん :02/02/17 03:03
頭のm_や末尾の_ は少なくともメソッドには要らん。 -> とか . 付けときゃイイ。 でもオブジェクトにはわざとつけた方が良いかもしれん。 (-> とか付けると醜くなるのは public 防止に良いカモ)
あと、m_ とか _ 付けるより、ハンガリアンにするって手はどうか。 (ローカル変数には付けない方針で) int grobal; class Hoge { privete: int method( int arg ); int nObject; }; int hoge::method( int arg ) { int local = arg; nObject = this->method( ::global ); : }; ってな感じで。
昔は int m_hoge; public: int hoge(void); void hoge(int); とかやってたけど、最近はどーでもよくなったよ。
>>714 残念ながら…。
ハンガリアン禁止 > ハンガリアン厳守 > 中途半端にハンガリアン
だと思う。
717 :
デフォルトの名無しさん :02/02/17 03:23
>> 712 どこがハンガリアン? つーか、これは何の言語ですか?処理系を教えてくらはい。 C++なら名前付け以前の問題...
>>717 多分、 n のあたりがハンガリアンじゃない?(俺はそう思った。)
コード追ってみたら確かにイッてるね。
スタックオーバーフローじゃ。
>> 718 スタックオーバーフロー以前にコンパイルエラー C++という言語だったとしたらだけど(w
本当だ… typo の多い奴やなぁ…(言われるまで気付かなかった…鬱) grobal あたりは typo ですらなく、そう覚えてると思われ…。
ついでに hoge:method() 定義部分末尾の ; も余分ですな。
>>720 >grobal あたりは typo ですらなく、そう覚えてると思われ…。
nObject = this->method( ::global );
も見てから言ってクレ。
更に int Hoge::method( int arg ) だった…鬱だ。
privete: も残ってるよ、たぶん。 で、何の言語なの?(w
>>721 あ、気がつかなかった、スマンスマン。英単語はちゃんとわかってるのね。
つーかホントに typo 多いね、気をつけた方がいいよ。不可解なバグの種になる時あるし。
725 :
デフォルトの名無しさん :02/02/17 12:44
スペルわからんアホに限ってハンガリアン好きってことで よろしいですか?
ジャンガリアンとm_の話題から離れようよ。 見ててつまんないし。
typoスリップなんだから、藁って許してやれ。
ペアプロの相方がtypoしまくりだったらキレるだろーな
すまん、さっきからでてくる「typo」ってナニ?
誤植、ってことにしたいです。
>729 typeの誤植。
>>723 気付いたけど(
>>722 の後で)、あまりに鬱だったので放置して寝た。
つーかあんな時間帯にcodingするモンじゃないね。(-_-;
>>279 通報された後に警察がやってきて、あなたにしてあげる事。
>733 警察は波紋法をつかうのかー
>734 virtual void ピンクだぞチクビ();
>733 とりあえず、自分のレス先をよ〜くよんでみよう。な。
>>737 なるほど…俺も typo 君か……鬱。
よ〜するにだ。
「typo」は「type」の誤植として有名だ、と。
転じて、「typo」ってのが、「誤植」って意味として
マ板ム板あたりでは普通に使われてる、と。
そういうことでファイナルアンサーなのかな?
>>733 あんた、まさにtypo多すぎだよ!(笑)
s/
>>279 /
>>729 /
s/指紋法/波紋法/
>>739 すまん、波紋法って書いてあったのか…、それは typo じゃなくて
>>734 を
読み間違っただけだ。
>>739 2ch用語じゃなくて、一般の単語だよ(口語かも) << typo
typographical error
733さん あなた おいしすぎ
>>739 引っかかってくれるとは、君はいいやつだな。
でもまぁ、先に辞書引いてみようぜ。
俺は729とおなじにtypoってなんだ?と思ったくちだ。
もう、たいぽ
748 :
デフォルトの名無しさん :02/02/17 20:39
たいぽしちゃうぞ!
たいぽしちゃうぞ!
カブタ━━━━━━(゚∀゚)━━━━━━ !!
たいぽしちゃうぞ!
>>748-749 だからそれは俺がもう逝ったてば。(リンク先間違えたりして天然っぷりを発揮してるけどさ)
|_Λ |д`) 漏レガtypoシナケレバ.. ⊂ | スマネェ733サン... | | |U
このスレは数字コテハンが氾濫するスレになりました(笑)。
>>746 Googleでちょっと調べるぐらいはやったんだけどネ。すぐにあきらめちった。
| ̄ ̄ ̄ ̄| _|____|_ /ノ/ ノ \ヽ |( | ?? ??|)| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 从ゝ ▽ 从 < >> 712 気にしないで! typo 仲間じゃない♪ /  ̄<V> ̄i \__________ / ハ o ハ (__)/ o |_) / ヽ  ̄| ̄| ̄| ̄ | ̄| ̄|_ 〈___〉__〉
757 :
デフォルトの名無しさん :02/02/26 23:49
age
758 :
デフォルトの名無しさん :02/02/27 00:46
Cで関数途中のreturn禁止 前任者たちはこんな風にしてました void f(){ while(1){ // 絶対ループしないbreakを使いたいがため if(error){ break; // ほんとはreturnしたい } } return; }
gotoしちゃえ!
760 :
デフォルトの名無しさん :02/02/27 00:57
vbの変数めいめい規則で intVal lngVal sngVal とかあるけど、Boolってどうやってる? bolVal? あとFormとFrameも困る どちらもfrmObjectになっちまう 俺の場合fraFrameにしているけどみんなはどう? あと、VB変数の命名規則のリンクがあったら教えて。
761 :
デフォルトの名無しさん :02/02/27 01:05
>>760 MSDNにちゃんと全部書いてあるよ。
Bool型は、bln〜
fra自体がフレームを意味してるのだから、fraFrameは、馬から落馬。
>>760 オブジェクトはobj〜でいいんじゃないの?
フォームはfrm、フレームはfra MSDNライブラリに書いてあるよ。名前付け基準とかで検索してみ。
764 :
デフォルトの名無しさん :02/02/27 01:08
765 :
デフォルトの名無しさん :02/02/27 01:16
n, sz, b みたいなプリフィクスは、どこに書いてありますか?
罠?
*プリ*フィクスはどこに書くか。 うーん、頭痛が痛い。
768 :
デフォルトの名無しさん :02/02/27 02:03
関数コメントには、次のテンプレートを使用すること。 /****************************************/ /* 関数名: */ /* 引数: */ /* 説明: */ /****************************************/ わざわざ*で四角に囲まなくても良くないと思うのですが。 テンプレートを埋める際にずれて腹立ちます。
769 :
デフォルトの名無しさん :02/02/27 02:07
>>768 矩形領域の上書きコピペすればいいだけでは?
770 :
デフォルトの名無しさん :02/02/27 02:24
//┏┏┏┏┏ここら辺に原因不明のバグがあるらしいです┏┏┏┏┏
771 :
デフォルトの名無しさん :02/02/27 09:32
>>769 viでそんな器用な事出来たっけ?
まあオレは秀丸使うけど
このスレまた上がってきたんだね
>>771 秀丸ってそんな器用なことできたっけ?
つーかループさせたくないなら do{ ... }while(0); の方が良いと思うなー。みたいなー。
int o=1; for(;o;) { /*ダレカトメテー*/ ... }
777 :
デフォルトの名無しさん :02/02/27 16:11
途中でかえる場合は必ず理由を明記すること
頭痛がするのでかえらせて下さい。
779 :
デフォルトの名無しさん :02/02/28 01:57
gotoを絶対使っちゃいけないなんていうくだらない規約。C/C++だけど。
数字は全てdefineで定義すること。 ↓こんなのハケーン #define ZERO 0;
>>758 while(error) return;
とか
for(;error;) return;
とかでいいんじゃねーの?
あ、ごめ。勘違いしてたわ。
783 :
デフォルトの名無しさん :02/02/28 03:21
>>775 ,783
ループを抜けるにはループ内部で
if (何か条件)
o=0;
を挿入すればいいんですよね?
while(1){
if(何か条件)
break;
}
なループよりも格好いいかも
>>784 要するにキミは泣いている(;o;)に、
「止めてほしけりゃ、俺の0をしゃぶりな。」
と言うのが格好いいと。
787 :
デフォルトの名無しさん :02/02/28 14:43
>784 それじゃ即抜けできねーだろ
788 :
デフォルトの名無しさん :02/02/28 23:47
>>769 「矩形領域の上書きコピペ」って面倒だと思わないの?
789 :
デフォルトの名無しさん :02/03/01 00:03
>>788 使ってるエディタにそういう機能があるの。
どこが面倒なの?
>>789 まあまあ
788は矩形選択できねえnotepadみたいなエディタしか
使ったことないんだろうよ
>>758 こういう輩にいいたい。
「ならbreak/continueもすんなよ」
>>792 そういう輩は、マルチプロセスとかマルチスレッドとかの扱い、
どうするんだろう???ソースが(そいつらの主観で)読みやす
ければ、実行時の複雑さはどうでもいいのかな?
>>792 break禁止だとswitchを使うのが難しくなるね。
795 :
デフォルトの名無しさん :02/03/01 00:37
>>794 脱出方法がreturnか、gotoだ!
796 :
デフォルトの名無しさん :02/03/01 00:45
全部exit(status)だ!
いっそ、脱出しないね、オレなら
コアはいて落ちろ!
いっそ、引きこもるね、漏れわ
そーいや longjmpは禁止されてませんでした
__asm{ ret }; だめ?w
そのプロセスのステータスを共有メモリに保存して、シグナル投げてexit ↓ 他のプロセスがシグナル検知して別プロセス立ち上げ ↓ 別プロセスが共有メモリを読み込んでつづきの処理 ↓ 以下繰り返し …アホだ…
switch→テーブルジャンプは(多分)速いぞ
マルチプロセスとかマルチスレッドとかだとどうして break, continue が 多用されるのかよくわかりません、教えてください。 (煽りでもネタでもなく、最近マルチプロセス/マルチスレッド系に初めて手を染めたので、よく知らないので勉強の為です。) よろしくお願いします。
805 :
デフォルトの名無しさん :02/03/01 03:31
>>804 マルチスレッドだからといって break, continue の使用頻度があがると
は思いません。
なにか勘違いされてるように思います。
>794 C++6年使いにこういうヤツがいた。 for(i = 0; i < loop_max; i++) { if (loop抜けの条件 == True) { i = loop_max; } else { /* ... */ } }
>>806 ぼくも気分的に
if( ! 条件文 ) {
/* Do something */
}
と書くべきを
if( 条件文 ) {
/* Do nothing */
} else {
/* Do something */
}
と書きたくなるときがありますが 何か?
実際バグって追う時、elseハックは見難いんだよね…。 そゆの書くヤツに限って !(a && b) と !a || !b がわかんないアフォだし。
>>806 そのif〜else節の後ろにも処理が続くなら、それはそれでアリだと思うよ。
だけどそれなら書き方にもう少し工夫がいるな。
else にしか処理を書かないのはコボラーのやり方です。
何もしないことを明示してんだよ。主張の感じられるましなコードだな。
>813 冗長だと思うよ。
815 :
デフォルトの名無しさん :02/03/04 01:06
if(!expr){ //....... } とかくかわりに if(expr){ } else{ //....... } と書くのは、あんまり使わないけどexprが複雑なときはそう書きたくなる気持ちは分かる。 exprの全体を!()で囲うとexprの部分が見づらくなってしまうし、 かえって意図がはっきりしなくなってしまうこともある。 まぁunlessのかわりって所かな
816 :
デフォルトの名無しさん :02/03/04 01:47
breakでは?
817 :
デフォルトの名無しさん :02/03/04 03:03
if("Aが存在するか"){ if("Aの値が1なら"){ TextOut("Aは1でした") } } ifを2つ使ったのは、Aが存在しないのに if("Aの値が1なら") を実行するとエラーになるからです。 こんな場合でも if("Aが存在するか" && "Aの値が1なら"){ TextOut("Aは1でした") } とすればAが存在しなければ "Aの値が1なら" は評価されず、if は FALSE の処理になるんですか?
実験してみれ。
820 :
デフォルトの名無しさん :02/03/04 03:47
>>817 一部のCでは&&の右が評価されることがあるらしいが最近なら右は評価されない。
よって、最近なら後者で逝け。
漏れはいまだに if(ptr!=NULL && *ptr==n) … というコードがなんとなく書きたづらいなぁ
かきた→かき
823 :
デフォルトの名無しさん :02/03/04 05:26
>>820 &&はコンパイル時に結局if(){if()になるんじゃなかったっけ?
>右が評価されることがある
それはコンパイル時に&&の左右が入れ替わる可能性があるということ?
>>817-820 実験しましょう
int a = 0;
int b = 1;
int main(void) {
a++ && b++;
cout << "a=" << a << ", b=" << b << endl;
}
あなたのコンパイラでは結果はどうなりますか?
int a = 0;
int b = 1;
int main(void) {
a++ || b++;
cout << "a=" << a << ", b=" << b << endl;
}
あなたのコンパイラでは結果はどうなりますか?
ちなみにぼくはgcc2.95@Linuxですが
上の例だとa=1, b=1 下の例だとa=1, b=2でした
>>821 Perlだと
open FH, "<filename" || die "ファイルが開かないぞゴルァ\n";
って構文よくあるよ
ぼくは Perlが primary languageでC++がsecondary languageなので
C++でコードするときもこういう構文をよく書きます
&& の評価順序は ANSI で決められているんじゃなかったっけ?
これは「短絡評価」つって、式の真偽が決まったらその時点で
評価を終わらせるっつーやつやね。C/C++プログラマには
常識…とまでは言い過ぎかもしれないけど、聞きかじった
ことぐらいはある話のはず。ていうかCommon Lispでも
短絡評価だったような記憶があるし、Perlでもそうだって言うんなら、
この話はプログラマにとって一般常識かも。
でもまあ、せっかく
>>824 がテストコード書いたんだし、
動かしてみた。VC++6.0でも、824と同じ結果になったよ。
ちなみに、||のほうでは初期値をa=1,b=1でやってみて、
a=2, b=1、という予想通りの結果が出た。
やるまでもないようなことだけど、やってみて期待通り
だったから一安心やねー。
>>826 ぼくのテストコードで遊んで下さってありがとうございます
お説の通り&&でも||でも初期値をa=1にした場合も
テストしないといけませんでしたね
自分でももう一度やってみます 鬱だ
ぼくの好きな文句を引用します > perlstyle より > Just because you CAN do something a particular way > doesn't mean that you SHOULD do it that way. 時と場合に応じた if || &&の使い分けやelse構文を使うのは *読}*み*や*す*け*れ*ば*それでいいと思うYO!
>828 >*読}*み*や*す*け*れ*ば*それでいいと思うYO! この部分が読みにくいのれす。コードだけでなく、文章も読みやすいほうがいいと思うYO!
>>826 VBでは短絡評価が通用しないんだよね。Andで繋ぐと全部評価してしまう。
Dim i,j,k As Integer とかの次に、Cプログラマがハマるところ。
でも、VB.Netでは短絡評価が採用されるそうな。仕様変えるなよ・・・。
>830 別の言語に文句いってもしょうがないと思う...
832 :
デフォルトの名無しさん :02/03/04 17:24
コンパイル時に&&の順序が変わることがないと思うが、大昔の話なら ifの()の中が全て評価されことがあったかは分からんな。 Perlの open FH, "<filename" || die "ファイルが開かないぞゴルァ\n"; もよく使います。 とりあえず現状では&&はFALSEが決定した時点で終了だ。 #include<iostream.h> int func(){cout << "評価された"; return 1;} main(){ int i = 5; if(i==8 && func()){ cout << 3; } cout << 9; }
833 :
デフォルトの名無しさん :02/03/05 01:14
ショートサーキットが当然と思わず、言語仕様を確認すれ。
でも常識を疑うよね>833
>>832 Perlなら||じゃなくてorにしとけ。
そこはかとなく無限ループ。 いまどきのコンパイラは警告してくれる。 for (unsigned char bits = 0x80; bits; bits >= 1) { if (pattern & bits) { // ... } }
スレ違い失礼いたしました。
>>835 この板はC系の住人が多いからわかりやすいように||/&&で書いたんだYO!
仕事でハックするときはいつもand/orを使っている これ最強
しかしこれをやると
Cでハックするときもand/orとやってコンパイルエラーを起こすという諸刃の剣
素人にはお勧めできない
まあお前はifでも使ってなさいってこった
>>834 まあ、オレはショートサーキットに依存しないように組んでるが。
perlのサンプルで常用されているやり方は正直論外だ。まあperlらしいが。
>>807 たった今そういうコードを書いたので報告
const LEFT = 1 << 0;
const CENTER = 1 << 1;
const RIGHT = 1 << 2;
if( direction == LEFT ) {
/* Do nothing */ ← どうしても書きたかったの♪
} else if ( direction == CENTER ) {
hoge();
} else if ( direction == RIGHT ) {
fuga();
}
これを
if( direction == CENTER ) {
hoge();
} else if ( direction == RIGHT ) {
fuga();
}
とだけ書くと「左」の場合は何をやるの? ってあとから
見直した場合に混乱するような気がしてならなかったんです
すみません もうしません 許して下さい
>>840 俺なら素直に switch - case にするか、関数ポインタの配列を使うけど。
>>841 スレの趣旨にそって考えるに、規約でswitch文またはbreak文が
禁止されてたとか。
関数ポインタは「難しくてメンテナンス性が悪い」から使うなとか。
うむ。まさに当スレにふさわしい規約じゃ。
>>841-842 言われてから気づきました switchの方がいいですね
関数ポインタは恐いので遠慮です
goto, continue, break(switchのは除く)は原則使用禁止。 returnは1関数内で一度だけ。 ってのがあった。もちろん、誰も守ってなかったけどな(w まぁ「long型の符号を指定しないとがsignedになるかunsignedになるかは処理系依存」とか 書いているレベルだったしな。 sizeofも関数とか言ってるんです。もうね、アホかと。馬鹿かと。
>>845 > goto, continue, break(switchのは除く)は原則使用禁止。
> returnは1関数内で一度だけ。
構造化プログラミング原理主義者ですな。最近は絶滅の恐れが指摘されてい
ますので、速やかに実務から遠ざけて保護監視下に置いてください(w
>>842 ところで、switchが禁止されてたら、どうするんだ?
関数ポインタ
仮想関数のオーバーライド
Chain of Responsibilityパターン
if文ぐりぐり分岐
あたりで対処すんのか? どれもこれも面倒…。
すみません。ちょっと前まで、こーいう書き方してました。 #define not(f) (!(f)) if not( a<b && b<c ... )
反省してるならヨシ
>>848 ぼくとしては !, &&, ||みたいな記号を使うよりも
not, and, orみたいな英語を使う方が直感的で好き♪
だから Perl マンセー
>>851 #define not !
#define and &&
#define or ||
ただし、これを使うと(以下略
>>854 >ただし, これを使うと訳の分からない副作用に悩まされる諸刃の剣
>素人にはお勧めできない
了解しました マクロの副作用はじっさいよく分からないので 恐くて使えません
定数を宣言するときはconstを,
マクロを使いたいときはインライン関数を使っています
マクロの副作用くらいは分かれ。
>>854 の糞マクロは、お前以外のすべてのCプログラマにとって
読みづらいという副作用しかないが。
あのさぁ、構造化原理主義じゃないんだけど、 なんでもかんでも return すんなよって思うんだけど。 出口はできるだけ少ない方がわかりやすいでしょ? 出口をひとつにする為に多大な労力を払うのは馬鹿だけど、 簡単に出口をひとつに出来る場合までたくさん出口を作るやつはもっと馬鹿だと思う。
>なんでもかんでも return すんなよ 例外なげまくりの方向で。
>858 それ最悪。
>>856 C99 だと標準ヘッダ <iso646.h> で定義されてたり。
まぁ trigraph の親戚だから、無理して使う必要は *全然* ないけど。
>なんでもかんでもreturn寸名よ じゃあ関数呼びまくりでreturnが複数にならないように。
862 :
デフォルトの名無しさん :02/03/12 17:24
if文ではelse文を必ずつけること。 if (a == b) { /* ... 処理 ... */ } else; 修正個所を示すコメントはインデントをつけず、 追加・修正・削除に応じた記号を埋め込むこと。 と、いうことでソースがかなりいい塩梅になってた。
バージョン管理ツールを知らないわけか…
もちろん、そんな高等なものを知っているわけもなく。 未だに日付を付けて履歴ファイルを残しているYO!
>>854 Pascalやってた俺には逆に見やすい罠。
ただし、Pascalと論理演算子の評価順が違う罠。
>>865 そんな奴はPascalを使えばいい罠。
pas2cを作ってしまう罠
p2cならすでにある罠。
#define begin { #define end } #define procedure void
あー断っておきますが、
>>848 は elseハックの回避(ifの拡張)が目的だったんで、
他の部分では普通に ! を使っておりました。
# 要するに if(条件); else{...} を if not(条件){...} にしたかった。
それならむしろunlessを以下略
>>872 unlessってPerl以外にあるの?
874 :
デフォルトの名無しさん :02/03/14 08:41
破門です
>>871 if (!(条件)) {...}でいけない理由が分からない
>>876 最悪っつーほどのことか? むしろ、ふつーは見かけない not を使うほうが
(?_?) となると思われ。
C の switch で、各 case 毎に必ず break する事を求められた事がある(守らな かったけど)。 switch(exp) { case 1: ほげ; break; case 2: ほげほげ; /* break せずに下に落ちてはいけない */ default: ほげほげほげ; }
>>879 このスレでマジレスするのもどうかと思うが、まぁ(w
break しなくても良いんだが、その場合には原則として
/* FALLTHRU */
と書いて欲しいとは思う。俺が /* FALLTHRU */ を書かないのは
case '0': case '1': case '2': ...
というような「数字をまとめて」「アルファベットまとめて」で処理する場合だけ。
受験生の前で switch 文の話をする事禁止(w
continueは?
受験性の前では 6809 の SEX 命令の(以下略)。
>>880 lint 対策すね。
JAVAの話だけど if( a != null && !a.equals("") ){} か if( "".equals(a) ){} どっち? いつも上をつかってるけど下をはじめた見たとき 目からうろこが落ちた
>目からうろこが まだたくさん入ってますよ、うろこ
887 :
デフォルトの名無しさん :02/03/22 12:15
>>884 すばらしい。
おれも目からウロコがおちた。
こんどから使わせてもらおう。
>>884 そのだと文字列以外には適用できないし
下から上の意図を読み取りづらい(慣れの問題ではあるが)ので
使わないかも。
>>884 JAVAよく知らないから聞くんだけどさ、
C++的なイメージで読み解くと、上の方って最初にNULLチェックしてる訳よね。
それだと、下のコードは ""ストリングクラスにNULL渡しても
イコールと評価されないって事なの?
"" って、C的に考えると \0 つまり NULL っすよね?
a がどんな型を使ってるのか解らなければ間違ってると過指摘できないや。
890 :
デフォルトの名無しさん :02/03/22 15:54
NULLと空文字列は区別したいなあ DBのnullとかもそうだし
DBのは三値演算だからちとちがう
>>889 C的に考えても\0はNULLじゃないぞ。
894 :
デフォルトの名無しさん :02/03/24 06:33
Cで、こういう規約があったとしましょう。
・等値の比較は、定数を左辺におくこと
・大小比較は、比較する値と比較対象の変数が数直線に乗るように書くこと
要は下記のように書け、ってことなんですが・・・
やっぱこういう規約ってアフォな会社のやることなんでしょうか?
----------
http://pc.2ch.net/test/read.cgi/unix/1016643235/ より
main()
{
int x ;
for ( x = -5 ; x < 10 ; x++ )
{
if ( ( 1 < x ) && ( x < 6 ) )
{
printf( "%d is in [ 1 < x < 6 ]\n" , x ) ;
}
if ( ( x <= 1 ) || ( 6 <= x ) )
{
printf( "%d is not in [ 1 < x < 6 ]\n" , x ) ;
}
if ( 3 == x )
{
printf( "%d is just 3\n" , x ) ;
}
}
}
>・等値の比較は、定数を左辺におくこと if( a==1 ) を間違えて if( a=1 ) と打ち込んでしまってもコンパイラは警告を出さない。 if( 1=a ) なら警告を出す。 >・大小比較は、比較する値と比較対象の変数が数直線に乗るように書くこと 意味判らん。
数直線に乗らない数ってなんだろう?
ようするに x > 0 && x < 5 じゃなくて 0 < x && x < 5 って書けってことなんでは 自分的には… どうでもいい
>>894 > ・等値の比較は、定数を左辺におくこと
> ・大小比較は、比較する値と比較対象の変数が数直線に乗るように書くこと
後者は、それで多少式が読みやすくなるけど、前者は読みにくくなるよね。
その方針としての矛盾がいやだ。
>>895 いまどきのコンパイラかつ警告レベルが高ければ
>・等値の比較は、定数を左辺におくこと
if( a==1 )
を間違えて
if( a=1 )
と打ち込んだら警告が出る。
if( 1=a ) ならエラーを出す。
900げとずざ
901 :
デフォルトの名無しさん :02/03/24 09:54
>大小比較は、比較する値と比較対象の変数が数直線に乗るように書くこと これは自分規約でやってるよ。Cやり始めの頃は if (0 < x < 9) {.....} とかやってはまったけどね。自分的には 0 < x && x < 9の方が左から素直に 読めるのでそうしてる。
「ソースの見た目効率スレ」でも、まったく同じ話題で まったく同じようなレスをしてあったぞ。
gcc で if(a=1)と書くと怒られます if( (a=1) )だと怒られません
if (0 < a && a < 10) は見やすいので肯定。 if (10 = a) は、そもそもこんなコードを書くのが悪いので否定。
>>903 a=1 ... 代入式
(式) ... 式
(a=1) ... 式
>>903 ,905
解説サンクス
ちなみにほかのコンパイラだとどうよ? >>警告が出るか否か
907 :
デフォルトの名無しさん :02/03/24 20:59
>>894 参考スレで賛同を得られなかったからって出張しなくてもいいんじゃないの?
参考スレでも書いている人がいるけど
「思考の流れに沿ってコード書く」
に俺も1票。
コンパイラがエラーで教えてくれるからってコーディングスタイルを変えるのはどうかなと思う。
# コード書く人がしっかりしていないとCは糞言語になるよ。
しかし、894みたくxの比較対照が全て定数ちゅう状況はあまりないような気がするんですが...
どうでしょうか。
908 :
デフォルトの名無しさん :02/03/24 21:04
激しく外出だろうが、FORTRAN77はアフォ 氏ねよボケが
VBでは、オブジェクト識別子の命名に型名のプリフィクスが推奨されますが、 他言語(OO言語?)では、ハンガリアンスタイルが否定されつつあるそうです (2チャンネルでそういう趣旨の発言を複数回見た記憶があります)が、その 理由(趣旨)は何でしょうか? イタチ飼い、もとい、板違いでしたら、スマソ。m(_ _;)m (コーディングスタイルが議論の対象のようなので、恐る恐る上げてみました)
>>909 自己ツッコミですが、もしかして、実行時にならないと型が決定されない
オブジェクト(VBのVariantや抽象Object型のようなもの?)に対応でき
ないからですか?
見当違いでしたら、ツッコんでください。
意味のある「型」が増えすぎていちいち接頭詞を決めていられないからです。 基本型しかない・使わない言語しかなければ版狩り案も生き残ったかもしれんが。
>>911 マジレス感謝です。m(_ _)m ペコリ
>>907 ちょっと待て えらく心外な言われ方だな。
自分でこれが正義だと思ってたら、「バカなコーディング規約」なんていうスレ題のところに
書くとでも思ってる??
バカっぽいけど作成者集団がバカの集まりだった場合にはどうだろうか?
という疑問があったから書いたまでだよ。
UNIX板のURLを書いたのは前評判はこうでした、というのを提示したかっただけ。
実際問題、こういう比較を行なうこと自体マレなのは承知してるよ・・・バカにすんなや
>>894 了解しました。&失礼しました。
みなさんの意見を聞こうと思います。
その前にあなたはどう思っています?是非聞かせてください。
意味の分かりにくい時点で罰 だいたいそんな細かいこと 規則にする必要ないよ お薦めのコーディングスタイル程度でいい
コンパイラにとって (a==1) と (1==a) ってどっちが最適化しやすいのかな…
同じだよ
if( foo.bar( arg1, arg2, ..., argn ) == 0 ) if( 0 == foo.bar( arg1, arg2, ..., argn ) )
愚問だらけやな。 実在する規約をかこうよ。
if SUCCEEDED( pFoo->Bar(lpszArg1, iA2, chA3, punkA3) )
921 :
デフォルトの名無しさん :02/03/28 01:13
>918 私の感覚では上の方が自然。 下は if ( 0 = value ) でエラー(警告?)を出すための技法だったような・・・。
変数 = 変数 を検出できないからいかにも中途半端、 素直に警告レベル上げろに一票入れとく
じゃなくて、 if (a = 0) を防ぐためでした。 カッコ内で代入しない方がいいと思いますよ!
if( foo.bar( arg1, arg2, ..., argn ) > 0 ) if( 0 < foo.bar( arg1, arg2, ..., argn ) )
>>924 一旦変数に受ければ?
デバッガで追うときも楽だし・・・
>>923 if(a=0) を防げても if(a==b)のつもりでif(a=b)って間違いが防げないってことだ。
928 :
デフォルトの名無しさん :02/03/29 00:09
だからconst修飾子をローカル変数にも使いまくります。 大変便利です。
>>922 激しく同意!!
むしろC言語など使うなに一票。
931 :
デフォルトの名無しさん :02/03/29 00:57
if(retval=foo()){ /* ここでretvalの値を使ったり */ } こういう書き方はやっぱりやばいですか?マジ代入の意味なんですが。 単に if((retval=foo())!=0){ } と書くのが面倒なだけですが。
932 :
デフォルトの名無しさん :02/03/29 00:57
書き間違いが危ないと言うなら、 #define equals(a,b) #define notequals(a,b) を使うことをプログラマに強制する。
doesnotequal(a,b)?
934 :
デフォルトの名無しさん :02/03/29 01:09
retval = foo(); if (retval){ } の方が好き。
>>934 禿しく同意。
printfデバッグや仕様変更時に修正量が結局一番少ないのが
ifの条件式を単純にすることと悟った。12年ぐらいプログラミング
してるけども。
>>930 そもそも、二重になってないやん(変数 = 変数の場合)
>>934 戻り値にエラーと正常値を混在させるな、と言ってたのは WRITING SOLID CODE
だっけ?
938 :
デフォルトの名無しさん :02/03/29 11:33
おれは #define error_if_zero #define error_if_nonzero を空宣言して関数につけるようにしてる
>>937 ユーザ関数をそう設計しても標準ライブラリやシステムコールが
旧態依然とした戻り値にエラーと正常値を混在させるものだから
どうにもこうにもって感じだな。
そうかといって、コレ以上ラッパーでくるみたくないしね。
941 :
デフォルトの名無しさん :02/03/29 22:08
Cで #define PUBLIC #defone PRIVATE extern としといて PRIVATE funcA(〜) PUBLIC funcB(〜) とするのはやめようよ。 CなのにC++を簡易的(安易)に取り入れた規約決めんといてくれよ。
942 :
デフォルトの名無しさん :02/03/29 22:25
> #defone PRIVATE extern #define PRIVATE static ではなくて?
>>942 すまそ。その通りです。
泥酔気味なので許して。
>>930 (定数==変数)として、警告レベル上げれば2重だよな。
定数をうっかり右に置いて、
>>903 のケースみたいにならん限り
必ず警告される。
有名なオープンソースのコードをいくつかチェックしたけど (定数==変数)←こんな書き方してるのはなかったな。
俺は定数を左に書くクセをつけようと思ってたけど、 ==を体が覚えるほうが先だった。 結局、==のつもりで=って書いたバグに悩まされ たのは、2回だけだった。 そんな俺が最初に使ったのはLattice C 2.0 N88-BASIC+アセンブラからの移行組。 (定数==変数)は、バカなコーディング規約だ、に1票。
>>946 一票。
小手先のほとんど意味のないテクニックに走って、
コードの読みやすさを犠牲にすることはない。
>>948 == の左に定数を置くのも、たぶん「慣れれば違和感がない」と思う。
でも現実問題として、
1. そうなってないソースコードが大半で
2. かつ、違和感を感じる人間も多く
3. 現実問題として、別の解決方法で十分
って状況だと、デメリットの方が大きいよな。
> 定数をうっかり右に置いて、
それじゃ演算子うっかり書き間違うのと危険に大差ない。
>>946 に一票だな。コンパイラが強制しないものを
コーディング規約で強制するのはバカ。
>>950 946 には一票投じておくが、
> コンパイラが強制しないものを
> コーディング規約で強制するのはバカ。
コーディング規約は、そもそもコンパイラが強制しないものをルール化したも
のと思われ。たとえば変数名だと、コンパイラは
a, b, c, d, e, ..., aa, ab, ..
でも文句を言わんが、そんなソースをメンテナンスするのは嫌だろ。
(揚げ足取り気味ですまん)
952 :
デフォルトの名無しさん :02/03/30 18:02
946に2票 >コーディング規約は、そもそもコンパイラが強制しないものをルール化したもの に5票 C/C++で(定数==変数)としている人に逆にしろと強制はしないと思うが強制される (コーディング規約にされる)のは断固拒否します。
多数決で言えば(定数==変数)こういう書き方をしてるのはごく少数だな。 スキルの高い人の間では。
(´д`;;)
定数は右、に0.8票。
定数は左、に0.2票。
>>946 はなんかバカっぽいので票は入れん。
Lattice C 2.0が意味するところがわからないのか?
>>946 は1週間だけCをさわたのかもしれないけど(w
958 :
デフォルトの名無しさん :02/03/31 09:00
Lattice C って何?
>>958 Visual C++の前身のMicrosoft Cの初期のバージョンのOEM元、つまりは
DOSで初期によく使われてたC言語処理系
960 :
デフォルトの名無しさん :02/03/31 10:50
きゃぁ、漏れの流儀が否定されつつある・・・。 といっても BASIC 育ちで Java 経由の C++ 使いなので C と C++ 以外では 変数 == 定数 って書くし、 何故か NULL 以外だとうっかり普段の癖が出るんだけど。 ( NULL == xxx の時だけは絶対忘れないのは何故だろう?) やっぱり直感的なのは 変数 == 定数だよね。
if( 946==lattice C User && 946==2ちゃんねらー) { 946 = 厨房オヤヂ; }
(´-`).o○(やっぱり、タダの煽り厨だったか、ヤレヤレ…)
(しかも、定数は左って言ってるのに、
>>961 は946に代入してるよ…)
964 :
デフォルトの名無しさん :02/03/31 15:49
定数==変数 これをすすめる人って、なぜか「初心者向け掲示板」みたいな レベルの低いコミュニティーにしか現れないよな。
>>964 CODE COMPLETE (だったか?) あたりでも勧めてたから、そうとも言い
切れん。
切羽詰った状況で使い捨て糞コードとわかっている状況だとするなら、 安全のために左側に定数を書くだろうなあ。
定数==変数 の利点はわからないこともないが、感覚的に不自然で読みにくい。 なれれば平気というかもしれないが、無理にそんなことに慣れることに労力を払うほどのメリットを感じない。
968 :
デフォルトの名無しさん :02/03/31 17:36
>>965 何ページで?
CODE COMPLETE は 変数==定数 のスタイルじゃん。
三田某とか評判の悪いやつが定数==変数進めてたのって知ってるけど。
>>968 そのスタイルは、日本だと三田典玄がCマガで
「プロならこう書く」と言ってからよく言われるように
なったような気がするなぁ。
Cマガもいいけど、ほかの本も読んでほしいよ。
定数==変数の利点があるのはC/C++だけ・・・だよね。
>>970 利点といってもほとんど意味ないじゃん。
ガイシュツだけどコンパイラの警告レベルを上げてたら 対処できるので、不要<定数==変数
そういえば、lintで検出できないんだっけ? 俺しばらくつかってないから知らないんだけど。
>>968 確認してみたが CODE COMPLETE じゃなくて「Windows プログラマのための
デバッグテクニック 徹底解説」だった。著者は NuMega 社で BoundsChecker
や SoftICE の開発に関わってたそうだから、デバッグのプロだよね。
(俺個人は 変数 == 定数 だけど)
>>963 スレ読んでますか。
定数左を否定してないだけで、自分はそうしてると言った憶えない。
あえて反論述べてるワケだから煽り中であることは否定せんけど。
# 定数 == 関数(のreturn値) はたまに使う。
#define EQUAL(a,b) ((a)==(b)) ってすれば万事解決だろ。
バカな議論だ
「定数を左に書け」っていう「コーディング規約」の是非じゃなかったのか??
#define eq == #define ne != #define le <= #define lt < #define ge >= #define gt > ・・・じゃダメ? というのは冗談だけど、「定数==変数」は読みづらい。 変数同士でも被比較側になるべき値が右辺に来ると読みづらいし。
いつまで愚問を繰り返すんだ!
何年かマトモにやっときゃ自然に「思考の流れに沿ってコード書く」になるはずだが...
#
>>907 より陰毛。
マクロを定義してもそのマクロをうっかり使い忘れる危険はなくせないから 言語仕様で強制できないと意味なし
>>984 コーディング規約は、処理系によって強制されないお約束をまとめた
ものです。
>>980 は C の
記号を多用して、可読性をあげる
(慣れるまでは暗号に見えるが、ある程度慣れれば、さくさく読める)
というメリットを思い切り損なうから、俺は嫌だけど。