この会社辞めようと思ったソースコード#20

このエントリーをはてなブックマークに追加
1仕様書無しさん
この会社辞めようと思ったソースコード。
プログラマとして幻滅するソースコード。
プログラマを悩ませるソースコード。
をつらつらと綴っていって頂戴。

ちなみにここは質問スレじゃないので
技術的な質問がしたいならム板 http://pc11.2ch.net/tech/ に逝って。

前スレ
この会社辞めようと思ったソースコード#19
ttp://pc11.2ch.net/test/read.cgi/prog/1192507427/
2仕様書無しさん:2008/01/22(火) 11:19:18
|w・)
3仕様書無しさん:2008/01/22(火) 11:27:55
プログラマ板として幻滅する次スレ。
4仕様書無しさん:2008/01/22(火) 11:34:12
スレ立てしたやつがアホだったときと感覚が似てるな
5仕様書無しさん:2008/01/22(火) 12:28:07
このスレは1さんに16進数を教えるスレになりました。
6仕様書無しさん:2008/01/22(火) 18:54:35
これは恥ずかしすぐる
7仕様書無しさん:2008/01/22(火) 18:55:39
oioioioi
8仕様書無しさん:2008/01/22(火) 19:06:50
#1Fの次に#1Gを立ててやろうと思ってたのに
9仕様書無しさん:2008/01/22(火) 19:21:38
10仕様書無しさん:2008/01/23(水) 00:52:38
ガード句や関数つかわなすぎでフジサーンしているところが・・・
11仕様書無しさん:2008/01/23(水) 00:55:27
/*探さないでください*/

12仕様書無しさん:2008/01/23(水) 01:46:11
/* フジサンフジサンうるさい馬鹿が居るのでインデント消しました */
13仕様書無しさん:2008/01/24(木) 16:10:30
「もうプログラム板でスレたてるのやめようと思った原因スレ#1」
14仕様書無しさん:2008/01/25(金) 07:57:16
0xついてないんだしこの際10進数でいいんじゃね?
15仕様書無しさん:2008/01/25(金) 13:42:13
実質1Aです、って断って、次は1Bにしてほしいというのが、大多数だとおもう。
16仕様書無しさん:2008/01/25(金) 13:52:52
じゃ間をとって2進数で。
17仕様書無しさん:2008/01/25(金) 16:50:34
2になってる時点でもうだめじゃん。
18仕様書無しさん:2008/01/25(金) 17:05:12
八進数にしろよ
19仕様書無しさん:2008/01/25(金) 17:49:15
どうでもいいよ、と思う俺は少数派か
20仕様書無しさん:2008/01/25(金) 18:22:23
いや、多数派だと思う。
21仕様書無しさん:2008/01/25(金) 19:18:28
思いきって捨ててしまい、1Aを立てたら?
22仕様書無しさん:2008/01/26(土) 03:18:10
>>21さんに背中を押されて立てました。あっちに行きましょう。
23仕様書無しさん:2008/01/26(土) 03:36:22
お前は誘導も出来ないのか
24仕様書無しさん:2008/01/26(土) 13:29:57
たかがスレ番号程度で重複スレ立てかよ
LRも読めないゆとりか?
25仕様書無しさん:2008/01/26(土) 15:14:59
>>25
えるあーる
26仕様書無しさん:2008/01/30(水) 18:39:10
VBだが、とある処理のとある状態を表すのにビットを使っている。
状態Aなら&H1(0x01) 、状態Bなら&H2(0x02)・・・・みたいな具合で、
複数の状態が一度に発生することもあるしそうじゃないときも。

んで、あることをする条件が、
「状態Bだけが発生していない時」(他の条件は無視)
だったんだが、そのif文が

if((iDat And &H1) != 0) And ((iDat And &H4) != 0) And ......



延々と&H8000まで書いてあったorz
誰だよorz
27仕様書無しさん:2008/01/30(水) 20:31:34
「状態Bだけが発生していない時」と(他の条件は無視)は論理的に矛盾してないか?

If iDat = &HFFFD Then '状態Bだけが発生していない時

If Not iDat And &H2 Then '状態Bが発生していない時(他の条件は無視)

どっちが正解?
28仕様書無しさん:2008/01/30(水) 22:17:03
「だけ」が余計だな
29仕様書無しさん:2008/01/31(木) 07:05:22
>>26の見て、今見てるVB6のコードのこと思い出した。

こんな感じで記述されてた。
MsgBox "Hoge", 1 + 48

第二引数はIntelliSenseで定数の選択肢が出てるんだが、それを蹴って数値に直してる上に
"+"でつないでやがる。意味わかってんだろか?
どんなメッセージボックスか、いちいちイミディエイトで確認せなあかんがな。

できれば、
MsgBox "Hoge", vbOKCancel Or vbExclamation
であってほしいんだが、これってこだわりすぎやろか?
30仕様書無しさん:2008/01/31(木) 08:03:01
関西弁やめて。
31仕様書無しさん:2008/01/31(木) 10:22:36
>46
定数を使うのは当然

というか、そういう人のソースって、あらゆる所に直値使ってそうだな

おれが今みてるソースもなんだが orz
32仕様書無しさん:2008/01/31(木) 19:00:36
46に期待
33仕様書無しさん:2008/01/31(木) 20:54:18
VBでサブルーチンにcallなしで括弧つけるのが気持ち悪いんだよなぁ
34仕様書無しさん:2008/01/31(木) 22:09:51
>>33

VB6? VB.NET?
35仕様書無しさん:2008/01/31(木) 23:02:28
いままでは手離れのいい、当たり障りの無いコード書いてきたつもりだけど

DQNなコード置いていくのも人生かと思うようになってきた。
わざとやってみっかな、低品質コード・・・
とおもったけど、なんだボケーッと書けばいいだけだと気がついて・・。

どっかのだれか、ごめんよおお。
36仕様書無しさん:2008/01/31(木) 23:21:37
どっかのだれかはまずは自分だ。ほどほどにな。
37仕様書無しさん:2008/01/31(木) 23:43:36
>>35
俺の見てきた低品質コードって、ボケーッと書いてできるような代物じゃなくて、
もの凄い綿密な設計をしてわざと読みにくく書いてるだろって言いたくなるような
ものばかりなのだが、それって穿ち過ぎ?

あれだけ奇妙奇天烈な論理設計ができるのは一種の天才じゃないだろうか?
俺には真似できん。
38仕様書無しさん:2008/01/31(木) 23:46:35
忘れた頃に自分で見て解るのか!?ってソースは山ほど見てきたな。
解るんなら頭良いんだろうけど...

そういう意味での「頭の良い奴」の書いたソースは見たくない。
39仕様書無しさん:2008/01/31(木) 23:57:03
VBでいかにもCOBOLっぽい変数名のオンパレード
(あんた中東の人かって感じに母音抜いたローマ字綴りとか)

だけどADOのRecordsetを、
If rs.EOF = False And rs.Field("hoge").Value = ……
とか短絡評価したかったとしか思えん使い方してみたり
Stringで宣言した変数に実数を突っ込んで数値計算してみたり
(そのためにわざわざCDbl使いまくりとかもうね(ry))
単なるコボラが書いたとも思えん節がある……
コボラ→Perl→VBとかゆーキャリアなんだろうか?
40仕様書無しさん:2008/02/01(金) 02:21:09
みんな自分の書いたコードはいけてると思ってる不思議
41仕様書無しさん:2008/02/01(金) 07:02:14
だって底辺だモノしかたないさ みつぅお
42仕様書無しさん:2008/02/01(金) 12:52:39
16個のテーブルがあって
それぞれの出力ビットが 0x01,0x02,0x04,0x08・・・・と対応している時

わざわざ

BitTbl[16] = { 0x01,0x02,0x04,0x08,(中略),0xffff }:

とテーブルを宣言して「ほら、使いやすくなったでしょ☆」と得意満面で言われたときは
なんていうか、相手を殴って辞めてやろうかという気分になりますた
43仕様書無しさん:2008/02/01(金) 13:05:36
0x8000
4442:2008/02/01(金) 13:34:18
>43
_| ̄|○
オレも誰かに殴られてくる
45仕様書無しさん:2008/02/01(金) 18:23:25
>>45
すまん、C言語覚えたての新人の頃は
そういうのを繰り返して

 「俺が最適化したお!!先輩うれしいでしょ!!!」

と言っていたことがある

3年ぐらいして、作ったプログラムのソースを無断で全部むちゃくちゃに書き換えられて
しかもサーバーに上書きでアップされて納品物がムチャクチャになった時に
昔の自分の行為がどれだけ危険だったかを悟った
46仕様書無しさん:2008/02/01(金) 18:57:13
何が問題なのか分からん
47仕様書無しさん:2008/02/01(金) 20:43:04
しかも自己完結してるし
48仕様書無しさん:2008/02/01(金) 20:58:24
>>42
使い方にもよるが、即値を使わずワンクッション置くのはごくふつーの手法だろう。
もちろん組み込み等でメモリやCPUがぎりぎりの時はやらないし、得意満面はどうかと
思うけど。

まぁ狭い範囲で使うビット判定程度ならマクロ関数かますことが多いかもな。
49仕様書無しさん:2008/02/01(金) 23:09:59
>>48
即値とかいう話じゃなくて、
仕様上、「xのときbit xを出力する」というときに、
(1<<x) と書けばいいところをわざわざ BitTbl[x] にしたってことだと思うが。

この手のテーブルを定義するのって、
>>42が間違えたようにバグの元なんだよなw
50仕様書無しさん:2008/02/02(土) 03:02:00
でもnビットシフトが無い石だと表引きのほうが若干速いことはあるよ。
シフト回数をレジスタに入れてループするコードが出てるとコノヤロとか思う。
51仕様書無しさん:2008/02/02(土) 04:38:30
またすぐ特殊なシチュエーションを設定してごまかそうとする・・・
52仕様書無しさん:2008/02/02(土) 04:41:49
最近VBAしかいじってないなぁ。。。。

毎回セルのレイアウト変更すんなや、すっ頃スぞ。
53仕様書無しさん:2008/02/02(土) 07:27:10
迷ったら、直にでも管轄労働基準監督署と管轄労政事務所で
相談すること。
ハローワークhttp://www.hellowork.go.jp/
労働基準監督署http://www.tottori-rodo.go.jp/soshiki/roudou.html
労務安全情報センターhttp://www.labor.tank.jp/
労働基準関係法令へのリンク集
http://www.labor.tank.jp/hourei/hourei_link.html
法令データ提供システム/総務省 行政管理局
http://law.e-gov.go.jp/cgi-bin/idxsearch.cgi
労働基準関係法令へのリンク集
http://www.labor.tank.jp/hourei/hourei_link.html
労働判例選集
http://www.labor.tank.jp/hanrei/hanindex.html
労働相談案内
http://school7.2ch.net/test/read.cgi/shikaku/1188633308/l50
少額訴訟に関しては、裁判所HP及び、
民事訴訟法と裁判所法規則を参照すること。
労働基準関係
http://www.roudoukyoku.go.jp/seido/kijunhou/index.html
厚生労働省法令等データベースシステム
http://wwwhourei.mhlw.go.jp/hourei/index.html
下記も参考になります。
http://labor.tank.jp/toraburu/annai_index.html
日本労働弁護団
http://homepage1.nifty.com/rouben/top.htm
上記についても相談したほうがよい。
また、未払い賃金(給料、残業代)、解雇予告手当等については、
少額訴訟(仮執行宣言を含む)、労働審判、内容証明郵便等で
請求することができます。下記も参考になります。
http://labor.tank.jp/toraburu/annai_index.html
54仕様書無しさん:2008/02/02(土) 09:08:19
ひどい会社になると、こうだからね・・・。
○住宅補助が出ている(家賃の過半は給料天引き)の、個人アパートに踏み込んで荒らす。
 本を盗むとか、PCデータ盗むとか、回線に仕掛けするとか・・・。
○夜中に住居近くに繰り出してきて大騒ぎする。

ソース見て、「落書きだ」と悟ったら逃げることをお勧めします。
大体、ソース=脳みその中身の反映。

馬鹿はどう取り繕っても馬鹿なんだな、と自省をこめて実感したよ。
55仕様書無しさん:2008/02/02(土) 09:46:33
>>54
文才無いな。
56仕様書無しさん:2008/02/02(土) 09:53:51
まあ、俺も馬鹿なんだけどさ。悪意の充填度が違うだけかな。
57仕様書無しさん:2008/02/02(土) 12:59:26
>>49
inline 関数化しておけばよかっただけの話では?
inline int func( int x )
{
assert( ... );
return 1<<x;
}

実際にただシフトするだけのコードも
有効桁数の問題等を孕んでいて超危険なコードだと思うよ。

それがソースの各所に散っていたなら間違いなく
作り直しになる。

俺は>>42は汚いソースはどんどん汚くなるっていう好例だと思うな。
58仕様書無しさん:2008/02/02(土) 13:21:03
>有効桁数の問題等を孕んでいて超危険なコード
そんなこと言ったらかなりのコードが「超」危険なコードになるんじゃね?
この程度なら「超」は不要だと思うが
それとも assert を入れてる理由を説明してるつもりなのかな?
59仕様書無しさん:2008/02/02(土) 13:42:51
>>58
〜年問題みたいなのがどうでもいい問題なら、いいんじゃないの?

実際、assert入れても問題の解決になってないしな。
ただ、どうするかは仕様の問題であってここで解決は出来ないけど。

それと、修正の依頼があったから、新人はなんらかの修正をしたんだろうから、
有効桁のほうを間違えて、修正してた可能性も充分あるわけだがw
60仕様書無しさん:2008/02/02(土) 15:57:43
>59
こうでうすか?判りません!
「年月の表示形式はRFC2550準拠とし、内部表現でも
西暦2922億年問題が発生しないように作ること。」
61仕様書無しさん:2008/02/02(土) 17:33:44
もう日付の管理は多倍長整数でいいよ
62仕様書無しさん:2008/02/02(土) 18:21:35
文字型でいいよ
63仕様書無しさん:2008/02/02(土) 18:28:53
文字長は?
64仕様書無しさん:2008/02/02(土) 18:47:58
char(8)
65仕様書無しさん:2008/02/02(土) 19:15:34
>>60
こうですか?判りませんw

実際にただシフトするだけのコードも
有効桁数の問題等を孕んでいて危険なコードだと思うよ。
66仕様書無しさん:2008/02/02(土) 21:16:45
67仕様書無しさん:2008/02/06(水) 20:52:58
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) だ。
68仕様書無しさん:2008/02/06(水) 20:58:31
芸術的すぎて読めねえ
6967: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);
70仕様書無しさん:2008/02/06(水) 23:03:53
>67=69
きっとリファクタリング本の、「一時変数は悪」ってのを拡大解釈したんだよ。
FunnyVariantへのキャストはイミフメだが
「そうしないとObject#toString()が呼ばれるじゃないか! 」とでも思いこんでたのか。
71仕様書無しさん:2008/02/08(金) 11:44:04
MyMapPut( map, index );
72仕様書無しさん:2008/02/09(土) 11:03:52
/* ループカウンタ */
int rpknt;
73仕様書無しさん:2008/02/09(土) 12:02:57
「ハムスター ニャーン」のAAに迫る脱力感
74仕様書無しさん:2008/02/09(土) 12:45:04
>>73
そのAAについて詳しく
検索で見つからんかった
75仕様書無しさん:2008/02/09(土) 13:27:55
嘘吐き
"ハムスター ニャーン AA" でぐぐって数件目にあるじゃねーか
76仕様書無しさん:2008/02/09(土) 13:40:34
orz
ハムスター ニャーンだけでぐぐって悪かった

なるほどこれは脱力するわ
ありがとう
77仕様書無しさん:2008/02/09(土) 16:13:02
>>75
 ,.-ー'''フ
 ヽ、__ ̄ ̄~~`〜、
  /"~ ̄ ̄   ノ
 ヽ、    ̄ ̄~~~``ヽ、      ∩___∩
   `>ー‐     __)      l ノ     ヽ
   (     ̄ ̄ ̄~~~"ヽ、   /   ●   ● |
    `ヽ、_      _,,/''"'"|    ( _●_)  ミ
        >ヽ、          彡、   |∪|   ミ  _/\/\/\/|_
        /             \  ヽノ  /   \          /
       i                `ー-ー'"/   < ニャーン!! >
        ヽ、             ,i   /    /          \
         `-、.,,     、_       i       ̄|/\/\/\/ ̄
             ̄`i    "  /゙   ./
              i  ヾi__,,,...--t'"  ,|
               \  ヽ、   i  |
                〉、 、,}    |  .i
                `` `     ! 、、\
                        !、_n_,〉>

    /'''7'''7     /'''7       / ̄ ̄ ̄/    / ̄ ̄ ̄ /
    / /i  |      / /        ̄フ ./    / ./二/ /  . . ____
  _ノ / i  i__ . ノ /__,l ̄i   __/  (___   /__,--,  /    /____/
 /__,/  ゝ、__| /___,、__i  /___,.ノゝ_/    /___ノ



貼れば済むのに
78仕様書無しさん:2008/02/09(土) 16:18:41
脱力感っていうかきもいな。
79仕様書無しさん:2008/02/16(土) 11:22:31
さてさて、>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 も、これ以降一切扱わない。本当にただの一時変数だ。
8079: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 年以上、このフレームワークでいくつもの製品が作られ、稼動しているらしい。
81仕様書無しさん:2008/02/16(土) 11:46:44
携帯の UI がモッサリしてるのはもしかしてこんなコードが埋まってるかもしれないと、
少しだけ、ほんの少しだけ納得した。
8279: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 を含めて、余計なループ処理は中断してもいいかもしれない。
83仕様書無しさん:2008/02/16(土) 13:04:33
なげーよ
8479:2008/02/16(土) 18:44:03
めんごめんご
85仕様書無しさん:2008/02/16(土) 20:39:24
>>81
KX-HV200 って端末を触ったときは異様にレスポンスのいい操作に感激したものだ
いまどきの端末のほうがはるかにいい石積んでるのに今ひとつなんだよな…。
86仕様書無しさん:2008/02/16(土) 21:22:08
>>81
だって、無茶苦茶に拡張されたイベントループが5つも6つも回されるんだから遅くもなるよ(w

87仕様書無しさん:2008/02/16(土) 23:06:22
会社辞めたくなったわけじゃないけど、これ酷いな
ttp://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%A7%E3%82%A2%E3%82%BD%E3%83%BC%E3%83%88
なんか演算子とか全部揃ってるし
これは行き過ぎだよな?
88仕様書無しさん:2008/02/16(土) 23:45:05
これはひどい
89仕様書無しさん:2008/02/16(土) 23:48:42
激しい      インデント     です               ね
90仕様書無しさん:2008/02/16(土) 23:50:18
  いや  左端    以外  は  インデントとは呼ばないか?
91仕様書無しさん:2008/02/16(土) 23:54:13
突っ込み所が多すぎるw
ちょっと気になったけどJavaだとboolean == trueって普通なのか?
92仕様書無しさん:2008/02/17(日) 00:09:35
>>91
ぜんぜん普通じゃないから安心してくれ。
93仕様書無しさん:2008/02/17(日) 00:41:04
インデントで思い出したが

if (flagA) {
  if (flagB) {
    ・・・
}

if (flagC) {
  ・・・
}}

こんなの感じのがあちこちにあって
見づらいのでフォーマッタにかけたら
「勝手に改修するな」と滅茶苦茶
怒鳴られて全部元に戻したことがあった。
94仕様書無しさん:2008/02/17(日) 00:46:29
これをソートと言っていいのかとも思うが、コードは>>87よりまともという不思議w
http://ja.wikipedia.org/wiki/%E3%83%9C%E3%82%B4%E3%82%BD%E3%83%BC%E3%83%88
95仕様書無しさん:2008/02/17(日) 01:17:26
なんだそれw
96仕様書無しさん:2008/02/17(日) 02:20:23
実用じゃなくて、情報工学の学術的題材だろ。
97仕様書無しさん:2008/02/17(日) 02:45:50
>>94
ワロタ
98仕様書無しさん:2008/02/17(日) 02:53:48
>>94
この発想はなかった!
99仕様書無しさん:2008/02/17(日) 03:14:15
こうやって見てると案外wikipediaって面白いのな
100仕様書無しさん:2008/02/17(日) 03:54:37
>>94
宝くじを買うって行為はこんな感じだよな...
でも買うけど。
101仕様書無しさん:2008/02/17(日) 08:21:38
>>94
アンサイクロペディアにあっていいくらいのネタソートじゃないのかそれ
102仕様書無しさん:2008/02/17(日) 08:44:42
いやー、でも結構まともに、不完全性だか何だかの議論のネタに
なったりするらしいという話を、どっかで。
103仕様書無しさん:2008/02/17(日) 08:51:19
時間的な評価もあるのな
n!×nって時間かかりすぎだろww
104仕様書無しさん:2008/02/17(日) 08:57:20
しかも停止性は保証されてないという罠
105仕様書無しさん:2008/02/17(日) 09:28:27
誰が使うんだよw
106仕様書無しさん:2008/02/17(日) 09:39:51
暇つぶしにちょっと遊んでみるかな。面白そうだ。
107仕様書無しさん:2008/02/17(日) 10:39:09
アルゴリズムそのものを学問的に語る時には考え得るあらゆるアルゴリズムを視野に入れる必要があるからな
108仕様書無しさん:2008/02/17(日) 11:24:28
普通、考え得るか?こんな糞ロジック?
109仕様書無しさん:2008/02/17(日) 11:54:15
そう思うって事はあなたが実務には向いているが学問には向いていないって事だろう
まあ実際使う事を想定してたらこんなの思いつく方が凄いってレベルだが
110仕様書無しさん:2008/02/17(日) 11:56:33
でも、計算が収束しない時はこういうやり方したくなる。
たいていバグで収束しないのだけど。
111仕様書無しさん:2008/02/17(日) 13:40:47
結構昔に見たことがあるなぁ。と思ったらjargonファイルにもあるのね。
112仕様書無しさん:2008/02/17(日) 13:56:43
>>87
あれ
普通になってる?
113仕様書無しさん:2008/02/17(日) 14:15:39
>実装があまりにもお粗末なので修正

誰か知らんが余計なことをw
114仕様書無しさん:2008/02/17(日) 15:12:31
いや、それでもまだひどくね?
実装例なんだから始めの引数がなければ100にして整数にしたときに1未満なら異常終了とかんな処理は余計だと思うんだが・・・
shareSortメソッドにはこれでもかってくらいコメント書いてる割りにはoeTranSortメソッドにはないし・・・
単にインデント整理して色つけただけじゃねぇのって感じがするんだが・・・
115仕様書無しさん:2008/02/17(日) 16:36:12
ボゴソート遅い! ためしに処理系のrand()使って実装してみたけど
15要素ぐらいで2、3分まわしても終わらないわ……。
乱数体系がよければ終わるのかなあ……
116仕様書無しさん:2008/02/17(日) 16:44:48
>>115
処理系のrand()はダメだろw
大抵の実装じゃ、最下位ビットが反転されたものが交互にでてくるぞ。
117仕様書無しさん:2008/02/17(日) 16:52:05
ランダウの記号のページ
http://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%B3%E3%83%80%E3%82%A6%E3%81%AE%E8%A8%98%E5%8F%B7
だと、
巡回セールスマンの全詮索よりもスピード遅いっていう事になるのなw

>115
15要素でも全パターンが
15!=1307674368000
だけあるわけだしなw
118仕様書無しさん:2008/02/17(日) 18:15:08
119仕様書無しさん:2008/02/20(水) 00:37:03
終わりがないのが終わり。
それが奇偶転置ソートレクイエム。
120仕様書無しさん:2008/02/20(水) 02:01:04
do {
} while (swap回数);
にすりゃいいのか。(宣言と初期化とインクリメント2箇所略)
でも野暮ったいコードになるな
121仕様書無しさん:2008/02/20(水) 23:41:02
ソートなんて大概泥臭くなるもんさ
と知ったか言ってみるテスト
122仕様書無しさん:2008/02/20(水) 23:54:45
StringBuffer buf = new StringBuffer();
buf
.append(hoge)
.append(hore)
.append(fuga)
/* これが数百行続く */
.append(hage);
123仕様書無しさん:2008/02/21(木) 00:24:10
>>118のリンク先のコードを書いた奴と、
>>87(が書かれた時点)のリンク先のコードを
書いた奴って同一人物なんだな。
124仕様書無しさん:2008/02/22(金) 00:42:58
>>122は馬鹿。これよりはマシ。

String str = new String();
str = str + "hoge";
str = str + "hoge";
str = str + "hoge";
str = str + "hoge";
/* これが数百行続く */
str = str + "hoge";
125仕様書無しさん:2008/02/22(金) 01:21:41
String str = "hoge" + "hore" + "fuga" + /* 数百文字列続く */ + "hage";
126仕様書無しさん:2008/02/22(金) 07:21:16
sortとrandは何十年経っても未だ語られる奥深い世界だな。
127仕様書無しさん:2008/02/22(金) 07:34:08
>>124に比べれば125のほうがマシ。
128仕様書無しさん:2008/02/22(金) 07:44:14
>>50
それなんてZ80?
129仕様書無しさん:2008/02/22(金) 10:20:19
>>127
ですね。

俺、DelphiからJavaに移ったばかりの頃に
SQL文生成するのに、>>124をやっちまっただよ・・・。
O/Rマッパとかまだなかった。懐かしいな。まだ多分動いてる・・・。
やっぱりpascal文字列は一番偉いと思うんだけどなあ。

>>124ってJava入門者にまず教えた方がいいと思うんだ。
オブジェクトや参照の考え方が判るじゃない。
130仕様書無しさん:2008/02/22(金) 12:05:37
入門者じゃあ
何そのめんどくさいの
よくわかんね
動くんだからStringでいいじゃん
というオチ
131仕様書無しさん:2008/02/22(金) 12:40:24
>>125 が最低だと思うんだけど釣り?

あとから hoge hoge fuga foge とかにしたくなったら
String継承すれば済むし、読みやすいし。
132仕様書無しさん:2008/02/22(金) 13:20:10
継承……?
133仕様書無しさん:2008/02/22(金) 14:19:49
>>131
あんたの方がつりっぽいけど
マジレスすると>>125はバイトコードになった時に
よろしくやってくれてる(はず)。
134仕様書無しさん:2008/02/22(金) 14:23:04
>>133
>バイトコードになった時に

これも釣りだな
135仕様書無しさん:2008/02/22(金) 14:32:20
>>134
あらそうなの?じゃあまじで間違えた。
136仕様書無しさん:2008/02/22(金) 14:43:17
>>122って全体で1文だったのかw

StringBuffer buf = new StringBuffer();
buf.append(hoge);
buf.append(hore);
buf.append(fuga);
/* これが数百行続く */
buf.append(hage);

だと思ってた
137仕様書無しさん:2008/02/22(金) 14:59:17
>>134
おお本当だ。よろしくやってくれないjavaコンパイラもあるのですね。

http://blogs.wankuma.com/nagise/archive/2007/11/27/110580.aspx
138仕様書無しさん:2008/02/22(金) 15:36:13
むしろリテラルだったらわざわざ連結する必要がないじゃのいこ
139仕様書無しさん:2008/02/22(金) 15:56:59
考えられるとしたら
コード見やすくするために改行入れたいとか。

変数の場合もコンパイラがStringBufferに置き換えてくれるので
やっぱり>>124より>>125の方がマシ。

jdkによって色々なんだね。↓
http://blogs.sun.com/okazaki/entry/performance_myth_string_plus_string
140仕様書無しさん:2008/02/22(金) 18:17:58
String の連結と StringBuffer にこだわってた時期が俺にもありました。
ループの中でもなければ何の影響もないっつーの。
141仕様書無しさん:2008/02/22(金) 18:21:47
「数百行続く」もしくは「数百文字続く」の話の真っ最中
142仕様書無しさん:2008/02/22(金) 19:16:20
確かに最終的な動作で言えば大して違いはないってことになるんだろうが、
mutable/immutableの違いにこだわらない奴ってのは適切なクラス設計が出来ない奴。
143仕様書無しさん:2008/02/22(金) 19:51:58
StringとStringBufferの連結って……速度に結構な違いが出てくると思っていたのだが、実際はどの程度なのかね。
まぁ、速度が気にならないケースだったら、拘らないのも分かるけど。
144仕様書無しさん:2008/02/22(金) 20:12:40
10行ぐらいでできるんだからテストしてみなよ
145仕様書無しさん:2008/02/22(金) 20:19:06
>>139のリンク先ぐらいは読もうな。
146仕様書無しさん:2008/02/22(金) 22:19:05
そんなおまえらには悪いが

いまやStringBuilderの登場で

StringとStringBufferが涙目www
147仕様書無しさん:2008/02/23(土) 00:51:09
現場レベルだとなかなかjdk1.5依存はなあ・・・・。

しかたなく new Integer(int)する事も多し。
148仕様書無しさん:2008/02/23(土) 01:22:15
1.4のEOL移行期間は今年の夏(というか7が出るタイミング)までの見込みだったな。
149仕様書無しさん:2008/02/23(土) 08:25:55
お前ら、Formatterクラスのことも忘れないでください。
150仕様書無しさん:2008/02/23(土) 08:29:35
>>146
StringBuilderはStringの補助的なクラスだと理解しているが?
151仕様書無しさん:2008/02/23(土) 08:54:50
StringBuilder って 1.5 から導入なんだねえ。

なんかずっと昔、StringBuffer よりいろいろ不都合の多い "StringBuilder" って無かったっけ?
そんで StringBuffer の登場で StringBuilder 涙目wwwみたいな事があったような.。。。

でも StringBuffer って 1.0 の頃からあるしなあ。
あれは悪い夢だったんだろうか。。。
152仕様書無しさん:2008/02/23(土) 09:21:46
初期コストが若干違うだけでほとんど変わらないStringBufferとStringBuilderじゃ
今後もStringBufferの方が使われていくことだろう。
153仕様書無しさん:2008/02/23(土) 09:29:29
まあStringBuilderはコンパイラさんが自動的に使ってくれるだけで十分だな。
154仕様書無しさん:2008/02/24(日) 03:15:46
みんな同期と非同期の違いはちゃんとわかってて言ってるよね?
155仕様書無しさん:2008/02/24(日) 07:08:43
非同期の桜
156仕様書無しさん:2008/02/24(日) 07:20:57
152はわかってないね。
157仕様書無しさん:2008/02/24(日) 07:23:06
同期はクロックにあわせて動作する回路のことだろ
例えばD-FFのCLKにクロックを突っ込めばそれは同期回路だ

非同期はクロックにあわせずに動作する回路のことだ
D-FFでたとえるならCLKに前段のQをつないだら非同期回路になる
158仕様書無しさん:2008/02/24(日) 07:26:10
I/Oでデータ待ちでWAITするのが同期。
WAITせずに戻るのが非同期。
159仕様書無しさん:2008/02/24(日) 07:27:11
同期は同じ時期に入った人の事だ
非同期は・・・えーと
160仕様書無しさん:2008/02/24(日) 08:04:36
>>159
自分より後に入ったのに、自分の上司になる人のこと
161仕様書無しさん:2008/02/24(日) 11:51:33
>>156
分かってないのはおまえ。
ソースみてみろ。
162仕様書無しさん:2008/02/24(日) 13:14:39
>>139のリンク先ぐらいは読もうな。
163仕様書無しさん:2008/02/24(日) 13:56:25
synchronizedがあるかないかだけの違いじゃん
両方同じクラスを継承してるし
164仕様書無しさん:2008/02/24(日) 14:08:18
>>157
たまにクロックドメインの境界で
バス信号をFF2段で受けて同期化処理したつもりになってる
回路見かけたりするよな

それも量産中の製品とかで
165仕様書無しさん:2008/02/24(日) 14:15:49
>>163
synchronizedにかかるコスト、わかるよな?
166仕様書無しさん:2008/02/25(月) 01:58:56
>>164が難しい話をしててかっこいい
くそっ、大学で論理回路の授業受けたのに
167仕様書無しさん:2008/02/25(月) 02:15:21
>>166
もう休め。
普段の仕事を効率化して
余裕を作ってから>>164を追い抜くのが順番だ。
168仕様書無しさん:2008/02/25(月) 02:29:32
休んだ瞬間に後輩に追い抜かれるだろうな
169仕様書無しさん:2008/02/25(月) 03:25:14
>>168
そこまで層の厚い会社なら学んだ知識を放置することは無いんでは?
170仕様書無しさん:2008/02/25(月) 03:52:39
せっかく非同期にかかってたのに
171仕様書無しさん:2008/03/13(木) 17:21:18
関数の長さが500行もある・・・
ソースのインデントが深くならない様に、ifの条件が10個ぐらいある・・・
直値使いまくり
関数のパラメータがvoidで、グローバル変数渡し

こんなPGのおかげで、僅か1行かえたいだけなのに、別の部分変更しまくりw
172仕様書無しさん:2008/03/13(木) 17:26:49
>171の追記
>171のPG書いた人に俺のソース(関数短い、関数パラメータ渡し、defineとか使ってる)のPGを
「面白いプログラム書いてるねw」
と言われました・・・
かんべんしてww
173仕様書無しさん:2008/03/13(木) 18:18:58
メイン関数で2000行、5000行なんてザラ
一処理一関数にしないとわかりづらいって文句が来るよ ('A`)
読むべき所をあちこち飛ばされるとこんがらかる、だとさ ('A`)('A`)
174仕様書無しさん:2008/03/13(木) 18:47:32
関数の出口は一箇所にしろって話
ありえないと思ってたけど、
自分で逆アセしておっかけるとき、CallとRetが1対1だと分かりやすい。

なにしろ普通に逆アセしても、CallとかJampの飛び先にラベル入ってないし。
高度な逆アセなら違うんだろうけど。
175仕様書無しさん:2008/03/13(木) 19:07:07
高級言語の話しようぜ
176仕様書無しさん:2008/03/13(木) 19:19:25
ところで、アセンブリ使い込んでる香具師がJampなんて書くと思うか?
177仕様書無しさん:2008/03/13(木) 20:27:16
普段jmpと書いていれば迷いや間違いはありうることだろう。
しかしこれを気にするあまりbrunchと書いてしまわないように注意が必要だ。
178仕様書無しさん:2008/03/13(木) 20:31:22
brunchはtrunkのせいで間違える可能性が高いと思うぜ!
179仕様書無しさん:2008/03/13(木) 23:12:43
処理に入る前にエラーチェックするときって、

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) {
    本来の処理
   }
  }
 }
}
こうなるけど、どっちが読みやすいんだろう。
180仕様書無しさん:2008/03/13(木) 23:14:09
そういうときにこそgotoだろう。
181仕様書無しさん:2008/03/13(木) 23:15:55
>>179
if ( !hoge1 && !hoge2 && !hoge3 && !hoge4 ) {
  本来の処理
}
182仕様書無しさん:2008/03/13(木) 23:19:58
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;
183仕様書無しさん:2008/03/13(木) 23:52:23
>>181
Cだとエラー原因をエラーコードで返したいことがよくあるが、その方法だと対応できない。
184仕様書無しさん:2008/03/14(金) 07:38:36
>>179の下のタイプでインデントがぐちゃぐちゃだと
マジでテロ行為にしか思えないぐらいきつい。

インデントなおすと嫌な顔されるし…
185仕様書無しさん:2008/03/14(金) 08:01:29
>>183
あとだしジャンケンよくない!
186仕様書無しさん:2008/03/14(金) 08:50:11
>179
俺はその前者の書き方をしている
後者の書き方もたまにするけど。

>181の書き方は、アホPGの書き方とおもってるw
187仕様書無しさん:2008/03/14(金) 09:02:22
>185
要するに、>181は変更に弱い書き方という事でおk?
188仕様書無しさん:2008/03/14(金) 09:05:14
>182
構造体使えばおkじゃね?
189仕様書無しさん:2008/03/14(金) 09:50:43
>>185
最初から>>179の前者で書いておけば無問題ってことじゃ?
190仕様書無しさん:2008/03/14(金) 10:07:16
>173
今、ソースみててそのあちこち飛ぶから面倒というのが理解できたw

パラメータが全てグローバル変数渡しなってるアホソースだと、
関数化して1関数当たりの長さを減らすより、1つの関数を長くかいてあるほうがまし
どこで変数がセットされるのが追い切れない。もうダメポorz

もちろん、引数渡しろよという話だけどな
191仕様書無しさん:2008/03/14(金) 12:19:08
>>179の後者が変更に強くて>>181が変更に弱いとする基準がサパーリわからん(藁
192仕様書無しさん:2008/03/14(金) 12:43:25
>>186
そうか?
俺は>179の後者の方がアホだと思うけど
193仕様書無しさん:2008/03/14(金) 12:57:16
>>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では返り値を変えることなんて最初から考えてなかったんだ。
それを後から言い出すから「あとだしジャンケン」と言われるんだ。
194!179:2008/03/14(金) 13:41:11
if (!hoge1) {
 if (!hoge2) {
  if (!hoge3) {
   if (!hoge4) {
    本来の処理
    return OK;
   }
   return ERROR_HOGE4;
  }
  return ERROR_HOGE3;
 }
 return ERROR_HOGE2;
}
return ERROR_HOGE1;

できなくはないけどアホコードだな。
195仕様書無しさん:2008/03/14(金) 13:44:41
ただ>>189の書き方だと,関数の入り口と出口にトレース出力噛ます
良くあるデバッグ方法が使えないという問題がある
196仕様書無しさん:2008/03/14(金) 13:49:43
>>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;
}
でいいじゃん。
197仕様書無しさん:2008/03/14(金) 14:05:14
結論的には、>179の前者の記述が保守や可読性に優れているという事でOKかな

実際は、>194みたいなネストが深いプログラムをよく見るけどorz
198仕様書無しさん:2008/03/14(金) 18:40:22
途中returnが駄目だ!だの
gotoが駄目だ!だの
盲信したがために余計駄目なコードになる例は後を絶たないのだ、というお話でいいんですか
199仕様書無しさん:2008/03/14(金) 19:52:35
>>198
誰もgotoの話なんてしていないと思うが。
200仕様書無しさん:2008/03/14(金) 19:58:17
>>180で一応話は出てる。まあ誰も反応してないけどな。
201仕様書無しさん:2008/03/14(金) 19:59:53
ifを書いたときは必ずelseも書けというようなコーディング規約があると・・・

えろい人の思いつきはマジ怖い。
現場の誰もそんな事してないけど、その人の中ではまだ有効らしい。
202仕様書無しさん:2008/03/14(金) 20:02:03
>>198
goto濫用の厨房コードも後をたたないけどなw
203仕様書無しさん:2008/03/14(金) 20:11:54
goto乱用
ダメ、ゼッタイ。
204仕様書無しさん:2008/03/14(金) 20:31:38
>>201
それは空のelse{}ができるだけだから醜い以外の害は少ないから俺は許せる。
まったくもって良いとは思えないけど。
205仕様書無しさん:2008/03/14(金) 20:44:33
ifをネストさせるくらいなら、
判定用の変数を用意すればいいのに。
206仕様書無しさん:2008/03/14(金) 21:51:49
>>204
たまに見かけるコード
if (x == y) {
}
else {
 やりたい処理
}

素直に
if (x != y) {
 やりたい処理
}
と書いてはいけないらしい。
条件文が否定になるとわかりにくくなるとか。
207仕様書無しさん:2008/03/14(金) 21:52:31
乱用と適用は違う
208仕様書無しさん:2008/03/14(金) 21:52:56
>>196
エラーチェック部分と実際に処理する部分は分けたほうがいいやね。
209仕様書無しさん:2008/03/14(金) 21:53:55
if ( x < y || x > y ) {
  やりたい処理
}
じゃダメなのか?
210仕様書無しさん:2008/03/14(金) 21:55:45
いやいや
211204:2008/03/14(金) 22:56:36
>>206
空のelse使うんじゃなくて、そういうことなら、流石に酷いルールだな

ただ、上のほうが仕様書をそのまま表していて分かりやすいとかで使うときもある。
とはいえ、使うのを強制させられるのは正直簡便だなぁ。
212仕様書無しさん:2008/03/14(金) 23:30:19
条件の中にリソースの確保チェックが混ざってて、対応する解放処理が必要なら、
>179 の後半も生きてくるでしょ。
213212:2008/03/14(金) 23:31:57
あ、 C の話ね。 C++ なら RAII 使うから必要なくなる。
214葉猫 ◆Jz.SaKuRaM :2008/03/14(金) 23:35:14
こういうのはよくやる (・∀・)

if((a==1 && b==1)
|| (a==2 && b==2)
|| (a==3 && b==3)){
    ;     // この場合は処理しない
}else{
    やりたい処理
}
215仕様書無しさん:2008/03/14(金) 23:41:57
信じがたいことだが、ド・モルガンの定理を知らないプログラマーは、多数生息しているらしい。
216仕様書無しさん:2008/03/15(土) 00:08:21
何この糞コテ
217仕様書無しさん:2008/03/15(土) 00:19:21
定理? 法則?

意味は同じ?
218仕様書無しさん:2008/03/15(土) 00:23:39
ド・モルガンとド・モアブルが紛らわしくて困る
219仕様書無しさん:2008/03/15(土) 00:27:14
ド・モルガンとド・ブンバ・ラが紛らわしくて困る
220仕様書無しさん:2008/03/15(土) 00:27:21
さすがにド・ラ・ヴァリエールまでは出てこない
221仕様書無しさん:2008/03/15(土) 01:59:57
>>215
問題は仕様書を書く奴がドモルガンを理解しているとは限らない。
そして、仕様書とコードが隔離しているほど後で読むと混乱する。
だから仕様書にあわせてドモルガンを適用しないのは戦略としてありと思う。
ただ、使ったほうが綺麗になるケースもあるから線引きが難しいけど。
222仕様書無しさん:2008/03/15(土) 03:12:41
仕様書なんて後から見た奴がすんなり分かるようにわざわざ論理圧縮かけた表現にはしないよ
コードは圧縮かけた結果元の表現がすぐ連想できないやつになってしまった場合は
本当はこういう意味なんだよとコメントするだけ

コメントしちゃいけないコーディングルールがあったり
コメントできない言語の場合どうすればいいかなんてシラネ
そんなクソプロジェクトなんかやったことないからな
223仕様書無しさん:2008/03/15(土) 11:23:29
じゃあ。コメントは必須なのか。
224仕様書無しさん:2008/03/15(土) 12:38:16
>>222
コードのほうは「圧縮」かけるのが普通なの?なんで?
225!222:2008/03/15(土) 13:31:35
>>224
仕様上は、1でなくて2でなくて〜9でない時にAを行う って記載されてて、
集合が1から10迄である事が保証されてる時は、
10の時にAを行うって書くよね、ソース上は。

適切な例で無かったらすまない。
226仕様書無しさん:2008/03/15(土) 13:41:23
>>225
意味がわからない。なんでわざわざ仕様とコードを乖離させるようなことするの?
「10の時にAを」にするのが絶対に正しくて、そうしたほうがいいと思うなら
仕様の記述を変えさせるべきじゃないの?
227仕様書無しさん:2008/03/15(土) 13:46:40
>>226
> 仕様の記述を変えさせるべきじゃないの?
それができないか、するだけ無駄と思ってコメント付けるだけにしたのでは?
228225:2008/03/15(土) 14:58:55
>>226
仕様では、アメリカ人・日本人・中国人〜インド人が記載され 
記載以外はAを行うと記載されていた場合、
ソースでは1:アメリカ人 2:日本人 3:中国人 9:インド人 10:それ以外 と定義して、10の時にAを行う

というような事を想定して書いた。
またしても適切な例ではないかもしれない。
229仕様書無しさん:2008/03/15(土) 15:50:22
>>228
要するに、仕様を擬似コードで描けと?
230仕様書無しさん:2008/03/15(土) 18:20:25
いや、たぶん。「仕様をちゃんとレビューしろ」なのでは?
231仕様書無しさん:2008/03/15(土) 23:51:44
222が出てくるまで待とうか
232仕様書無しさん:2008/03/16(日) 05:38:08
>>225
このパターンはあとで死ぬんだよなあ・・・
作り逃げならそれでいいんだけど。
死なないのは、その集合が月とか曜日とか
変わりようがない場合だけだな。

>>226の態度が正しい。
正しい態度がいつも取れるとは限らないけど。
233仕様書無しさん:2008/03/16(日) 08:01:35
>>225
次年度でAが11までになるような拡張をする仕事を受けさせられるという結末
234仕様書無しさん:2008/03/16(日) 13:59:18
その1とか2とか9とか10をコードに埋め込んじゃ駄目だ。
外に出しなさい。
#もちろんこれは「中田氏は危ない」という洒落交じりのチャチャじゃないぞ。
235仕様書無しさん:2008/03/16(日) 14:07:12
まあそういうのは当然enumか#defineするよな。
236234:2008/03/16(日) 14:11:57
>>235
いや、それは第一段階だよ。
外部ファイルにすればソースの修正が不要になるでそ。
237仕様書無しさん:2008/03/16(日) 14:15:32
で、設定ファイルのバージョン間互換性確保の手間が
呪いのようにのしかかってくるというオチか。
238仕様書無しさん:2008/03/16(日) 14:20:28
いきなり話題のレベルが落ちたな
例が悪い
239仕様書無しさん:2008/03/16(日) 14:33:18
マジックナンバーはいけないというから、エラーコードなどを#defineするけど、
こういう書き方をよく見かける
#define ERR_CODE_01 1
#define ERR_CODE_02 2
#define ERR_CODE_03 3

。。。
マジックナンバーと何が違うんだ?
240仕様書無しさん:2008/03/16(日) 14:35:57
別に ERR_CODE_01 を 100 とかに
簡単に変えれるメリットは残ってるじゃないか
格段に読みにくくなるが
241仕様書無しさん:2008/03/16(日) 14:39:52
>>239
とりあえず、その番号がエラーコードであるということがわかるというメリットはあるな。
ただ1とか2とかでは正常コードかエラーコードか一目瞭然じゃないだろ。
242仕様書無しさん:2008/03/16(日) 14:43:10
定数をシンボル化する目的には、定数の意味を説明するということもあるので、
そのようなシンボルではメリットの半分しか享受できないな。
243仕様書無しさん:2008/03/16(日) 14:48:44
エラーコードとかdefineして「0、1、2・・・」って振ってるのよく見るけどなんでenumにしないのか疑問でしょうがない。
244仕様書無しさん:2008/03/16(日) 14:50:18
>>243
知らない、というか知ろうとしてない。

245仕様書無しさん:2008/03/16(日) 14:55:05
('A`)マンドクサイ
246仕様書無しさん:2008/03/16(日) 18:26:32
今までの経験上 enum を使う人はそれなりにコードがきれいな気がする。
247仕様書無しさん:2008/03/16(日) 18:28:42
enum {
 ERROR_CODE_01 = 1,
 ERROR_CODE_02 = 2,
 ERROR_CODE_03 = 3,
 ...
}
248仕様書無しさん:2008/03/16(日) 18:37:56
まあなにごとも例外はある
249仕様書無しさん:2008/03/16(日) 22:58:28
enum は 「いーなむ」 だよな?
250仕様書無しさん:2008/03/16(日) 23:22:08
いにゅーむだなんて言わないよ。
251仕様書無しさん:2008/03/16(日) 23:22:51
252仕様書無しさん:2008/03/17(月) 00:46:07
miscellaneousをmisc.とかよく略すけど、
これも同じで、みんなどう読んでるんだろうっていつも思う。
俺は面倒なのでミスク。
253仕様書無しさん:2008/03/17(月) 03:17:14
みしぇれいにゃす
254仕様書無しさん:2008/03/17(月) 09:07:42
いやいや、そっちじゃなくてmiscのほう。

あ、miscを読むときは略さないでみしぇれいにゃすと読むって事かな?
255仕様書無しさん:2008/03/17(月) 20:51:48
みっしゅ
256仕様書無しさん:2008/03/17(月) 20:54:17
ミッシェル
257仕様書無しさん:2008/03/17(月) 22:17:47
まいすけ
258仕様書無しさん:2008/03/17(月) 23:55:25
わちきも「みすく」
でもcharを「ちゃー」はなんか背筋がうぞうぞするので「きゃら」

んー、一貫性ねーなぁorz
259仕様書無しさん:2008/03/18(火) 01:06:53
「みすく」だが、「きゃら」にはむしろ虫唾が走る
260仕様書無しさん:2008/03/18(火) 01:26:42
おれフランス人だから「シャル」って読んでる。
261仕様書無しさん:2008/03/18(火) 02:08:54
「シャア」だろ常考
262仕様書無しさん:2008/03/18(火) 02:13:32
むしろ「カル」
263仕様書無しさん:2008/03/18(火) 02:32:37
シャルル・アズナブール
264仕様書無しさん:2008/03/18(火) 02:49:35
チャー・アブノーマル
265仕様書無しさん:2008/03/18(火) 09:56:21
ありがと チャー
266仕様書無しさん:2008/03/18(火) 11:52:15
>>265
アワード見たね。

おれはイーナムにミスクにキャラだなー。

char*をキャラピカと呼んでた人がいたがなんかかわいくてよかった。
その人の会社のローカルルールだったのかな。
267仕様書無しさん:2008/03/18(火) 20:37:16
“同じような”どころか、“全く同じ”内容のクラスが
いくつもあったので、まとめられないかと訊ねた。
他愛もない答えが返ってきたので、ははと軽く笑った。

曰く、
「それをすると、画面機能テストの分析シートを作る時に
 ソースコードの行数をうまく数えられない。

 500行の画面機能1と、500行の画面機能2で
 同じ1000行のクラスAを使う時、
 分析シートには
   画面機能1.cpp = 500行、クラスA.cpp = 1000行 合計1500行
   画面機能2.cpp = 500行、クラスA.cpp = 1000行 合計1500行
 と書き、トータルで3000行とカウントされる。
 しかし実際に存在するコードは2000行だ。分析シートと実際の計算が合わなくなる」
と。

なんだ。
狂ってるだけか。はは。
268仕様書無しさん:2008/03/18(火) 20:43:24
のべ
269仕様書無しさん:2008/03/19(水) 15:01:21
>201
MISRAのことかー

ありゃくそ規約だった
270仕様書無しさん:2008/03/20(木) 23:35:39
何のためのクラス化なんだろうなと思ってしまうな
271仕様書無しさん:2008/03/21(金) 23:32:21
MISRAのどの辺がくそなの?
272仕様書無しさん:2008/03/22(土) 15:04:08
いくつかの項目が気に入らなければ、採用しなければいいだけの話。
273仕様書無しさん:2008/03/22(土) 21:24:37
>272
しかし採用を決めるのはCのプログラミング経験がないか
あるいはガチガチのMISRA-Cしか知らない連中だから……

伝統は引き継がれる、それが悪しき伝統であろうとも
274仕様書無しさん:2008/03/22(土) 21:54:25
伝統なんて呼べるほど長くないだろ,プログラミングの歴史は
275仕様書無しさん:2008/03/23(日) 11:14:04
開発部長のコード
CButton* button1 = (CButton*)GetDlgItem(IDC_BUTTON8);
CButton* button2 = (CButton*)GetDlgItem(IDC_BUTTON14);
276仕様書無しさん:2008/03/23(日) 15:44:55
それなんてサンプルコード?
277仕様書無しさん:2008/03/26(水) 01:59:51
ボタンが14個もあるサンプルなんてすげーイヤ。
しかもそのうち2個だけを特別に処理するとか考えると鼻水垂れる。 
278仕様書無しさん:2008/03/26(水) 02:04:56
始めにボタンをコピペしまくって最終的に8と14だけが残ったとかじゃねぇの?w
279仕様書無しさん:2008/03/26(水) 07:43:49
変数を通し番号で管理するルールほんとやめてほしいよ
意味で名付けろ意味で
280仕様書無しさん:2008/03/26(水) 08:54:06
>>279
1番目に押すボタン
2番目に押すボタン
3番目に押すボタン


281仕様書無しさん:2008/03/26(水) 11:52:08
[ 8 ] [ 14 ]

というボタンだったり
282仕様書無しさん:2008/03/26(水) 18:55:25
>>280
         ┻┻
ヽ(`Д´)ノ ☆
283仕様書無しさん:2008/03/26(水) 21:42:06
それきっとファンクションキーなんだよ!

14・・・・・?
284仕様書無しさん:2008/03/26(水) 22:01:05
うちのキーボードにはF16まである。
285仕様書無しさん:2008/03/26(水) 23:10:23
>>278
引き継いだダイアログのリソースには、
IDC_BUTTON2
IDC_BUTTON8
IDC_BUTTON14
IDC_BUTTON15
IDC_BUTTON15_2
の5つが置かれていました。
286仕様書無しさん:2008/03/26(水) 23:16:51
[4] [8] [15] [16] [23] [42]
287仕様書無しさん:2008/03/26(水) 23:56:31
Label13.Height = 5000
表示させない為らしい
288仕様書無しさん:2008/03/27(木) 00:32:52
……それにしてもなぜ0でなく5000なんだ
斜め上すぐる

ふと思ったが実はTopのつもりだったとか?
289仕様書無しさん:2008/03/27(木) 09:16:46
ラベルサイズを大きくして下のコントロールを覆い隠してるとかw
290ハーリー:2008/03/27(木) 21:58:58
>>286
宝くじ買ってくる
291仕様書無しさん:2008/04/06(日) 20:51:30
age
292仕様書無しさん:2008/04/06(日) 22:15:43
社内で使うJavaライブラリを保守してた時のこと。
「ライブラリの性能が悪いため修正しろ!」と本部長経由でねじ込んできた馬鹿な部署があった。
ライブラリはBigDecimalなのが悪い、longで書き直すと30倍速いと、ご丁寧にテスト結果がついてた。

1と比較する条件分岐
if(new BigDecimal("1").longValue() == hoge){・・・}
変数に5を代入する
hoge = new BigDecimal("5");
あと四則演算はすべてBigDecimalのメソッドで行っている。

テストコードを書き直すとlongとそんなに差がない結果になった。
作ったプログラムの性能が悪くて顧客ともめてたらしい。それをライブラリのせいにしやがった。
293仕様書無しさん:2008/04/06(日) 22:35:39
再現せずで返しとけよ
もちろん実測値つきで
294仕様書無しさん:2008/04/07(月) 02:33:16
んー、煽られ損だね。 お疲れ様。


あ、もし、本部長経由でお詫びの品とかその類があったら、
お裾分けとか考えてくれるなどしてもいい。
295仕様書無しさん:2008/04/07(月) 21:56:00
継承したフォームのいらないコントロールを隠す為に
大きめのボタンを配置してる画面があったな。
これがoverrideって奴ですか?
296仕様書無しさん:2008/04/07(月) 21:58:35
確かにoverにrideしてるなw
297仕様書無しさん:2008/04/07(月) 22:03:53
そのコントロール、visible や enable 属性ないの?
298仕様書無しさん:2008/04/07(月) 22:19:04
というか、いらないコントロールができるような継承は間違ってると思うんだけど。
299仕様書無しさん:2008/04/07(月) 22:56:01
そのノリで行くと、めったやたらにインスタンス作りまくって
メモリ馬鹿食いすればoverloadってか
300仕様書無しさん:2008/04/07(月) 23:00:20
じゃあ、そのいらないコントロールはunderhideだな
301仕様書無しさん:2008/04/08(火) 17:11:55
おまえら面白いな w
302仕様書無しさん:2008/04/08(火) 19:58:16
何を今更
303292:2008/04/12(土) 09:08:58
>293
見た目明らかなのにテストしたのは実測値を作るためです…
そのプロジェクトの対策会議で回答するんだが、出たかったが上司が出た。

>294
どうも。
会議に出た上司から、「資料ありがとうね」で終わりました。
お詫びの言葉はなかったらしい

304仕様書無しさん:2008/04/12(土) 11:21:00
まあ上司にしてみれば周囲の部署との無用な軋轢はつくりたくないんだろうな。
しかし部下に対してはもうちょっとフォローがあっても良さそうなものだが。
305orz:2008/04/13(日) 01:57:52
if(val==true){
 return true;
}else{
 return false;
}
306仕様書無しさん:2008/04/13(日) 02:21:44
return !!val;
307仕様書無しさん:2008/04/13(日) 02:30:54
!!はイデオムっちゃーイデオムだが、あんまり使わない方が万人向けな気がする。
308仕様書無しさん:2008/04/13(日) 02:58:02
>>305
ありすぎて困る。
309仕様書無しさん:2008/04/13(日) 06:01:41
return val; とどこが違うの?
310仕様書無しさん:2008/04/13(日) 06:14:25
違わないからスレタイなんじゃないかw
311仕様書無しさん:2008/04/13(日) 08:18:21
いや,val==0 ならば !!val は 0 で変わらんけど,
val!=0 だと val の値に関わらず !!val は 1 だぞ.
312仕様書無しさん:2008/04/13(日) 10:26:24
!!は(整数の場合)必ず0か1を得る方法。
Rubyみたいな nil, falseが偽でそれ以外全てが真な言語でも
nilとfalseをfalseに、それ以外をtrueに出来たりするな。
313仕様書無しさん:2008/04/13(日) 13:01:12
>>312
ところが>>305の場合はtrue以外はfalseになるのだから、
!!valと等価ではないんだな、これが。ありがちな罠。
314仕様書無しさん:2008/04/13(日) 14:05:19
>>306が正しいけど、それだと情報が失われるから
return val;
が現実には正しい。
315314:2008/04/13(日) 14:08:05
Falseと比較するのが正しいとかゆってるのがプロだけど、
僕はTrueやFalseと比較すること自体が間違ってると思う。

TrueやFalseは、それ自身が答えなんだから答えを質問するなと。
316仕様書無しさん:2008/04/13(日) 14:10:10
>>315
お前は世間を知らないアホw
317仕様書無しさん:2008/04/13(日) 14:12:45
半角英数使え屑
318仕様書無しさん:2008/04/13(日) 14:59:23
>>314>>315って矛盾してね?矛盾っていうほどでもないけど・・・
同じ人間の発言とは思えない
319仕様書無しさん:2008/04/13(日) 15:18:58
上のようなやりとりをなくすために
各言語のboolean型が作られたんじゃないのか?
320仕様書無しさん:2008/04/13(日) 15:54:42
>>314
失わせるのが目的じゃないか?
>>312とか読めばわかるだろ。
321仕様書無しさん:2008/04/13(日) 16:13:07
<>
322仕様書無しさん:2008/04/13(日) 17:14:25
>>319
boolean に言語間の互換性はない。

あと、
if(val==true)
{
 return true;
}
else
{
 return false;
}
だけど、言語は何?普通に考えるとC++あたりだと思うんだが、
もしそうなら、コンパイラに最適化されて終わり。

return val;

と同じ意味。
323仕様書無しさん:2008/04/13(日) 17:17:34
問題にしてるのは実行速度じゃないんだけどね
324仕様書無しさん:2008/04/13(日) 17:20:47
>>305は、
・真と見なされるtrueでない値に対してfalseが返ることを問題にしているのか
・return1行で済むだろと言いたいのか
どっちなのか。
325322:2008/04/13(日) 17:35:53
>>323
このスレ、Cプログラマが多いのか?

>>324
たぶん、return true; で済むところを回りくどいことをしていると
言いたいんだろう。

それ以上のことを言いたいなら、言語を明らかにしないとだめだし、
ソースも不足している。
326仕様書無しさん:2008/04/13(日) 17:55:35
なんか>>324のコードが問題ないと思ってるやつが多いな。

問題ない処理系あるんなら教えろ。
327仕様書無しさん:2008/04/13(日) 17:57:29
TRUE ≠ TRUEだから問題なんじゃないか
328仕様書無しさん:2008/04/13(日) 18:07:43
1.true
2.false
3.trueでもfalseでもない値
の3.の場合の処理を考慮しろってことか?
そんなバッドノウハウ考えたくない。
329仕様書無しさん:2008/04/13(日) 18:09:28
>>326
324というか305のコードだという前提でレスするが

とりあえずsunのjdkなら問題ないと思う
ここで「問題」というのは

exists val s.t. (>>305のルーチンがreturnする値≠val)

が真という意味だとして。
330仕様書無しさん:2008/04/13(日) 18:28:00
>>328
言語仕様上は
1 true
2 false
3 null
の3通り考えられるだろう。
ぬるぽだから要修正で終わりだけど。
331仕様書無しさん:2008/04/13(日) 18:31:14
まてまて何の言語か確認して話そうぜ。
Javaならtrueとfalseを取る変数はnullになることはない。
Cなら実体は整数だろうからなんでもあり。
Rubyならtrueとfalseとnilがある。
332仕様書無しさん:2008/04/13(日) 18:31:43
すまん305のコードでrubyはないな。
333仕様書無しさん:2008/04/13(日) 18:35:29
true/false なら C++ だろ。そうなると、 C 以上になんでもありなわけだが。
334仕様書無しさん:2008/04/13(日) 19:25:34
C++ならtrue/falseはbool型の定数でbool型の比較なんだから問題ないだろ
335仕様書無しさん:2008/04/13(日) 19:28:01
もう嫌になってきた。
オマイラがびっくりするような糞コードを生成してる。
せっかくだからついでに縦読みでも仕込んでおこうかな。
336仕様書無しさん:2008/04/13(日) 19:31:46
最適化されるから問題ない、とか言い訳する奴、氏ね
337仕様書無しさん:2008/04/13(日) 19:33:27
>>335
縦読みはともかく、糞コードは前からだろ
338仕様書無しさん:2008/04/13(日) 19:41:07
>>337
>オマイラがびっくりするような糞コード
 ^^^^^^^^^^^^^^^^^^^^^^^^^
339仕様書無しさん:2008/04/13(日) 19:44:08
ほう...
340仕様書無しさん:2008/04/13(日) 20:10:16
>>337-339
もうね。書いてる俺がびっくりだよ。
これいいのかよ?まぁいいや。の繰り返し。
341仕様書無しさん:2008/04/13(日) 20:11:19
いつか、このスレの誰かが後始末するのかもな。
先に謝っておくよ。
ごめんな。
できれば縦読み気付いてくれよ。
342仕様書無しさん:2008/04/13(日) 20:12:27
出合ったら「作品」を晒してやるよw
343仕様書無しさん:2008/04/13(日) 20:24:31
うちの会社なんてASP.NETのシステムからメールを出す方法が判らず、
BASP21.DLLをインストールして使おうとしてやがったんだぜw
344仕様書無しさん:2008/04/13(日) 20:26:59
>>343
コーヒーフイタw
345仕様書無しさん:2008/04/13(日) 21:01:06
もう
オマ
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 しかありえない。
347仕様書無しさん:2008/04/13(日) 21:21:00
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

とか、全部このパターン。
348仕様書無しさん:2008/04/13(日) 21:25:34
分かってるんなら教えてやれよ
349仕様書無しさん:2008/04/13(日) 21:54:06
ソースコードではないが、要求書に愚痴だけを書いたやつがいた。
しかも、レビューまであった。しかも、そのまま、外注に丸投げ。。。。

350仕様書無しさん:2008/04/13(日) 22:09:48
>>348
別件で「VB.NETではこういうふうに書いたほうがいいですよ」みたいな話をちょろっとしたことあって、
そのときは、うんうん、なるほど、みたいに納得してたけど、その後もいっさい改めてなかったんで、
スタイルかえるのがイヤなのか、理解できないのかどっちかなんだろうなと思って、いまいち教えるのに
ちゅうちょしてしまうというか。
351仕様書無しさん:2008/04/13(日) 22:54:27
>>350
コーディング規約決めるか
社内メールにプゲラッチョ
コーディングとかいって
その部分を晒してそいつをいじり倒す
どっちかで解決するだろう。

352仕様書無しさん:2008/04/13(日) 22:55:08
>347
それはVB6でも意味的には2重にインスタンス生成しとるんだが。
(実際には「コンストラクタ」内でしか生成されん、はずだけど)
VB.netがわかっとらんというより、クラスとインスタンスとか
その辺から既にワケワカランでないのか。
353仕様書無しさん:2008/04/14(月) 00:48:12
>>346
C++ならありえない 
と、俺も思いたかったし、そういう使い方しかしてなかったが、
VCでは100とかの値を入れる事が出来るし、そういう使い方をする奴がいて目ん玉飛び出た。

先輩だったから、文句を言うのはよして、とっとと修正した。 もちろんその会社は辞めた。
354仕様書無しさん:2008/04/14(月) 00:57:25
>353
そりゃ、いざって時にはboolとintに互換性があるように
逃げ道作ってあるからなぁ、C++は……
ttp://www.bohyoh.com/CandCPP/FAQ/FAQ00139.html
Javaが登場したときは、「今度こそ数値型と決別したbooleanを用意しました!!」
ってのも売り文句だった記憶が。
355仕様書無しさん:2008/04/14(月) 01:07:43
>VCでは100とかの値を入れる事が出来るし
まさか、boolとBOOLを混同してやいませんかね。
356仕様書無しさん:2008/04/14(月) 02:57:03
あれ?
 bool == 1 byte
 BOOL == 4 bytes
じゃねの? >355
357仕様書無しさん:2008/04/14(月) 03:33:04
boolはtrue か false しかありえない

BOOLはしらね
358仕様書無しさん:2008/04/14(月) 04:38:28
飛んでイスタンBOOL 人の気持ちはシュール・・・
359仕様書無しさん:2008/04/14(月) 06:34:47
>>331
newしなければnullにならないか?
360仕様書無しさん:2008/04/14(月) 09:06:12
>>359
Javaの話をしてるなら、boolean型はプリミティブだ。
nullになることはありえない。
361仕様書無しさん:2008/04/14(月) 10:59:09
今見ているソース(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
362仕様書無しさん:2008/04/14(月) 11:04:50
>>361
コンパイルできないだろ、それ。
363仕様書無しさん:2008/04/14(月) 11:14:17
>392
「;」がないとか関数名とかは適当だが
内容的にな。

要するに、ポインタをグローバル経由とか、ポインタ演算に+使ってるとか・・・
364仕様書無しさん:2008/04/14(月) 11:17:16
ptr+5 = a
代入の左辺に演算子置けたっけ
365仕様書無しさん:2008/04/14(月) 11:19:58
*(ptr+5) とか &buf[30] なんだんろうけどさ、
仮にもマなら2ちゃんのレスとは言えもうちょいマシに書けよw
366仕様書無しさん:2008/04/14(月) 11:36:22
書いた奴も読んだ>>361もどっちもどっちということで。
367仕様書無しさん:2008/04/14(月) 12:23:11
>>352
意味的って何だよ?適当なこと書くなよアホが
368仕様書無しさん:2008/04/14(月) 13:13:58
>>352 二重でってのはちがわなくね?

VB6でdim x as New X宣言すると、
xを参照する箇所すべてでインスタンスが作成されてなければ作成するような処理
(If x Is Nothing Then Set x = New Xみたいなの)が内部で実行されちゃうから
遅くなるとかそゆのは聞いたことあるけど。

369仕様書無しさん:2008/04/14(月) 14:27:58
>364-365
正直、すまんかった
370仕様書無しさん:2008/04/14(月) 22:16:10
>>360
Java5の話なら、ラッパークラスと対応するプリミティブ型はコンパイラが相互変換してくれる。

つまり、ある変数がtrue/falseと比較や代入できるなら、その変数はbooleanかBooleanのどちらかだ。
Booleanの場合、nullはありえる。

371仕様書無しさん:2008/04/14(月) 22:38:19
>>370
オートボクシングのせいでぬるぽったりするとむっとするな
372仕様書無しさん:2008/04/14(月) 23:56:18
>>353
値が切りつめられる。代入後の値をみると良い。
373353:2008/04/15(火) 02:04:25
>>372
直接代入ではなく、unionを使ってやってくれてたんだよ。 
374仕様書無しさん:2008/04/15(火) 06:38:17
union {
bool b;
int i; };
なuたいして、u.i=100; if( u.b ){ }みたいなコードってこと?
375仕様書無しさん:2008/04/15(火) 16:08:05
>>374
それに2を代入したらFALSEになっちゃうのかな?
376仕様書無しさん:2008/04/15(火) 16:16:29
256を代入したらfalseかもな
377仕様書無しさん:2008/04/15(火) 22:14:45
未定義だけど、
if( u.b ) { /* 来る*/ }
if( u.b == true ){ /*来ない*/ }
if( !u.b );else { /* 来る*/ }
if( u.b == false ); else{ /*来る*/ }
になる可能性が高そう。
378葉猫 ◆Jz.SaKuRaM :2008/04/15(火) 22:28:25
つ _Bool
379仕様書無しさん:2008/04/15(火) 23:24:49
いつも思うんだけどお前空気読めよ
380仕様書無しさん:2008/04/16(水) 03:12:57
えっ、俺!?
381仕様書無しさん:2008/04/16(水) 04:07:27
そうだよ、お前だよ、お前
382仕様書無しさん:2008/04/16(水) 11:46:26
>>378
何の話か理解できない糞コテは黙って死んでろ。
383仕様書無しさん:2008/04/16(水) 12:30:42
>>377
花占いみたいだな
384仕様書無しさん:2008/04/17(木) 06:57:52
>>382
専ブラ全盛のご時世、嫌いなコテをNGもせず
明示的にレス眺めて噛み付くって馬鹿じゃないの?
385仕様書無しさん:2008/04/17(木) 11:24:26
>>384
そうか?お前の知ったこっちゃないと思うが。
386仕様書無しさん:2008/04/17(木) 11:30:30
屑コテが氏ねば全て丸く収まる話じゃね?
387仕様書無しさん:2008/04/17(木) 12:11:11
「工夫していない」ってことだから、ここがマ版だということを考えるとバカといって差し支えないかと。
388382:2008/04/17(木) 12:21:38
専ブラで、>>384 の言うとおり狙って叩いてるわけだが。
(「専ブラ全盛」の真偽はともかく)
>>387
>「工夫していない」ってことだから
間抜けな指摘ありがとう。
389仕様書無しさん:2008/04/17(木) 12:23:27
このコテが来るとこういう流れになるからヤなんだよ・・・
馬鹿が馬鹿を喚ぶみたいな

たとえNGにしていてもウザいのには変わりないわけで
390仕様書無しさん:2008/04/18(金) 01:49:07
>378 が表示されない俺は一瞬 >377 が >379 に突っ込んでいるのかと思った。
391仕様書無しさん:2008/04/18(金) 02:15:29
×一瞬 >377 が >379 に突っ込んでいる
○一瞬 >379 が >377 に突っ込んでいる
392仕様書無しさん:2008/04/18(金) 20:39:41
突っ込んでいるって書かれると、ボケのほうじゃなくて、アーッのほうを連想するんだけど。w
393仕様書無しさん:2008/04/18(金) 20:54:25
それは2chに毒されすぎ
394仕様書無しさん:2008/04/18(金) 20:58:53
アッーじゃないか?
395仕様書無しさん:2008/04/18(金) 21:01:20
アッー!だろ。

そんなことより、や ら な い か ?
396仕様書無しさん:2008/04/18(金) 21:41:13
「やらないか」に「?」はいらない
差しつ差されつなかよくな
397仕様書無しさん:2008/04/18(金) 22:25:53
>>396
アッー!一生の不覚w
398仕様書無しさん:2008/04/19(土) 00:51:53
>>285
昔の会社に、VCが吐き出すデフォルトの"IDC_BUTTON1"などのIDを
わざわざ"IDC_BUTTON_01"とか"IDC_EDIT_08"とか書き直している奴がいたな。

「"1"じゃなくて"_01"のほうが綺麗に並んでわかりやすいでしょ」とか言ってた。

馬鹿すぎ。
399仕様書無しさん:2008/04/19(土) 01:56:46
>>398
こうなるよりいいな。

IDC_BUTTON_3
IDC_BUTTON_25
IDC_BUTTON_8
400仕様書無しさん:2008/04/19(土) 02:07:02
俺もゼロパディングする派だけどなぁ。
401仕様書無しさん:2008/04/19(土) 02:18:16
400は言ってる意味が分かってない
402仕様書無しさん:2008/04/19(土) 03:47:25
どうせ変えるなら意味のある名前にするかな
403仕様書無しさん:2008/04/19(土) 08:55:11
>>399-400
コントロールに無意味な数字を使うなよということ。
しかもわざわざ自分で修正してまで。
404仕様書無しさん:2008/04/19(土) 10:17:12
俺だったら、片手で数えられるくらいのボタンしか入れない規模だったら
あえてデフォルトのままにするけどな。
・・・あれ?
405仕様書無しさん:2008/04/19(土) 12:54:11
俺は胸をパッディングしてる奴を
見ると怒りを覚えるな

偽装いくない
406仕様書無しさん:2008/04/19(土) 13:32:56
偽乳のことか!!!!11111111
407仕様書無しさん:2008/04/19(土) 14:09:28
>>403
そのボタンが同じ機能の羅列なら別に番号でもいいと思う。

たとえばシート1シート2・・・
たとえば1ぺーじ2ぺーじ
たとえばセル1セル2
408仕様書無しさん:2008/04/19(土) 14:12:44
たとえば追加変更削除更新...
409仕様書無しさん:2008/04/19(土) 21:07:36
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がコンパイル通らない時点でおかしいと思ってくださいお願いします
410仕様書無しさん:2008/04/19(土) 21:27:49
0つけると8進数なんだっけ?
411仕様書無しさん:2008/04/19(土) 21:43:32
これはひどい
412仕様書無しさん:2008/04/19(土) 21:59:56
>>409
うはww
盲点ww
413仕様書無しさん:2008/04/19(土) 22:08:25
>>409
一瞬分からなかったがこれはひどいなw
414仕様書無しさん:2008/04/19(土) 22:09:19
盲点というより。なんでそんな書き方するんだろうね
415仕様書無しさん:2008/04/19(土) 22:12:13
桁数合わせのつもりだろうけど、数字が密集して逆に見難くなると思うんだけどな。
416仕様書無しさん:2008/04/19(土) 22:29:22
スペース入れろよ
417仕様書無しさん:2008/04/19(土) 22:46:06
このスレ見てると思うんだけど、こういうコード書いた奴は
「ウホッ!!いいコーディングスタイル」
とでも思ってるんだろうか・・・
418仕様書無しさん:2008/04/19(土) 22:55:57
プログラミングのことなんかどうでもいいと思ってるんだろう。
419仕様書無しさん:2008/04/19(土) 23:00:13
409が問題になる言語仕様も困ったものだけどな
010が8を意味するなんて直観的じゃないよ

>>417
後で読んで頭が痛くなるコードってのをよく書いちゃうんだけど、
思い返すと中途半端に時間があったりするときに量産されてる気がする
考える余裕はあるけど煮詰める余裕のないとき、というか
完全な趣味だったり、あるいはデスマってたりしたときのコードは大概普通だ
420仕様書無しさん:2008/04/19(土) 23:09:48
>>419
0x00で16進なら8進も0*00で統一すれば良いのにな
そうすれば0*00で2進数も表現できるし
421仕様書無しさん:2008/04/19(土) 23:18:36
google様は0oが八進で0bが鰊
422仕様書無しさん:2008/04/19(土) 23:32:19
&B
&O
&H

あー、でも&Bは最近じゃ使えないか……
423仕様書無しさん:2008/04/20(日) 00:24:19
>>422
N88-BASICでも&Bは使えなかったぞ。
424仕様書無しさん:2008/04/20(日) 02:45:05
>>419
C言語由来のなにかがあえて8進記述を削除してたな。
C#だったかPerlだったか。

わざわざ8進表記することなんか今はないんだから、
C99ででも削除しちゃえばよかったのに。
425仕様書無しさん:2008/04/20(日) 04:22:20
>409は素直に number = 128/number でいいようだけど
除算の負荷を避けたのか除算すら思いつかなかったのかどっちだろうw

caseに含まれてない値があり得るなら除算では挙動違っちゃうけど
426仕様書無しさん:2008/04/20(日) 10:27:18
>>409
初期のC言語は"008"も8進数として解釈された。
「"8"と"9"は8進数ではない」と定義され直したのは、かなり後。
427仕様書無しさん:2008/04/20(日) 11:58:06
値としてはいずれにせよゼロだからどうでもいいけど、
ただの 0 ヒトケタはCでは8進数なんだろか。
428仕様書無しさん:2008/04/20(日) 14:55:20
>>427
それが分からないようじゃだめだろ
429仕様書無しさん:2008/04/20(日) 16:16:46
>401や>428のように具体的な事を書かずに「分かってない」とだけしか言わないレスが散見されるが

なんか書いてよw
430仕様書無しさん:2008/04/20(日) 16:29:11
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進数なわけか。
431仕様書無しさん:2008/04/20(日) 17:17:40
>>430
それ何言語?
432仕様書無しさん:2008/04/20(日) 17:25:32
>>431
BNFだろ
433仕様書無しさん:2008/04/20(日) 17:39:46
>>430
octal_constantの定義はどうなってる?
434仕様書無しさん:2008/04/20(日) 17:59:10
>>433
>>430じゃないけど
octal-constant:
0
octal-constant octal-digit

octal-digit: one of
0 1 2 3 4 5 6 7

つまり0一個でも8進数みたいだな。
435仕様書無しさん:2008/04/20(日) 18:44:15
じゃ、定数0は8進数ということで、

〜〜〜 イトフユ 〜〜〜
436仕様書無しさん:2008/04/20(日) 19:28:02
>>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進数なのか・・・
437仕様書無しさん:2008/04/20(日) 19:40:32
何進数でも0は0だろ
438仕様書無しさん:2008/04/20(日) 19:58:09
>>437
確かに0だが、内部では8進数で処理されてるんだぞ…
439仕様書無しさん:2008/04/20(日) 20:10:35
内部ゆーてもコンパイラの内部だからなぁ
実行時はどっちゃも一緒
気にしてもしょーがなし
440仕様書無しさん:2008/04/20(日) 21:04:04
>>437
そういうレベルの話なら>>427で済んでるんだ。
441仕様書無しさん:2008/04/21(月) 01:11:02
10進数の整数0は単体では書けないのか
なんとなく気分的に微妙な話だな
442仕様書無しさん:2008/04/21(月) 16:44:34
×進数に拘りすぎる奴って、数値を文字単位で捉えてる感じだな
443仕様書無しさん:2008/04/21(月) 17:05:46
コンパイラやパーサの話だから文字レベルの話だよ
444仕様書無しさん:2008/04/22(火) 18:39:57
>>438
なんでやねん。

内部の話なら、整数はすべて2進数にきまってるだろ、jk。
445仕様書無しさん:2008/04/22(火) 20:37:33
>>444
構文解析時に "0" というワードに遭遇したら
パーサはどう解釈する(少なくとも仕様上)か
って話をしてたんだろ

その時点ではまだ「2進表現された整数」ではないな
少なくともその部分の構文解析が終わって初めてそういう形にできる
446仕様書無しさん:2008/04/22(火) 22:09:32
void hfill(int x)       // ソースの左半分がコード、右半分が
{               // ドキュメントときれいに分かれてる
  int left, right;     // ソースをもらったんだ。コードと文
              // 章がきちんとシンクロして進むあた
  left = x;        // り大した職人芸なんだけど、これっ
  while(a[left]!=color) // てどこか一箇所でも変更が入ると大
  {             // 変なことになるよね。というか直す
    left--;       // の俺なんですけど。
447仕様書無しさん:2008/04/22(火) 22:13:34
void hfill(int x)       // ソースの左半分がコード、右半分が
{               // ドキュメントときれいに分かれてる
  int left, right;     // ソースをもらったんだ。コードと文
              // 章がきちんとシンクロして進むあた
              //俺の尻の穴に貴方の野太いちんぽぶち込んでくれませんでしょうか?
  left = x;        // り大した職人芸なんだけど、これっ
  while(a[left]!=color) // てどこか一箇所でも変更が入ると大
  {             // 変なことになるよね。というか直す
    left--;       // の俺なんですけど。



を思い出した
448仕様書無しさん:2008/04/23(水) 00:33:56
cut
449仕様書無しさん:2008/04/23(水) 00:55:53
直すやつはコメントを関数の前に置いちゃえ
450仕様書無しさん:2008/04/23(水) 06:16:10
最近、octal表現を廃止する言語とかあるけど、
Cでoctal表現を廃止したらNULLも無くなってしまうのか。
恐ろしい…
451仕様書無しさん:2008/04/23(水) 08:20:05
>>450
その場合、0始まりが10進に引き取られるだろうから無問題。
452仕様書無しさん:2008/04/23(水) 08:22:34
つか、0という記述ができなくても0x0を使ってだってNULLは定義できるじゃん。
453仕様書無しさん:2008/04/23(水) 17:06:32
>>452
問題は
for ( i = 0; i < 10; i++ ) {
これでiが不貞になることなんだぜ
454仕様書無しさん:2008/04/23(水) 18:15:48
浮気者
455仕様書無しさん:2008/04/23(水) 18:27:21
auto i = 0;

iは8進数

i < 10

8進数との比較なので10は十進で8

なんてことにはならない
456仕様書無しさん:2008/04/23(水) 18:40:33
>>455
0が記述できないって話に突っ込んだだけなんだけど。

記述できない=存在しない
i を初期化する0が存在しない=不定
だろと。
457仕様書無しさん:2008/04/23(水) 18:42:50
ちがうな。

0 がなくてもNULLは使えるって話に、
for ( i = NULL;
なんて書くのかよと

for ( i = false;
なんて書くのかよと
458仕様書無しさん:2008/04/23(水) 18:49:37
C だからってあまり低レベルな論争するなよ
459仕様書無しさん:2008/04/23(水) 19:26:46
>>456
10進数で「ゼロ」という値を直接書くことができない、というだけで
C/C++にゼロという値が存在しないわけじゃない
0と書けば8進数で「ゼロ」だから10進数の「ゼロ」と同じ値は表現できるし
実際それで問題無いからそういう仕様になってる

i = 0; が構文解析されて解釈された時にはもうソースに何進数で書いてあったかなんて関係無い
第一、その初期化の右辺に書くものは(変数iが整数型として)整数値であって、10進数ではない
460仕様書無しさん:2008/04/23(水) 20:19:46
これでいいんじゃね?
i = ゼロ;
461仕様書無しさん:2008/04/23(水) 20:44:39
i = 0.0でも実害はないという罠
462仕様書無しさん:2008/04/23(水) 21:12:13
これで解決。
enum { Zero };
463仕様書無しさん:2008/04/23(水) 21:12:51
i=1-1;
464仕様書無しさん:2008/04/23(水) 23:21:38
ゼロ伝来以前のヨーロッパへタイムスリップした場合に備えて
歴史の改変を防ぐ訓練をするスレはここですか?
465仕様書無しさん:2008/04/24(木) 14:20:47
我が名はゼロ、十進数に対する反逆者である!
466仕様書無しさん:2008/04/24(木) 20:36:48
私がつくるものは全て本物だ。
報酬はスイス銀行のオールゼロの口座へ
467葉猫 ◆Jz.SaKuRaM :2008/04/24(木) 21:40:22
       ____
     /      \
   / ─    ─ \
  /   (─)  (─)  \  ゼロ・・・馬鹿な男だ
  |      (__人__)    |
  \     ` ⌒´     /

       ____
     /ノ   ヽ、_\
   /( ○)}liil{(○)\   ふざけるなっ
  /ノ(  (__人__)   \  チカラ、チカラさえあればっ
  | ⌒ ヽ |!!il|!|!l| /   |
  \    |ェェェェ|     /

       ____
     /      \
   / ─    ─ \
  /   (●)  (●)   \  思い出した
  |      (__人__)    |  俺が・・・ゼロだ
  \     ` ⌒´     /

        ____
  +   ./ \  /\ キリッ
    / (●)  (●)\
  /   ⌒ノ(、_, )ヽ⌒  \  何故ならば私はゼロ
  |      `-=ニ=-      |  世界を壊し世界を創造する男だ
  \      `ー'´     / +
468仕様書無しさん:2008/04/28(月) 10:47:36
これでいいだろう?

#define ZERO (2 != 1)
469仕様書無しさん:2008/04/28(月) 13:57:17
>>468
C89 以外ではダメですね。
470仕様書無しさん:2008/04/29(火) 14:26:50
未だにC89強制する奴いて
うざいわ
471仕様書無しさん:2008/04/29(火) 15:36:43
それONEじゃね?
472仕様書無しさん:2008/04/29(火) 16:56:13
2 - 1 だと思っているのか?
473仕様書無しさん:2008/04/29(火) 21:48:54
(2!=1)は真じゃね?
474仕様書無しさん:2008/04/29(火) 21:53:29
俺も2と1は等しくないような気がする
475仕様書無しさん:2008/04/30(水) 20:44:57
#define TRUE (1==1)
#define FALSE (!TRUE)
476仕様書無しさん:2008/04/30(水) 22:51:39
気分的にはFALSEのほうをまず定義して
#define TRUE (!FALSE)
にしたいなぁ。
477仕様書無しさん:2008/05/01(木) 07:22:34
>>468は見事な釣りだった。俺でなければ釣られているところだぜ。
478仕様書無しさん:2008/05/01(木) 19:30:53
素で間違えたのかw
479仕様書無しさん:2008/05/06(火) 14:03:24
そういう奴が上司だと、辞めたくもなる罠…
480仕様書無しさん:2008/05/16(金) 22:01:36
このスレ辞めちゃおうかな
481仕様書無しさん:2008/05/16(金) 22:16:11
辞めるのを辞めてくれ
482仕様書無しさん:2008/05/16(金) 22:19:42
やまてもいいけどねぎしもね
483仕様書無しさん:2008/05/17(土) 00:04:38
山かけもいいけどねぎまもね
484仕様書無しさん:2008/05/18(日) 02:00:27
やまだはいいけどおぐりいらね
485仕様書無しさん:2008/05/18(日) 02:06:56
座布団1枚はいいけど持って行ってはやめて
486仕様書無しさん:2008/05/28(水) 20:44:21

Dim blnFLG as Boolean 'フラグ

487葉猫 ◆Jz.SaKuRaM :2008/05/28(水) 21:33:05
今日見つけたコード、カッコが理解不能。。。。。。。。。。。。

  for(i=0;i<10;i++)
  {xxxxxxxxxxxx;
  xxxxxxxxxxxxx;
  xxxxxxxxxxxxx;
  xxxxxxxxxxxxx;}

if文はこんな漢字でちた。。。。。。。。。。。
   if(a==0)
     {xxxxxxxxxx;
     xxxxxxxxxx;
     xxxxxxxxxx;}
488仕様書無しさん:2008/05/28(水) 22:14:36
>>487
にほ(ry
489仕様書無しさん:2008/05/28(水) 22:21:06
Windowsのバッチファイルみたいな言語(言語名を出すと特定されそうなので)でソースが2500本あるシステム。
しかもOS標準のファイルシステムじゃなくて独自のファイルシステムで動いてるので専用エディタじゃないと開けない。
そして専用エディタが糞。undo/redoがバグっててたまにソースが壊れる。もう死にたい。
490仕様書無しさん:2008/05/28(水) 22:22:06
>>487にほ れたんですね、私にはなぜだかわかりません
491488:2008/05/28(水) 22:23:30
>>490
私にもなぜだかわかりませんw
492仕様書無しさん:2008/05/28(水) 22:49:04
>>487にほ うきアタック」の間違いじゃないですか、それなら私にも分かります
493仕様書無しさん:2008/05/28(水) 23:18:38
アホコテの相手すんな、アホども。
494仕様書無しさん:2008/05/29(木) 00:49:38
>>493
やかましぃわ、あほぅ
495仕様書無しさん:2008/05/29(木) 00:53:47
つーかこのコテ気持ち悪くね?
496仕様書無しさん:2008/05/29(木) 16:17:43
というか、死ぬべき。
497仕様書無しさん:2008/05/29(木) 18:44:13
糞コテは死ね
498仕様書無しさん:2008/05/29(木) 18:55:01
さすがにID出ない板だけのことはあるな
499仕様書無しさん:2008/05/31(土) 10:39:54
コメントに疑問文が書かれてるとソイツ殺そうかと思う
500仕様書無しさん:2008/05/31(土) 13:32:11
今見ているソースコード

{
for()
{
{
if()
{
...
}
}
}

何がしたかったんだろうw
501仕様書無しさん:2008/05/31(土) 13:42:17
>499
// ボク悪くないよね?
502仕様書無しさん:2008/05/31(土) 13:54:15
>>500
{
long l = 0;
...
}
{
List l = new List();
...
}
みたいなことをしたかった、とか
503仕様書無しさん:2008/05/31(土) 14:17:35
>>502
ヒント: 括弧の向き
504仕様書無しさん:2008/05/31(土) 14:27:27
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の奴。
505仕様書無しさん:2008/05/31(土) 14:30:39
お前はガッされたいだけちゃうんかと
506仕様書無しさん:2008/05/31(土) 14:40:41
期待していたのは否めない
507仕様書無しさん:2008/05/31(土) 15:45:56
>>500
C だと、ブロックの頭でしか変数宣言できないので、
長〜い関数の途中を修正して、新しい変数が必要になった、というときに
そこを新しいブロックでくくる、ってのはことはときどきやる。

「インデントしてねーw」って意味だったらどうしようw
508仕様書無しさん:2008/05/31(土) 16:13:04
ソース見ればわかると思うが半角スペは入ってる
509仕様書無しさん:2008/05/31(土) 20:54:28
>>507
お前の関数はどんだけ長いんだよ?
510仕様書無しさん:2008/05/31(土) 21:29:53
そのブロックで囲んだ部分、抽出して関数にするチャンスなんだぜ
511仕様書無しさん:2008/06/01(日) 12:39:35
>>507
はいはい、Cでもブロックの途中で変数を宣言できますから
512仕様書無しさん:2008/06/01(日) 12:53:12
>>511
ああ、C99ではできるようになったんだっけね。
513仕様書無しさん:2008/06/01(日) 13:29:06
C99とかまだ一般的じゃないですから。
514仕様書無しさん:2008/06/01(日) 14:03:06
C99なんてどのコンパイラで通るんだよ
515仕様書無しさん:2008/06/01(日) 19:52:47
gccでとおりますがなにか?
516仕様書無しさん:2008/06/01(日) 19:59:18
gccはC99遵守できていない
できそこない
517仕様書無しさん:2008/06/01(日) 20:10:09
は?オープンソースなんですけどw
自分で直せばいいだけの話
できないなら黙ってろって感じですねw
518仕様書無しさん:2008/06/01(日) 20:31:23
少なくともスコープ途中での変数宣言には対応してる
519仕様書無しさん:2008/06/01(日) 22:09:19
オープンソース厨は馬鹿ばっか
520仕様書無しさん:2008/06/01(日) 22:20:55
OSS房は共産主義回し者
521仕様書無しさん:2008/06/01(日) 22:36:30
C99に対応してないといえば、gccが対応してるとか抜かすくせに
つっこまれると自分で対応しろという。それじゃあ通ると言った
前言を撤回して、自分でC99対応に書き直せばgccで通ると
云いなおしてほしい。
522仕様書無しさん:2008/06/02(月) 00:25:08
完全ではないが通る。んだろう。
ところで、C99対応があまりすすんでないから、新しいCの策定を止めていると聞いたな。
523仕様書無しさん:2008/06/02(月) 10:42:09
俺は、さっさと消えてほしい、でかめの変数とか使うときはくくるかな。
Cじゃあんまりないけど、Javaとか.NETやってたらGCが信用できないときがある。
524仕様書無しさん:2008/06/02(月) 18:16:23
えっ
C99ってまだ使っちゃダメなの?
525仕様書無しさん:2008/06/02(月) 21:41:58
ダメってことはないけど、まだ使えない機能もあるってことじゃないか?

526仕様書無しさん:2008/06/02(月) 21:49:36
コンパイラが対応しているかどうかの問題だべ。
C++2005や2008なんてfopenでwarning出るんだぜ。
527仕様書無しさん:2008/06/02(月) 23:29:34
>>523
スコープぬけたところでフレーム切り捨てる
わけじゃないだろうに何を言っているんだか
528仕様書無しさん:2008/06/03(火) 10:40:03
>>527
GCの世代見てると、そうも言い切れなくない?
529仕様書無しさん:2008/06/03(火) 11:50:49
>>528
GCの問題じゃなくてスタックフレームの操作のタイミングの問題と思われ。
530仕様書無しさん:2008/06/03(火) 12:13:27
なんでスタックフレームとヒープをない交ぜに語るの?
531仕様書無しさん:2008/06/03(火) 12:29:16
オブジェクトはヒープに配置されるが、
>>523のような状況では、そのオブジェクトへの参照はVMのスタックフレーム中に格納されるから。
532仕様書無しさん:2008/06/03(火) 12:51:49
GCって単語を見るとゴールデンクロスが思い浮かぶ俺は
カタギのプログラマーには戻れないな、もう・・・
533仕様書無しさん:2008/06/03(火) 13:14:00
MSは?
534仕様書無しさん:2008/06/03(火) 13:47:25
残念w
そっちは「モビルスーツ」だw
535仕様書無しさん:2008/06/03(火) 21:18:30
マックシェイク
536仕様書無しさん:2008/06/03(火) 22:25:01
>>533が言いたいのは
モルガン・スタンレーか?
楽天マーケット・スピードか?
537仕様書無しさん:2008/06/03(火) 23:32:59
もれ
そう
538仕様書無しさん:2008/06/03(火) 23:43:45
マジ
佐渡
539仕様書無しさん:2008/06/04(水) 01:56:13
if (a > 0)
  a--; b = a;

え?
540仕様書無しさん:2008/06/04(水) 04:14:05
「一行で書いたからいいじゃないか」って言い訳されちゃうわけですね...
541仕様書無しさん:2008/06/04(水) 11:02:06
1行に書けばいい言語は何でしたっけ。
542仕様書無しさん:2008/06/04(水) 20:56:25
>>539
よくわからんがそれはb=--a;と書いてほしいということか?
543仕様書無しさん:2008/06/04(水) 21:14:24
>>542

if (a > 0)
  a--; b = a;



if (a > 0)
  b = --a;

は全く意味が違う。
544仕様書無しさん:2008/06/04(水) 21:46:52
>>543はちょっと勘違いしてるが、>>542も間違ってると思う。
545仕様書無しさん:2008/06/04(水) 21:56:57
if (a > 0) {
  a--;
  b = a;
}

なのか

if (a > 0)
  a--;
b = a;
546仕様書無しさん:2008/06/04(水) 22:00:06
>>542
条件を満たしていなくてもbへの代入が実行されてしまうことが問題
547仕様書無しさん:2008/06/04(水) 22:05:27
>>539
if (a > 0){
  a--;
}
b = a;

こう書いて欲しかったんだよね。
548仕様書無しさん:2008/06/04(水) 22:24:15
ちがうだろ
書いた奴が何気なく1行にまとめちゃった心理として
if (a > 0) {
a--; b=a;
}
のつもりだったんだろうけど
{} が無きゃ bにaの値が無条件に代入されてしまう、それもデクリメントしてないaが

・・・っていう問題だろ
549仕様書無しさん:2008/06/04(水) 22:33:55
わかったけど、どちらが正解かはわからないw
550仕様書無しさん:2008/06/04(水) 22:48:25
えー
これからアホコード貼るヤツは改善例も貼り付けること
551仕様書無しさん:2008/06/04(水) 22:54:56
簡単に改善できるのはまだましってことだな。
552仕様書無しさん:2008/06/04(水) 23:48:27
どっちが正しいのかわからないから困るっていう話だろ・・・
553仕様書無しさん:2008/06/05(木) 00:19:37
どっちが正しいのか分からないから、簡単に改善できないと言いたかった訳で。

誤解させてしまったということは、自分自身できていなかったということで恥ずかしい限り。
554仕様書無しさん:2008/06/05(木) 01:50:20
世に間違いのネタは尽きまじ
555仕様書無しさん:2008/06/05(木) 11:54:12
漏れは必ず { } でブロックはっきりさせるようにしてるけど、
手癖で { } つけないという以外に、開発規約などで、つけないという方針が明記されてる場合もあるのかな?
一連の話題を呼んで疑問わいた。
556仕様書無しさん:2008/06/05(木) 12:28:30
「行数が増えて煩雑になるので、1行で済む場合は{}禁止」なんてアホな
規約の或る会社があって、そんな会社ほど無駄に長い関数のオンパレード...
と妄想してみた。
557仕様書無しさん:2008/06/05(木) 18:24:06
{ } を使わないメリットってあるのかな
558仕様書無しさん:2008/06/05(木) 18:29:36
if(flag)break;

if(flag)
{
break;
}

こんなに行数が違う!
・・・ってことくらいしか言えんな
後者も
if(flag){break;}
とすれば1行だし
559仕様書無しさん:2008/06/05(木) 18:40:10
555だけど
>if(flag){break;}
1行におさめられる時はまさにこうやってる。
コードを追加して2行以上に分ける必要ができた時は、改行すればいいし。
だから { } を使わないのはどんな状況か、不思議。
560仕様書無しさん:2008/06/05(木) 19:04:22
文字数を極限まで削りたいような1行プログラマとか
561仕様書無しさん:2008/06/05(木) 19:11:40
なるほど。オナニープログラマーの為の仕様か。
562仕様書無しさん:2008/06/05(木) 20:51:20
デニスたんはオナニー好きで、ラリーはオナ禁好きってことか。
563仕様書無しさん:2008/06/05(木) 21:26:53
ifやforを1行に詰め込むとデバッグ時に追いづらくなるから、
必ず行を分けた上で{}も入れている。
564仕様書無しさん:2008/06/05(木) 23:15:18
うちはVBだからそんなの関係ないぜ
565仕様書無しさん:2008/06/05(木) 23:50:42
>>564
うらやましいと言うべきか、可哀想と言うべきか
566仕様書無しさん:2008/06/06(金) 00:08:11
コーディング規則、用語集がない現場はダメだな。
大卒で、かつソフ開もってるヤツ同士でも
これらがないとコミニュケーションに苦労する。

あとはVB経験者にいきなりJAVAをやらせるような会社な。
そもそもWindows(.NET)とJavaVMってプラットフォームが違う時点で別世界。

六本木や青山にあるようなシャレたパン屋のオープニングスタッフを
普段はナン焼いてるインド人に任せるようなもんだ。
しかし、何故かこの世界ではこんな馬鹿がまかり通っている。

これは実装技術に限った事じゃない。
コボル出身者がJavaのプロマネやって見積もりが狂い
金融のコンサル営業なんてできない青二才がコンサルやってる。
そもそもバックボーンにしてる知識が違うだろ。アホすぎる。
567仕様書無しさん:2008/06/06(金) 00:32:18
コード規約はなるべく少なめがいいな。
まともな人間が書く分には、多少のスタイルの違いは読むのにほとんど支障はないだろ。
言語が違う訳じゃないんだし。
568仕様書無しさん:2008/06/06(金) 00:49:43
コード規約?
ソースフォーマッターを義務づけろ。
569仕様書無しさん:2008/06/06(金) 00:58:11
ソースフォーマッター に一致する日本語のページ 4 件中 1 - 4 件目 (0.26 秒)
570仕様書無しさん:2008/06/06(金) 00:59:36
しっかりしたコーディング規則があるプロジェクトに入って、
これは美しいコードを書けそうだと期待していた。

・規則にある開発支援ツールが実は永遠にベータ版。
ツール開発チームがとてつもなく無能な上こちらの声は一切届かないので仕様を満たすことは永遠になさそう。
・別な支援ツールがうんともすんとも言わないので聞いたら「既知の不具合。それよりお前のところ工程遅れてるぞ」
お前のゴミのせいで開発が1週間ストップしたわけだが。
・規約ではグローバル変数は極力使わず、必要なら全チームに通知しろとあったが
「パフォーマンスを上げるため全クラス全変数グローバルで静的にしろ」
規約に従って表にまとめて送ったら「早く通知しろ。メール?見てない。社内メーリングリストでまわせ」
俺社外で開発してるしメーリングリストなんて初耳。
・メソッドは最大何ステップまでと規約があったが、
「それは無視して、仕様書の1項目を1関数にしろ」
おかげで1メソッドが10万ステップオーバー。書いた俺にも何がどう動作するのか全くわからん。
まともにコーディングすればステップ数100分の1保守性10000倍にはなると思う。
・あるときいきなりクラス名が大文字になる。定数が小文字。通達なし。質問に回答なし。
・他チームが作るはずだったところがごっそり抜けているので聞くと
「うちでは使わないクラスなので開発しない。そちらで開発しろ」
規約上、他チームの資料は受け渡しできない。

H社は地獄だぜフゥーハハー
571仕様書無しさん:2008/06/06(金) 01:08:57
1関数10万行・・・すげえ。

でも1000行で書けるなら、まずそれを書いて
インライン展開のようなことをするのはどうだろう?
無責任な思いつきだけど、もしかしたら少しは楽になるかもよ。
572仕様書無しさん:2008/06/06(金) 01:19:35
『テクノロジー・ライフサイクル』

                   価格と品質重視派
                    Early Majority      みんなが使ってるから派
                                      Late Majority
            ビジョン先行派    |               
            Early Adopter   ↓   _,、-''''゙゙゙゙| |~~゙゙''-、,   |
  ハイテクオタク                    ,、''゙      | |      ゙-,  ↓     ハイテク嫌い
   Innovators      |          ,,、''゙         | |        ゙-,       Laggards
                ↓       ,、''゙         | |        `、       
      |                   ,、'゙          | |        ゙-,        |
      ↓          /|  i゙             | |          ヽ ,     ↓
                 _,,-'゙ |  |                | |              | |`-、
            _,,、-'゙    .|  |                | |              | |  ~`''-、_
      ._,,,,,,、--''''゙゙| |.     |  |                | |              | |       ~`''ー
     |____| |____|  |________| |_______| |______
                  /||ヽ
                      ||

               ハイテクの落とし穴 = キャズム
573仕様書無しさん:2008/06/06(金) 04:13:22
>>572
kwsk
574仕様書無しさん:2008/06/06(金) 07:44:19
>>569
eclipseなら、ctrl + shift + f だ!
575仕様書無しさん:2008/06/06(金) 10:05:13
配列のポインタを渡すのに、
func( &a[ 0 ] );
戻り値がある関数を呼んだときに戻り値を使わない場合は、
( void )func();
enumで列挙した定数の論理和を引数に取る関数を
enum HOGE {
A = 0x01,
B = 0x02,
C = 0x04...
};
func( HOGE hoge );
って定義して、
func( ( HOGE )( A | B ) );

意味分からん。
576仕様書無しさん:2008/06/06(金) 13:10:21
>>575
少なくとも1個目は、
 変数aは配列なんだと、その行を見るだけで判断できる
という観点では、一応意味はある。
2個目は、コンパイルオプションでエラー判定をきつく
してるとコンパイルが通らないから付けとけってとこか?
577仕様書無しさん:2008/06/06(金) 13:26:58
>>575
意味なんかない。頭の悪い拘り。
578仕様書無しさん:2008/06/06(金) 13:57:08
それで何かアルゴリズムに問題が出るとか可読性が著しく落ちるとかいうわけでもないような。
その程度の他人のクセをいちいち気にしてたら、仕事進まなくない?
579仕様書無しさん:2008/06/06(金) 15:00:58
配列aがnullだったらどうするんだよ。
580仕様書無しさん:2008/06/06(金) 15:17:50
>>579
aだろうと&a[0]だろうと同じなわけだが。
581仕様書無しさん:2008/06/06(金) 19:45:35
std::vector<unsigned char> buf(256);
なんか取ってくる関数(&buf[0], buf.size());

みたいなのならよく書く。
これは正しくは配列じゃないけど。
普段STL使っているような人だったら普通の配列でも書いてしまうかもしれない
582仕様書無しさん:2008/06/06(金) 21:17:39
>>581
単にbufだけ渡すか、イテレータで開始と終了を渡さないかな…?
583仕様書無しさん:2008/06/06(金) 21:34:29
ヒント:C API
584仕様書無しさん:2008/06/07(土) 01:30:12
会社によって使ってる技術が違うんだよな。
C言語とかVBだと、現場の暗黙値で乗り切ってる。
JAVAはコーディングルールを強制するツールがあるね。

しかし、コーディングルールがない時点で危険だ。
こういう細かい事でもノウハウなんだから蓄積すべき。
営業を自力で行ない、ノウハウも溜め込む会社が勝ち組。
585仕様書無しさん:2008/06/07(土) 04:07:03
「どうでもいいから、速く動く奴作れよ!」
by 営業
586仕様書無しさん:2008/06/07(土) 05:03:22
>>575
最初のは俺は常にそう書いてるが...&a[1]なんて時もある.もちろんポインタの時はfunc(p)
二番目はlint時代の名残だな
三番目は至極真っ当に見えるが何が不満なんだ?
587仕様書無しさん:2008/06/07(土) 05:13:01
列挙型にキャストなんてしない
588仕様書無しさん:2008/06/07(土) 05:14:17
>>579

C/C++における配列ならNULLにはならないのでは?

589仕様書無しさん:2008/06/07(土) 05:36:36
>>586
>>587ですでに指摘されている通り、(A|B)は型enum HOGEじゃねーから、C(C++)的にはイカレポンチだ。
でも、そういう(ビット演算に対して閉じている、と宣言できる)型を定義できたらいいのにな、と思うことはある。
590仕様書無しさん:2008/06/07(土) 09:55:12
そう.だから >>575 のは今のCの枠内で工夫した(?)書き方なんだと思った
俺は(もちろんw)そこまではやらんが
591仕様書無しさん:2008/06/07(土) 13:31:38
燕雀いずくんぞ鴻鵠の志を知らんや
592仕様書無しさん:2008/06/07(土) 14:39:37
>>589
>(ビット演算に対して閉じている、と宣言できる)型

C言語的には、ビットフィールドでやれという事だと思う。
593仕様書無しさん:2008/06/07(土) 16:20:26
if(XXX1||XXX2||…XXX24)

XXX1からXXX26まであったんだが、switch文か、25と26以外のときにしろと。

そもそもXXX1とかいう名前の付け方も嫌だ
594仕様書無しさん:2008/06/07(土) 16:52:50
>>592
ビットフィールド不便すぎないか?
595仕様書無しさん:2008/06/07(土) 17:11:39
>>594
どこが?
596仕様書無しさん:2008/06/07(土) 17:51:18
x = f1 | f2 | f3 | f4;
がやたら長いコードにならんか?
597仕様書無しさん:2008/06/07(土) 20:32:55
flags.a | flags.b | flags.c | flags.d が
flags<a|b|c|d> って書ける言語を作ればいいよ!?
598仕様書無しさん:2008/06/07(土) 21:06:08
>>597
関数型言語でかけよばーかw
599仕様書無しさん:2008/06/07(土) 21:24:53
a|(b&c)|d
とか書きたくなったときにめんどくさくなるからやだ
600仕様書無しさん:2008/06/07(土) 21:49:05
>>568
あれを作った人間は、きっとメントスとペプシをキメていたに違いない。
さもなければ、16歳までピアノをたしなみ、20歳までパソコンを触ったことも無かったキッシュ喰いだ。

元のコード:
  map.put(A_PRETTY_LONG_LONG_NAME_KEY, value);

フォーマッタにかけると:
  map.
      .put(
           A_PRETTY_LONG_LONG_NAME_KEY, value);

どうかしてる。
601仕様書無しさん:2008/06/07(土) 21:52:31
mapとputの間の . が増えている罠

確かにどうかしてるw
602仕様書無しさん:2008/06/08(日) 01:00:19
>>600
ちゃんと設定しろよ。

おそらく、1行あたりの文字数の設定が少ないんだよ。
603仕様書無しさん:2008/06/08(日) 07:38:32
使っているほうの人間が、きっとメントスとペプシをキメていたに違いない。
さもなければ、16歳までピアノをたしなみ、20歳までパソコンを触ったことも無かったキッシュ喰いだ。
604仕様書無しさん:2008/06/08(日) 08:16:48
>>603
なるほど。
仕様と違う使い方したらそりゃ変な動作するよね。
605仕様書無しさん:2008/06/09(月) 18:45:57
修正中のソースがかなりむごい。
マクロ定義をほとんど使わず、マジックナンバー使いまくり。
資料もコメントも無いので関数の入出力仕様が全く不明。
変数は全部グローバル。
コーディング規約もないのにファイル名は数値のみ。31201.cとか・・・

嫌々仕事してるのが一目瞭然のソースは見ててうんざりする。
606仕様書無しさん:2008/06/09(月) 20:05:01
>>605
コボラー?
607仕様書無しさん:2008/06/09(月) 20:29:50
巨大な状態遷移かなんかのハンドコーティング部分だったりしないか?w
608仕様書無しさん:2008/06/09(月) 20:55:36
>>606
欝で休職した人のソースなので、どういう人かさっぱりわからないです。
ソースの状態で入社して数年目ぐらいの人と予想したんだが
PMによると30超えてるそうな・・・
ソースの状態を聞かれても可愛そうなので適当に誤魔化してます。
ここぐらいしか愚痴る場所がないです。

こんなソース書いてるからドツボにはまって病気になったのか、
病気のためにこんな暗黒面に堕ちたソースになったのかは不明。
コード右側に記述されたコメントのタブ位置もバラバラでなかなかシュールな状態になってます。
最初はタブサイズが異なるのかと思ったのですが、どうも違うし。
609仕様書無しさん:2008/06/09(月) 21:02:03
現在、下記のサイトはブラック企業関係者が質問に対して解答をしているため、
質問をしている労働者に対して不利な解答をしていますので、
皆さん注意して下さい。
【未払】労働法のスレッド Part67【解雇】
http://school7.2ch.net/test/read.cgi/shikaku/1212405295/l50
610仕様書無しさん:2008/06/09(月) 21:03:46
>>607
そんな大規模なシステムじゃないですよ。
611仕様書無しさん:2008/06/09(月) 21:34:03
状態遷移夏カシスw
おまえらは俺の手の上で通信しているんだぜ?
612仕様書無しさん:2008/06/12(木) 12:37:17
>>605
上司(というか必要なステークホルダーまで)を巻き込んで、
書き直し/リスケを承認させる。
613仕様書無しさん:2008/06/12(木) 12:45:51
>>612
だな。火の種は小さいうちに消しておいたほうがいい。
614仕様書無しさん:2008/06/12(木) 20:55:57
615仕様書無しさん:2008/06/12(木) 20:59:57
>>614
ん?
普通にオートマトン使って設計しているだけ。
ルータとか終端装置とか状態管理だけで行ける製品・部分には最適。

だって、面倒になったら「リトライ」「ディスコネクト」「リリース」だぜ?
616仕様書無しさん:2008/06/15(日) 01:29:03
C++で開発してるけど、上司のコーディングスタイルが
かなりストレスたまる+見にくい

--
void CHoge::Func() {
int a;
int b;
 a = ...
 ...
}
というふうに、全てのローカル変数を関数の先頭で(代入なし)に宣言し、
なおかつインデントを左にそろえるという超変則的なスタイル。みにくくてしょうがない。
617616: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 を返すのか、それとも ゼロ、非ゼロを返すのかまで調べないといけない。


618616: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)) とかされると死にたくなる。

619616: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, ...);
のほうが見やすいと思うんだが、、、
620616:2008/06/15(日) 01:38:53
最後に。

気軽にグローバル変数使うのやめてほしい。
名前に一貫性が無いから、クラスメンバなのかグローバル変数なのかローカル変数なのか
さっぱりわからん。
コピペ大好き人間だから関数がどれも巨大だし、似たようなコードがちりばめられてるし。
ああああああああああああああああああああああああ
ああああああああああああああああああああああああ

621616:2008/06/15(日) 01:54:41
ついでに

inline 多用もやめてほしい。
おかげでヘッダファイルに宣言と定義が混在してる。
inline して意味あるの?
コンパイラに最適化させて終了じゃないの?
その上で速度が足りないなら最後の手段として inline でもなんでもしてくれって感じ。

622仕様書無しさん:2008/06/15(日) 02:22:45
お前も大概だな
623仕様書無しさん:2008/06/15(日) 02:45:53
こんだけされりゃ切れる気持ちも分かる。
無条件でクビにできるレベルだろ。
624仕様書無しさん:2008/06/15(日) 03:05:12
>>619
> sprintf(message, "%s...", message, ...);

これ未定義動作な。
625仕様書無しさん:2008/06/15(日) 03:26:34
「最後に」と言っておいて
「ついでに」と付け足すのやめてほしい。
626仕様書無しさん:2008/06/15(日) 06:54:34
>>618
そのenumはenumハックではないのか?
defineで定義すると名前空間を越えて利用できてしまうから
ローカルでしか使わないならdefineは避けるべき

falseと比較するのをとやかく言うのは言いすぎ
trueと比較してたらさしてもいい
627仕様書無しさん:2008/06/15(日) 09:09:20
昔いた会社に来てた外注の人、Javaで
String foo[] = new String[9999];
とかよくやってた。ArrayListとか知らなかったんだろうなぁ。
628仕様書無しさん:2008/06/15(日) 09:33:20
>>627
俺のところにいるよ
コピペもめっちゃするし
全部staticで宣言するし

OOしらねーんだろうけど邪魔
629仕様書無しさん:2008/06/15(日) 10:38:38
ところで、大文字のFALSEって必ず0なの?

if (!Func())
if (Func() == FALSE)

これって、FALSEが0以外だったら別の意味になるけど。
630葉猫 ◆Jz.SaKuRaM :2008/06/15(日) 10:44:33
enumは出来るだけタグ名を付けるべきだな (・∀・)
631仕様書無しさん:2008/06/15(日) 10:50:37
TRUE だって c で if (islower(c) == TRUE) なんてやったら悲惨。
なぜ == TRUE や == FALSE と書きたがるのか分からないな。
632仕様書無しさん:2008/06/15(日) 11:09:39
HogeFunc()は成功するとTRUEを返します。
とドキュメントに書いてある場合つけないと怖い事になるんじゃないか?
TRUEはTRUEであって組み込みのbool型とは違うし互換性の保証もないわけだから。
633仕様書無しさん:2008/06/15(日) 11:59:58
>>632
TRUEがゼロなモジュールは腐っているから使わないほうが吉。
634仕様書無しさん:2008/06/15(日) 13:00:14
TRUE/FALSEがモジュール固有の値なら、
ドキュメントにTRUEは非0の値だとか書いてないか?

または前提とする環境で定義される値なら、
環境のドキュメントに書いてあるかもしれん。
635仕様書無しさん:2008/06/15(日) 13:00:18
TUREを返しますとか言っておいて、Win32APIのように-1とか返されたりしてな。
636仕様書無しさん:2008/06/15(日) 13:09:35
実際の型と値を隠蔽する意図があってTRUEと名づけたとしたら
いよいよもってHogeFunc() == TRUEと書くしかなくなる気がする。
637仕様書無しさん:2008/06/15(日) 13:13:38
>>636
C固有の型と値を無視してenum {TRUE, FALSE}とかしてるようなら、
まさに>>633だろう。
638仕様書無しさん:2008/06/15(日) 14:27:00
正常終了は1を
異常終了は-1を返すように統一しよう
639仕様書無しさん:2008/06/15(日) 14:41:19
if文がbool以外も受け付けるから悪い。
640仕様書無しさん:2008/06/15(日) 15:39:19
>>631
いや、だから、「失敗時はFALSEを返す」と書かれている関数を
if (!Func())
と書いてしまうのは逆に危険なのでは?
641仕様書無しさん:2008/06/15(日) 16:00:12
>>640
FALSEが0あるいはfalse以外のようなモジュールならば、
そんな腐ったモジュールを使うこと自体が危険だ。
642仕様書無しさん:2008/06/15(日) 16:28:31
論理定数と比較するコードや、論理定数と比較させるインターフェースは全部クソ。
643仕様書無しさん:2008/06/15(日) 17:23:07
難しく考えないで済むように設計するってのは基本中の基本だからな。
逆に == FALSE と書いてあったら、特殊な処理が行われてる例外的な場所の目印になる。
読む人間はそこに怪しい匂いを感じて関数の仕様をチェックすることができる。
644仕様書無しさん:2008/06/15(日) 17:29:12
>>643
臭いをバラ撒くようなバカコードを書かないことがまず先決だろう。
645仕様書無しさん:2008/06/15(日) 17:42:23
>>644
昔は少数の優秀な人だけだったからそれど良かったが、
今は普通以下の人間がほとんどだから異常を見つけられることを重視した方がいい。
646仕様書無しさん:2008/06/15(日) 17:48:29
>逆に == FALSE と書いてあったら、特殊な処理が行われてる例外的な場所の目印になる。

これなんてローカルルール?
647仕様書無しさん:2008/06/15(日) 18:28:35
>>643
特殊な処理をしている目印じゃなくて、
バカが書いた目印になってるんじゃねーの?
648仕様書無しさん:2008/06/15(日) 18:29:01
ルールとして決まっているわけではないよ。
でも怪しいと感じるでしょ?
649仕様書無しさん:2008/06/15(日) 18:30:27
if (func() == FALSE) ...
では正しく動作して
if (!func()) ...
では正しく動作しないような特殊な処理があると?
それは特殊な処理と言わずに、FALSEがキチガイ定義されていると言うんだよ。
650仕様書無しさん:2008/06/15(日) 18:31:16
あくまで慣習としてだが、偽が0というのは期待できるが、
真については、0でないという慣習しかないから、==で比較するわけにはいかない。
651仕様書無しさん:2008/06/15(日) 18:40:53
Cならバグが出た付近に
if (f() == TRUE) {
とかあったらまずそこから疑う
652仕様書無しさん:2008/06/15(日) 18:48:55
>>643は、その特殊な処理とやらでFALSEがどう定義されているのか教えてよ。
653仕様書無しさん:2008/06/15(日) 19:19:01
Win32APIのFALSEって、0と決まってたっけ?
それとも、世界中の人間がこの先も永遠に0だろうと信じてるだけ?
654仕様書無しさん:2008/06/15(日) 19:53:16
本末転倒
FALSEが0なんじゃなくて0が偽だからFALSEで置き換えて可読性を上げてるのに
655仕様書無しさん:2008/06/15(日) 19:58:41
>>653
何が聞きたいんだかよくわからないが、
WINDEF.HでFALSEは0、TRUEは1と定義されていて、
BOOLを戻り値とするWin32APIで、0/1以外を返すのは、
GetMessage/PeekMessage位のもんだと思った。

あと、"それとも"って言葉の使い方おかしい。
656仕様書無しさん:2008/06/15(日) 19:59:07
ティッピングポイントというのがあって、
ある数値を越えると全体が腐っていく

ある共同住宅ではある人種が20%を越えると
元いた違う人種が皆引っ越しする

テレビや電話は確か15%を越えると爆発的に普及するとか
数字はわからないが売れ始めるポイントがあるということ
657仕様書無しさん:2008/06/15(日) 20:25:58
>>649 >>652
ごめん、混乱して勘違いしてた。FALSEに関しては ! で問題ないかもしれない。
普段そういうことを気にしないで済むようにしてたから混乱してしまった。
TRUEは問題かもしれないけど、いまだ混乱してるので自信ない。
バカで申し訳ない。
658仕様書無しさん:2008/06/15(日) 20:54:24
SUCCESSが0のケースは多いよね。
ぼーっとしてるとTRUEと等値のように扱ってしまうことも。
659仕様書無しさん:2008/06/15(日) 20:57:49
>>655
MSDNに「FALSEを返します」と書いてあるAPI関数を使う際に
if (!ApiFunc())
と書く人が多いのは、MSが公式にFALSEは0と断言してる?それとも世界中の…

という意味の質問でした。
660仕様書無しさん:2008/06/15(日) 20:58:19
>>658
あるある。SUCCESSが0でERRORが-1とか。
661仕様書無しさん:2008/06/15(日) 21:28:37
OLE系のAPIが、成功時に戻り値 SUCCESS じゃなかったかな
662仕様書無しさん:2008/06/15(日) 21:42:38
C のstdlibにEXIT_SUCCESS と EXIT_FAILUREが定義されているよ。
663仕様書無しさん:2008/06/15(日) 23:05:06
>>659
MSDN引いた上でいっているのであれば、そのAPIちょっとさらしてみなよ。
664仕様書無しさん:2008/06/15(日) 23:15:00
CopyFile とか DeleteFile とか PathFileExists は確か失敗時ゼロ、成功時非ゼロで返すはず。
665仕様書無しさん:2008/06/15(日) 23:46:32
666仕様書無しさん:2008/06/16(月) 04:02:45
>>664
そういうのはそもそも真偽を返してないので、リテラルゼロと比較すべき。
667仕様書無しさん:2008/06/16(月) 06:27:31
>>666
アホ?
668仕様書無しさん:2008/06/16(月) 07:38:15
if( foo == 0 ) return 0;
669仕様書無しさん:2008/06/16(月) 17:21:11
670仕様書無しさん:2008/06/17(火) 03:36:00
そのすぐ後ろが関数の終わりの}だったりして。
671仕様書無しさん:2008/06/17(火) 06:59:41
if (foo==true && bar==TRUE) return TRUE;
とかやってていやんなる

だったら
if (flag & 0xFF00) ...とかやってる場合じゃなくて
if ((flag & 0xFF00) != false) ...とするベキなんじゃないの?
なんでこんな無駄なコード書くのかすごく気になる。タイプ量が多くなるだけなのに。

672仕様書無しさん:2008/06/17(火) 07:21:53
trueとTRUEを打ち間違えたりしそうだしな。
673仕様書無しさん:2008/06/17(火) 08:03:39
ただ、 if (foo && bar) ... を if (foo & bar) ... とミスタイプすると悲惨なことになる。
674仕様書無しさん:2008/06/17(火) 18:20:19
>>668
if( foo == 0 ) return 0;
if( foo == 1 ) return 1;
if( foo == 2 ) return 0;
:
:
というのが延々と並んでたりしたら辞めたくなるよなw
675仕様書無しさん:2008/06/17(火) 18:51:44
その中で一個だけ戻り値が違ってたりしたらもっと嫌w
676仕様書無しさん:2008/06/17(火) 20:56:23
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;
677仕様書無しさん:2008/06/17(火) 21:19:06
>>676
なんだそんな半端なif文、1つのifと54のelse ifで組まんか
678仕様書無しさん:2008/06/17(火) 22:15:06
>>676
MapやListを使えよ・・・
679仕様書無しさん:2008/06/17(火) 22:47:14
せっかくだから、俺はswitch&caseを選ぶぜ!
680仕様書無しさん:2008/06/18(水) 08:50:46
fooが0のときはどうしたいのこれ。
681仕様書無しさん:2008/06/18(水) 13:21:37
ろくに読まずに後ろに条件を追加していったんだよ。
682仕様書無しさん:2008/06/18(水) 15:18:18
「行の追加はいいけど変更はダメ」っていうイカレた会社の保守モードで、
戻り値を3から0に変更したのかもしれない....
fooが2の場合もな
683仕様書無しさん:2008/06/18(水) 20:51:16
渡された数値を桁ごとに分解して足し合わせる
例: 119 → 1+1+9=11 → 1+1=2
1桁になるまで繰り返して、結果が3、6、9なら3の倍数

と判定する関数を見てしまったわけだが
684仕様書無しさん:2008/06/18(水) 21:00:42
>>683
それってアルゴリズムや数字の勉強用だよね
685仕様書無しさん:2008/06/18(水) 21:30:23
ある数を割ったあまりを取得する関数・サブルーチン・プロシージャがない環境なんだろ
686仕様書無しさん:2008/06/18(水) 22:53:53
>>683
もしそれがボトルネックになる箇所なら故意にいれてあるのかも知れない
// 高速化依頼 ○○万以上の時 hoge%3
とかw
687仕様書無しさん:2008/06/18(水) 23:46:23
それなんて世界のナベアツ問題?
割り算の余りは求められないのに文字列処理は充実しているとか……
688仕様書無しさん:2008/06/19(木) 00:22:31
>>683
NTTだろ?
689仕様書無しさん:2008/06/19(木) 00:24:32
>>683
それか、除算器がなかったころの・・・

桁ごとの数値出すのってどうやるんだろ。
COBOLなら計算いらずだけど。
690仕様書無しさん:2008/06/19(木) 00:50:52
X = 119;
while (X >=3)
 X -= 3;
printf("あまり %d", X);
691仕様書無しさん:2008/06/19(木) 01:36:43
Excelで設計書、

ただし行の高さは変更禁止、セルの結合禁止、列幅は1.xxで固定、MS P明朝。
692仕様書無しさん:2008/06/19(木) 02:35:48
IDENTIFICASION DIVIJION
693仕様書無しさん:2008/06/19(木) 06:42:37
おいおい

DIVIJION ×
DIVISION 〇

COBOLなつかしー
694仕様書無しさん:2008/06/19(木) 06:55:13
IDENTIFICASION ×
IDENTIFICATION ○
695仕様書無しさん:2008/06/19(木) 17:52:17
/* 高速化の案件に予算がついたら,金額に応じて次の行の #define 値を
* 書き換えること。(0...3 が有効,0が最高速。現在(2)の約1/3の処理
* 時間になることを確認済み) */
696仕様書無しさん:2008/06/19(木) 18:26:09
>>695
ある意味見習いたい
697仕様書無しさん:2008/06/19(木) 18:31:18
>>695
それ、随分前にコメントスレかなんかで見た記憶が。
698仕様書無しさん:2008/06/19(木) 18:33:55
ソース提出が必須ならアウトだな
699仕様書無しさん:2008/06/19(木) 18:53:07
提出させたって読みゃしねーって
700仕様書無しさん:2008/06/19(木) 20:08:10
最初の3行くらいは読むだろ
701仕様書無しさん:2008/06/19(木) 20:32:53
ラテン語か何かで書いておけば読める奴がいないだろう。
702仕様書無しさん:2008/06/19(木) 20:35:43
世の中そんなに甘くない
703仕様書無しさん:2008/06/19(木) 21:01:33
>>701
読める奴がいないコメントを残す意味を教えてください。
本人の覚え書き?
704仕様書無しさん:2008/06/19(木) 21:05:31
読む気を失わせるために決まってるだろ
常考
705仕様書無しさん:2008/06/19(木) 21:07:02
石版にルーン文字が最強
706仕様書無しさん:2008/06/19(木) 21:23:45
石版に書いたらソースのコメントとは言えない気がする
707仕様書無しさん:2008/06/19(木) 21:26:19
若造、石版にコードかいてた時代を知らんのか
708仕様書無しさん:2008/06/19(木) 21:49:15
パンチカードのことですか
709仕様書無しさん:2008/06/19(木) 22:00:08
コーディングシートですか?
710仕様書無しさん:2008/06/19(木) 22:35:07
今だって石にコード書いているようなもんじゃない?
711仕様書無しさん:2008/06/19(木) 22:39:39
H/W記述言語か
712仕様書無しさん:2008/06/20(金) 08:42:09
ソースをSSDとかUSBに保存してるってことでは。
713仕様書無しさん:2008/06/20(金) 10:21:27
>>695
そして、コンパイルスイッチを変更したらバグ続出で
バグ修正に本来作成するのと同等の時間を費やす訳ですね。
714仕様書無しさん:2008/06/20(金) 15:39:35
天然KYって居るものだな
715仕様書無しさん:2008/06/20(金) 17:01:39
>>701
中国語で十分
716仕様書無しさん:2008/06/20(金) 19:02:08
漢字だから正確にはわからなくても、なんとなく意味がつかめちゃうだろ。
717仕様書無しさん:2008/06/20(金) 19:10:31
ラテン語じゃメジャーすぎてちょっと西欧史かじった奴なら
専門的に学習してなくても読めちまう
もっとマイナーなので頼む
ゲール語、ケルト語あたりか?w
718仕様書無しさん:2008/06/20(金) 19:11:34
じゃあ、riya語
719仕様書無しさん:2008/06/20(金) 19:29:14
ここはゼビ語だろ。
720仕様書無しさん:2008/06/20(金) 19:59:07
専門的といえば機械語だろ
721仕様書無しさん:2008/06/20(金) 20:09:59
ゼントラーディ語
722仕様書無しさん:2008/06/20(金) 20:58:29
デ、デカルチャー!
723仕様書無しさん:2008/06/20(金) 21:26:49
書けんのかよ!ww
724仕様書無しさん:2008/06/20(金) 21:39:21
コメントを解読したら「i をインクリメントする」とかだったりしてw
ソース読むほうが楽
725仕様書無しさん:2008/06/20(金) 22:29:48
この会社辞めようと思った上司言語
726仕様書無しさん:2008/06/20(金) 23:14:03
今日もガストノッチ
727仕様書無しさん:2008/06/21(土) 01:46:40
もう印欧祖語でいいよ
728仕様書無しさん:2008/06/21(土) 03:32:46
/* ロシア語で考えろ */
729仕様書無しさん:2008/06/21(土) 08:05:35
ソビエトロシアではソースコードがあなたをコメントする!!
730仕様書無しさん:2008/06/21(土) 09:16:36
/* コイツバカスギ */
731仕様書無しさん:2008/06/21(土) 09:49:35
>>724を読んで思い出したけど、

x=10; // xに10を代入します
x+=5; // xに5を加えます

とかコメント書いてる課長がいたな。
732仕様書無しさん:2008/06/21(土) 10:19:59
>>731
ソル部3課のT課長じゃね?w

あいつばかだよな
733仕様書無しさん:2008/06/21(土) 10:22:01
その手のでコードとコメントが食い違ってたら怖いだろうな。
734仕様書無しさん:2008/06/21(土) 10:26:05
ノーコメントでインデントガタガタ、goto使いまくりのコードのほうが怖い。
どうして動いているのか作った本人もよくわかっていないようなコード。w
今までであの一本をいじるのだけはできなかった。
735仕様書無しさん:2008/06/21(土) 12:36:12
/* You are not expected to understand this. */
736仕様書無しさん:2008/06/21(土) 12:40:30
デニス・リッチー乙
737仕様書無しさん:2008/06/21(土) 16:01:56
「NULLを代入」と書いてる場所は、
NULL、0x00、0x20、0x40、0x70、free()
のいずれかにほぼ特定できるのでまだマシ。
とにかく、用語が全射でも単射でもない。定義域も値域も書いた奴の気分次第。

なぜこんな某物流システムで長年ほとんど大事故が起きていないのか不思議でならない。
738仕様書無しさん:2008/06/21(土) 16:39:51
>>735
/* because neither do I. */
739仕様書無しさん:2008/06/21(土) 18:07:27
ウケイ ウケイ 
740仕様書無しさん:2008/06/21(土) 21:31:55
2238クラブへようこそ
741仕様書無しさん:2008/06/22(日) 05:59:09
>>734
コメントあっても意味なくね?

ラベル1:
 // 処理1
 // 分岐する
ラベル2:
 // 条件
 // trueなら
 // ラベル1に飛ぶ
 // falseなら
 // ラベル2に飛ぶ
742仕様書無しさん:2008/06/22(日) 06:47:22
>>741
まあ、信用できんわな
743仕様書無しさん:2008/06/22(日) 07:08:06
>>741
それ、無限ループだねwww
744仕様書無しさん:2008/06/22(日) 07:39:13

Private Sub btn終了_Click()

  End

End Sub
745仕様書無しさん:2008/06/22(日) 09:56:46
746仕様書無しさん:2008/06/22(日) 10:57:01
>>741で言いたかったのは、
1行コメント=ソースコードなので結局何がどうなってるかはソース見るのと同じことだと。
そんなコメントはあってもなくても同じじゃないかと。
全部の行にコメントつける人ってその行での処理の説明はするけど
ブロック単位の説明はしないよね?
見たことないけど。

もちろんマスクする場合とかはコメントないとどういう目的なのかわかんなかったりするけど
関数仕様と、大雑把なブロック単位のコメントがソースに書いてあれば十分だと思う。
747仕様書無しさん:2008/06/22(日) 11:11:31
>>744
おまえは俺か?
ボタンクリックのイベントでいきなり終了すんなよ、と。
結構大き目のアプリなのにそれを見つけた瞬間、辞めるのも時間の問題だなとオモタ。
748仕様書無しさん:2008/06/22(日) 11:51:53
>>733
s=GetName(); // 名称を設定します

こんなコメントもあった。
Getなのになんで設定なんだと迷ったが、
SetName()のところのコメントをそのまま間違えてコピーしてきたらしい。
749仕様書無しさん:2008/06/22(日) 13:09:23
>>748
> SetName()

voidで何設定する気だ?
750仕様書無しさん:2008/06/22(日) 14:05:31
中でapi呼んで自動でマシン名とか設定してるかもしれんよ?
751仕様書無しさん:2008/06/22(日) 14:15:58
>>749
なんかダイアログが出てきたりして。
752仕様書無しさん:2008/06/22(日) 14:28:48
もっと具体的にという意味ならわかるけど、
特に引っかかりそうなところじゃないような
逆にコメント案が知りたい
753仕様書無しさん:2008/06/22(日) 14:40:48
>>748
変数sに名前を設定するという意味じゃねーの?
754仕様書無しさん:2008/06/22(日) 15:04:31
> SetName()
そもそもセミコロンが付いてないからコンパイルできないだろ。
755仕様書無しさん:2008/06/22(日) 15:16:04
>>754
次の行に書いてあるから
756仕様書無しさん:2008/06/22(日) 15:20:25
>>754
>s=GetName(); // 名称を設定します
これがコピーされたものなんだから?etName()とコメントの間にセミコロンがある
中途半端なコピペの>>749のレスに文句を言っても意味がないだろ
757仕様書無しさん:2008/06/22(日) 15:24:06
それより自転車置き場の屋根の色に付いて話し合おうぜ。
758仕様書無しさん:2008/06/22(日) 15:34:21
透明に決まってるだろ
759仕様書無しさん:2008/06/22(日) 15:40:39
せっかくだから、俺はこの赤の屋根を選ぶぜ!
760仕様書無しさん:2008/06/22(日) 15:45:38
社屋脇の自転車置き場の屋根なら人型に凹んでるもんだろ常考
761仕様書無しさん:2008/06/22(日) 15:50:31
>>751は恥ずかしかったらしい
762仕様書無しさん:2008/06/22(日) 20:40:57
横道にそれすぎて748が不憫だw
763仕様書無しさん:2008/06/22(日) 21:21:50
>>754
おまえ馬鹿?
764仕様書無しさん:2008/06/22(日) 22:37:13
>>760
まじレスするが、人が落ちても人型にはならない。
うちの会社の自転車置き場の屋根は○型
765仕様書無しさん:2008/06/23(月) 22:13:10
>>764
えー、でも漫画とかでよく人の形に壁がヘコんだりするじゃん
落ちた人が丸かったんじゃないの
766仕様書無しさん:2008/06/23(月) 22:49:54
>>765
レンジャーが五点着地をやれば人型になるかもしれん。

だが、そんな香具師はマ板の住人になんかならない。
767仕様書無しさん:2008/06/23(月) 23:03:32
>>766
>レンジャーが五点着地をやれば人型になるかもしれん。

それでなおも生きてられるなら、
その能力を生かしてスタントマンに転職した方が高報酬だし吉だわな。
768仕様書無しさん:2008/06/23(月) 23:06:29
逆だろ
五点で着地するのは衝撃を散らすためなんだから
なおさらヒト型はむずかしいと思う
769仕様書無しさん:2008/06/23(月) 23:08:06
お前明日試してみろ
770仕様書無しさん:2008/06/23(月) 23:30:01
だが断る
771仕様書無しさん:2008/06/23(月) 23:30:12

矢印厨
772仕様書無しさん:2008/06/23(月) 23:39:06
オマエモナ
773仕様書無しさん:2008/06/24(火) 17:04:25
( ´∀`) 呼んだ?
774仕様書無しさん:2008/06/24(火) 20:03:14
呼んでないから(・∀・)カエレ!
775仕様書無しさん:2008/06/25(水) 11:05:40
( ´Д⊂)
776仕様書無しさん:2008/06/26(木) 17:14:55
>>731
そんなソースみるのしょっちゅうですorz
777仕様書無しさん:2008/06/26(木) 17:28:51
昨日の話

先輩(業界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なクラス名にも誤字があるんですが・・・
778仕様書無しさん:2008/06/26(木) 20:18:08
リファクタリング機能がある時代で助かったなw
誤字だけと言わず根本的に命名し直してやれ。
779仕様書無しさん:2008/06/26(木) 20:29:56
中卒か?
780777:2008/06/26(木) 22:35:23
>>778
それが・・・できないんです
とあるオンラインシステムのコアモジュールのリプレースなんですが、既存のはこれで動いちゃってるんですよ
しかも社外で作ってるのもあるんで、変えられない
取引先はクラス一覧見て冷笑していると思うと・・・

>>779
先輩達が専門学校時代に作ったサークルが発祥の会社だそうなので、一応専門卒の人々のようです
英語はからっきしのようで、IETFの文書とかは私が辞書片手に読んで社内勉強会してます・・・
私も英語は得意じゃない(英会話や英作文なんてできない)んですが、中学生レベルの英単語ですら・・・

先輩達の技術力は決して低くないんですが・・・
英語もおかしいんですが・・・
日本語が・・・
頭が・・・

辞めたい・・・
781仕様書無しさん:2008/06/26(木) 22:48:36
>>780
君は、もっとレベルの高い企業に転職する時期が来てると思う。
782仕様書無しさん:2008/06/26(木) 23:13:01
綴りミス系か。

通信モジュール関係で、sendの対義語として
recieve
をよく見る。
783仕様書無しさん:2008/06/26(木) 23:22:20
pritnf
784仕様書無しさん:2008/06/26(木) 23:36:45
プリトンF 1000mg配合
785仕様書無しさん:2008/06/26(木) 23:46:17
>>780
>先輩達の技術力は決して低くないんですが・・・
その技術力が疑わしいと思われちまうんだよ。テストもろくにしてなさそう。
コピペで似たようなコード何か所も書いていそう。
スペルミスが多い会社に以前いたけど、バグとかひどいもんだった。。。
786仕様書無しさん:2008/06/26(木) 23:48:37
>>784
プリトンF 1g配合

だとあまり効かなさそう 
787仕様書無しさん:2008/06/26(木) 23:52:48
>>785
スペルミスで消せる程度のバグなら可愛いもんじゃね?
788仕様書無しさん:2008/06/27(金) 00:11:35
>>787
そうじゃなくて、スペルミスがひどい会社は、その仕事全体が信用できないって話。
もっと重大なミスやらかすんじゃないかって不安になる。
789仕様書無しさん:2008/06/27(金) 00:21:34
姿勢が雑ってことだよな。
スペルなんか間違ってもいいや、って考えは、動けばなんでもいいや、って考えと軌を一にする。
790仕様書無しさん:2008/06/27(金) 00:22:39
>>788
ま、尊敬に値しないし不安に思う気持ちも分かるけど、
スペルミスが多いのは単純に(単純な)バカなだけ。
バカな会社はバカなミスをするが、バカなだけだからある意味救いがある。
仕事上、小さなミスを繰り返すと尊敬はされなくなるが、
後始末さえちゃんとやりゃ、会社そのものはおかしな事にはならない。

本当に恐いのはミスが社内にさえ表面化しない会社。
そういうのは後々、重大な問題になり、会社がおかしな事になる。
791仕様書無しさん:2008/06/27(金) 00:54:39
>>790
長々とかくわりには内容がない、と思うのはなんでだろう
792仕様書無しさん:2008/06/27(金) 07:47:58
マジだが、 pritnf();で半日潰した新人の頃。
793仕様書無しさん:2008/06/27(金) 07:49:40
>>791
自作自演乙
794仕様書無しさん:2008/06/27(金) 08:56:17
小さなことでも蔑にしてると積もり積もって大きな問題になる
「バレなきゃいいよ」「意味が分かればいいよ」なんて姿勢で仕事してる奴なんて信用できるか?
795仕様書無しさん:2008/06/27(金) 11:09:36
>>794
>「バレなきゃいいよ」「意味が分かればいいよ」なんて姿勢で仕事してる奴なんて信用できるか?

orz
796仕様書無しさん:2008/06/27(金) 11:22:44
>>794
うちの取引先か?
Wordのスペルチェックでも引っかかるような誤字脱字をしてくんな!
ExcelとVisioのを含めた全資料約900ページ分のうち約600ページ分に誤字脱字があったぞ!
しかも誤字のまま実装されてるのも混在されていて誤字対応表(約20ページ)なんて作るハメになったんだぞ!
売り切りを条件に安くしてもらったけどもうやらん!
安かろう悪かろうってのは本当だって思い知らせてくれてありがとな!
797仕様書無しさん:2008/06/27(金) 12:51:49
>>777
フィーバー♪

resaltは他には影響しないから、こっそりやるな、俺なら。

さすがにパブリックのメソッド名の綴り間違いだと、
ラッパーかましたらさらに悲惨な状況になりそうだから、
触らぬバグに事故はなしだなw
798777:2008/06/27(金) 13:25:30
今日は先輩達が軒並み休みなのですがどうすればいいですか・・・
会社の経費で買った WILLCOM 03 のせいらしいのですが・・・

>>781
私、入社してやっと3ヵ月くらいなのですが・・・
そういえば学生時代バイトで行ってた開発会社でこんな○○なとこはなかったな

>>785
そうなのかもしれません
この前議事録係で先輩に同行したとき、何度もお客様から「誤字はないようにね!」って念を押されていました・・・
先輩は笑っていましたが、お客様の目は笑っていませんでした・・・

>>788
>>790
とりあえずそこまでひどいことにはなっていないようです・・・

>>797
うちからコアモジュールを提供している各社はラップして使っているようです
各社のルールに合わせるためではなく、誤字の隠ぺいなのかなと勘ぐってみたり・・・

皆様レス&関連レスありがとうございます
お昼休みも終わるので帰ります・・・

仕様を聞ける先輩が03祭りで全滅なんてもうやだ・・・
799仕様書無しさん:2008/06/27(金) 14:50:18
まあ、あれだ、がんばれ
800仕様書無しさん:2008/06/27(金) 15:56:05
受諾開発屋です
この業界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ヵ月なのですが、それが切れる前に辞めようと思っています
801仕様書無しさん:2008/06/27(金) 18:22:17
ネタだろ?
802仕様書無しさん:2008/06/27(金) 19:38:34
ネタでここまで細かくルール作れないと思う。

無駄な労力つかってるねぇ。
803仕様書無しさん:2008/06/27(金) 20:52:30
助っ人稼業(=個人事業主の契約社員 orz)やってると、こういうネタみたいな標準って結構見かけるよ
特に大手企業の情報担当の開発部門に多い
大体はこういうパターンでできる

会社の体制上こういうルールが必要なんだけど、本業のSIerほど力は入れていないから、どうしていいか分からない
 ↓
ちょっとだけ知ってる(もしくは、ちょっとだけ口の立つ)ヤツに白羽の矢が立つ
 ↓
そいつの知識や技術の範囲でオナニーじみたルールができる
 ↓
長いフローをかけて承認される
 ↓
誰も修正しないまま作った人間が辞める
 ↓
新しい言語や環境が出て改訂を求められる
 ↓
この無茶なオナニー標準を基礎に、新しいちょっとだけ知ってる(もしくは、ちょっとだけ口の立つ)ヤツが改訂を入れる
 ↓
以下、劇的な改革が起こるまで無限ループ
804仕様書無しさん:2008/06/27(金) 21:09:17
>>796
安かろう悪かろうは確かにあるね。
既に作ってある物を安くしてもらうんじゃなくて
これから作る物を安くしてもらうんだから、当然品質は悪くなってしまう。
わざとではないと思うよ。
下っ端には品質を落とす以外の選択肢を与えられていないから。
805仕様書無しさん:2008/06/27(金) 21:09:55
なんでもforループ
なんでもArrayList
なんでもルートオブジェクト

最近そんなのばっかり
806仕様書無しさん:2008/06/27(金) 21:41:25
int x ;
int ax;
int zzzz;
int xxxx;
char aa[128];
char xxx[128];
807仕様書無しさん:2008/06/27(金) 21:55:32
>>804
偽装請負から手を引いた協力会社が「売り切りを条件に何でも安く作る」って営業かけてきた
受入テストでOK出たら、その後バグがあっても瑕疵担保責任を負わないってやつ
馬鹿らしくて一蹴したけど、そういうのなのかもね
808仕様書無しさん:2008/06/27(金) 21:58:10
コーディングルールには、ルールを破っても良いというルールが必要だな
809仕様書無しさん:2008/06/27(金) 22:26:48
>>808
馬鹿なルールほどそれを認めてくれない
マトモなルールほどそれを認めてくれる(リファクタリングという意味で)
810仕様書無しさん:2008/06/27(金) 23:25:05
極力if文は使わずswitch caseにする事が好ましいという規定があった
おかげで状態変数が乱立、何十通りも値を取るコードが多発
だけど状態変数の値の代入にはif文を使って値を一意に決めているという矛盾
811仕様書無しさん:2008/06/27(金) 23:34:41
>>810
if で2つの条件ならSwictchでも2つの条件だろ
812仕様書無しさん:2008/06/27(金) 23:37:59
>>811
1つで済むだろ?

条件値なんて大抵16ビット以下だろ?
だったら条件1を上位16ビットにシフト
条件2を下位16ビットにコピーしてマスクとれば
おわりじゃん?頭使えよ腐豆腐
813仕様書無しさん:2008/06/27(金) 23:42:43
>>812
意味不明
814仕様書無しさん:2008/06/28(土) 00:42:44
ビットで判断っていつの時代の話してんだよw
あー、組み込みとか制御か?
みんなカツカツのリソースでカツカツのチューニングしてるわけじゃないんだよw
815仕様書無しさん:2008/06/28(土) 01:09:27
条件分岐でプログラムの状態見る時、ビットでマスクするのとintで定数のテーブル作るのとどっちがデバッグし易いんだ?>>812
816仕様書無しさん:2008/06/28(土) 04:15:39
switchには必ずdefaultを書けとかいうルールはよくあるから、条件2つでもcaseは3つに・・・
817仕様書無しさん:2008/06/28(土) 10:03:54
>>800
>・単純にSELECTを発行して件数を取ってくるだけの処理でもトランザクション必須

2回以上発行するならトランザクション要ると思うが
818仕様書無しさん:2008/06/28(土) 10:13:18
いらねーよボケ
819仕様書無しさん:2008/06/28(土) 10:14:17
確かにいるね
820葉猫 ◆Jz.SaKuRaM :2008/06/28(土) 12:07:42
データ更新以外でトランザクションなんていらないでちょ。

会社のちとが最近は2Kバイトもメモリがあるから楽とかいってまちた。。。。。。。。。
821仕様書無しさん:2008/06/28(土) 12:21:40
>>820
2回の採番のSelectだったらヤバす。
822仕様書無しさん:2008/06/28(土) 12:52:31
この糞コテまだ生きてたのか
さっさと死ねばいいのに
823仕様書無しさん:2008/06/28(土) 16:22:23
なんかルールの設計者からコポラー臭がします。

>>・VSが自動でやる場合を除いて継承は禁止(処理の責任の所在が不明になるからってアホかと)
>>・ソースコードの見通しを良くするために、完全修飾は禁止(文字が少ない方が見やすいとかアホかと)
>>・ソースコードの見通しを良くするために、全ての処理にコメントを入れること(>>731化してる)
>>・ソースコードの見通しを良くするために、変数はすべてクラスのメンバとすること(コメントのしようもありません)
>>・後で見てすぐ分かるように、仕様をコード内にも記述すること(アスキーアートで図を書いてたのは笑・・・えねぇ。コード十数行、コメント数十行なんてザラ)
824仕様書無しさん:2008/06/28(土) 16:41:04
まぁ継承禁止はわからんでもない
825仕様書無しさん:2008/06/28(土) 17:08:53

全ての行にコメントをつけるのはまだいい。
機能を説明するコメントは禁止ってのが痛い。

1行コメントと重複しては一元管理にならないとかなんとか。
826仕様書無しさん:2008/06/28(土) 18:52:38
継承なかったら、templateもあまり役に立たないな。
827仕様書無しさん:2008/06/29(日) 00:46:01
VS2005でC#

//WAIT
for (int i = 1; i < 1000000; i++);

いつの時代のBASICですか

つか、これって本当に1000000回ループするの?
最適化とかで「意味無いからスキップ」とかにならないの?
教えてエロい人!
828仕様書無しさん:2008/06/29(日) 00:55:28
>最適化

よく調べてみ、コンパイルオプションで最適化しないにしてあるからw
829仕様書無しさん:2008/06/29(日) 01:00:34
>>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
830仕様書無しさん:2008/06/29(日) 01:03:08
>>829
待て、それはただのILDISASMの結果だ。
HotSpot?だっけ?が無駄だと判断したらわからんぞ。
JITはわからん。
831仕様書無しさん:2008/06/29(日) 01:18:40
JITはそんな判断はしないけど、Thread.Sleep使えばいいのに。
832仕様書無しさん:2008/06/29(日) 03:38:07
volatileにすればいいんじゃない?
833仕様書無しさん:2008/06/29(日) 05:55:30
>>782
俺、revieveってメソッド作ってたわ。
恥ずかしいなwww
834仕様書無しさん:2008/06/29(日) 07:13:03
俺は逆にretreive〜ってメソッド作ったことがある。
プライベートメソッドだったから素知らぬ顔して直しておいたけど。
835仕様書無しさん:2008/06/29(日) 07:37:59
publicなメソッドやクラス名を毎日変更して
一切こっちに通知しない会社に対して、俺はなんと言えばよかったんだろう。
しかも毎回、必ず新しいバグが植え込まれているのでまずバージョンごとのバグ表を作ってからでないと何も出来ない。

あまりにも致命的なバグがあったときに電話したら、なぜかキレてて怒鳴り声で
「そのバグは既に把握してんだよ。〜〜いうわけで、〜〜〜すれば修正できる。やれよ」ブチ
社会人として、40過ぎてその言い草どうよ?おまえの責任で出したバグだろ?
セキュリティ上その辺の仕様はこっちは渡されてないし、
修正するのはお前の仕事だし、仮に俺が修正するとしたら少なくとも30人日かかるんだが。調査資料作りながら。

ファイルを吐き出すフォルダを勝手に変更した時も
何も言わず担当者とも連絡が取れなかったせいで5日何も出来なかったし。


まあだから潰れたんだよな。Hの子会社さん。
836仕様書無しさん:2008/06/29(日) 09:44:29
>>829
最適化の設定などで消える可能性があるから
出力結果だけで判断するのは危険。

コンパイラのバージョンによって動作が違うとかあるえる

>828
そういうアホコード書く奴は、コンパイルオプションの設定とか調べない罠が
837仕様書無しさん:2008/06/29(日) 10:13:03
>>835
うわあ、ぶっ殺したいな
838仕様書無しさん:2008/06/29(日) 10:16:12
>>827
の //WAIT は、これを見つけた人間の「ちょっと待て」なんじゃないか?w
839仕様書無しさん:2008/06/29(日) 12:16:34
// ちょっ、ちょっと待ったぁー!!
// おおっと、ここでちょっと待ったコールだ!
for (int i = 1; i < 1000000; i++);
840仕様書無しさん:2008/06/29(日) 14:27:01
コンパイラ「ごめんなさい」
841仕様書無しさん:2008/06/29(日) 14:31:19
>>839
うわキモ

842仕様書無しさん:2008/06/29(日) 14:40:04
>>839
35歳以上スレで会おう
843仕様書無しさん:2008/06/29(日) 14:42:01
>>842
会いたくないw
844仕様書無しさん:2008/06/29(日) 22:56:55
>>839-840
ワラタ
845仕様書無しさん:2008/06/30(月) 11:05:01
つか、コメントスレにかけw
846仕様書無しさん:2008/06/30(月) 17:55:42
ソースにコメント書くのは常識だろうが!

int i = 0; //変数iを0クリアします
847仕様書無しさん:2008/06/30(月) 17:56:54
0はクリアではない
848仕様書無しさん:2008/06/30(月) 21:01:16
0クリア
849仕様書無しさん:2008/06/30(月) 21:04:06
0クリアならこっち
ZeroMemory( &i ,sizeof(i));
850仕様書無しさん:2008/06/30(月) 21:07:10
ところでいつ言語指定されたんだー?
851仕様書無しさん:2008/06/30(月) 21:35:27
お前の得意なCOBOLでもいんだぜ?
852仕様書無しさん:2008/06/30(月) 22:39:06
そもそも「0クリア」って表現の定義が曖昧
それに>>846の言語によっても変わる(大雑把に見てもC/C++とC#/Javaでは意味が変わってくる)
つまりは、言語とコーディングルールに因るから、その表現はもしかしたら正しいのかもしれない
853仕様書無しさん:2008/07/01(火) 05:11:04
クリアってのはフフフフフにすることだと思ってたぜ
854仕様書無しさん:2008/07/01(火) 06:30:38
>>846は特定の言語で書かれた特定のプログラムの
特定の部位に対するコメントだから間違いだとは言えない
855仕様書無しさん:2008/07/01(火) 09:12:25
ゼロクリアはシリアルとかの
レジスタのエラービットを
ゼロで上書きすることでクリアすることだと思うんだが
856仕様書無しさん:2008/07/01(火) 09:40:27
>>855
そういう定義もある
数値型を明示的に0にすることを「ゼロクリア」と言う文化もある
変数の初期値が固定な言語でも、初期値の明確化を推奨し、数値型は「ゼロクリアする」という文化もある
会社の標準ルールには「数値型変数の宣言後、明示的に0を設定する(ゼロクリアする)」と明記されているものもある
ゼロクリアは明示的にリテラルの0を入れるとしているとこもある
ZeroMemoryによるゼロ値の設定は「null初期化」とし、「ゼロクリア」と言わないとこもある

俺が知ってる(関わった)範囲でもこのくらいブレた表現
だから、>>846が正しいかは、そこの文化やルールを見ないと何とも言えない
※その文化自体が間違ってる!ってツッコミだったのだろうか
857仕様書無しさん:2008/07/01(火) 12:08:28
郷に入りては郷に従え
858仕様書無しさん:2008/07/01(火) 12:12:00
強いて曲解すれば、「クリアしないこと」ともとれるな。
859仕様書無しさん:2008/07/01(火) 19:59:05
じゃあ「ゼロセットする」
860仕様書無しさん:2008/07/01(火) 20:04:31
ゼロフィルじゃね?
861仕様書無しさん:2008/07/01(火) 20:06:47
int i = 0;

この1行には変数の宣言と値の代入の2処理がある
コメントを入れるとしたらこの2つを押さえたものにすべきではないだろうか

例えばこう

int i = 0; //○○ループの○○件数カウント用変数に初期値0を設定する

皆はこういう違和感って感じないの?
「ゼロクリア」なんて言葉尻で盛り上がってるあたり同じ穴の狢じゃないかな
862仕様書無しさん:2008/07/01(火) 20:08:12
俺もそう思った!
863仕様書無しさん:2008/07/01(火) 20:16:03
まだ0x00をnullだと思ってるアフォがいたのか
864仕様書無しさん:2008/07/01(火) 20:31:23
>>863
まだまだいるよ。
たとえば、今月号の日経ソフトウエアの川俣晶とか。
865仕様書無しさん:2008/07/01(火) 20:36:03
>>856
>ゼロクリアは明示的にリテラルの0を入れるとしているとこもある

int i= '0'; ってこと ? ひぇぇ
866仕様書無しさん:2008/07/01(火) 20:37:40
>>861
ループの処理が多ければ

int i = 0; //○○ループの○○件数カウント用と、△△ループのチャンネル数カウントと□□ループの□人数カウントに使う変数に初期値0を設定する
867仕様書無しさん:2008/07/01(火) 20:41:53
リテラルの意味もわからず煽る馬鹿
868仕様書無しさん:2008/07/01(火) 20:47:11
ヌルクリヌルクリ
869葉猫 ◆Jz.SaKuRaM :2008/07/01(火) 21:43:15
C++じゃNULLはゼロでちょ。
870仕様書無しさん:2008/07/01(火) 21:49:17
初期化
871仕様書無しさん:2008/07/01(火) 22:20:03
このアホコテ、まだ生きてたのか。
872仕様書無しさん:2008/07/01(火) 23:02:27
>>853
ガリでも喰(ry
873仕様書無しさん:2008/07/01(火) 23:35:38
なあに、「NULLクリア」が
0x00と0x20と0x40と0x70を意味する某大規模プロジェクトもある。
どの意味のNULLクリアなのかは書いた人にしかわからない。書いた人にもわからない。
うちの会社が大損害出しながらも抜けて4年経つがまだまだ完成しないらしい。
ていうか失敗を認めて全部捨てれば楽になるのに。
874仕様書無しさん:2008/07/01(火) 23:45:13
そしてNULLを定数宣言する癖がつく…と。
875仕様書無しさん:2008/07/02(水) 00:21:38
>>800
あー…自分の会社を見ているようで笑えねー
そこで披露されてるルールの半分以上が当てはまってます。
特に、Webページのルールなんてぴったり同じでやんのw

他にはBTS使うなとか、
SubVersionやSourseSafeは間違ったものがコミットされているかもしれないからフォルダ管理とか、
自社製ライブラリ強要とか(ドトネトフレームワークをVB6風味にラップしてエラー握りつぶしたりなど諸々の改悪を施したもの)
876仕様書無しさん:2008/07/02(水) 01:32:46
「nullとNULLとNullは違う!」ってとこがあったな
null→インスタンスの無い状態
NULL→0x0
Null→DBのヌル値

ソースコード内ならまだしも、客に紙にして出すドキュメントまで大文字小文字で区別すんな
877仕様書無しさん:2008/07/02(水) 02:47:03
NULはなんだった?
878仕様書無しさん:2008/07/02(水) 02:58:27
おれおれ
879仕様書無しさん:2008/07/02(水) 05:54:10
NULLPOも定義しる
880仕様書無しさん:2008/07/02(水) 08:26:49
>>864
日経ソフトウェアの連載はレベルが低いよな。
881仕様書無しさん:2008/07/02(水) 12:21:51
>>876
NULLがそこの複数の意味で使われてるの見たことあるぞ
あと長さ0の配列もNULLって書いてあった
882仕様書無しさん:2008/07/02(水) 13:24:10
確かに
VBのNULLとCのnullとは違うしな
883仕様書無しさん:2008/07/02(水) 14:50:53
うちの愛すべきSE様(58)語録とその訳
「そのデータはヌル」→「そのデータは0」
「ヌルばっかりだなぁ」→「レコードが1件も無い」
「ヌル処理はどうする?」→「検索結果が無かった時の処理はどうするのか」
「変数はヌル初期化ね」→「数値型には0を、文字列型には空文字を、日付型には1950/1/1を入れるのが当たり前です」
「DBってヌル入んないのかな」→「DBのNullって何ですか?」
いくら教えても覚えてくれません
884仕様書無しさん:2008/07/02(水) 14:53:01
nilってのもあるぞ
885仕様書無しさん:2008/07/02(水) 20:40:39
>>883
ネタだよな?
886仕様書無しさん:2008/07/02(水) 21:30:21
いくらなんでもネタだろw
887仕様書無しさん:2008/07/02(水) 23:43:33
うちの上司は空文字列のことを「スペース」と言う
888仕様書無しさん:2008/07/02(水) 23:45:00
NULLをにゃるって呼ぶぞ俺のところの部長
889仕様書無しさん:2008/07/02(水) 23:46:04
なる
890仕様書無しさん:2008/07/03(木) 00:59:47
にる
891仕様書無しさん:2008/07/03(木) 01:05:52
ぬる                                ぽ
892仕様書無しさん:2008/07/03(木) 01:05:55
ニダーーーーーーーーーー
893仕様書無しさん:2008/07/03(木) 01:18:50
>>891
ガ                                      ッ
894仕様書無しさん:2008/07/03(木) 05:22:14
混沌が這い寄って来るんですね。わかります。
895仕様書無しさん:2008/07/04(金) 13:08:25
いあ!いあ!
896仕様書無しさん:2008/07/04(金) 13:22:45
あっヌルあっあっあっ
897仕様書無しさん:2008/07/04(金) 15:19:32
ここはSAN値が下がるいんたーねっつですね
898仕様書無しさん:2008/07/06(日) 19:47:50
javaとかCじゃないけど、メチャ長いSQLの修正やらされるよ。
A4 4〜5枚くらいのを10 SQLメンテしてとの事

プログラムにしたらと聞いたら、SQLでいろいろ検索してたら出来たのを
使ってるからプログラムに変換できないそうな、あとそこはSQLだと
テスト対象外とのこと、SQL嫌い
899仕様書無しさん:2008/07/06(日) 23:07:32
>>898
A4で4〜5枚?
それじゃ行数で1000も行かないだろ
その程度でメチャ長いとかどんだけゆとりだよ
つか、コードがでかいだけで辞めたくなるようじゃこの業界じゃやって行けないだろ

今抱えている基幹系システムは2000以上のストアドがあって、そのうち3割は1000ステートメント超える巨大なやつ
見た目を整えるための意図的な改行があるから10000行を超えるのもザラ
でもちゃんと仕様書もあるし、社内標準に則った書き方しているから保守はそれほど大変じゃない

898の現場運用が悪いのを、ソースコードのサイズのせいにするのは良くないな
このスレで語るべきはソースコード自体の質なんだよ
900仕様書無しさん:2008/07/06(日) 23:16:03
>>899
不幸自慢乙
901仕様書無しさん:2008/07/06(日) 23:25:38
>>899
>>898 のSQLって、1ステートメントで4、5枚あるんじゃね?
902仕様書無しさん:2008/07/06(日) 23:36:56
899を1行でまとめると

 ソースコードの長さに文句言うな

ってことだろ
確かに長さよりも中身が問題だな
今まで出てきたように、たった数行でも辞めたくなるようなコードだってあるわけだし
903仕様書無しさん:2008/07/07(月) 00:42:41
SQLで1kステップはきついって。
複雑な問題は複数の単純な問題に分割するのが基本だけど、
分割難しいもん。
集合論的に解けばいいのかな?
904仕様書無しさん:2008/07/07(月) 01:05:53
>>901
こんなんじゃねーの?

SELECT(改行)
列1,(改行)
 :
 :
列100(改行)
FROM(改行)
(以下略)

1ステートメントで4・5枚なんて改行が無駄に多いだけって気がする
905仕様書無しさん:2008/07/07(月) 01:08:14
>>903
SQLだろうがCだろうがVBだろうが、それなりに込み入ったもの書けばそんくらいなるだろ
大規模システムだとテーブルの数やフィールドの数も多くなるから、ちょっとしたクエリ発行しただけで数十行とかあるし

まあでも他人が作った長いコードを見るのは確かに苦痛だ
仕様書があろうが標準があろうが、新たに作るよりは面倒だ
906仕様書無しさん:2008/07/07(月) 01:35:29
Select * 禁止で一発でとるならそんくらいなるよな…?

長いSQL反対派の奴らはレコードセット開きっぱなしで
幾つもSQL発行しやがって副問合せを知らんのか?って感じ
もっと凄いのはマスターを構造体にゴッソリ保持ぐーるぐる回る回る回る…
あんなの追っかけたくない
SQL一発でとっときゃ何か変わってもSQL直せば済むし解りやすい
907仕様書無しさん:2008/07/07(月) 02:58:26
きっとCASE使いまくりのSQLなんだろうなぁ
908仕様書無しさん:2008/07/07(月) 07:09:39
すげえ実行効率悪そうw
909仕様書無しさん:2008/07/07(月) 09:54:29
>>899
>そのうち3割は1000ステートメント超える巨大なやつ
正規化のやりすぎか、またはまるで出来てないかの
どっちかじゃね?
910仕様書無しさん:2008/07/07(月) 11:24:40
>>909
基幹系って言葉を使ってるとこ見ると、COBOL時代からリプレース続けてるようなやつじゃないのかね
こういうのはリファクタリングに金かかるからCOBOL時代のデータ形式を引きずってたりする
1テーブル200フィールドとかね
そういうの相手にやってればそんくらいのサイズになると思うよ

最適化よりも前世代の形式を次世代に受け継がせること(SEはそれを「仕様の互換性」と言う)を優先させたりしてカオスになったりするんだよな(うちだよ!
911仕様書無しさん:2008/07/07(月) 11:41:34
>>909
典型的なタテ切りの予感。
912仕様書無しさん:2008/07/09(水) 20:00:54
CPen* pOldPen; // オールドペン
Sleep(100); // スリープ
913仕様書無しさん:2008/07/09(水) 20:12:40
1命令1コメントはもういいよ
つかさ、そんなんで辞めようと思ったの?
914仕様書無しさん:2008/07/09(水) 21:53:29
10年以上前の改修履歴がコメントとして大量に残って読みにくいorz
915仕様書無しさん:2008/07/11(金) 19:31:10
辞めようと思ったほどじゃないが('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`)
916仕様書無しさん:2008/07/11(金) 20:14:55
行数=金。

理解汁
917仕様書無しさん:2008/07/11(金) 20:19:39
constructive cost model ですね。はい、わかります。

しかし、>>915はただプログラム設計をせず作ったソースだと思われw
918仕様書無しさん:2008/07/11(金) 20:27:50
行数=金

内部変数の宣言を一行一変数で何十行も取り
やってることは外の変数の内容をその内部変数に
逐一コピーしてるだけ(何十行*2回目)
その内部変数のうち、関数内で処理に使用してるのは数個だけ
で、処理が終わると全ての内部変数をゼロクリアして
その関数を抜ける(何十行*3回目)という馬鹿コードを見た

が、見なかったことにした
919仕様書無しさん:2008/07/11(金) 21:39:33
public void setHoge(){
this.hoge = hoge;
}

コンパイルは通るかもしれないけどさ…
920仕様書無しさん:2008/07/11(金) 23:46:21
デバッガでブレークポイントはるための意味なし文ですね、わかります
921仕様書無しさん:2008/07/12(土) 00:01:49
「君は君だよ」というポエム
922仕様書無しさん:2008/07/12(土) 01:59:23
深いなあ

そして今日見た違和感を感じたコードから
Java:

int a = 1;
int b = 2;
int x;
x = a = b;

これコンパイル通るんだねえ
923仕様書無しさん:2008/07/12(土) 02:11:07
>>922
知ってれば、なんてことない、そのコード
924仕様書無しさん:2008/07/12(土) 02:32:19
>>922
Javaよくしらんが、
X = Y = Z = 0;
あたりも違和感あるのか?
925仕様書無しさん:2008/07/12(土) 03:04:16
>>924
bの初期化の意味について言ってんじゃね?
926仕様書無しさん:2008/07/12(土) 05:35:37
>>925
aの初期化が無駄という話ではなく?
927仕様書無しさん:2008/07/12(土) 09:06:52
自分が昔書いたコード
928仕様書無しさん:2008/07/12(土) 13:27:57
>>922
こういうのも通るぞ

x = a == b
929仕様書無しさん:2008/07/12(土) 13:33:36
さらに、

x == a == b も x == a = b も、通る。
930仕様書無しさん:2008/07/12(土) 13:37:21
5>4>3がFalseってのは納得いかない
931仕様書無しさん:2008/07/12(土) 13:43:28
>>922
深いの? もう & | ^ ~ あたりの使用は禁止かなあ
932仕様書無しさん:2008/07/12(土) 14:32:26
(^ ~)
933仕様書無しさん:2008/07/12(土) 14:59:47
~= m// 見たら発狂しそうだな
934仕様書無しさん:2008/07/12(土) 20:10:53
なにあともあれ、変数は必要な時にだけ存在すれば良い。 グローバルは使用禁止。

IT技術者も同じだ。 必要な期間だけ雇用して給料払えば良い。
以上!
935仕様書無しさん:2008/07/12(土) 20:21:54
グローバル使用禁止だから
public class Global {
    public static int var1;
    public static string var2;
  ……
}
のようなクラスを作ってしのいでた事例を思い出した。
936仕様書無しさん:2008/07/12(土) 20:25:49
クラスじゃなくて構造体だったかも
937仕様書無しさん:2008/07/12(土) 21:59:50
グローバル代わりにシングルトンをw
938仕様書無しさん:2008/07/12(土) 22:26:34
排他制御してなくて、たま〜にバグが出るんですね。わかります。
939仕様書無しさん:2008/07/12(土) 23:48:16
そういう構造体をあらゆる関数の第1引数にしてるプロジェクトがあった。
値コピー渡しで。
940仕様書無しさん:2008/07/13(日) 04:58:18
>値コピー渡しで ここがミソだな。 変更するときはどうしたんだろう・・・
941仕様書無しさん:2008/07/13(日) 12:56:09
C#でエラーログの処理どうしてる?
エラーログ出力クラスつくったのはいいが…
各エラー処理でログクラスのインスタンス生成して出力して開放するべき?
取り敢えずclsMainでStaticにしてプロパティで呼んで最後に開放してみた…

なんかスマートじゃないような気もする…
教えてエロいひと…
942仕様書無しさん:2008/07/13(日) 13:06:28
log4net
943ひみつの検閲さん:2024/10/18(金) 20:44:22 ID:MarkedRes
このレスは権利侵害の申し立てや違法もしくはその疑いにて不可視または削除されました。
削除日時:2013-08-08 14:33:38
https://mimizun.com/delete.html
944仕様書無しさん:2008/07/13(日) 14:06:22
945仕様書無しさん:2008/07/13(日) 16:02:29
関係者?
946仕様書無しさん:2008/07/13(日) 16:19:23
>>943
コピペ乙
947仕様書無しさん:2008/07/13(日) 18:08:34
いいぞ!行け行け!
948仕様書無しさん:2008/07/14(月) 09:41:07
>>941
singletonとか
949仕様書無しさん:2008/07/14(月) 10:01:22
Log4xとかの仕様に沿っておくと幸せだとおもう。きっと。
950仕様書無しさん:2008/07/19(土) 15:13:20
>>949
そんな立派なのいらない
951仕様書無しさん:2008/07/19(土) 15:31:08
んじゃ貧相なの自分で作れよ
952仕様書無しさん:2008/07/19(土) 16:26:27
>>951
そんな元気はない
953仕様書無しさん:2008/07/19(土) 19:28:31
んじゃ死ねば?
954仕様書無しさん:2008/07/19(土) 20:33:25
そんな気力もない
955仕様書無しさん:2008/07/19(土) 21:41:50
なら書き込むなよ
956仕様書無しさん:2008/07/21(月) 17:00:13
a = ++b++;

これって可能?
957仕様書無しさん:2008/07/21(月) 17:07:05
LSIC85 ではエラーになった。
958仕様書無しさん:2008/07/21(月) 17:22:21
>>956
C++なら可能。
959仕様書無しさん:2008/07/21(月) 18:37:38
コンパイルできても未定義動作だろ。
960仕様書無しさん:2008/07/21(月) 19:18:45
>>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++;
}
961仕様書無しさん:2008/07/22(火) 01:00:52
>>943
今世紀最大の正真正銘のキチガイの弓月城太郎にやねうらおは絡まれている。








弓月城太郎は正真正銘のキチガイ

【自作自演】弓月城太郎氏に関するまとめ【神秘体験】
http://d.hatena.ne.jp/yaneurao/20080619
962仕様書無しさん:2008/07/22(火) 11:20:49
ネット上の基地外は大好き(はぁと
963仕様書無しさん:2008/07/22(火) 20:06:27
>>960
それ、「Hello,World」と表示されるの?
++演算子の優先って、前置と後置のどっちが先だっけ?
964仕様書無しさん:2008/07/22(火) 20:26:42
前置
965仕様書無しさん:2008/07/22(火) 22:21:36
a = ++b++;

このロジックってどういう場面で必要になる?
2バイトコードを扱うときとか?
966仕様書無しさん:2008/07/22(火) 23:52:21
>>963
Hello, Worldを表示するよ。
優先順位は後置が先。分かりやすく括弧でくくると
a = ++(b++)
b++の実行でHello,
次に
++(...)の実行でWorld
最後に
a = ...
の実行で改行。
>>965
変態的なHello, Worldしたいとき。
つまり必要ない。
967仕様書無しさん:2008/07/23(水) 00:18:04
javaのプロジェクトなんだが、規約なのか知らんが
ソースコード全体にnative2asciiがかかってて
コメントまでもがunicodeエスケープされてしまってて
読むのがつらいっていうか読めん
968仕様書無しさん:2008/07/23(水) 02:11:47
ttp://mixi.jp/view_bbs.pl?id=33323463&comm_id=602606&page=all
インデントを直してみたが理解できそうになかった
969仕様書無しさん:2008/07/23(水) 02:15:05
mixiは勘弁してくれよ
970仕様書無しさん:2008/07/23(水) 09:29:27
読むまでもなく「書き直せボケェ」の世界
社内でベテランと言われる人が妥当な理由もなくこんなコード書いてたらマジ辞めるね
971仕様書無しさん:2008/07/26(土) 11:46:06
>>967
逆コンパイルするとそんなソースになる、もしかして.....
まぁコメントまでは知らんが
972仕様書無しさん:2008/07/26(土) 14:26:30
>>967
file.encodingが不揃いな環境でコンパイルできるようにするために
やってるとか?
UTF-8で書いておけばどこでも通った気がしたが間違いかもしれない。

973仕様書無しさん:2008/07/26(土) 16:00:43
なあ、今度再利用するとか言ってるプログラムが
try{
} catch (Exception e){
}
なんてことをあちこちでバンバンやっているんだが、どうすればいいと思う?

俺は見なかったことにしてエスケープしようかと思ってるのだが。
974仕様書無しさん:2008/07/26(土) 16:07:20
あ?
975仕様書無しさん:2008/07/26(土) 16:12:18
973が何を言っているのか分からん
976仕様書無しさん:2008/07/26(土) 16:17:54
>>973はどんな種類の例外かも分からないのに、
適当にcatch〜tryしてるのが気に食わないのか?
977葉猫:2008/07/26(土) 16:50:44
漏れも('A`)マンドクセー場合は↓とかやる
try{
}catch(...){
}
978仕様書無しさん:2008/07/26(土) 16:50:54
握りつぶすならThrowable〜、ってか?
979仕様書無しさん:2008/07/26(土) 17:21:29
片っ端から例外握りつぶしてコンパイルだけ通るようなコードってことだろ
980仕様書無しさん:2008/07/26(土) 17:58:21
この糞コテまだ生きてたのか
981仕様書無しさん:2008/07/26(土) 20:43:27
読んだとおりで >>973 の3行分のコードがあちこちに書いてあるとか
982仕様書無しさん:2008/07/26(土) 20:55:56
だったら、中身を書けってことで
983仕様書無しさん:2008/07/26(土) 21:15:23
敢えて握りつぶしてるならコメント入れろってな
984仕様書無しさん:2008/07/26(土) 21:27:24
catchの方はともかくtryの中身が無いとマッタク意味ないじゃん
985仕様書無しさん:2008/07/26(土) 22:56:33
そこかよw
986仕様書無しさん:2008/07/27(日) 01:11:30
俺の予想
例外処理が遅いという話を聞き、空のループならぬ空のtryでウェイトをかけようとしている
987仕様書無しさん:2008/07/27(日) 03:34:26
かつてsin関数でウェイトをかけていたのを思い出した。つっても中学生の頃だが。
988仕様書無しさん:2008/07/27(日) 09:49:51
力業だなぁ
ウエイトといえば OU 5Fh,AL だろ。

989仕様書無しさん:2008/07/27(日) 10:58:59
FOR I=1 TO 100:NEXT
990988:2008/07/27(日) 11:10:01
typo してたorz
×OU
○OUT

大昔のhowtoね
991仕様書無しさん:2008/07/27(日) 11:55:37
while( 1 ) {



}
992仕様書無しさん:2008/07/27(日) 13:27:01
>>991
ちょwww
993仕様書無しさん:2008/07/27(日) 14:21:34
組込み系だとそれ普通じゃね?
994仕様書無しさん:2008/07/27(日) 14:41:08
for(;;) {


}
995仕様書無しさん:2008/07/27(日) 15:00:59
>>994
無限ループなコードを書かれて泣いてるんですね。わかります。
996仕様書無しさん:2008/07/27(日) 15:04:24
話は変わるが、無限ループって怖くね?
997仕様書無しさん:2008/07/27(日) 15:57:16
while(1)とfor(;;)だったらwhileの方が好きだな俺は
998仕様書無しさん:2008/07/27(日) 17:15:35
>>997
俺はfor(;;)派。古いと言われてもついCPUへの負荷を気にしてしまう。
999仕様書無しさん:2008/07/27(日) 17:29:01
while(1)をfor(;;)って書くやつ
http://pc11.2ch.net/test/read.cgi/prog/1177664788/l50
1000仕様書無しさん:2008/07/27(日) 17:31:53
次スレ頼む
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。