|w・)
プログラマ板として幻滅する次スレ。
スレ立てしたやつがアホだったときと感覚が似てるな
このスレは1さんに16進数を教えるスレになりました。
これは恥ずかしすぐる
oioioioi
#1Fの次に#1Gを立ててやろうと思ってたのに
10 :
仕様書無しさん :2008/01/23(水) 00:52:38
ガード句や関数つかわなすぎでフジサーンしているところが・・・
/*探さないでください*/
/* フジサンフジサンうるさい馬鹿が居るのでインデント消しました */
「もうプログラム板でスレたてるのやめようと思った原因スレ#1」
0xついてないんだしこの際10進数でいいんじゃね?
実質1Aです、って断って、次は1Bにしてほしいというのが、大多数だとおもう。
じゃ間をとって2進数で。
2になってる時点でもうだめじゃん。
八進数にしろよ
どうでもいいよ、と思う俺は少数派か
いや、多数派だと思う。
思いきって捨ててしまい、1Aを立てたら?
>>21 さんに背中を押されて立てました。あっちに行きましょう。
お前は誘導も出来ないのか
たかがスレ番号程度で重複スレ立てかよ LRも読めないゆとりか?
VBだが、とある処理のとある状態を表すのにビットを使っている。 状態Aなら&H1(0x01) 、状態Bなら&H2(0x02)・・・・みたいな具合で、 複数の状態が一度に発生することもあるしそうじゃないときも。 んで、あることをする条件が、 「状態Bだけが発生していない時」(他の条件は無視) だったんだが、そのif文が if((iDat And &H1) != 0) And ((iDat And &H4) != 0) And ...... 延々と&H8000まで書いてあったorz 誰だよorz
「状態Bだけが発生していない時」と(他の条件は無視)は論理的に矛盾してないか? If iDat = &HFFFD Then '状態Bだけが発生していない時 If Not iDat And &H2 Then '状態Bが発生していない時(他の条件は無視) どっちが正解?
「だけ」が余計だな
>>26 の見て、今見てるVB6のコードのこと思い出した。
こんな感じで記述されてた。
MsgBox "Hoge", 1 + 48
第二引数はIntelliSenseで定数の選択肢が出てるんだが、それを蹴って数値に直してる上に
"+"でつないでやがる。意味わかってんだろか?
どんなメッセージボックスか、いちいちイミディエイトで確認せなあかんがな。
できれば、
MsgBox "Hoge", vbOKCancel Or vbExclamation
であってほしいんだが、これってこだわりすぎやろか?
30 :
仕様書無しさん :2008/01/31(木) 08:03:01
関西弁やめて。
>46 定数を使うのは当然 というか、そういう人のソースって、あらゆる所に直値使ってそうだな おれが今みてるソースもなんだが orz
46に期待
VBでサブルーチンにcallなしで括弧つけるのが気持ち悪いんだよなぁ
いままでは手離れのいい、当たり障りの無いコード書いてきたつもりだけど DQNなコード置いていくのも人生かと思うようになってきた。 わざとやってみっかな、低品質コード・・・ とおもったけど、なんだボケーッと書けばいいだけだと気がついて・・。 どっかのだれか、ごめんよおお。
どっかのだれかはまずは自分だ。ほどほどにな。
>>35 俺の見てきた低品質コードって、ボケーッと書いてできるような代物じゃなくて、
もの凄い綿密な設計をしてわざと読みにくく書いてるだろって言いたくなるような
ものばかりなのだが、それって穿ち過ぎ?
あれだけ奇妙奇天烈な論理設計ができるのは一種の天才じゃないだろうか?
俺には真似できん。
忘れた頃に自分で見て解るのか!?ってソースは山ほど見てきたな。 解るんなら頭良いんだろうけど... そういう意味での「頭の良い奴」の書いたソースは見たくない。
VBでいかにもCOBOLっぽい変数名のオンパレード (あんた中東の人かって感じに母音抜いたローマ字綴りとか) だけどADOのRecordsetを、 If rs.EOF = False And rs.Field("hoge").Value = …… とか短絡評価したかったとしか思えん使い方してみたり Stringで宣言した変数に実数を突っ込んで数値計算してみたり (そのためにわざわざCDbl使いまくりとかもうね(ry)) 単なるコボラが書いたとも思えん節がある…… コボラ→Perl→VBとかゆーキャリアなんだろうか?
みんな自分の書いたコードはいけてると思ってる不思議
だって底辺だモノしかたないさ みつぅお
16個のテーブルがあって それぞれの出力ビットが 0x01,0x02,0x04,0x08・・・・と対応している時 わざわざ BitTbl[16] = { 0x01,0x02,0x04,0x08,(中略),0xffff }: とテーブルを宣言して「ほら、使いやすくなったでしょ☆」と得意満面で言われたときは なんていうか、相手を殴って辞めてやろうかという気分になりますた
0x8000
44 :
42 :2008/02/01(金) 13:34:18
>43 _| ̄|○ オレも誰かに殴られてくる
>>45 すまん、C言語覚えたての新人の頃は
そういうのを繰り返して
「俺が最適化したお!!先輩うれしいでしょ!!!」
と言っていたことがある
3年ぐらいして、作ったプログラムのソースを無断で全部むちゃくちゃに書き換えられて
しかもサーバーに上書きでアップされて納品物がムチャクチャになった時に
昔の自分の行為がどれだけ危険だったかを悟った
何が問題なのか分からん
しかも自己完結してるし
>>42 使い方にもよるが、即値を使わずワンクッション置くのはごくふつーの手法だろう。
もちろん組み込み等でメモリやCPUがぎりぎりの時はやらないし、得意満面はどうかと
思うけど。
まぁ狭い範囲で使うビット判定程度ならマクロ関数かますことが多いかもな。
>>48 即値とかいう話じゃなくて、
仕様上、「xのときbit xを出力する」というときに、
(1<<x) と書けばいいところをわざわざ BitTbl[x] にしたってことだと思うが。
この手のテーブルを定義するのって、
>>42 が間違えたようにバグの元なんだよなw
でもnビットシフトが無い石だと表引きのほうが若干速いことはあるよ。 シフト回数をレジスタに入れてループするコードが出てるとコノヤロとか思う。
またすぐ特殊なシチュエーションを設定してごまかそうとする・・・
最近VBAしかいじってないなぁ。。。。 毎回セルのレイアウト変更すんなや、すっ頃スぞ。
53 :
仕様書無しさん :2008/02/02(土) 07:27:10
ひどい会社になると、こうだからね・・・。 ○住宅補助が出ている(家賃の過半は給料天引き)の、個人アパートに踏み込んで荒らす。 本を盗むとか、PCデータ盗むとか、回線に仕掛けするとか・・・。 ○夜中に住居近くに繰り出してきて大騒ぎする。 ソース見て、「落書きだ」と悟ったら逃げることをお勧めします。 大体、ソース=脳みその中身の反映。 馬鹿はどう取り繕っても馬鹿なんだな、と自省をこめて実感したよ。
まあ、俺も馬鹿なんだけどさ。悪意の充填度が違うだけかな。
>>49 inline 関数化しておけばよかっただけの話では?
inline int func( int x )
{
assert( ... );
return 1<<x;
}
実際にただシフトするだけのコードも
有効桁数の問題等を孕んでいて超危険なコードだと思うよ。
それがソースの各所に散っていたなら間違いなく
作り直しになる。
俺は
>>42 は汚いソースはどんどん汚くなるっていう好例だと思うな。
>有効桁数の問題等を孕んでいて超危険なコード そんなこと言ったらかなりのコードが「超」危険なコードになるんじゃね? この程度なら「超」は不要だと思うが それとも assert を入れてる理由を説明してるつもりなのかな?
>>58 〜年問題みたいなのがどうでもいい問題なら、いいんじゃないの?
実際、assert入れても問題の解決になってないしな。
ただ、どうするかは仕様の問題であってここで解決は出来ないけど。
それと、修正の依頼があったから、新人はなんらかの修正をしたんだろうから、
有効桁のほうを間違えて、修正してた可能性も充分あるわけだがw
>59 こうでうすか?判りません! 「年月の表示形式はRFC2550準拠とし、内部表現でも 西暦2922億年問題が発生しないように作ること。」
もう日付の管理は多倍長整数でいいよ
文字型でいいよ
文字長は?
char(8)
>>60 こうですか?判りませんw
実際にただシフトするだけのコードも
有効桁数の問題等を孕んでいて危険なコードだと思うよ。
Java1.4以下で、大して面白くも無い金勘定をやる時は List や Map を使いまくってキャストの嵐で、そもそも汚いコードになりがちなんだよね。 その上、フレームワークが用意したバリアントクラス "FunnyVariant" の使用を強制された日には とんでもないスパゲティができあがる。 それでもセンスのある人は奇麗に書く。 それ以外の人は、どういうわけか「わざわざ」汚く書く。 今日はすごいのを見た。 map は HashMap、list は HashMap を格納した ArrayList、 someValue は FunnyVariant のインスタンス。 map.put( ((FunnyVariant) ((Map) list.get(index)).get( "Something1")).toString() + ((FunnyVariant) ((Map) list.get(index)).get( "Something2")).toString() + ((FunnyVariant) ((Map) list.get(index)).get( "Something3")).toString() + ((FunnyVariant) ((Map) list.get(index)).get( "Something4")).toString() , (Object) someValue) ・・・おぉ。 ちなみにこのプロジェクトでは、DBの日付項目は char(8) だ。 でもタイムスタンプだけは違う:タイムスタンプは char(14) だ。
芸術的すぎて読めねえ
69 :
67 :2008/02/06(水) 21:45:26
落ち着いて、list.get(index) の結果を一時変数にでも入れて 余計な toString() やキャストを取り除けば、こうなる。 忌々しい FunnyVariant へのキャストなんて、一切不要だった。 Map item = (Map) list.get(index); map.put(item.get("Something1").toString() + item.get("Something2") + item.get("Something3") + item.get("Something4") , someValue); map.put() のキーを、分かりやすいように key という変数に入れてやってもいいよね。 "key" という名前が安直過ぎていやなら、もっと適切な名前でもいいや。 デバッグする時にも変数の値を参照しやすいし。 Map item = (Map) list.get(index); String key = item.get("Something1").toString() + item.get("Something2") + item.get("Something3") + item.get("Something4"); map.put(key, someValue);
>67=69 きっとリファクタリング本の、「一時変数は悪」ってのを拡大解釈したんだよ。 FunnyVariantへのキャストはイミフメだが 「そうしないとObject#toString()が呼ばれるじゃないか! 」とでも思いこんでたのか。
MyMapPut( map, index );
72 :
仕様書無しさん :2008/02/09(土) 11:03:52
/* ループカウンタ */ int rpknt;
「ハムスター ニャーン」のAAに迫る脱力感
>>73 そのAAについて詳しく
検索で見つからんかった
嘘吐き "ハムスター ニャーン AA" でぐぐって数件目にあるじゃねーか
orz ハムスター ニャーンだけでぐぐって悪かった なるほどこれは脱力するわ ありがとう
>>75 ,.-ー'''フ
ヽ、__ ̄ ̄~~`〜、
/"~ ̄ ̄ ノ
ヽ、  ̄ ̄~~~``ヽ、 ∩___∩
`>ー‐ __) l ノ ヽ
(  ̄ ̄ ̄~~~"ヽ、 / ● ● |
`ヽ、_ _,,/''"'"| ( _●_) ミ
>ヽ、 彡、 |∪| ミ _/\/\/\/|_
/ \ ヽノ / \ /
i `ー-ー'"/ < ニャーン!! >
ヽ、 ,i / / \
`-、.,, 、_ i  ̄|/\/\/\/ ̄
 ̄`i " /゙ ./
i ヾi__,,,...--t'" ,|
\ ヽ、 i |
〉、 、,} | .i
`` ` ! 、、\
!、_n_,〉>
/'''7'''7 /'''7 / ̄ ̄ ̄/ / ̄ ̄ ̄ /
/ /i | / /  ̄フ ./ / ./二/ / . . ____
_ノ / i i__ . ノ /__,l ̄i __/ (___ /__,--, / /____/
/__,/ ゝ、__| /___,、__i /___,.ノゝ_/ /___ノ
貼れば済むのに
脱力感っていうかきもいな。
さてさて、>67 を書いた人間と↓のコードを書いた人間は、全くの別人なんだけども。 map は HashMap で、String のキーと FunnyVariant の値のペアを持っている。 getLongValue() は Long.parseLong( map.get(key).toString() ) を行う。 getVariant() は (FunnyVariant)map.get(key) を行う。 subVariant() は、引数の 2 つの FunnyVariant を long にし、減算し、FunnyVariant に格納して返す。 // somethingA 計算 long somethingA = 0; if (getLongValue(map, "Total") < getLongValue(map, "SomethingAlpha")) { somethingA = getLongValue(map, "Total"); } else { somethingA = getLongValue(map, "SomethingAlpha"); } map.put("Total", subVariant( getVariant(map, "Total"), new FunnyVariant(new Long(somethingA)))); // somethingB 計算 long somethingB = 0; if (getLongValue(map, "Total") < getLongValue(map, "SomethingBeta")) { somethingB = getLongValue(map, "Total"); } else { somethingB = getLongValue(map, "SomethingBeta"); } map.put("Total", subVariant( getVariant(map, "Total"), new FunnyVariant(new Long(somethingB)))); // ・・・以下 10 回程度繰り返し ローカル変数 somethingA も somethingB も、これ以降一切扱わない。本当にただの一時変数だ。
80 :
79 :2008/02/16(土) 11:43:46
そもそも、このプロジェクトの奇妙なコード群の原因は
本当に「おかしな」バリアントクラス FunnyVariant と、その強制にある。
class FunnyVariant {
public static final FunnyVariant nullInstance = new FunnyVariant(null);
private Object o_ = null;
public FunnyVariant(Object o) { this.o_ = o; }
public String toString() { return o_ == null ? "" : o_.toString(); }
}
FunnyVariant のエッセンスとしてはこんな感じだ。本当にただ Object を持っているだけ。
NullObject パターンが少し格好よく見えるだけ。
int や long を格納したいなら、Integer や Long などのラッパークラスで包んでやる必要がある。
# それも未だに java1.4 だから、明示的に new Integer(123) とする必要がある。
そんなわけで
>>79 で少し出てきた subVariant() も、本当に情けないコードになっている。
private FunnyVariant subVariant(FunnyVariant a, FunnyVariant b) {
long longA = Long.parseLong(a.toString());
long longB = Long.parseLong(b.toString());
return new FunnyVariant(new Long(longA - longB));
}
a や b が内部で持っている Object の実際の型に関わらず
toString() で文字列化したものを Long.parseLong() してやる必要がある。
こんなんでよく破綻しないもんだ。
少なくとも 10 年以上、このフレームワークでいくつもの製品が作られ、稼動しているらしい。
携帯の UI がモッサリしてるのはもしかしてこんなコードが埋まってるかもしれないと、 少しだけ、ほんの少しだけ納得した。
82 :
79 :2008/02/16(土) 11:59:59
>>79 はまずこう整理できる。
long total = getLongValue(map, "Total");
total -= Math.min(total, getLongValue(map, "SometingAlpha"));
total -= Math.min(total, getLongValue(map, "SometingBeta"));
total -= Math.min(total, getLongValue(map, "SometingGamma"));
: /* 10回程度だったっけ? */
map.put("Total", new FunnyVariant(new Long(total)));
でも繰り返しをベタ書きするのはいやだ。
"SomethingAlpha" や "SomethingBeta" などのキーを配列にしてしまえばいい。
long total = getLongValue(map, "Total");
final String[] KEYS = {"SomethingAlpha", "SomethingBeta", /* 以下略 */ };
for (int i = 0; i < KEYS.length; i++) {
total -= Math.min(total, getLongValue(map, KEYS[i]));
}
map.put("Total", new FunnyVariant(new Long(total)));
実際には、ここで登場する全ての値は 0 未満にはならないので
ループ継続条件に total > 0 を含めて、余計なループ処理は中断してもいいかもしれない。
なげーよ
84 :
79 :2008/02/16(土) 18:44:03
めんごめんご
>>81 KX-HV200 って端末を触ったときは異様にレスポンスのいい操作に感激したものだ
いまどきの端末のほうがはるかにいい石積んでるのに今ひとつなんだよな…。
>>81 だって、無茶苦茶に拡張されたイベントループが5つも6つも回されるんだから遅くもなるよ(w
これはひどい
激しい インデント です ね
いや 左端 以外 は インデントとは呼ばないか?
突っ込み所が多すぎるw ちょっと気になったけどJavaだとboolean == trueって普通なのか?
93 :
仕様書無しさん :2008/02/17(日) 00:41:04
インデントで思い出したが if (flagA) { if (flagB) { ・・・ } if (flagC) { ・・・ }} こんなの感じのがあちこちにあって 見づらいのでフォーマッタにかけたら 「勝手に改修するな」と滅茶苦茶 怒鳴られて全部元に戻したことがあった。
なんだそれw
実用じゃなくて、情報工学の学術的題材だろ。
こうやって見てると案外wikipediaって面白いのな
>>94 宝くじを買うって行為はこんな感じだよな...
でも買うけど。
>>94 アンサイクロペディアにあっていいくらいのネタソートじゃないのかそれ
いやー、でも結構まともに、不完全性だか何だかの議論のネタに なったりするらしいという話を、どっかで。
時間的な評価もあるのな n!×nって時間かかりすぎだろww
しかも停止性は保証されてないという罠
誰が使うんだよw
暇つぶしにちょっと遊んでみるかな。面白そうだ。
アルゴリズムそのものを学問的に語る時には考え得るあらゆるアルゴリズムを視野に入れる必要があるからな
普通、考え得るか?こんな糞ロジック?
そう思うって事はあなたが実務には向いているが学問には向いていないって事だろう まあ実際使う事を想定してたらこんなの思いつく方が凄いってレベルだが
でも、計算が収束しない時はこういうやり方したくなる。 たいていバグで収束しないのだけど。
結構昔に見たことがあるなぁ。と思ったらjargonファイルにもあるのね。
>実装があまりにもお粗末なので修正 誰か知らんが余計なことをw
いや、それでもまだひどくね? 実装例なんだから始めの引数がなければ100にして整数にしたときに1未満なら異常終了とかんな処理は余計だと思うんだが・・・ shareSortメソッドにはこれでもかってくらいコメント書いてる割りにはoeTranSortメソッドにはないし・・・ 単にインデント整理して色つけただけじゃねぇのって感じがするんだが・・・
ボゴソート遅い! ためしに処理系のrand()使って実装してみたけど 15要素ぐらいで2、3分まわしても終わらないわ……。 乱数体系がよければ終わるのかなあ……
>>115 処理系のrand()はダメだろw
大抵の実装じゃ、最下位ビットが反転されたものが交互にでてくるぞ。
終わりがないのが終わり。 それが奇偶転置ソートレクイエム。
do { } while (swap回数); にすりゃいいのか。(宣言と初期化とインクリメント2箇所略) でも野暮ったいコードになるな
ソートなんて大概泥臭くなるもんさ と知ったか言ってみるテスト
StringBuffer buf = new StringBuffer(); buf .append(hoge) .append(hore) .append(fuga) /* これが数百行続く */ .append(hage);
>>118 のリンク先のコードを書いた奴と、
>>87 (が書かれた時点)のリンク先のコードを
書いた奴って同一人物なんだな。
>>122 は馬鹿。これよりはマシ。
String str = new String();
str = str + "hoge";
str = str + "hoge";
str = str + "hoge";
str = str + "hoge";
/* これが数百行続く */
str = str + "hoge";
String str = "hoge" + "hore" + "fuga" + /* 数百文字列続く */ + "hage";
126 :
仕様書無しさん :2008/02/22(金) 07:21:16
sortとrandは何十年経っても未だ語られる奥深い世界だな。
128 :
仕様書無しさん :2008/02/22(金) 07:44:14
>>127 ですね。
俺、DelphiからJavaに移ったばかりの頃に
SQL文生成するのに、
>>124 をやっちまっただよ・・・。
O/Rマッパとかまだなかった。懐かしいな。まだ多分動いてる・・・。
やっぱりpascal文字列は一番偉いと思うんだけどなあ。
>>124 ってJava入門者にまず教えた方がいいと思うんだ。
オブジェクトや参照の考え方が判るじゃない。
入門者じゃあ 何そのめんどくさいの よくわかんね 動くんだからStringでいいじゃん というオチ
>>125 が最低だと思うんだけど釣り?
あとから hoge hoge fuga foge とかにしたくなったら
String継承すれば済むし、読みやすいし。
継承……?
>>131 あんたの方がつりっぽいけど
マジレスすると
>>125 はバイトコードになった時に
よろしくやってくれてる(はず)。
>>133 >バイトコードになった時に
これも釣りだな
>>122 って全体で1文だったのかw
StringBuffer buf = new StringBuffer();
buf.append(hoge);
buf.append(hore);
buf.append(fuga);
/* これが数百行続く */
buf.append(hage);
だと思ってた
むしろリテラルだったらわざわざ連結する必要がないじゃのいこ
String の連結と StringBuffer にこだわってた時期が俺にもありました。 ループの中でもなければ何の影響もないっつーの。
「数百行続く」もしくは「数百文字続く」の話の真っ最中
確かに最終的な動作で言えば大して違いはないってことになるんだろうが、 mutable/immutableの違いにこだわらない奴ってのは適切なクラス設計が出来ない奴。
StringとStringBufferの連結って……速度に結構な違いが出てくると思っていたのだが、実際はどの程度なのかね。 まぁ、速度が気にならないケースだったら、拘らないのも分かるけど。
10行ぐらいでできるんだからテストしてみなよ
そんなおまえらには悪いが いまやStringBuilderの登場で StringとStringBufferが涙目www
現場レベルだとなかなかjdk1.5依存はなあ・・・・。 しかたなく new Integer(int)する事も多し。
1.4のEOL移行期間は今年の夏(というか7が出るタイミング)までの見込みだったな。
お前ら、Formatterクラスのことも忘れないでください。
>>146 StringBuilderはStringの補助的なクラスだと理解しているが?
StringBuilder って 1.5 から導入なんだねえ。 なんかずっと昔、StringBuffer よりいろいろ不都合の多い "StringBuilder" って無かったっけ? そんで StringBuffer の登場で StringBuilder 涙目wwwみたいな事があったような.。。。 でも StringBuffer って 1.0 の頃からあるしなあ。 あれは悪い夢だったんだろうか。。。
初期コストが若干違うだけでほとんど変わらないStringBufferとStringBuilderじゃ 今後もStringBufferの方が使われていくことだろう。
まあStringBuilderはコンパイラさんが自動的に使ってくれるだけで十分だな。
みんな同期と非同期の違いはちゃんとわかってて言ってるよね?
非同期の桜
152はわかってないね。
同期はクロックにあわせて動作する回路のことだろ 例えばD-FFのCLKにクロックを突っ込めばそれは同期回路だ 非同期はクロックにあわせずに動作する回路のことだ D-FFでたとえるならCLKに前段のQをつないだら非同期回路になる
I/Oでデータ待ちでWAITするのが同期。 WAITせずに戻るのが非同期。
同期は同じ時期に入った人の事だ 非同期は・・・えーと
160 :
仕様書無しさん :2008/02/24(日) 08:04:36
>>159 自分より後に入ったのに、自分の上司になる人のこと
>>156 分かってないのはおまえ。
ソースみてみろ。
synchronizedがあるかないかだけの違いじゃん 両方同じクラスを継承してるし
>>157 たまにクロックドメインの境界で
バス信号をFF2段で受けて同期化処理したつもりになってる
回路見かけたりするよな
それも量産中の製品とかで
>>163 synchronizedにかかるコスト、わかるよな?
>>164 が難しい話をしててかっこいい
くそっ、大学で論理回路の授業受けたのに
休んだ瞬間に後輩に追い抜かれるだろうな
>>168 そこまで層の厚い会社なら学んだ知識を放置することは無いんでは?
せっかく非同期にかかってたのに
関数の長さが500行もある・・・ ソースのインデントが深くならない様に、ifの条件が10個ぐらいある・・・ 直値使いまくり 関数のパラメータがvoidで、グローバル変数渡し こんなPGのおかげで、僅か1行かえたいだけなのに、別の部分変更しまくりw
>171の追記 >171のPG書いた人に俺のソース(関数短い、関数パラメータ渡し、defineとか使ってる)のPGを 「面白いプログラム書いてるねw」 と言われました・・・ かんべんしてww
メイン関数で2000行、5000行なんてザラ 一処理一関数にしないとわかりづらいって文句が来るよ ('A`) 読むべき所をあちこち飛ばされるとこんがらかる、だとさ ('A`)('A`)
関数の出口は一箇所にしろって話 ありえないと思ってたけど、 自分で逆アセしておっかけるとき、CallとRetが1対1だと分かりやすい。 なにしろ普通に逆アセしても、CallとかJampの飛び先にラベル入ってないし。 高度な逆アセなら違うんだろうけど。
高級言語の話しようぜ
ところで、アセンブリ使い込んでる香具師がJampなんて書くと思うか?
普段jmpと書いていれば迷いや間違いはありうることだろう。 しかしこれを気にするあまりbrunchと書いてしまわないように注意が必要だ。
brunchはtrunkのせいで間違える可能性が高いと思うぜ!
処理に入る前にエラーチェックするときって、 if (hoge1) { return false; } if (hoge2) { return false; } if (hoge3) { return false; } if (hoge4) { return false; } 本来の処理 と書いたほうがわかりやすいと思う。 これを出口は1つとかすると、 if (!hoge1) { if (!hoge2) { if (!hoge3) { if (!hoge4) { 本来の処理 } } } } こうなるけど、どっちが読みやすいんだろう。
そういうときにこそgotoだろう。
>>179 if ( !hoge1 && !hoge2 && !hoge3 && !hoge4 ) {
本来の処理
}
if(hogecheck(hoge1, hoge2, hoge3, hoge4)) return false; 2年後…… if(hogecheck(hoge1, hoge2, hoge3, hoge4, hoge5, hoge6, hoge1a, hoge8, hoge9, hoge0, fuga, hoge1b, hoge2a, hoge2b)) return false;
>>181 Cだとエラー原因をエラーコードで返したいことがよくあるが、その方法だと対応できない。
>>179 の下のタイプでインデントがぐちゃぐちゃだと
マジでテロ行為にしか思えないぐらいきつい。
インデントなおすと嫌な顔されるし…
>179 俺はその前者の書き方をしている 後者の書き方もたまにするけど。 >181の書き方は、アホPGの書き方とおもってるw
>185 要するに、>181は変更に弱い書き方という事でおk?
>182 構造体使えばおkじゃね?
>173 今、ソースみててそのあちこち飛ぶから面倒というのが理解できたw パラメータが全てグローバル変数渡しなってるアホソースだと、 関数化して1関数当たりの長さを減らすより、1つの関数を長くかいてあるほうがまし どこで変数がセットされるのが追い切れない。もうダメポorz もちろん、引数渡しろよという話だけどな
>>186 そうか?
俺は>179の後者の方がアホだと思うけど
>>189 それを言うなら、最初から
>>179 の前者で返り値を色々と変えておけば無問題だったんだよ。
if (hoge1) { return ERROR_HOGE1; }
if (hoge2) { return ERROR_HOGE2; }
if (hoge3) { return ERROR_HOGE3; }
if (hoge4) { return ERROR_HOGE4; }
本来の処理
return OK;
とかな。でもそうすると
>>179 の後半が成り立たなくなるだろ?
つまり
>>179 では返り値を変えることなんて最初から考えてなかったんだ。
それを後から言い出すから「あとだしジャンケン」と言われるんだ。
if (!hoge1) { if (!hoge2) { if (!hoge3) { if (!hoge4) { 本来の処理 return OK; } return ERROR_HOGE4; } return ERROR_HOGE3; } return ERROR_HOGE2; } return ERROR_HOGE1; できなくはないけどアホコードだな。
ただ
>>189 の書き方だと,関数の入り口と出口にトレース出力噛ます
良くあるデバッグ方法が使えないという問題がある
>>195 int foo() {
if (hoge1) { return ERROR_HOGE1; }
if (hoge2) { return ERROR_HOGE2; }
if (hoge3) { return ERROR_HOGE3; }
if (hoge4) { return ERROR_HOGE4; }
本来の処理
return OK;
}
なら、
int foo() {
int ret;
log("entering foo()");
ret = _foo();
log("exiting foo()");
return ret;
}
static int _foo() {
if (hoge1) { return ERROR_HOGE1; }
if (hoge2) { return ERROR_HOGE2; }
if (hoge3) { return ERROR_HOGE3; }
if (hoge4) { return ERROR_HOGE4; }
本来の処理
return OK;
}
でいいじゃん。
結論的には、>179の前者の記述が保守や可読性に優れているという事でOKかな 実際は、>194みたいなネストが深いプログラムをよく見るけどorz
途中returnが駄目だ!だの gotoが駄目だ!だの 盲信したがために余計駄目なコードになる例は後を絶たないのだ、というお話でいいんですか
>>198 誰もgotoの話なんてしていないと思うが。
>>180 で一応話は出てる。まあ誰も反応してないけどな。
ifを書いたときは必ずelseも書けというようなコーディング規約があると・・・ えろい人の思いつきはマジ怖い。 現場の誰もそんな事してないけど、その人の中ではまだ有効らしい。
>>198 goto濫用の厨房コードも後をたたないけどなw
goto乱用 ダメ、ゼッタイ。
>>201 それは空のelse{}ができるだけだから醜い以外の害は少ないから俺は許せる。
まったくもって良いとは思えないけど。
ifをネストさせるくらいなら、 判定用の変数を用意すればいいのに。
>>204 たまに見かけるコード
if (x == y) {
}
else {
やりたい処理
}
素直に
if (x != y) {
やりたい処理
}
と書いてはいけないらしい。
条件文が否定になるとわかりにくくなるとか。
乱用と適用は違う
>>196 エラーチェック部分と実際に処理する部分は分けたほうがいいやね。
if ( x < y || x > y ) { やりたい処理 } じゃダメなのか?
いやいや
211 :
204 :2008/03/14(金) 22:56:36
>>206 空のelse使うんじゃなくて、そういうことなら、流石に酷いルールだな
ただ、上のほうが仕様書をそのまま表していて分かりやすいとかで使うときもある。
とはいえ、使うのを強制させられるのは正直簡便だなぁ。
条件の中にリソースの確保チェックが混ざってて、対応する解放処理が必要なら、 >179 の後半も生きてくるでしょ。
213 :
212 :2008/03/14(金) 23:31:57
あ、 C の話ね。 C++ なら RAII 使うから必要なくなる。
こういうのはよくやる (・∀・) if((a==1 && b==1) || (a==2 && b==2) || (a==3 && b==3)){ ; // この場合は処理しない }else{ やりたい処理 }
信じがたいことだが、ド・モルガンの定理を知らないプログラマーは、多数生息しているらしい。
何この糞コテ
定理? 法則? 意味は同じ?
ド・モルガンとド・モアブルが紛らわしくて困る
ド・モルガンとド・ブンバ・ラが紛らわしくて困る
さすがにド・ラ・ヴァリエールまでは出てこない
>>215 問題は仕様書を書く奴がドモルガンを理解しているとは限らない。
そして、仕様書とコードが隔離しているほど後で読むと混乱する。
だから仕様書にあわせてドモルガンを適用しないのは戦略としてありと思う。
ただ、使ったほうが綺麗になるケースもあるから線引きが難しいけど。
仕様書なんて後から見た奴がすんなり分かるようにわざわざ論理圧縮かけた表現にはしないよ コードは圧縮かけた結果元の表現がすぐ連想できないやつになってしまった場合は 本当はこういう意味なんだよとコメントするだけ コメントしちゃいけないコーディングルールがあったり コメントできない言語の場合どうすればいいかなんてシラネ そんなクソプロジェクトなんかやったことないからな
じゃあ。コメントは必須なのか。
>>222 コードのほうは「圧縮」かけるのが普通なの?なんで?
>>224 仕様上は、1でなくて2でなくて〜9でない時にAを行う って記載されてて、
集合が1から10迄である事が保証されてる時は、
10の時にAを行うって書くよね、ソース上は。
適切な例で無かったらすまない。
>>225 意味がわからない。なんでわざわざ仕様とコードを乖離させるようなことするの?
「10の時にAを」にするのが絶対に正しくて、そうしたほうがいいと思うなら
仕様の記述を変えさせるべきじゃないの?
>>226 > 仕様の記述を変えさせるべきじゃないの?
それができないか、するだけ無駄と思ってコメント付けるだけにしたのでは?
228 :
225 :2008/03/15(土) 14:58:55
>>226 仕様では、アメリカ人・日本人・中国人〜インド人が記載され
記載以外はAを行うと記載されていた場合、
ソースでは1:アメリカ人 2:日本人 3:中国人 9:インド人 10:それ以外 と定義して、10の時にAを行う
というような事を想定して書いた。
またしても適切な例ではないかもしれない。
いや、たぶん。「仕様をちゃんとレビューしろ」なのでは?
222が出てくるまで待とうか
>>225 このパターンはあとで死ぬんだよなあ・・・
作り逃げならそれでいいんだけど。
死なないのは、その集合が月とか曜日とか
変わりようがない場合だけだな。
>>226 の態度が正しい。
正しい態度がいつも取れるとは限らないけど。
>>225 次年度でAが11までになるような拡張をする仕事を受けさせられるという結末
その1とか2とか9とか10をコードに埋め込んじゃ駄目だ。 外に出しなさい。 #もちろんこれは「中田氏は危ない」という洒落交じりのチャチャじゃないぞ。
まあそういうのは当然enumか#defineするよな。
236 :
234 :2008/03/16(日) 14:11:57
>>235 いや、それは第一段階だよ。
外部ファイルにすればソースの修正が不要になるでそ。
で、設定ファイルのバージョン間互換性確保の手間が 呪いのようにのしかかってくるというオチか。
いきなり話題のレベルが落ちたな 例が悪い
マジックナンバーはいけないというから、エラーコードなどを#defineするけど、 こういう書き方をよく見かける #define ERR_CODE_01 1 #define ERR_CODE_02 2 #define ERR_CODE_03 3 。。。 マジックナンバーと何が違うんだ?
別に ERR_CODE_01 を 100 とかに 簡単に変えれるメリットは残ってるじゃないか 格段に読みにくくなるが
>>239 とりあえず、その番号がエラーコードであるということがわかるというメリットはあるな。
ただ1とか2とかでは正常コードかエラーコードか一目瞭然じゃないだろ。
定数をシンボル化する目的には、定数の意味を説明するということもあるので、 そのようなシンボルではメリットの半分しか享受できないな。
エラーコードとかdefineして「0、1、2・・・」って振ってるのよく見るけどなんでenumにしないのか疑問でしょうがない。
('A`)マンドクサイ
今までの経験上 enum を使う人はそれなりにコードがきれいな気がする。
enum { ERROR_CODE_01 = 1, ERROR_CODE_02 = 2, ERROR_CODE_03 = 3, ... }
まあなにごとも例外はある
enum は 「いーなむ」 だよな?
いにゅーむだなんて言わないよ。
miscellaneousをmisc.とかよく略すけど、 これも同じで、みんなどう読んでるんだろうっていつも思う。 俺は面倒なのでミスク。
みしぇれいにゃす
いやいや、そっちじゃなくてmiscのほう。 あ、miscを読むときは略さないでみしぇれいにゃすと読むって事かな?
みっしゅ
ミッシェル
まいすけ
わちきも「みすく」 でもcharを「ちゃー」はなんか背筋がうぞうぞするので「きゃら」 んー、一貫性ねーなぁorz
「みすく」だが、「きゃら」にはむしろ虫唾が走る
おれフランス人だから「シャル」って読んでる。
「シャア」だろ常考
むしろ「カル」
シャルル・アズナブール
チャー・アブノーマル
ありがと チャー
>>265 アワード見たね。
おれはイーナムにミスクにキャラだなー。
char*をキャラピカと呼んでた人がいたがなんかかわいくてよかった。
その人の会社のローカルルールだったのかな。
“同じような”どころか、“全く同じ”内容のクラスが いくつもあったので、まとめられないかと訊ねた。 他愛もない答えが返ってきたので、ははと軽く笑った。 曰く、 「それをすると、画面機能テストの分析シートを作る時に ソースコードの行数をうまく数えられない。 500行の画面機能1と、500行の画面機能2で 同じ1000行のクラスAを使う時、 分析シートには 画面機能1.cpp = 500行、クラスA.cpp = 1000行 合計1500行 画面機能2.cpp = 500行、クラスA.cpp = 1000行 合計1500行 と書き、トータルで3000行とカウントされる。 しかし実際に存在するコードは2000行だ。分析シートと実際の計算が合わなくなる」 と。 なんだ。 狂ってるだけか。はは。
のべ
>201 MISRAのことかー ありゃくそ規約だった
何のためのクラス化なんだろうなと思ってしまうな
MISRAのどの辺がくそなの?
いくつかの項目が気に入らなければ、採用しなければいいだけの話。
>272 しかし採用を決めるのはCのプログラミング経験がないか あるいはガチガチのMISRA-Cしか知らない連中だから…… 伝統は引き継がれる、それが悪しき伝統であろうとも
伝統なんて呼べるほど長くないだろ,プログラミングの歴史は
開発部長のコード CButton* button1 = (CButton*)GetDlgItem(IDC_BUTTON8); CButton* button2 = (CButton*)GetDlgItem(IDC_BUTTON14);
それなんてサンプルコード?
ボタンが14個もあるサンプルなんてすげーイヤ。 しかもそのうち2個だけを特別に処理するとか考えると鼻水垂れる。
始めにボタンをコピペしまくって最終的に8と14だけが残ったとかじゃねぇの?w
変数を通し番号で管理するルールほんとやめてほしいよ 意味で名付けろ意味で
>>279 1番目に押すボタン
2番目に押すボタン
3番目に押すボタン
・
・
・
[ 8 ] [ 14 ] というボタンだったり
それきっとファンクションキーなんだよ! 14・・・・・?
うちのキーボードにはF16まである。
>>278 引き継いだダイアログのリソースには、
IDC_BUTTON2
IDC_BUTTON8
IDC_BUTTON14
IDC_BUTTON15
IDC_BUTTON15_2
の5つが置かれていました。
[4] [8] [15] [16] [23] [42]
Label13.Height = 5000 表示させない為らしい
……それにしてもなぜ0でなく5000なんだ 斜め上すぐる ふと思ったが実はTopのつもりだったとか?
ラベルサイズを大きくして下のコントロールを覆い隠してるとかw
age
社内で使うJavaライブラリを保守してた時のこと。 「ライブラリの性能が悪いため修正しろ!」と本部長経由でねじ込んできた馬鹿な部署があった。 ライブラリはBigDecimalなのが悪い、longで書き直すと30倍速いと、ご丁寧にテスト結果がついてた。 1と比較する条件分岐 if(new BigDecimal("1").longValue() == hoge){・・・} 変数に5を代入する hoge = new BigDecimal("5"); あと四則演算はすべてBigDecimalのメソッドで行っている。 テストコードを書き直すとlongとそんなに差がない結果になった。 作ったプログラムの性能が悪くて顧客ともめてたらしい。それをライブラリのせいにしやがった。
再現せずで返しとけよ もちろん実測値つきで
んー、煽られ損だね。 お疲れ様。 あ、もし、本部長経由でお詫びの品とかその類があったら、 お裾分けとか考えてくれるなどしてもいい。
継承したフォームのいらないコントロールを隠す為に 大きめのボタンを配置してる画面があったな。 これがoverrideって奴ですか?
確かにoverにrideしてるなw
そのコントロール、visible や enable 属性ないの?
というか、いらないコントロールができるような継承は間違ってると思うんだけど。
そのノリで行くと、めったやたらにインスタンス作りまくって メモリ馬鹿食いすればoverloadってか
じゃあ、そのいらないコントロールはunderhideだな
おまえら面白いな w
何を今更
303 :
292 :2008/04/12(土) 09:08:58
>293 見た目明らかなのにテストしたのは実測値を作るためです… そのプロジェクトの対策会議で回答するんだが、出たかったが上司が出た。 >294 どうも。 会議に出た上司から、「資料ありがとうね」で終わりました。 お詫びの言葉はなかったらしい
まあ上司にしてみれば周囲の部署との無用な軋轢はつくりたくないんだろうな。 しかし部下に対してはもうちょっとフォローがあっても良さそうなものだが。
305 :
orz :2008/04/13(日) 01:57:52
if(val==true){ return true; }else{ return false; }
return !!val;
!!はイデオムっちゃーイデオムだが、あんまり使わない方が万人向けな気がする。
return val; とどこが違うの?
違わないからスレタイなんじゃないかw
いや,val==0 ならば !!val は 0 で変わらんけど, val!=0 だと val の値に関わらず !!val は 1 だぞ.
!!は(整数の場合)必ず0か1を得る方法。 Rubyみたいな nil, falseが偽でそれ以外全てが真な言語でも nilとfalseをfalseに、それ以外をtrueに出来たりするな。
>>312 ところが
>>305 の場合はtrue以外はfalseになるのだから、
!!valと等価ではないんだな、これが。ありがちな罠。
>>306 が正しいけど、それだと情報が失われるから
return val;
が現実には正しい。
315 :
314 :2008/04/13(日) 14:08:05
Falseと比較するのが正しいとかゆってるのがプロだけど、 僕はTrueやFalseと比較すること自体が間違ってると思う。 TrueやFalseは、それ自身が答えなんだから答えを質問するなと。
半角英数使え屑
>>314 と
>>315 って矛盾してね?矛盾っていうほどでもないけど・・・
同じ人間の発言とは思えない
上のようなやりとりをなくすために 各言語のboolean型が作られたんじゃないのか?
320 :
仕様書無しさん :2008/04/13(日) 15:54:42
<>
322 :
仕様書無しさん :2008/04/13(日) 17:14:25
>>319 boolean に言語間の互換性はない。
あと、
if(val==true)
{
return true;
}
else
{
return false;
}
だけど、言語は何?普通に考えるとC++あたりだと思うんだが、
もしそうなら、コンパイラに最適化されて終わり。
return val;
と同じ意味。
問題にしてるのは実行速度じゃないんだけどね
>>305 は、
・真と見なされるtrueでない値に対してfalseが返ることを問題にしているのか
・return1行で済むだろと言いたいのか
どっちなのか。
325 :
322 :2008/04/13(日) 17:35:53
>>323 このスレ、Cプログラマが多いのか?
>>324 たぶん、return true; で済むところを回りくどいことをしていると
言いたいんだろう。
それ以上のことを言いたいなら、言語を明らかにしないとだめだし、
ソースも不足している。
なんか
>>324 のコードが問題ないと思ってるやつが多いな。
問題ない処理系あるんなら教えろ。
TRUE ≠ TRUEだから問題なんじゃないか
1.true 2.false 3.trueでもfalseでもない値 の3.の場合の処理を考慮しろってことか? そんなバッドノウハウ考えたくない。
>>326 324というか305のコードだという前提でレスするが
とりあえずsunのjdkなら問題ないと思う
ここで「問題」というのは
exists val s.t. (
>>305 のルーチンがreturnする値≠val)
が真という意味だとして。
>>328 言語仕様上は
1 true
2 false
3 null
の3通り考えられるだろう。
ぬるぽだから要修正で終わりだけど。
まてまて何の言語か確認して話そうぜ。 Javaならtrueとfalseを取る変数はnullになることはない。 Cなら実体は整数だろうからなんでもあり。 Rubyならtrueとfalseとnilがある。
すまん305のコードでrubyはないな。
true/false なら C++ だろ。そうなると、 C 以上になんでもありなわけだが。
C++ならtrue/falseはbool型の定数でbool型の比較なんだから問題ないだろ
335 :
仕様書無しさん :2008/04/13(日) 19:28:01
もう嫌になってきた。 オマイラがびっくりするような糞コードを生成してる。 せっかくだからついでに縦読みでも仕込んでおこうかな。
最適化されるから問題ない、とか言い訳する奴、氏ね
>>335 縦読みはともかく、糞コードは前からだろ
>>337 >オマイラがびっくりするような糞コード
^^^^^^^^^^^^^^^^^^^^^^^^^
ほう...
340 :
仕様書無しさん :2008/04/13(日) 20:10:16
>>337-339 もうね。書いてる俺がびっくりだよ。
これいいのかよ?まぁいいや。の繰り返し。
341 :
仕様書無しさん :2008/04/13(日) 20:11:19
いつか、このスレの誰かが後始末するのかもな。 先に謝っておくよ。 ごめんな。 できれば縦読み気付いてくれよ。
出合ったら「作品」を晒してやるよw
うちの会社なんてASP.NETのシステムからメールを出す方法が判らず、 BASP21.DLLをインストールして使おうとしてやがったんだぜw
もう オマ せ
346 :
仕様書無しさん :2008/04/13(日) 21:17:12
・C言語 C99非対応なら typedef enum _bool { false, true } bool; 一般的には、int 型で実現して以下の定義をしとく #define FALSE 0 #define TRUE 1 C99準拠 stdbool.h をインクルード ・C++ bool は基本データ型 true か false しかありえない。
VB.NETは、C#の X x = new X(); を dim x as X = new X と書くのだけど、短くして、 dim x as New X とも書ける。 VB6出身のPGが、いまいち分かってないみたいで、変数は全部下の短いほうの形式で宣言してるのが気になる。 class A dim x as New X Sub New() ' コンストラクタ x = new X end Sub end class とか、全部このパターン。
分かってるんなら教えてやれよ
349 :
仕様書無しさん :2008/04/13(日) 21:54:06
ソースコードではないが、要求書に愚痴だけを書いたやつがいた。 しかも、レビューまであった。しかも、そのまま、外注に丸投げ。。。。
>>348 別件で「VB.NETではこういうふうに書いたほうがいいですよ」みたいな話をちょろっとしたことあって、
そのときは、うんうん、なるほど、みたいに納得してたけど、その後もいっさい改めてなかったんで、
スタイルかえるのがイヤなのか、理解できないのかどっちかなんだろうなと思って、いまいち教えるのに
ちゅうちょしてしまうというか。
>>350 コーディング規約決めるか
社内メールにプゲラッチョ
コーディングとかいって
その部分を晒してそいつをいじり倒す
どっちかで解決するだろう。
>347 それはVB6でも意味的には2重にインスタンス生成しとるんだが。 (実際には「コンストラクタ」内でしか生成されん、はずだけど) VB.netがわかっとらんというより、クラスとインスタンスとか その辺から既にワケワカランでないのか。
>>346 C++ならありえない
と、俺も思いたかったし、そういう使い方しかしてなかったが、
VCでは100とかの値を入れる事が出来るし、そういう使い方をする奴がいて目ん玉飛び出た。
先輩だったから、文句を言うのはよして、とっとと修正した。 もちろんその会社は辞めた。
>VCでは100とかの値を入れる事が出来るし まさか、boolとBOOLを混同してやいませんかね。
あれ? bool == 1 byte BOOL == 4 bytes じゃねの? >355
boolはtrue か false しかありえない BOOLはしらね
飛んでイスタンBOOL 人の気持ちはシュール・・・
>>331 newしなければnullにならないか?
360 :
仕様書無しさん :2008/04/14(月) 09:06:12
>>359 Javaの話をしてるなら、boolean型はプリミティブだ。
nullになることはありえない。
今見ているソース(C言語) char* ptr; char buf[100] void set_なんとか( void ) { ptr = buf[30]; } void set_なんとか2( void ) { ptr = buf[60]; } void なんか(void) { ptr+5=a } もう訳がわかりませんw
>392 「;」がないとか関数名とかは適当だが 内容的にな。 要するに、ポインタをグローバル経由とか、ポインタ演算に+使ってるとか・・・
ptr+5 = a 代入の左辺に演算子置けたっけ
*(ptr+5) とか &buf[30] なんだんろうけどさ、 仮にもマなら2ちゃんのレスとは言えもうちょいマシに書けよw
書いた奴も読んだ
>>361 もどっちもどっちということで。
>>352 意味的って何だよ?適当なこと書くなよアホが
>>352 二重でってのはちがわなくね?
VB6でdim x as New X宣言すると、
xを参照する箇所すべてでインスタンスが作成されてなければ作成するような処理
(If x Is Nothing Then Set x = New Xみたいなの)が内部で実行されちゃうから
遅くなるとかそゆのは聞いたことあるけど。
>364-365 正直、すまんかった
>>360 Java5の話なら、ラッパークラスと対応するプリミティブ型はコンパイラが相互変換してくれる。
つまり、ある変数がtrue/falseと比較や代入できるなら、その変数はbooleanかBooleanのどちらかだ。
Booleanの場合、nullはありえる。
>>370 オートボクシングのせいでぬるぽったりするとむっとするな
372 :
仕様書無しさん :2008/04/14(月) 23:56:18
>>353 値が切りつめられる。代入後の値をみると良い。
373 :
353 :2008/04/15(火) 02:04:25
>>372 直接代入ではなく、unionを使ってやってくれてたんだよ。
union { bool b; int i; }; なuたいして、u.i=100; if( u.b ){ }みたいなコードってこと?
>>374 それに2を代入したらFALSEになっちゃうのかな?
256を代入したらfalseかもな
未定義だけど、 if( u.b ) { /* 来る*/ } if( u.b == true ){ /*来ない*/ } if( !u.b );else { /* 来る*/ } if( u.b == false ); else{ /*来る*/ } になる可能性が高そう。
つ _Bool
いつも思うんだけどお前空気読めよ
えっ、俺!?
そうだよ、お前だよ、お前
>>378 何の話か理解できない糞コテは黙って死んでろ。
>>382 専ブラ全盛のご時世、嫌いなコテをNGもせず
明示的にレス眺めて噛み付くって馬鹿じゃないの?
>>384 そうか?お前の知ったこっちゃないと思うが。
屑コテが氏ねば全て丸く収まる話じゃね?
「工夫していない」ってことだから、ここがマ版だということを考えるとバカといって差し支えないかと。
388 :
382 :2008/04/17(木) 12:21:38
専ブラで、
>>384 の言うとおり狙って叩いてるわけだが。
(「専ブラ全盛」の真偽はともかく)
>>387 >「工夫していない」ってことだから
間抜けな指摘ありがとう。
このコテが来るとこういう流れになるからヤなんだよ・・・ 馬鹿が馬鹿を喚ぶみたいな たとえNGにしていてもウザいのには変わりないわけで
>378 が表示されない俺は一瞬 >377 が >379 に突っ込んでいるのかと思った。
×一瞬 >377 が >379 に突っ込んでいる ○一瞬 >379 が >377 に突っ込んでいる
突っ込んでいるって書かれると、ボケのほうじゃなくて、アーッのほうを連想するんだけど。w
それは2chに毒されすぎ
アッーじゃないか?
アッー!だろ。 そんなことより、や ら な い か ?
「やらないか」に「?」はいらない 差しつ差されつなかよくな
>>285 昔の会社に、VCが吐き出すデフォルトの"IDC_BUTTON1"などのIDを
わざわざ"IDC_BUTTON_01"とか"IDC_EDIT_08"とか書き直している奴がいたな。
「"1"じゃなくて"_01"のほうが綺麗に並んでわかりやすいでしょ」とか言ってた。
馬鹿すぎ。
>>398 こうなるよりいいな。
IDC_BUTTON_3
IDC_BUTTON_25
IDC_BUTTON_8
俺もゼロパディングする派だけどなぁ。
400は言ってる意味が分かってない
どうせ変えるなら意味のある名前にするかな
>>399-400 コントロールに無意味な数字を使うなよということ。
しかもわざわざ自分で修正してまで。
俺だったら、片手で数えられるくらいのボタンしか入れない規模だったら あえてデフォルトのままにするけどな。 ・・・あれ?
俺は胸をパッディングしてる奴を 見ると怒りを覚えるな 偽装いくない
偽乳のことか!!!!11111111
>>403 そのボタンが同じ機能の羅列なら別に番号でもいいと思う。
たとえばシート1シート2・・・
たとえば1ぺーじ2ぺーじ
たとえばセル1セル2
たとえば追加変更削除更新...
switch (number) { case 001: number = 128; break; case 002: number = 064; break; case 004: number = 032; break; case 8: number = 016; break; case 016: number = 8; break; case 032: number = 004; break; case 064: number = 002; break; case 128: number = 001; break; } 008がコンパイル通らない時点でおかしいと思ってくださいお願いします
0つけると8進数なんだっけ?
これはひどい
盲点というより。なんでそんな書き方するんだろうね
桁数合わせのつもりだろうけど、数字が密集して逆に見難くなると思うんだけどな。
スペース入れろよ
このスレ見てると思うんだけど、こういうコード書いた奴は 「ウホッ!!いいコーディングスタイル」 とでも思ってるんだろうか・・・
プログラミングのことなんかどうでもいいと思ってるんだろう。
409が問題になる言語仕様も困ったものだけどな
010が8を意味するなんて直観的じゃないよ
>>417 後で読んで頭が痛くなるコードってのをよく書いちゃうんだけど、
思い返すと中途半端に時間があったりするときに量産されてる気がする
考える余裕はあるけど煮詰める余裕のないとき、というか
完全な趣味だったり、あるいはデスマってたりしたときのコードは大概普通だ
>>419 0x00で16進なら8進も0*00で統一すれば良いのにな
そうすれば0*00で2進数も表現できるし
google様は0oが八進で0bが鰊
&B &O &H あー、でも&Bは最近じゃ使えないか……
>>422 N88-BASICでも&Bは使えなかったぞ。
>>419 C言語由来のなにかがあえて8進記述を削除してたな。
C#だったかPerlだったか。
わざわざ8進表記することなんか今はないんだから、
C99ででも削除しちゃえばよかったのに。
>409は素直に number = 128/number でいいようだけど 除算の負荷を避けたのか除算すら思いつかなかったのかどっちだろうw caseに含まれてない値があり得るなら除算では挙動違っちゃうけど
>>409 初期のC言語は"008"も8進数として解釈された。
「"8"と"9"は8進数ではない」と定義され直したのは、かなり後。
値としてはいずれにせよゼロだからどうでもいいけど、 ただの 0 ヒトケタはCでは8進数なんだろか。
>401や>428のように具体的な事を書かずに「分かってない」とだけしか言わないレスが散見されるが なんか書いてよw
decimal_constant := non_zero_digit digit* non_zero_digit := 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 digit := 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 つーことのようだから、0 をポツンと書くと8進数なわけか。
>>430 octal_constantの定義はどうなってる?
>>433 >>430 じゃないけど
octal-constant:
0
octal-constant octal-digit
octal-digit: one of
0 1 2 3 4 5 6 7
つまり0一個でも8進数みたいだな。
じゃ、定数0は8進数ということで、 〜〜〜 イトフユ 〜〜〜
>>434 違うだろ
decimal-constant:
nonzero-digit
decimal-constant digit
nonzero-digit: one of 1 2 3 4 5 6 7 8 9
10進は1〜9で開始の場合
hexadecimal-constant:
0x hexadecimal-digit
0X hexadecimal-digit
hexadecimal-constant hexadecimal-digit
hexadecimal-digit: one of 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
16進は0xで始まる奴
octal-constant:
0
octal-constant octal-digit
octal-digit: one of 0 1 2 3 4 5 6 7
8進は0で始まる奴。
・・・
0は8進数なのか・・・
何進数でも0は0だろ
>>437 確かに0だが、内部では8進数で処理されてるんだぞ…
内部ゆーてもコンパイラの内部だからなぁ 実行時はどっちゃも一緒 気にしてもしょーがなし
10進数の整数0は単体では書けないのか なんとなく気分的に微妙な話だな
×進数に拘りすぎる奴って、数値を文字単位で捉えてる感じだな
コンパイラやパーサの話だから文字レベルの話だよ
>>438 なんでやねん。
内部の話なら、整数はすべて2進数にきまってるだろ、jk。
>>444 構文解析時に "0" というワードに遭遇したら
パーサはどう解釈する(少なくとも仕様上)か
って話をしてたんだろ
その時点ではまだ「2進表現された整数」ではないな
少なくともその部分の構文解析が終わって初めてそういう形にできる
void hfill(int x) // ソースの左半分がコード、右半分が { // ドキュメントときれいに分かれてる int left, right; // ソースをもらったんだ。コードと文 // 章がきちんとシンクロして進むあた left = x; // り大した職人芸なんだけど、これっ while(a[left]!=color) // てどこか一箇所でも変更が入ると大 { // 変なことになるよね。というか直す left--; // の俺なんですけど。
void hfill(int x) // ソースの左半分がコード、右半分が { // ドキュメントときれいに分かれてる int left, right; // ソースをもらったんだ。コードと文 // 章がきちんとシンクロして進むあた //俺の尻の穴に貴方の野太いちんぽぶち込んでくれませんでしょうか? left = x; // り大した職人芸なんだけど、これっ while(a[left]!=color) // てどこか一箇所でも変更が入ると大 { // 変なことになるよね。というか直す left--; // の俺なんですけど。 を思い出した
cut
直すやつはコメントを関数の前に置いちゃえ
最近、octal表現を廃止する言語とかあるけど、 Cでoctal表現を廃止したらNULLも無くなってしまうのか。 恐ろしい…
>>450 その場合、0始まりが10進に引き取られるだろうから無問題。
つか、0という記述ができなくても0x0を使ってだってNULLは定義できるじゃん。
>>452 問題は
for ( i = 0; i < 10; i++ ) {
これでiが不貞になることなんだぜ
浮気者
auto i = 0; iは8進数 i < 10 8進数との比較なので10は十進で8 なんてことにはならない
>>455 0が記述できないって話に突っ込んだだけなんだけど。
記述できない=存在しない
i を初期化する0が存在しない=不定
だろと。
ちがうな。 0 がなくてもNULLは使えるって話に、 for ( i = NULL; なんて書くのかよと for ( i = false; なんて書くのかよと
C だからってあまり低レベルな論争するなよ
>>456 10進数で「ゼロ」という値を直接書くことができない、というだけで
C/C++にゼロという値が存在しないわけじゃない
0と書けば8進数で「ゼロ」だから10進数の「ゼロ」と同じ値は表現できるし
実際それで問題無いからそういう仕様になってる
i = 0; が構文解析されて解釈された時にはもうソースに何進数で書いてあったかなんて関係無い
第一、その初期化の右辺に書くものは(変数iが整数型として)整数値であって、10進数ではない
これでいいんじゃね? i = ゼロ;
i = 0.0でも実害はないという罠
これで解決。 enum { Zero };
i=1-1;
ゼロ伝来以前のヨーロッパへタイムスリップした場合に備えて 歴史の改変を防ぐ訓練をするスレはここですか?
我が名はゼロ、十進数に対する反逆者である!
私がつくるものは全て本物だ。 報酬はスイス銀行のオールゼロの口座へ
____ / \ / ─ ─ \ / (─) (─) \ ゼロ・・・馬鹿な男だ | (__人__) | \ ` ⌒´ / ____ /ノ ヽ、_\ /( ○)}liil{(○)\ ふざけるなっ /ノ( (__人__) \ チカラ、チカラさえあればっ | ⌒ ヽ |!!il|!|!l| / | \ |ェェェェ| / ____ / \ / ─ ─ \ / (●) (●) \ 思い出した | (__人__) | 俺が・・・ゼロだ \ ` ⌒´ / ____ + ./ \ /\ キリッ / (●) (●)\ / ⌒ノ(、_, )ヽ⌒ \ 何故ならば私はゼロ | `-=ニ=- | 世界を壊し世界を創造する男だ \ `ー'´ / +
これでいいだろう? #define ZERO (2 != 1)
未だにC89強制する奴いて うざいわ
それONEじゃね?
2 - 1 だと思っているのか?
(2!=1)は真じゃね?
俺も2と1は等しくないような気がする
#define TRUE (1==1) #define FALSE (!TRUE)
気分的にはFALSEのほうをまず定義して #define TRUE (!FALSE) にしたいなぁ。
>>468 は見事な釣りだった。俺でなければ釣られているところだぜ。
素で間違えたのかw
そういう奴が上司だと、辞めたくもなる罠…
このスレ辞めちゃおうかな
辞めるのを辞めてくれ
やまてもいいけどねぎしもね
山かけもいいけどねぎまもね
やまだはいいけどおぐりいらね
座布団1枚はいいけど持って行ってはやめて
Dim blnFLG as Boolean 'フラグ
今日見つけたコード、カッコが理解不能。。。。。。。。。。。。 for(i=0;i<10;i++) {xxxxxxxxxxxx; xxxxxxxxxxxxx; xxxxxxxxxxxxx; xxxxxxxxxxxxx;} if文はこんな漢字でちた。。。。。。。。。。。 if(a==0) {xxxxxxxxxx; xxxxxxxxxx; xxxxxxxxxx;}
Windowsのバッチファイルみたいな言語(言語名を出すと特定されそうなので)でソースが2500本あるシステム。 しかもOS標準のファイルシステムじゃなくて独自のファイルシステムで動いてるので専用エディタじゃないと開けない。 そして専用エディタが糞。undo/redoがバグっててたまにソースが壊れる。もう死にたい。
>>487 にほ れたんですね、私にはなぜだかわかりません
491 :
488 :2008/05/28(水) 22:23:30
「
>>487 にほ うきアタック」の間違いじゃないですか、それなら私にも分かります
アホコテの相手すんな、アホども。
つーかこのコテ気持ち悪くね?
というか、死ぬべき。
糞コテは死ね
さすがにID出ない板だけのことはあるな
499 :
仕様書無しさん :2008/05/31(土) 10:39:54
コメントに疑問文が書かれてるとソイツ殺そうかと思う
今見ているソースコード { for() { { if() { ... } } } 何がしたかったんだろうw
>499 // ボク悪くないよね?
>>500 {
long l = 0;
...
}
{
List l = new List();
...
}
みたいなことをしたかった、とか
Hでそういうのをたくさん見た気がする。 public int nullpo(int aaa , int bbb , int ccc , int ddd , int eee , int fff , int ggg , int hhh int iii , int jjj , int kkk , int lll) 実際に使ってる引数はaaa一つだけ。戻り値も参照してない。 全クラス全メソッドpublicの奴。
お前はガッされたいだけちゃうんかと
期待していたのは否めない
>>500 C だと、ブロックの頭でしか変数宣言できないので、
長〜い関数の途中を修正して、新しい変数が必要になった、というときに
そこを新しいブロックでくくる、ってのはことはときどきやる。
「インデントしてねーw」って意味だったらどうしようw
ソース見ればわかると思うが半角スペは入ってる
そのブロックで囲んだ部分、抽出して関数にするチャンスなんだぜ
>>507 はいはい、Cでもブロックの途中で変数を宣言できますから
>>511 ああ、C99ではできるようになったんだっけね。
C99とかまだ一般的じゃないですから。
C99なんてどのコンパイラで通るんだよ
gccでとおりますがなにか?
gccはC99遵守できていない できそこない
は?オープンソースなんですけどw 自分で直せばいいだけの話 できないなら黙ってろって感じですねw
少なくともスコープ途中での変数宣言には対応してる
オープンソース厨は馬鹿ばっか
OSS房は共産主義回し者
C99に対応してないといえば、gccが対応してるとか抜かすくせに つっこまれると自分で対応しろという。それじゃあ通ると言った 前言を撤回して、自分でC99対応に書き直せばgccで通ると 云いなおしてほしい。
完全ではないが通る。んだろう。 ところで、C99対応があまりすすんでないから、新しいCの策定を止めていると聞いたな。
俺は、さっさと消えてほしい、でかめの変数とか使うときはくくるかな。 Cじゃあんまりないけど、Javaとか.NETやってたらGCが信用できないときがある。
えっ C99ってまだ使っちゃダメなの?
ダメってことはないけど、まだ使えない機能もあるってことじゃないか?
コンパイラが対応しているかどうかの問題だべ。 C++2005や2008なんてfopenでwarning出るんだぜ。
>>523 スコープぬけたところでフレーム切り捨てる
わけじゃないだろうに何を言っているんだか
>>527 GCの世代見てると、そうも言い切れなくない?
>>528 GCの問題じゃなくてスタックフレームの操作のタイミングの問題と思われ。
なんでスタックフレームとヒープをない交ぜに語るの?
オブジェクトはヒープに配置されるが、
>>523 のような状況では、そのオブジェクトへの参照はVMのスタックフレーム中に格納されるから。
GCって単語を見るとゴールデンクロスが思い浮かぶ俺は カタギのプログラマーには戻れないな、もう・・・
MSは?
残念w そっちは「モビルスーツ」だw
マックシェイク
>>533 が言いたいのは
モルガン・スタンレーか?
楽天マーケット・スピードか?
もれ そう
マジ 佐渡
if (a > 0) a--; b = a; え?
「一行で書いたからいいじゃないか」って言い訳されちゃうわけですね...
1行に書けばいい言語は何でしたっけ。
>>539 よくわからんがそれはb=--a;と書いてほしいということか?
>>542 if (a > 0)
a--; b = a;
と
if (a > 0)
b = --a;
は全く意味が違う。
if (a > 0) { a--; b = a; } なのか if (a > 0) a--; b = a;
>>542 条件を満たしていなくてもbへの代入が実行されてしまうことが問題
>>539 if (a > 0){
a--;
}
b = a;
こう書いて欲しかったんだよね。
ちがうだろ 書いた奴が何気なく1行にまとめちゃった心理として if (a > 0) { a--; b=a; } のつもりだったんだろうけど {} が無きゃ bにaの値が無条件に代入されてしまう、それもデクリメントしてないaが ・・・っていう問題だろ
わかったけど、どちらが正解かはわからないw
えー これからアホコード貼るヤツは改善例も貼り付けること
簡単に改善できるのはまだましってことだな。
どっちが正しいのかわからないから困るっていう話だろ・・・
どっちが正しいのか分からないから、簡単に改善できないと言いたかった訳で。 誤解させてしまったということは、自分自身できていなかったということで恥ずかしい限り。
世に間違いのネタは尽きまじ
漏れは必ず { } でブロックはっきりさせるようにしてるけど、 手癖で { } つけないという以外に、開発規約などで、つけないという方針が明記されてる場合もあるのかな? 一連の話題を呼んで疑問わいた。
「行数が増えて煩雑になるので、1行で済む場合は{}禁止」なんてアホな 規約の或る会社があって、そんな会社ほど無駄に長い関数のオンパレード... と妄想してみた。
{ } を使わないメリットってあるのかな
if(flag)break; if(flag) { break; } こんなに行数が違う! ・・・ってことくらいしか言えんな 後者も if(flag){break;} とすれば1行だし
555だけど >if(flag){break;} 1行におさめられる時はまさにこうやってる。 コードを追加して2行以上に分ける必要ができた時は、改行すればいいし。 だから { } を使わないのはどんな状況か、不思議。
文字数を極限まで削りたいような1行プログラマとか
なるほど。オナニープログラマーの為の仕様か。
デニスたんはオナニー好きで、ラリーはオナ禁好きってことか。
ifやforを1行に詰め込むとデバッグ時に追いづらくなるから、 必ず行を分けた上で{}も入れている。
うちはVBだからそんなの関係ないぜ
>>564 うらやましいと言うべきか、可哀想と言うべきか
コーディング規則、用語集がない現場はダメだな。 大卒で、かつソフ開もってるヤツ同士でも これらがないとコミニュケーションに苦労する。 あとはVB経験者にいきなりJAVAをやらせるような会社な。 そもそもWindows(.NET)とJavaVMってプラットフォームが違う時点で別世界。 六本木や青山にあるようなシャレたパン屋のオープニングスタッフを 普段はナン焼いてるインド人に任せるようなもんだ。 しかし、何故かこの世界ではこんな馬鹿がまかり通っている。 これは実装技術に限った事じゃない。 コボル出身者がJavaのプロマネやって見積もりが狂い 金融のコンサル営業なんてできない青二才がコンサルやってる。 そもそもバックボーンにしてる知識が違うだろ。アホすぎる。
コード規約はなるべく少なめがいいな。 まともな人間が書く分には、多少のスタイルの違いは読むのにほとんど支障はないだろ。 言語が違う訳じゃないんだし。
コード規約? ソースフォーマッターを義務づけろ。
ソースフォーマッター に一致する日本語のページ 4 件中 1 - 4 件目 (0.26 秒)
しっかりしたコーディング規則があるプロジェクトに入って、 これは美しいコードを書けそうだと期待していた。 ・規則にある開発支援ツールが実は永遠にベータ版。 ツール開発チームがとてつもなく無能な上こちらの声は一切届かないので仕様を満たすことは永遠になさそう。 ・別な支援ツールがうんともすんとも言わないので聞いたら「既知の不具合。それよりお前のところ工程遅れてるぞ」 お前のゴミのせいで開発が1週間ストップしたわけだが。 ・規約ではグローバル変数は極力使わず、必要なら全チームに通知しろとあったが 「パフォーマンスを上げるため全クラス全変数グローバルで静的にしろ」 規約に従って表にまとめて送ったら「早く通知しろ。メール?見てない。社内メーリングリストでまわせ」 俺社外で開発してるしメーリングリストなんて初耳。 ・メソッドは最大何ステップまでと規約があったが、 「それは無視して、仕様書の1項目を1関数にしろ」 おかげで1メソッドが10万ステップオーバー。書いた俺にも何がどう動作するのか全くわからん。 まともにコーディングすればステップ数100分の1保守性10000倍にはなると思う。 ・あるときいきなりクラス名が大文字になる。定数が小文字。通達なし。質問に回答なし。 ・他チームが作るはずだったところがごっそり抜けているので聞くと 「うちでは使わないクラスなので開発しない。そちらで開発しろ」 規約上、他チームの資料は受け渡しできない。 H社は地獄だぜフゥーハハー
1関数10万行・・・すげえ。 でも1000行で書けるなら、まずそれを書いて インライン展開のようなことをするのはどうだろう? 無責任な思いつきだけど、もしかしたら少しは楽になるかもよ。
『テクノロジー・ライフサイクル』 価格と品質重視派 Early Majority みんなが使ってるから派 Late Majority ビジョン先行派 | Early Adopter ↓ _,、-''''゙゙゙゙| |~~゙゙''-、, | ハイテクオタク ,、''゙ | | ゙-, ↓ ハイテク嫌い Innovators | ,,、''゙ | | ゙-, Laggards ↓ ,、''゙ | | `、 | ,、'゙ | | ゙-, | ↓ /| i゙ | | ヽ , ↓ _,,-'゙ | | | | | |`-、 _,,、-'゙ .| | | | | | ~`''-、_ ._,,,,,,、--''''゙゙| |. | | | | | | ~`''ー |____| |____| |________| |_______| |______ /||ヽ || ハイテクの落とし穴 = キャズム
>>569 eclipseなら、ctrl + shift + f だ!
配列のポインタを渡すのに、 func( &a[ 0 ] ); 戻り値がある関数を呼んだときに戻り値を使わない場合は、 ( void )func(); enumで列挙した定数の論理和を引数に取る関数を enum HOGE { A = 0x01, B = 0x02, C = 0x04... }; func( HOGE hoge ); って定義して、 func( ( HOGE )( A | B ) ); 意味分からん。
>>575 少なくとも1個目は、
変数aは配列なんだと、その行を見るだけで判断できる
という観点では、一応意味はある。
2個目は、コンパイルオプションでエラー判定をきつく
してるとコンパイルが通らないから付けとけってとこか?
それで何かアルゴリズムに問題が出るとか可読性が著しく落ちるとかいうわけでもないような。 その程度の他人のクセをいちいち気にしてたら、仕事進まなくない?
配列aがnullだったらどうするんだよ。
>>579 aだろうと&a[0]だろうと同じなわけだが。
std::vector<unsigned char> buf(256); なんか取ってくる関数(&buf[0], buf.size()); みたいなのならよく書く。 これは正しくは配列じゃないけど。 普段STL使っているような人だったら普通の配列でも書いてしまうかもしれない
>>581 単にbufだけ渡すか、イテレータで開始と終了を渡さないかな…?
ヒント:C API
会社によって使ってる技術が違うんだよな。 C言語とかVBだと、現場の暗黙値で乗り切ってる。 JAVAはコーディングルールを強制するツールがあるね。 しかし、コーディングルールがない時点で危険だ。 こういう細かい事でもノウハウなんだから蓄積すべき。 営業を自力で行ない、ノウハウも溜め込む会社が勝ち組。
「どうでもいいから、速く動く奴作れよ!」 by 営業
>>575 最初のは俺は常にそう書いてるが...&a[1]なんて時もある.もちろんポインタの時はfunc(p)
二番目はlint時代の名残だな
三番目は至極真っ当に見えるが何が不満なんだ?
列挙型にキャストなんてしない
588 :
仕様書無しさん :2008/06/07(土) 05:14:17
>>579 C/C++における配列ならNULLにはならないのでは?
>>586 >>587 ですでに指摘されている通り、(A|B)は型enum HOGEじゃねーから、C(C++)的にはイカレポンチだ。
でも、そういう(ビット演算に対して閉じている、と宣言できる)型を定義できたらいいのにな、と思うことはある。
そう.だから
>>575 のは今のCの枠内で工夫した(?)書き方なんだと思った
俺は(もちろんw)そこまではやらんが
燕雀いずくんぞ鴻鵠の志を知らんや
>>589 >(ビット演算に対して閉じている、と宣言できる)型
C言語的には、ビットフィールドでやれという事だと思う。
if(XXX1||XXX2||…XXX24) XXX1からXXX26まであったんだが、switch文か、25と26以外のときにしろと。 そもそもXXX1とかいう名前の付け方も嫌だ
x = f1 | f2 | f3 | f4; がやたら長いコードにならんか?
flags.a | flags.b | flags.c | flags.d が flags<a|b|c|d> って書ける言語を作ればいいよ!?
a|(b&c)|d とか書きたくなったときにめんどくさくなるからやだ
>>568 あれを作った人間は、きっとメントスとペプシをキメていたに違いない。
さもなければ、16歳までピアノをたしなみ、20歳までパソコンを触ったことも無かったキッシュ喰いだ。
元のコード:
map.put(A_PRETTY_LONG_LONG_NAME_KEY, value);
フォーマッタにかけると:
map.
.put(
A_PRETTY_LONG_LONG_NAME_KEY, value);
どうかしてる。
mapとputの間の . が増えている罠 確かにどうかしてるw
>>600 ちゃんと設定しろよ。
おそらく、1行あたりの文字数の設定が少ないんだよ。
使っているほうの人間が、きっとメントスとペプシをキメていたに違いない。 さもなければ、16歳までピアノをたしなみ、20歳までパソコンを触ったことも無かったキッシュ喰いだ。
>>603 なるほど。
仕様と違う使い方したらそりゃ変な動作するよね。
605 :
仕様書無しさん :2008/06/09(月) 18:45:57
修正中のソースがかなりむごい。 マクロ定義をほとんど使わず、マジックナンバー使いまくり。 資料もコメントも無いので関数の入出力仕様が全く不明。 変数は全部グローバル。 コーディング規約もないのにファイル名は数値のみ。31201.cとか・・・ 嫌々仕事してるのが一目瞭然のソースは見ててうんざりする。
巨大な状態遷移かなんかのハンドコーティング部分だったりしないか?w
608 :
仕様書無しさん :2008/06/09(月) 20:55:36
>>606 欝で休職した人のソースなので、どういう人かさっぱりわからないです。
ソースの状態で入社して数年目ぐらいの人と予想したんだが
PMによると30超えてるそうな・・・
ソースの状態を聞かれても可愛そうなので適当に誤魔化してます。
ここぐらいしか愚痴る場所がないです。
こんなソース書いてるからドツボにはまって病気になったのか、
病気のためにこんな暗黒面に堕ちたソースになったのかは不明。
コード右側に記述されたコメントのタブ位置もバラバラでなかなかシュールな状態になってます。
最初はタブサイズが異なるのかと思ったのですが、どうも違うし。
609 :
仕様書無しさん :2008/06/09(月) 21:02:03
>>607 そんな大規模なシステムじゃないですよ。
状態遷移夏カシスw おまえらは俺の手の上で通信しているんだぜ?
>>605 上司(というか必要なステークホルダーまで)を巻き込んで、
書き直し/リスケを承認させる。
>>612 だな。火の種は小さいうちに消しておいたほうがいい。
>>614 ん?
普通にオートマトン使って設計しているだけ。
ルータとか終端装置とか状態管理だけで行ける製品・部分には最適。
だって、面倒になったら「リトライ」「ディスコネクト」「リリース」だぜ?
C++で開発してるけど、上司のコーディングスタイルが かなりストレスたまる+見にくい -- void CHoge::Func() { int a; int b; a = ... ... } というふうに、全てのローカル変数を関数の先頭で(代入なし)に宣言し、 なおかつインデントを左にそろえるという超変則的なスタイル。みにくくてしょうがない。
617 :
616 :2008/06/15(日) 01:31:21
変数使うところで int a = Hoge() とか for (int i=0; i<10; ++i) とかやればいいじゃん? そう言ったら、 goto をよく使うから、宣言部が飛ばされて困るからやらないでくれ だってさ。 -- if (returns_BOOL_func() == TRUE) ... if (retusns_BOOL_func() == FALSE) ... みたいなことを平気でやる(しかもそれを他人に強制する)。 BOOL で 0, 1 以外が戻って来たらどうするんですか? って聞いたら、「0 , 1 を返すようにつくってあれば問題ない」と。おかげで API の戻り値を調べるときに、それが TRUE, FALSE を返すのか、それとも ゼロ、非ゼロを返すのかまで調べないといけない。
618 :
616 :2008/06/15(日) 01:31:49
-- enum { Hoge = 1245, Piyo = 456 }; ってさ、これ enum の意味ないじゃん。#define か const int にしろよって思う。 -- ! 演算子を使わない オレが見にくいからやだ だってさ。 if (! Func()) ... ってやればいいものを if (Func() == FALSE) とか if (Func() == false) とかやってる。さらに if (hoge==TRUE && piyo == TRUE)) とかされると死にたくなる。
619 :
616 :2008/06/15(日) 01:35:21
さらに、文字列を扱うときに char message[256]; sprintf(&message[0], "...", ...); sprintf(&message[strlen(message)-1], "...", ...); sprintf(&message[strlen(message)-1], "...", ...); ってやるの勘弁してほしい。 一つの sprintf にまとめるか、もしくは sprintf(message, "...", ...); sprintf(message, "%s...", message, ...); sprintf(message, "%s...", message, ...); のほうが見やすいと思うんだが、、、
620 :
616 :2008/06/15(日) 01:38:53
最後に。 気軽にグローバル変数使うのやめてほしい。 名前に一貫性が無いから、クラスメンバなのかグローバル変数なのかローカル変数なのか さっぱりわからん。 コピペ大好き人間だから関数がどれも巨大だし、似たようなコードがちりばめられてるし。 ああああああああああああああああああああああああ ああああああああああああああああああああああああ
621 :
616 :2008/06/15(日) 01:54:41
ついでに inline 多用もやめてほしい。 おかげでヘッダファイルに宣言と定義が混在してる。 inline して意味あるの? コンパイラに最適化させて終了じゃないの? その上で速度が足りないなら最後の手段として inline でもなんでもしてくれって感じ。
お前も大概だな
こんだけされりゃ切れる気持ちも分かる。 無条件でクビにできるレベルだろ。
>>619 > sprintf(message, "%s...", message, ...);
これ未定義動作な。
「最後に」と言っておいて 「ついでに」と付け足すのやめてほしい。
>>618 そのenumはenumハックではないのか?
defineで定義すると名前空間を越えて利用できてしまうから
ローカルでしか使わないならdefineは避けるべき
falseと比較するのをとやかく言うのは言いすぎ
trueと比較してたらさしてもいい
昔いた会社に来てた外注の人、Javaで String foo[] = new String[9999]; とかよくやってた。ArrayListとか知らなかったんだろうなぁ。
>>627 俺のところにいるよ
コピペもめっちゃするし
全部staticで宣言するし
OOしらねーんだろうけど邪魔
ところで、大文字のFALSEって必ず0なの? if (!Func()) if (Func() == FALSE) これって、FALSEが0以外だったら別の意味になるけど。
enumは出来るだけタグ名を付けるべきだな (・∀・)
TRUE だって c で if (islower(c) == TRUE) なんてやったら悲惨。 なぜ == TRUE や == FALSE と書きたがるのか分からないな。
HogeFunc()は成功するとTRUEを返します。 とドキュメントに書いてある場合つけないと怖い事になるんじゃないか? TRUEはTRUEであって組み込みのbool型とは違うし互換性の保証もないわけだから。
>>632 TRUEがゼロなモジュールは腐っているから使わないほうが吉。
TRUE/FALSEがモジュール固有の値なら、 ドキュメントにTRUEは非0の値だとか書いてないか? または前提とする環境で定義される値なら、 環境のドキュメントに書いてあるかもしれん。
TUREを返しますとか言っておいて、Win32APIのように-1とか返されたりしてな。
実際の型と値を隠蔽する意図があってTRUEと名づけたとしたら いよいよもってHogeFunc() == TRUEと書くしかなくなる気がする。
>>636 C固有の型と値を無視してenum {TRUE, FALSE}とかしてるようなら、
まさに
>>633 だろう。
正常終了は1を 異常終了は-1を返すように統一しよう
if文がbool以外も受け付けるから悪い。
>>631 いや、だから、「失敗時はFALSEを返す」と書かれている関数を
if (!Func())
と書いてしまうのは逆に危険なのでは?
>>640 FALSEが0あるいはfalse以外のようなモジュールならば、
そんな腐ったモジュールを使うこと自体が危険だ。
論理定数と比較するコードや、論理定数と比較させるインターフェースは全部クソ。
難しく考えないで済むように設計するってのは基本中の基本だからな。 逆に == FALSE と書いてあったら、特殊な処理が行われてる例外的な場所の目印になる。 読む人間はそこに怪しい匂いを感じて関数の仕様をチェックすることができる。
>>643 臭いをバラ撒くようなバカコードを書かないことがまず先決だろう。
>>644 昔は少数の優秀な人だけだったからそれど良かったが、
今は普通以下の人間がほとんどだから異常を見つけられることを重視した方がいい。
>逆に == FALSE と書いてあったら、特殊な処理が行われてる例外的な場所の目印になる。 これなんてローカルルール?
>>643 特殊な処理をしている目印じゃなくて、
バカが書いた目印になってるんじゃねーの?
ルールとして決まっているわけではないよ。 でも怪しいと感じるでしょ?
if (func() == FALSE) ... では正しく動作して if (!func()) ... では正しく動作しないような特殊な処理があると? それは特殊な処理と言わずに、FALSEがキチガイ定義されていると言うんだよ。
あくまで慣習としてだが、偽が0というのは期待できるが、 真については、0でないという慣習しかないから、==で比較するわけにはいかない。
Cならバグが出た付近に if (f() == TRUE) { とかあったらまずそこから疑う
>>643 は、その特殊な処理とやらでFALSEがどう定義されているのか教えてよ。
Win32APIのFALSEって、0と決まってたっけ? それとも、世界中の人間がこの先も永遠に0だろうと信じてるだけ?
本末転倒 FALSEが0なんじゃなくて0が偽だからFALSEで置き換えて可読性を上げてるのに
>>653 何が聞きたいんだかよくわからないが、
WINDEF.HでFALSEは0、TRUEは1と定義されていて、
BOOLを戻り値とするWin32APIで、0/1以外を返すのは、
GetMessage/PeekMessage位のもんだと思った。
あと、"それとも"って言葉の使い方おかしい。
ティッピングポイントというのがあって、 ある数値を越えると全体が腐っていく ある共同住宅ではある人種が20%を越えると 元いた違う人種が皆引っ越しする テレビや電話は確か15%を越えると爆発的に普及するとか 数字はわからないが売れ始めるポイントがあるということ
>>649 >>652 ごめん、混乱して勘違いしてた。FALSEに関しては ! で問題ないかもしれない。
普段そういうことを気にしないで済むようにしてたから混乱してしまった。
TRUEは問題かもしれないけど、いまだ混乱してるので自信ない。
バカで申し訳ない。
SUCCESSが0のケースは多いよね。 ぼーっとしてるとTRUEと等値のように扱ってしまうことも。
>>655 MSDNに「FALSEを返します」と書いてあるAPI関数を使う際に
if (!ApiFunc())
と書く人が多いのは、MSが公式にFALSEは0と断言してる?それとも世界中の…
という意味の質問でした。
>>658 あるある。SUCCESSが0でERRORが-1とか。
OLE系のAPIが、成功時に戻り値 SUCCESS じゃなかったかな
C のstdlibにEXIT_SUCCESS と EXIT_FAILUREが定義されているよ。
>>659 MSDN引いた上でいっているのであれば、そのAPIちょっとさらしてみなよ。
CopyFile とか DeleteFile とか PathFileExists は確か失敗時ゼロ、成功時非ゼロで返すはず。
>>664 そういうのはそもそも真偽を返してないので、リテラルゼロと比較すべき。
if( foo == 0 ) return 0;
?
そのすぐ後ろが関数の終わりの}だったりして。
if (foo==true && bar==TRUE) return TRUE; とかやってていやんなる だったら if (flag & 0xFF00) ...とかやってる場合じゃなくて if ((flag & 0xFF00) != false) ...とするベキなんじゃないの? なんでこんな無駄なコード書くのかすごく気になる。タイプ量が多くなるだけなのに。
trueとTRUEを打ち間違えたりしそうだしな。
ただ、 if (foo && bar) ... を if (foo & bar) ... とミスタイプすると悲惨なことになる。
>>668 if( foo == 0 ) return 0;
if( foo == 1 ) return 1;
if( foo == 2 ) return 0;
:
:
というのが延々と並んでたりしたら辞めたくなるよなw
その中で一個だけ戻り値が違ってたりしたらもっと嫌w
if( foo == 0 ) return 0; if( foo == 1 ) return 1; if( foo == 2 ) return 0; if( foo == 5 ) return 4; if( foo == 9 ) return 2; if( foo == 7 ) return 3; if( foo == 2 ) return 5; if( foo == 0 ) return 3; if( foo == 21 ) return 0; return 56;
>>676 なんだそんな半端なif文、1つのifと54のelse ifで組まんか
せっかくだから、俺はswitch&caseを選ぶぜ!
fooが0のときはどうしたいのこれ。
ろくに読まずに後ろに条件を追加していったんだよ。
「行の追加はいいけど変更はダメ」っていうイカレた会社の保守モードで、 戻り値を3から0に変更したのかもしれない.... fooが2の場合もな
渡された数値を桁ごとに分解して足し合わせる 例: 119 → 1+1+9=11 → 1+1=2 1桁になるまで繰り返して、結果が3、6、9なら3の倍数 と判定する関数を見てしまったわけだが
>>683 それってアルゴリズムや数字の勉強用だよね
ある数を割ったあまりを取得する関数・サブルーチン・プロシージャがない環境なんだろ
>>683 もしそれがボトルネックになる箇所なら故意にいれてあるのかも知れない
// 高速化依頼 ○○万以上の時 hoge%3
とかw
それなんて世界のナベアツ問題? 割り算の余りは求められないのに文字列処理は充実しているとか……
688 :
仕様書無しさん :2008/06/19(木) 00:22:31
>>683 それか、除算器がなかったころの・・・
桁ごとの数値出すのってどうやるんだろ。
COBOLなら計算いらずだけど。
X = 119; while (X >=3) X -= 3; printf("あまり %d", X);
Excelで設計書、 ただし行の高さは変更禁止、セルの結合禁止、列幅は1.xxで固定、MS P明朝。
IDENTIFICASION DIVIJION
おいおい DIVIJION × DIVISION 〇 COBOLなつかしー
IDENTIFICASION × IDENTIFICATION ○
/* 高速化の案件に予算がついたら,金額に応じて次の行の #define 値を * 書き換えること。(0...3 が有効,0が最高速。現在(2)の約1/3の処理 * 時間になることを確認済み) */
>>695 それ、随分前にコメントスレかなんかで見た記憶が。
ソース提出が必須ならアウトだな
提出させたって読みゃしねーって
最初の3行くらいは読むだろ
ラテン語か何かで書いておけば読める奴がいないだろう。
世の中そんなに甘くない
>>701 読める奴がいないコメントを残す意味を教えてください。
本人の覚え書き?
読む気を失わせるために決まってるだろ 常考
石版にルーン文字が最強
石版に書いたらソースのコメントとは言えない気がする
若造、石版にコードかいてた時代を知らんのか
パンチカードのことですか
709 :
仕様書無しさん :2008/06/19(木) 22:00:08
コーディングシートですか?
今だって石にコード書いているようなもんじゃない?
H/W記述言語か
712 :
仕様書無しさん :2008/06/20(金) 08:42:09
ソースをSSDとかUSBに保存してるってことでは。
>>695 そして、コンパイルスイッチを変更したらバグ続出で
バグ修正に本来作成するのと同等の時間を費やす訳ですね。
天然KYって居るものだな
漢字だから正確にはわからなくても、なんとなく意味がつかめちゃうだろ。
ラテン語じゃメジャーすぎてちょっと西欧史かじった奴なら 専門的に学習してなくても読めちまう もっとマイナーなので頼む ゲール語、ケルト語あたりか?w
じゃあ、riya語
ここはゼビ語だろ。
専門的といえば機械語だろ
ゼントラーディ語
デ、デカルチャー!
書けんのかよ!ww
コメントを解読したら「i をインクリメントする」とかだったりしてw ソース読むほうが楽
この会社辞めようと思った上司言語
今日もガストノッチ
もう印欧祖語でいいよ
/* ロシア語で考えろ */
ソビエトロシアではソースコードがあなたをコメントする!!
/* コイツバカスギ */
>>724 を読んで思い出したけど、
x=10; // xに10を代入します
x+=5; // xに5を加えます
とかコメント書いてる課長がいたな。
>>731 ソル部3課のT課長じゃね?w
あいつばかだよな
その手のでコードとコメントが食い違ってたら怖いだろうな。
ノーコメントでインデントガタガタ、goto使いまくりのコードのほうが怖い。 どうして動いているのか作った本人もよくわかっていないようなコード。w 今までであの一本をいじるのだけはできなかった。
/* You are not expected to understand this. */
デニス・リッチー乙
「NULLを代入」と書いてる場所は、 NULL、0x00、0x20、0x40、0x70、free() のいずれかにほぼ特定できるのでまだマシ。 とにかく、用語が全射でも単射でもない。定義域も値域も書いた奴の気分次第。 なぜこんな某物流システムで長年ほとんど大事故が起きていないのか不思議でならない。
>>735 /* because neither do I. */
ウケイ ウケイ
2238クラブへようこそ
741 :
仕様書無しさん :2008/06/22(日) 05:59:09
>>734 コメントあっても意味なくね?
ラベル1:
// 処理1
// 分岐する
ラベル2:
// 条件
// trueなら
// ラベル1に飛ぶ
// falseなら
// ラベル2に飛ぶ
Private Sub btn終了_Click() End End Sub
746 :
仕様書無しさん :2008/06/22(日) 10:57:01
>>741 で言いたかったのは、
1行コメント=ソースコードなので結局何がどうなってるかはソース見るのと同じことだと。
そんなコメントはあってもなくても同じじゃないかと。
全部の行にコメントつける人ってその行での処理の説明はするけど
ブロック単位の説明はしないよね?
見たことないけど。
もちろんマスクする場合とかはコメントないとどういう目的なのかわかんなかったりするけど
関数仕様と、大雑把なブロック単位のコメントがソースに書いてあれば十分だと思う。
>>744 おまえは俺か?
ボタンクリックのイベントでいきなり終了すんなよ、と。
結構大き目のアプリなのにそれを見つけた瞬間、辞めるのも時間の問題だなとオモタ。
>>733 s=GetName(); // 名称を設定します
こんなコメントもあった。
Getなのになんで設定なんだと迷ったが、
SetName()のところのコメントをそのまま間違えてコピーしてきたらしい。
>>748 > SetName()
voidで何設定する気だ?
中でapi呼んで自動でマシン名とか設定してるかもしれんよ?
もっと具体的にという意味ならわかるけど、 特に引っかかりそうなところじゃないような 逆にコメント案が知りたい
>>748 変数sに名前を設定するという意味じゃねーの?
> SetName() そもそもセミコロンが付いてないからコンパイルできないだろ。
>>754 >s=GetName(); // 名称を設定します
これがコピーされたものなんだから?etName()とコメントの間にセミコロンがある
中途半端なコピペの
>>749 のレスに文句を言っても意味がないだろ
それより自転車置き場の屋根の色に付いて話し合おうぜ。
透明に決まってるだろ
せっかくだから、俺はこの赤の屋根を選ぶぜ!
社屋脇の自転車置き場の屋根なら人型に凹んでるもんだろ常考
横道にそれすぎて748が不憫だw
>>760 まじレスするが、人が落ちても人型にはならない。
うちの会社の自転車置き場の屋根は○型
>>764 えー、でも漫画とかでよく人の形に壁がヘコんだりするじゃん
落ちた人が丸かったんじゃないの
>>765 レンジャーが五点着地をやれば人型になるかもしれん。
だが、そんな香具師はマ板の住人になんかならない。
>>766 >レンジャーが五点着地をやれば人型になるかもしれん。
それでなおも生きてられるなら、
その能力を生かしてスタントマンに転職した方が高報酬だし吉だわな。
逆だろ 五点で着地するのは衝撃を散らすためなんだから なおさらヒト型はむずかしいと思う
お前明日試してみろ ↓
だが断る
↑ 矢印厨
オマエモナ
( ´∀`) 呼んだ?
呼んでないから(・∀・)カエレ!
( ´Д⊂)
>>731 そんなソースみるのしょっちゅうですorz
昨日の話 先輩(業界6年目マ)「メソッド作っておいたからさっき説明した処理追加して」 俺(新卒マ)「はい」 //C# public static Tel.Comminucation CreateComminucation() { Tel.Comminucation resalt = new Tel.Comminucation(this.UserID, this.IPAddress); //todo:ここに初期化処理を書く return resalt; } これ、コアモジュールなんですが、脱力しました。。。 この先輩以外にも、flagをflugとしてるとか、UserをUsarとしてるとか、誤字多すぎ・・・ 指摘すると「意味分かればいいんだよ。ビルドしたら分かんないから。」 先輩、publicなクラス名にも誤字があるんですが・・・
リファクタリング機能がある時代で助かったなw 誤字だけと言わず根本的に命名し直してやれ。
中卒か?
780 :
777 :2008/06/26(木) 22:35:23
>>778 それが・・・できないんです
とあるオンラインシステムのコアモジュールのリプレースなんですが、既存のはこれで動いちゃってるんですよ
しかも社外で作ってるのもあるんで、変えられない
取引先はクラス一覧見て冷笑していると思うと・・・
>>779 先輩達が専門学校時代に作ったサークルが発祥の会社だそうなので、一応専門卒の人々のようです
英語はからっきしのようで、IETFの文書とかは私が辞書片手に読んで社内勉強会してます・・・
私も英語は得意じゃない(英会話や英作文なんてできない)んですが、中学生レベルの英単語ですら・・・
先輩達の技術力は決して低くないんですが・・・
英語もおかしいんですが・・・
日本語が・・・
頭が・・・
辞めたい・・・
>>780 君は、もっとレベルの高い企業に転職する時期が来てると思う。
綴りミス系か。 通信モジュール関係で、sendの対義語として recieve をよく見る。
pritnf
プリトンF 1000mg配合
>>780 >先輩達の技術力は決して低くないんですが・・・
その技術力が疑わしいと思われちまうんだよ。テストもろくにしてなさそう。
コピペで似たようなコード何か所も書いていそう。
スペルミスが多い会社に以前いたけど、バグとかひどいもんだった。。。
>>784 プリトンF 1g配合
だとあまり効かなさそう
>>785 スペルミスで消せる程度のバグなら可愛いもんじゃね?
>>787 そうじゃなくて、スペルミスがひどい会社は、その仕事全体が信用できないって話。
もっと重大なミスやらかすんじゃないかって不安になる。
姿勢が雑ってことだよな。 スペルなんか間違ってもいいや、って考えは、動けばなんでもいいや、って考えと軌を一にする。
>>788 ま、尊敬に値しないし不安に思う気持ちも分かるけど、
スペルミスが多いのは単純に(単純な)バカなだけ。
バカな会社はバカなミスをするが、バカなだけだからある意味救いがある。
仕事上、小さなミスを繰り返すと尊敬はされなくなるが、
後始末さえちゃんとやりゃ、会社そのものはおかしな事にはならない。
本当に恐いのはミスが社内にさえ表面化しない会社。
そういうのは後々、重大な問題になり、会社がおかしな事になる。
>>790 長々とかくわりには内容がない、と思うのはなんでだろう
マジだが、 pritnf();で半日潰した新人の頃。
小さなことでも蔑にしてると積もり積もって大きな問題になる 「バレなきゃいいよ」「意味が分かればいいよ」なんて姿勢で仕事してる奴なんて信用できるか?
>>794 >「バレなきゃいいよ」「意味が分かればいいよ」なんて姿勢で仕事してる奴なんて信用できるか?
orz
>>794 うちの取引先か?
Wordのスペルチェックでも引っかかるような誤字脱字をしてくんな!
ExcelとVisioのを含めた全資料約900ページ分のうち約600ページ分に誤字脱字があったぞ!
しかも誤字のまま実装されてるのも混在されていて誤字対応表(約20ページ)なんて作るハメになったんだぞ!
売り切りを条件に安くしてもらったけどもうやらん!
安かろう悪かろうってのは本当だって思い知らせてくれてありがとな!
>>777 フィーバー♪
resaltは他には影響しないから、こっそりやるな、俺なら。
さすがにパブリックのメソッド名の綴り間違いだと、
ラッパーかましたらさらに悲惨な状況になりそうだから、
触らぬバグに事故はなしだなw
798 :
777 :2008/06/27(金) 13:25:30
今日は先輩達が軒並み休みなのですがどうすればいいですか・・・
会社の経費で買った WILLCOM 03 のせいらしいのですが・・・
>>781 私、入社してやっと3ヵ月くらいなのですが・・・
そういえば学生時代バイトで行ってた開発会社でこんな○○なとこはなかったな
>>785 そうなのかもしれません
この前議事録係で先輩に同行したとき、何度もお客様から「誤字はないようにね!」って念を押されていました・・・
先輩は笑っていましたが、お客様の目は笑っていませんでした・・・
>>788 >>790 とりあえずそこまでひどいことにはなっていないようです・・・
>>797 うちからコアモジュールを提供している各社はラップして使っているようです
各社のルールに合わせるためではなく、誤字の隠ぺいなのかなと勘ぐってみたり・・・
皆様レス&関連レスありがとうございます
お昼休みも終わるので帰ります・・・
仕様を聞ける先輩が03祭りで全滅なんてもうやだ・・・
まあ、あれだ、がんばれ
受諾開発屋です
この業界3年目、この会社は中途で入って2ヶ月目です
SQL Server 2005/ASP.NET 2.0/C# 2.0での開発ルールの“一部”をご披露
データアクセス関係のルール
・単純にSELECTを発行して件数を取ってくるだけの処理でもトランザクション必須(「おまじない」ってゆってた)
・SELECT/INSERT/UPDATE/DELETEで別々の接続文字列を使う(ユーザでアクセスチェックするためらしいのですが、トレースの概念は無いのかね。それにコネクションプールの意味無し)
・ビュー禁止(ビューを使うとクエリを隠ぺいするからだそうだが、DB設計も我々でやってるはずですが)
・ストアドはINSERT/UPDATEを単純に発行するためだけに使用(他目的使用は禁止ってアホかと)
C#コード関係のルール(Java、VB、C++も同じようなもん)
・VSが自動でやる場合を除いて継承は禁止(処理の責任の所在が不明になるからってアホかと)
・ソースコードの見通しを良くするために、完全修飾は禁止(文字が少ない方が見やすいとかアホかと)
・ソースコードの見通しを良くするために、全ての処理にコメントを入れること(
>>731 化してる)
・ソースコードの見通しを良くするために、変数はすべてクラスのメンバとすること(コメントのしようもありません)
・後で見てすぐ分かるように、仕様をコード内にも記述すること(アスキーアートで図を書いてたのは笑・・・えねぇ。コード十数行、コメント数十行なんてザラ)
Webページ関係のルール
・CSSは処理の責任の所在が不明になるので禁止(レイアウトの統一って概念はないらしい)
・XHTMLソースを直接編集してはならない(デザインモードだけでは限界があるのですが)
・レイアウトにTABLEタグを使ってはいけない(一見まともそうだけど、この理由は次に紹介するルールにある)
・明確な配置が取れないので、フローレイアウト禁止。すべてグリッドレイアウトにすること。(もう好きにして)
他にも大なり小なりルールがてんこ盛り
これを踏まえたテンプレート(IDE用ではなくコピペ用のテキスト)もあるんだけど、カオス
まあそれでも生産性と引き換えとかなら分かるけど、それもない(そりゃそうだ)
試用期間3ヵ月なのですが、それが切れる前に辞めようと思っています
ネタだろ?
ネタでここまで細かくルール作れないと思う。 無駄な労力つかってるねぇ。
助っ人稼業(=個人事業主の契約社員 orz)やってると、こういうネタみたいな標準って結構見かけるよ 特に大手企業の情報担当の開発部門に多い 大体はこういうパターンでできる 会社の体制上こういうルールが必要なんだけど、本業のSIerほど力は入れていないから、どうしていいか分からない ↓ ちょっとだけ知ってる(もしくは、ちょっとだけ口の立つ)ヤツに白羽の矢が立つ ↓ そいつの知識や技術の範囲でオナニーじみたルールができる ↓ 長いフローをかけて承認される ↓ 誰も修正しないまま作った人間が辞める ↓ 新しい言語や環境が出て改訂を求められる ↓ この無茶なオナニー標準を基礎に、新しいちょっとだけ知ってる(もしくは、ちょっとだけ口の立つ)ヤツが改訂を入れる ↓ 以下、劇的な改革が起こるまで無限ループ
>>796 安かろう悪かろうは確かにあるね。
既に作ってある物を安くしてもらうんじゃなくて
これから作る物を安くしてもらうんだから、当然品質は悪くなってしまう。
わざとではないと思うよ。
下っ端には品質を落とす以外の選択肢を与えられていないから。
なんでもforループ なんでもArrayList なんでもルートオブジェクト 最近そんなのばっかり
int x ; int ax; int zzzz; int xxxx; char aa[128]; char xxx[128];
>>804 偽装請負から手を引いた協力会社が「売り切りを条件に何でも安く作る」って営業かけてきた
受入テストでOK出たら、その後バグがあっても瑕疵担保責任を負わないってやつ
馬鹿らしくて一蹴したけど、そういうのなのかもね
コーディングルールには、ルールを破っても良いというルールが必要だな
>>808 馬鹿なルールほどそれを認めてくれない
マトモなルールほどそれを認めてくれる(リファクタリングという意味で)
極力if文は使わずswitch caseにする事が好ましいという規定があった おかげで状態変数が乱立、何十通りも値を取るコードが多発 だけど状態変数の値の代入にはif文を使って値を一意に決めているという矛盾
>>810 if で2つの条件ならSwictchでも2つの条件だろ
>>811 1つで済むだろ?
条件値なんて大抵16ビット以下だろ?
だったら条件1を上位16ビットにシフト
条件2を下位16ビットにコピーしてマスクとれば
おわりじゃん?頭使えよ腐豆腐
ビットで判断っていつの時代の話してんだよw あー、組み込みとか制御か? みんなカツカツのリソースでカツカツのチューニングしてるわけじゃないんだよw
条件分岐でプログラムの状態見る時、ビットでマスクするのとintで定数のテーブル作るのとどっちがデバッグし易いんだ?
>>812
switchには必ずdefaultを書けとかいうルールはよくあるから、条件2つでもcaseは3つに・・・
>>800 >・単純にSELECTを発行して件数を取ってくるだけの処理でもトランザクション必須
2回以上発行するならトランザクション要ると思うが
いらねーよボケ
確かにいるね
データ更新以外でトランザクションなんていらないでちょ。 会社のちとが最近は2Kバイトもメモリがあるから楽とかいってまちた。。。。。。。。。
>>820 2回の採番のSelectだったらヤバす。
この糞コテまだ生きてたのか さっさと死ねばいいのに
823 :
仕様書無しさん :2008/06/28(土) 16:22:23
なんかルールの設計者からコポラー臭がします。
>>・VSが自動でやる場合を除いて継承は禁止(処理の責任の所在が不明になるからってアホかと)
>>・ソースコードの見通しを良くするために、完全修飾は禁止(文字が少ない方が見やすいとかアホかと)
>>・ソースコードの見通しを良くするために、全ての処理にコメントを入れること(
>>731 化してる)
>>・ソースコードの見通しを良くするために、変数はすべてクラスのメンバとすること(コメントのしようもありません)
>>・後で見てすぐ分かるように、仕様をコード内にも記述すること(アスキーアートで図を書いてたのは笑・・・えねぇ。コード十数行、コメント数十行なんてザラ)
まぁ継承禁止はわからんでもない
825 :
仕様書無しさん :2008/06/28(土) 17:08:53
全ての行にコメントをつけるのはまだいい。 機能を説明するコメントは禁止ってのが痛い。 1行コメントと重複しては一元管理にならないとかなんとか。
継承なかったら、templateもあまり役に立たないな。
VS2005でC# //WAIT for (int i = 1; i < 1000000; i++); いつの時代のBASICですか つか、これって本当に1000000回ループするの? 最適化とかで「意味無いからスキップ」とかにならないの? 教えてエロい人!
>最適化 よく調べてみ、コンパイルオプションで最適化しないにしてあるからw
>>827 スキップするところまでは最適化されないもよう
IL_0000: ldc.i4.1
IL_0001: stloc.0
IL_0002: br.s IL_0008
IL_0004: ldloc.0
IL_0005: ldc.i4.1
IL_0006: add
IL_0007: stloc.0
IL_0008: ldloc.0
IL_0009: ldc.i4 0xf4240
IL_000e: blt.s IL_0004
>>829 待て、それはただのILDISASMの結果だ。
HotSpot?だっけ?が無駄だと判断したらわからんぞ。
JITはわからん。
JITはそんな判断はしないけど、Thread.Sleep使えばいいのに。
volatileにすればいいんじゃない?
>>782 俺、revieveってメソッド作ってたわ。
恥ずかしいなwww
俺は逆にretreive〜ってメソッド作ったことがある。 プライベートメソッドだったから素知らぬ顔して直しておいたけど。
publicなメソッドやクラス名を毎日変更して 一切こっちに通知しない会社に対して、俺はなんと言えばよかったんだろう。 しかも毎回、必ず新しいバグが植え込まれているのでまずバージョンごとのバグ表を作ってからでないと何も出来ない。 あまりにも致命的なバグがあったときに電話したら、なぜかキレてて怒鳴り声で 「そのバグは既に把握してんだよ。〜〜いうわけで、〜〜〜すれば修正できる。やれよ」ブチ 社会人として、40過ぎてその言い草どうよ?おまえの責任で出したバグだろ? セキュリティ上その辺の仕様はこっちは渡されてないし、 修正するのはお前の仕事だし、仮に俺が修正するとしたら少なくとも30人日かかるんだが。調査資料作りながら。 ファイルを吐き出すフォルダを勝手に変更した時も 何も言わず担当者とも連絡が取れなかったせいで5日何も出来なかったし。 まあだから潰れたんだよな。Hの子会社さん。
>>829 最適化の設定などで消える可能性があるから
出力結果だけで判断するのは危険。
コンパイラのバージョンによって動作が違うとかあるえる
>828
そういうアホコード書く奴は、コンパイルオプションの設定とか調べない罠が
>>827 の //WAIT は、これを見つけた人間の「ちょっと待て」なんじゃないか?w
// ちょっ、ちょっと待ったぁー!! // おおっと、ここでちょっと待ったコールだ! for (int i = 1; i < 1000000; i++);
コンパイラ「ごめんなさい」
つか、コメントスレにかけw
ソースにコメント書くのは常識だろうが! int i = 0; //変数iを0クリアします
0はクリアではない
0クリア
0クリアならこっち ZeroMemory( &i ,sizeof(i));
ところでいつ言語指定されたんだー?
お前の得意なCOBOLでもいんだぜ?
そもそも「0クリア」って表現の定義が曖昧
それに
>>846 の言語によっても変わる(大雑把に見てもC/C++とC#/Javaでは意味が変わってくる)
つまりは、言語とコーディングルールに因るから、その表現はもしかしたら正しいのかもしれない
クリアってのはフフフフフにすることだと思ってたぜ
>>846 は特定の言語で書かれた特定のプログラムの
特定の部位に対するコメントだから間違いだとは言えない
ゼロクリアはシリアルとかの レジスタのエラービットを ゼロで上書きすることでクリアすることだと思うんだが
>>855 そういう定義もある
数値型を明示的に0にすることを「ゼロクリア」と言う文化もある
変数の初期値が固定な言語でも、初期値の明確化を推奨し、数値型は「ゼロクリアする」という文化もある
会社の標準ルールには「数値型変数の宣言後、明示的に0を設定する(ゼロクリアする)」と明記されているものもある
ゼロクリアは明示的にリテラルの0を入れるとしているとこもある
ZeroMemoryによるゼロ値の設定は「null初期化」とし、「ゼロクリア」と言わないとこもある
俺が知ってる(関わった)範囲でもこのくらいブレた表現
だから、
>>846 が正しいかは、そこの文化やルールを見ないと何とも言えない
※その文化自体が間違ってる!ってツッコミだったのだろうか
郷に入りては郷に従え
強いて曲解すれば、「クリアしないこと」ともとれるな。
じゃあ「ゼロセットする」
ゼロフィルじゃね?
int i = 0; この1行には変数の宣言と値の代入の2処理がある コメントを入れるとしたらこの2つを押さえたものにすべきではないだろうか 例えばこう int i = 0; //○○ループの○○件数カウント用変数に初期値0を設定する 皆はこういう違和感って感じないの? 「ゼロクリア」なんて言葉尻で盛り上がってるあたり同じ穴の狢じゃないかな
862 :
仕様書無しさん :2008/07/01(火) 20:08:12
俺もそう思った!
まだ0x00をnullだと思ってるアフォがいたのか
>>863 まだまだいるよ。
たとえば、今月号の日経ソフトウエアの川俣晶とか。
>>856 >ゼロクリアは明示的にリテラルの0を入れるとしているとこもある
int i= '0'; ってこと ? ひぇぇ
>>861 ループの処理が多ければ
int i = 0; //○○ループの○○件数カウント用と、△△ループのチャンネル数カウントと□□ループの□人数カウントに使う変数に初期値0を設定する
リテラルの意味もわからず煽る馬鹿
868 :
仕様書無しさん :2008/07/01(火) 20:47:11
ヌルクリヌルクリ
C++じゃNULLはゼロでちょ。
初期化
このアホコテ、まだ生きてたのか。
なあに、「NULLクリア」が 0x00と0x20と0x40と0x70を意味する某大規模プロジェクトもある。 どの意味のNULLクリアなのかは書いた人にしかわからない。書いた人にもわからない。 うちの会社が大損害出しながらも抜けて4年経つがまだまだ完成しないらしい。 ていうか失敗を認めて全部捨てれば楽になるのに。
874 :
仕様書無しさん :2008/07/01(火) 23:45:13
そしてNULLを定数宣言する癖がつく…と。
>>800 あー…自分の会社を見ているようで笑えねー
そこで披露されてるルールの半分以上が当てはまってます。
特に、Webページのルールなんてぴったり同じでやんのw
他にはBTS使うなとか、
SubVersionやSourseSafeは間違ったものがコミットされているかもしれないからフォルダ管理とか、
自社製ライブラリ強要とか(ドトネトフレームワークをVB6風味にラップしてエラー握りつぶしたりなど諸々の改悪を施したもの)
「nullとNULLとNullは違う!」ってとこがあったな null→インスタンスの無い状態 NULL→0x0 Null→DBのヌル値 ソースコード内ならまだしも、客に紙にして出すドキュメントまで大文字小文字で区別すんな
NULはなんだった?
おれおれ
NULLPOも定義しる
>>864 日経ソフトウェアの連載はレベルが低いよな。
>>876 NULLがそこの複数の意味で使われてるの見たことあるぞ
あと長さ0の配列もNULLって書いてあった
確かに VBのNULLとCのnullとは違うしな
うちの愛すべきSE様(58)語録とその訳 「そのデータはヌル」→「そのデータは0」 「ヌルばっかりだなぁ」→「レコードが1件も無い」 「ヌル処理はどうする?」→「検索結果が無かった時の処理はどうするのか」 「変数はヌル初期化ね」→「数値型には0を、文字列型には空文字を、日付型には1950/1/1を入れるのが当たり前です」 「DBってヌル入んないのかな」→「DBのNullって何ですか?」 いくら教えても覚えてくれません
nilってのもあるぞ
いくらなんでもネタだろw
うちの上司は空文字列のことを「スペース」と言う
NULLをにゃるって呼ぶぞ俺のところの部長
なる
にる
ぬる ぽ
ニダーーーーーーーーーー
混沌が這い寄って来るんですね。わかります。
いあ!いあ!
あっヌルあっあっあっ
ここはSAN値が下がるいんたーねっつですね
898 :
仕様書無しさん :2008/07/06(日) 19:47:50
javaとかCじゃないけど、メチャ長いSQLの修正やらされるよ。 A4 4〜5枚くらいのを10 SQLメンテしてとの事 プログラムにしたらと聞いたら、SQLでいろいろ検索してたら出来たのを 使ってるからプログラムに変換できないそうな、あとそこはSQLだと テスト対象外とのこと、SQL嫌い
>>898 A4で4〜5枚?
それじゃ行数で1000も行かないだろ
その程度でメチャ長いとかどんだけゆとりだよ
つか、コードがでかいだけで辞めたくなるようじゃこの業界じゃやって行けないだろ
今抱えている基幹系システムは2000以上のストアドがあって、そのうち3割は1000ステートメント超える巨大なやつ
見た目を整えるための意図的な改行があるから10000行を超えるのもザラ
でもちゃんと仕様書もあるし、社内標準に則った書き方しているから保守はそれほど大変じゃない
898の現場運用が悪いのを、ソースコードのサイズのせいにするのは良くないな
このスレで語るべきはソースコード自体の質なんだよ
899を1行でまとめると ソースコードの長さに文句言うな ってことだろ 確かに長さよりも中身が問題だな 今まで出てきたように、たった数行でも辞めたくなるようなコードだってあるわけだし
SQLで1kステップはきついって。 複雑な問題は複数の単純な問題に分割するのが基本だけど、 分割難しいもん。 集合論的に解けばいいのかな?
>>901 こんなんじゃねーの?
SELECT(改行)
列1,(改行)
:
:
列100(改行)
FROM(改行)
(以下略)
1ステートメントで4・5枚なんて改行が無駄に多いだけって気がする
>>903 SQLだろうがCだろうがVBだろうが、それなりに込み入ったもの書けばそんくらいなるだろ
大規模システムだとテーブルの数やフィールドの数も多くなるから、ちょっとしたクエリ発行しただけで数十行とかあるし
まあでも他人が作った長いコードを見るのは確かに苦痛だ
仕様書があろうが標準があろうが、新たに作るよりは面倒だ
906 :
仕様書無しさん :2008/07/07(月) 01:35:29
Select * 禁止で一発でとるならそんくらいなるよな…? 長いSQL反対派の奴らはレコードセット開きっぱなしで 幾つもSQL発行しやがって副問合せを知らんのか?って感じ もっと凄いのはマスターを構造体にゴッソリ保持ぐーるぐる回る回る回る… あんなの追っかけたくない SQL一発でとっときゃ何か変わってもSQL直せば済むし解りやすい
きっとCASE使いまくりのSQLなんだろうなぁ
すげえ実行効率悪そうw
>>899 >そのうち3割は1000ステートメント超える巨大なやつ
正規化のやりすぎか、またはまるで出来てないかの
どっちかじゃね?
>>909 基幹系って言葉を使ってるとこ見ると、COBOL時代からリプレース続けてるようなやつじゃないのかね
こういうのはリファクタリングに金かかるからCOBOL時代のデータ形式を引きずってたりする
1テーブル200フィールドとかね
そういうの相手にやってればそんくらいのサイズになると思うよ
最適化よりも前世代の形式を次世代に受け継がせること(SEはそれを「仕様の互換性」と言う)を優先させたりしてカオスになったりするんだよな(うちだよ!
CPen* pOldPen; // オールドペン Sleep(100); // スリープ
1命令1コメントはもういいよ つかさ、そんなんで辞めようと思ったの?
10年以上前の改修履歴がコメントとして大量に残って読みにくいorz
辞めようと思ったほどじゃないが('A`)となったソース switch (aaa) { case 1: ret = FuncHoge(1); break; case 2: ret = FuncHoge(2); break; case 3: ret = FuncHoge(3); break; case 4: ret = FuncHoge(4); break; default: break; } で、FuncHoge()関数でも同じような分岐が・・・・ まとめろよ('A`)
行数=金。 理解汁
constructive cost model ですね。はい、わかります。
しかし、
>>915 はただプログラム設計をせず作ったソースだと思われw
行数=金 内部変数の宣言を一行一変数で何十行も取り やってることは外の変数の内容をその内部変数に 逐一コピーしてるだけ(何十行*2回目) その内部変数のうち、関数内で処理に使用してるのは数個だけ で、処理が終わると全ての内部変数をゼロクリアして その関数を抜ける(何十行*3回目)という馬鹿コードを見た が、見なかったことにした
public void setHoge(){ this.hoge = hoge; } コンパイルは通るかもしれないけどさ…
デバッガでブレークポイントはるための意味なし文ですね、わかります
「君は君だよ」というポエム
深いなあ そして今日見た違和感を感じたコードから Java: int a = 1; int b = 2; int x; x = a = b; これコンパイル通るんだねえ
>>922 知ってれば、なんてことない、そのコード
>>922 Javaよくしらんが、
X = Y = Z = 0;
あたりも違和感あるのか?
>>924 bの初期化の意味について言ってんじゃね?
927 :
仕様書無しさん :2008/07/12(土) 09:06:52
自分が昔書いたコード
>>922 こういうのも通るぞ
x = a == b
さらに、 x == a == b も x == a = b も、通る。
5>4>3がFalseってのは納得いかない
>>922 深いの? もう & | ^ ~ あたりの使用は禁止かなあ
932 :
仕様書無しさん :2008/07/12(土) 14:32:26
(^ ~)
~= m// 見たら発狂しそうだな
934 :
仕様書無しさん :2008/07/12(土) 20:10:53
なにあともあれ、変数は必要な時にだけ存在すれば良い。 グローバルは使用禁止。 IT技術者も同じだ。 必要な期間だけ雇用して給料払えば良い。 以上!
グローバル使用禁止だから public class Global { public static int var1; public static string var2; …… } のようなクラスを作ってしのいでた事例を思い出した。
クラスじゃなくて構造体だったかも
グローバル代わりにシングルトンをw
排他制御してなくて、たま〜にバグが出るんですね。わかります。
そういう構造体をあらゆる関数の第1引数にしてるプロジェクトがあった。 値コピー渡しで。
>値コピー渡しで ここがミソだな。 変更するときはどうしたんだろう・・・
941 :
仕様書無しさん :2008/07/13(日) 12:56:09
C#でエラーログの処理どうしてる? エラーログ出力クラスつくったのはいいが… 各エラー処理でログクラスのインスタンス生成して出力して開放するべき? 取り敢えずclsMainでStaticにしてプロパティで呼んで最後に開放してみた… なんかスマートじゃないような気もする… 教えてエロいひと…
log4net
943 :
ひみつの検閲さん :2024/12/13(金) 04:11:22 ID:MarkedRes
乙
945 :
仕様書無しさん :2008/07/13(日) 16:02:29
関係者?
いいぞ!行け行け!
Log4xとかの仕様に沿っておくと幸せだとおもう。きっと。
950 :
仕様書無しさん :2008/07/19(土) 15:13:20
んじゃ貧相なの自分で作れよ
んじゃ死ねば?
そんな気力もない
なら書き込むなよ
a = ++b++; これって可能?
LSIC85 ではエラーになった。
コンパイルできても未定義動作だろ。
>>959 C++なら安全に定義できるよー
まぁ仕事でみたら書いた奴殴り倒したくなるけどなー
#include<iostream>
struct{
std::ostream&operator++(int){return std::cout<<"Hello, ";}
void operator=(std::ostream&f){f<<std::endl;}
}a,b;
std::ostream&operator++(std::ostream&f){return f<<"World";}
int main(){
a = ++b++;
}
ネット上の基地外は大好き(はぁと
>>960 それ、「Hello,World」と表示されるの?
++演算子の優先って、前置と後置のどっちが先だっけ?
前置
a = ++b++; このロジックってどういう場面で必要になる? 2バイトコードを扱うときとか?
>>963 Hello, Worldを表示するよ。
優先順位は後置が先。分かりやすく括弧でくくると
a = ++(b++)
b++の実行でHello,
次に
++(...)の実行でWorld
最後に
a = ...
の実行で改行。
>>965 変態的なHello, Worldしたいとき。
つまり必要ない。
967 :
仕様書無しさん :2008/07/23(水) 00:18:04
javaのプロジェクトなんだが、規約なのか知らんが ソースコード全体にnative2asciiがかかってて コメントまでもがunicodeエスケープされてしまってて 読むのがつらいっていうか読めん
mixiは勘弁してくれよ
読むまでもなく「書き直せボケェ」の世界 社内でベテランと言われる人が妥当な理由もなくこんなコード書いてたらマジ辞めるね
>>967 逆コンパイルするとそんなソースになる、もしかして.....
まぁコメントまでは知らんが
>>967 file.encodingが不揃いな環境でコンパイルできるようにするために
やってるとか?
UTF-8で書いておけばどこでも通った気がしたが間違いかもしれない。
なあ、今度再利用するとか言ってるプログラムが try{ } catch (Exception e){ } なんてことをあちこちでバンバンやっているんだが、どうすればいいと思う? 俺は見なかったことにしてエスケープしようかと思ってるのだが。
あ?
973が何を言っているのか分からん
>>973 はどんな種類の例外かも分からないのに、
適当にcatch〜tryしてるのが気に食わないのか?
977 :
葉猫 :2008/07/26(土) 16:50:44
漏れも('A`)マンドクセー場合は↓とかやる try{ }catch(...){ }
握りつぶすならThrowable〜、ってか?
片っ端から例外握りつぶしてコンパイルだけ通るようなコードってことだろ
この糞コテまだ生きてたのか
981 :
仕様書無しさん :2008/07/26(土) 20:43:27
読んだとおりで
>>973 の3行分のコードがあちこちに書いてあるとか
だったら、中身を書けってことで
敢えて握りつぶしてるならコメント入れろってな
catchの方はともかくtryの中身が無いとマッタク意味ないじゃん
そこかよw
俺の予想 例外処理が遅いという話を聞き、空のループならぬ空のtryでウェイトをかけようとしている
かつてsin関数でウェイトをかけていたのを思い出した。つっても中学生の頃だが。
力業だなぁ ウエイトといえば OU 5Fh,AL だろ。
FOR I=1 TO 100:NEXT
990 :
988 :2008/07/27(日) 11:10:01
typo してたorz ×OU ○OUT 大昔のhowtoね
while( 1 ) { }
組込み系だとそれ普通じゃね?
for(;;) { }
>>994 無限ループなコードを書かれて泣いてるんですね。わかります。
話は変わるが、無限ループって怖くね?
while(1)とfor(;;)だったらwhileの方が好きだな俺は
>>997 俺はfor(;;)派。古いと言われてもついCPUへの負荷を気にしてしまう。
次スレ頼む
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。