5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :仕様書無しさん:2006/02/12(日) 20:34:12
この会社辞めようと思ったソースコード。
プログラマとして幻滅するソースコード。
プログラマを悩ませるソースコード。
をつらつらと綴っていって頂戴。
ぬるぽ。

ちなみにここは質問スレじゃないので
技術的な質問がしたいならム板に逝って。

前スレ

この会社辞めようと思ったソースコード#12
http://pc8.2ch.net/test/read.cgi/prog/1125979700/

2 :仕様書無しさん:2006/02/12(日) 20:37:29
カーボン抵抗が
2ゲット━━━━━( |:| |:| |:| |:|´Д`)━━━━━ ウモァー!!

3 :仕様書無しさん:2006/02/12(日) 20:51:25
>1

(゚-^*)σ 乙♪

4 :仕様書無しさん:2006/02/12(日) 22:31:31
/** >>1

5 :仕様書無しさん:2006/02/12(日) 23:26:17
今日のトリビア
glibcのqsort()はマージソートを行う。

6 :仕様書無しさん:2006/02/13(月) 00:10:22
>>5
それってマジですか?

('A')  ('A')  (A'#)  ('A')
ゝゝ   ゝゝ  ゝゝ   ゝゝ
<<   <<   <<    <<


7 :仕様書無しさん:2006/02/13(月) 00:22:45
>>1
乙鰈

8 :仕様書無しさん:2006/02/13(月) 00:25:58
>>5
( ・∀・)っヘーヘーヘー

9 :仕様書無しさん:2006/02/13(月) 00:26:22
無能コテが火病ってますよ
ttp://pc8.2ch.net/test/read.cgi/prog/1139706129/

10 :仕様書無しさん:2006/02/13(月) 02:27:11
クイックソートの使い道すらわからないような無能らしいスレだなw

11 :仕様書無しさん:2006/02/13(月) 08:08:11
過去8年分の修正がすべてコメントアウトで残ってる会社。
バグコードまでコメントで残す代わりに過去のドキュメント一切なし。

ソース::コメントアウトされたソース=3:7
エディタ開くだけでおみーよありえねーよ
可読性って言葉知ってますか?

12 :仕様書無しさん:2006/02/13(月) 10:21:21
>>11
そこでCVSですよ

13 :仕様書無しさん:2006/02/13(月) 13:06:45
バカはCVSを使っていても差分をコメントで残していたりするから手に負えない。

14 :仕様書無しさん:2006/02/15(水) 00:41:36
switch(mode){
 case 1:
  break;
 case 2:
  break;
 case 3:
  break;
 // …
 case 18:
  Start();
  break;
 default:
  break;
}

15 :仕様書無しさん:2006/02/16(木) 23:27:56
言語:VB.NET
処理は多少ぼかさせてもらうが。

If Object1.Property <> "" Then
tmpObj = New Class(Object1.Property)
Array.AddRow(tmpObj)
End If
If Object2.Property <> "" Then
tmpObj = New Class(Object2.Property)
If Array.Count > 0 Then
If Not Array.CheckRepeat(tmpObj) Then' 重複時エラー終了
Exit Sub
End If
Array.AddRow(tmpObj)
Else
Array.AddRow(tmpObj)
End If
End If
If Object3.Property <> "" Then
(以下略:同様の処理がObject7まで続く)

(さらにその直後にも↑と同様の7連ロジックが続く)



16 :15:2006/02/16(木) 23:28:59
インデントがorz

17 :仕様書無しさん:2006/02/17(金) 00:05:02
class Cache {
 Object[] data_ = null;
 Map keyIndexMap_ = null;
 public Cache(Map map) {
  data_ = new Object[map.size()];
  keyIndexMap_ = new HashMap();
  int index = 0;
  foreach (Object key : map.keySet()) {
   keyIndexMap_.put(key, new Integer(index));
   data_[index] = map.get(key);
   index++;
 } }
 public Object get(Object key) {
  Integer index = (Integer) keyIndexMap_.get(key);
  if (index == null) return null;
  return data_[index.intValue()];
} }

何やってるか分かるかなあ?(foreach は多分オレ言語風味だけどw)
このCacheクラス、結局、ただのMapクラスと同等。
むしろ、わざわざkeyとインデックスを変換してる分、改悪になってる。
keyIndexMap_にインデックスを詰めるために、int型のまんまじゃ入らないから
Integerクラス使わないといけないし。

変数名とかそのまんまだから、心あたりのある人はすぐに改良するようにw

18 :仕様書無しさん:2006/02/17(金) 02:03:24
>>17
多分、挿入順で保持したかったのかもな。
もしそうならば、LinkedHashMap を使えば実現できてしまうから無駄な努力だな。

ところで、
> (foreach は多分オレ言語風味だけどw)
この部分がよく分からんのだけれど・・・。
普通の foreach に見えるが?

まぁ、key と value の両方を使っているのだから、Map.entrySet() に対して、foreach を
使えとか思うけどな。

19 :仕様書無しさん:2006/02/17(金) 22:54:50
> 普通の foreach に見えるが?
そう?よかった。
foreachは話に聞いてただけで、うろ覚えで書いたから。。。
(実際のコードは、あそこでiteratorとwhileループ使ってた。
 java1.4だからね。。。)

20 :仕様書無しさん:2006/02/18(土) 00:39:57
「プログラムなんて要は動けばいいんだろ」的なコードしか書けない連中が
そのままマネージャとかにのし上がったせいで
プロジェクトが軒並みグダグダになるような事ってあるのかな。

素朴な疑問。

21 :仕様書無しさん:2006/02/18(土) 00:45:40
それすら書けない無能がPMやって破綻したプロジェクトなら幾つもでも知ってるが

22 :仕様書無しさん:2006/02/19(日) 03:28:37

b = false

if (strA = null) {
b = false;
return b;
}

if (strB = null) {
b = false;
return b;
}

if (strC = null) {
b = false;
return b;
}

・・・

23 :仕様書無しさん:2006/02/19(日) 09:17:06
二重三重にアレだな

24 :仕様書無しさん:2006/02/20(月) 00:46:24
絶対にエラーにならない堅牢なシステムじゃないかw

25 :仕様書無しさん:2006/02/20(月) 11:56:24
文末のセミコロンを見る限りVBではないわけで、
そうなると、if文の中が ==じゃないのは Warningは出るような希ガス。

26 :仕様書無しさん:2006/02/20(月) 13:56:45
>>25
Warningを気にかけるような人ならこんなコードを書かない

27 :仕様書無しさん:2006/02/20(月) 14:11:04
NULLじゃなくてnullってことはJavaっぽい

28 :仕様書無しさん:2006/02/20(月) 23:01:58
#define null NULL
があっても不思議じゃない気が

29 :仕様書無しさん:2006/02/20(月) 23:25:05
 if (var1 == var2) {
  if (var3.equals(var4)) {
   if (var5 == var6) {
    if (var7 == var8 || var9 < var10) {
     if (!func()) {
      if (var11 != var12) {
       foo();
      }
     }
    }
   }
  }
 }

今日見たのはこんなの。
確か6段だったと思う。

30 :仕様書無しさん:2006/02/21(火) 00:02:15
>>29
ttp://www.koders.com/java/fid0B623B057D114F8A68B54C6060C2B1AEE2D04750.aspx?s=HTMLDecoder

俺はとりあえずこれが見た中で最大のインデントだ。
だから6段ならまだ大丈夫……でもないよな……。

31 :仕様書無しさん:2006/02/21(火) 00:26:49
少々多くても条件がはっきりしてて読みやすければ、さほど問題ではねーべ。
>29みたいのは流石に途中で解読する気が失せそう。


32 :仕様書無しさん:2006/02/21(火) 01:17:35
== と equalsがさりげなく混在してるな
まあそれは別にいいけど、見る気が失せるコードだ

33 :29:2006/02/22(水) 00:05:02
ごめん。>29 確認したら 8 段あった。

あと、今日はこんなのを見た。

 public void setFooBar() {
  getBazBoo(getRequest(), getResponse());
 }

何が起こるんだ。

34 :仕様書無しさん:2006/02/22(水) 00:11:26
激しいなオイ

35 :仕様書無しさん:2006/02/22(水) 23:02:22
今日の目撃事例。

If Object.Check() <> "" Then
 Return Object.Check()
End If

履歴確認したら3年前のコードだった。
10年前の俺だってこんなコードは書かんがな。

36 :仕様書無しさん:2006/02/22(水) 23:38:51
こんなの見た。↓ここらへんがが80桁ライン

     var = new Variant(
         String
            .valueOf(
                _getLong(obj, FOO)
                  + _getLong(obj, BAR)
                  - (_getLong(obj, BAZ)
                   - ( _getLong(obj, BOO)
                     +_getLong(obj, HOGE)))
                  + _getLong(obj, HAGE)
                  - _getLong(obj, PUNI)));

こんな調子で15,000行。
掛け値なしに、ガチでマジでずっとこんな調子。


天才だと思ったorz

37 :仕様書無しさん:2006/02/23(木) 22:56:19
数行だけ違う100行くらいの関数が8個並んでるんだが、
可読性とか保守性って何?

38 :仕様書無しさん:2006/02/24(金) 00:03:38
全部 "_asm _emit 0xXX"だけのソースというのを見た。

……前任者が何かに怒って、既存のソース資料すべて捨てて作ったらしい。
1行目に一言「どこかにバグがある。探せ。」とあったが、誰も捜索していないらしい。
#24h×365dなシステムなんだが……


39 :仕様書無しさん:2006/02/24(金) 00:37:23
嫌がらせだな

40 :仕様書無しさん:2006/02/24(金) 01:15:29
とっとと作り直すべきじゃなかろうか。

41 :仕様書無しさん:2006/02/24(金) 01:16:45
作り直して不具合が出た時の責任とりたくないし
が本音

42 :仕様書無しさん:2006/02/28(火) 08:56:32
マジックナンバー禁止と言ったら
char aaa[BUF_SIZE+INT_1];

その後…ソースをみてたら…
char aaa[INT_128];

43 :仕様書無しさん:2006/03/01(水) 00:43:53
わりとデカいプロジェクトでは
ソースコード探検のしがいがある。

eclipse のプラグイン "checkStyle" をいじり、
変数名や関数名を (いわゆる) 全角で書いていると
エラーとなるように設定してみた。

いや、でもみんなそれなりにプロだし
まさかこんなのでエラーが出るはずg



大量に出た orz
プロポーショナルフォントで開発してるんかい……

44 :仕様書無しさん:2006/03/05(日) 02:53:33
>43
ありえねえw
プロポーショナルで開発する利点がさっぱりわからん('A`;)

45 :仕様書無しさん:2006/03/05(日) 03:48:30
全角とプロポーショナルフォントの関連性が分からん。
プロポーショナルフォントだと全角英字でも横幅小さくなって半角と見分けにくいって話?

46 :仕様書無しさん:2006/03/05(日) 04:12:34
コメントにAA埋め込む為に決まっとろーがw

47 :仕様書無しさん:2006/03/05(日) 13:36:09
テストケースの名称を日本語にしてみたら割と良い感じだった。
TestRunnerに日本語で成功失敗がリストアップされるのは分かりやすくていい。

英語圏の人間が言う「コードはドキュメントだ」ってのは、
日本人の意識とは開きがあるんだろーなー。
ソースコードが母国語で書かれてるなんて羨ましい。
きっとすらすら読めるんだろうな。いいコードなら特に。

48 :仕様書無しさん:2006/03/05(日) 14:01:51
>>47
英語そのままっていうとCOBOLか。

49 :葉猫 ◆Jz.SaKuRaM :2006/03/05(日) 14:21:45
VBで関数や変数に漢字を使われてるとムカつかないか。。。。。。。。。。。。。

50 :仕様書無しさん:2006/03/05(日) 15:01:59
クイックソートの使い道すらわからないような無能が粘着してるとムカつかないか。。。。。。。。。。。。。

51 :仕様書無しさん:2006/03/05(日) 15:11:00
句読点の使用方法が間違っている文を読むとムカつきます。

52 :仕様書無しさん:2006/03/05(日) 18:58:18
文の終わりは\;だよな;

53 :仕様書無しさん:2006/03/05(日) 19:05:03
>>47
COBOLって謎の短縮IDみたいなのが並んでるイメージしかない……。
というかすいません。COBOLだけはダメなんだ。COBOLだけはダメなんだ。

テストメソッドとかは、xUnitフレームワークが勝手に探し出して呼んでくれるから問題ないけど、
自分で日本語なメソッドとかを呼び出さなきゃいけないのはヤだよな。
いちおー日本語でプログラミングすることの利点も、
いくつか指摘されてはいるらしいけどねぇ。やっぱ抵抗あるわ。


そいや、たまにこんなコメントを見かけると激しく力が抜ける。

// セールスアマウントをコンピュートする
BigDecimal val = csa.computeSalesAmount();

お前は長嶋茂雄か(;´Д`)

54 :仕様書無しさん:2006/03/05(日) 19:51:54
フィールド名に漢字使ってるテーブルを見るとムカつきます。


55 :仕様書無しさん:2006/03/05(日) 23:38:14
日本語は日本語入力モードに切り替えて正しい漢字に変換するのが面倒だよな

56 :仕様書無しさん:2006/03/05(日) 23:49:08
うむ

57 :仕様書無しさん:2006/03/06(月) 00:02:45
なぜか変換できない
が多発しそうだw

58 :仕様書無しさん:2006/03/06(月) 00:39:11
'Dim b既出 as boolean
Dim bがいしゅつ as boolean 'なぜか変換できない

59 :仕様書無しさん:2006/03/06(月) 12:36:40
>55
プログラマーは漢直使えばいいのさ!

60 :仕様書無しさん:2006/03/07(火) 01:31:55
設定変えてスペースキー隣の変換キーにIMEのON/OFFを割り当ててみた。
IMEのONも変換候補送りも同じ右手親指。便利だ。
操作が簡単になればコードにコメント入れる頻度も上がるってもんよ。
それでも変数名に日本語は嫌だけど。

つーか、Windowsのデフォルトのキー割り当てがAlt+半角/全角ってのが嫌がらせにしか思えん。

61 :仕様書無しさん:2006/03/07(火) 02:10:43
……Alt押さなくても半角/全角だけで切り替わるようになったのってそんな最近だっけか?


62 :仕様書無しさん:2006/03/07(火) 02:16:16
かなり昔だと思う。

63 :仕様書無しさん:2006/03/07(火) 02:16:27
いつからだろうね。 NTはAlt要ったような気もするが、MeはAlt無しでいけたな。

>60
無変換をIME切、変換をIME入にするといいよ。
トグルと違って現在の状態を気にせずに、
日本語入力する前に一回準備運動みたいに押すだけで済む。

64 :仕様書無しさん:2006/03/07(火) 08:01:59
2K/ME世代からだったと思われ
98SEとNT4.0ではどっちもALT+半/全角だった気がする


うちの会社、現コーディング規約は俺と同僚3人で無理やりまともにさせたけど、昔はひどかった
A00001とかそんな類のクラス名やらローカル/グローバル変数やらが当たり前のように出てきて、
ついでに分厚い「なんちゃら定義書」の山。

どうやって保守すればいいのか本気で頭を抱えたよ(っつーか来期からまた頭を抱えるわけだが・・・)
COBOLerはCOBOL以外の開発現場から去るべし


65 :仕様書無しさん:2006/03/07(火) 21:07:34
そうか、Alt要らなくなってたのか。知らなかった。

>>63
> 無変換をIME切、変換をIME入にするといいよ。
そっちも試した見たけど>>60のほうが性に合ってたーヨ。


明日会社に行ったら98個のメソッド持ちの8000行クラスとお見合いか……ハァ。

66 :仕様書無しさん:2006/03/08(水) 01:08:45
>>63
Macと同じにできるのか。それいいな。
明日やってみよ。

67 :仕様書無しさん:2006/03/10(金) 16:07:22
>If Object.Check() <> "" Then
> Return Object.Check()
>End If

うわー。オレが去年頭かかえたソースにまさにそっくりのがあったよなー。
同一人物かな?


68 :仕様書無しさん:2006/03/10(金) 16:18:54
>>67
2回呼び出す事に意味があるんだよ、多分。きっと。知らんけど。どうかな?

69 :仕様書無しさん:2006/03/10(金) 16:38:57
#define eval enum

意味がわからねえ


70 :仕様書無しさん:2006/03/10(金) 21:37:02 ?
部署で使ってるライブラリのhoge_substr()は文字の先頭が0じゃなくて1から始まる。
他の言語、出身者が作ったのだろうか。。。

71 :仕様書無しさん:2006/03/10(金) 21:50:24
きっとコボラー作ですな。

72 :仕様書無しさん:2006/03/11(土) 09:02:43
Global CheckFlag;
Check() {
if CheckFlag = 1 then CheckFlag = 0
return CheckFlag
}

73 :仕様書無しさん:2006/03/13(月) 01:11:27
どこから突っ込んでいいのかわからんねw

74 :仕様書無しさん:2006/03/13(月) 10:48:28
>>63
ちとごめん、スレ違いだけどやり方教えてくれないかな。めちゃ便利そうだ。

キーマップ変更だけじゃ無理だろうし、IME側で設定出来るのかな?
最悪、グローバルフックしつつIMEの状態を判定するような常駐アプリ作ってみる勢いだけど。

75 :仕様書無しさん:2006/03/13(月) 11:14:57
なぜか MS IME のバージョンによって毎回場所が変わるんだけど、
IME のプロパティーパネルのどこかに必ず
「設定(S)...」っていう大きめのアイコンつきボタンがある。
それをクリックして、なんとなくそれらしく弄くればよろしい。

76 :74:2006/03/13(月) 11:38:00
>>75
自分の愚かさに爆笑してしまった。このアイコン、脳が背景と認識しちまっていたようで。
最初の項目意外無効にする感じですかね。上手く行きました、こりゃ便利そう。
ありがとうございました。

77 :仕様書無しさん:2006/03/13(月) 22:27:08
「引数を渡して結果をreturnする」っていう関数の基本的な前提すら、
滅多に期待できないのはなんでだろうな。

問1)
データベースをユーザIDで検索し、ユーザ情報を表すUserオブジェクトを取得したい。
クラスDBAccessorにメソッドfindUserを定義し、それを使用せよ。(Java、5点)

答1)
DBAccessor dbaccessor = new DBAccessor();
dbaccessor.setUserId(userId);
dbaccessor.findUser();
User userInfo = dbaccessor.getUserInfo();

答2)
DBAccessor dbaccessor = new DBAccessor();
ArrayList list = new ArrayList();
String retVal = null;
try{
  retVal = dbaccessor.findUser(userId, list, 1); // 1:単一取得モード 2:複数取得モード
} catch(SQLException e){
  e.printStackTrace();
  return;
}
if(retVal == null || !retVal.equals(Constants.SUCCESS_FLG)){
  return;
}
User userInfo = (User)list.get(0);

問2)
なぜUser user = dbaccessor.findUser(userId);と書く人間が一人もいないのか、
その理由を誰か教えてください。もう嫌だ。

78 :仕様書無しさん:2006/03/14(火) 01:31:16
「ユーザーが見つからなかった場合」を、exceptionで処理したくないからでは。
異常系でもないのにexception使いたくないでしょ。
※仕様上異常としたいなら君がthrowすべき。

79 :仕様書無しさん:2006/03/14(火) 01:50:30
Exception 処理したくないのは分かるが、もっと簡単なやり方があると思う。

例えば、答 2 ならば、返り値として、List か、User[] で返せばよいだけじゃないか?
見つからないときは、null を返すか、null チェックしたくなければ、サイズ 0 で返せばよい。
わざわざ呼び出し側が、List を与える必要性はない。

答 1 はそんな話とは関係なくアレだけれど・・・。

80 :仕様書無しさん:2006/03/14(火) 20:37:52
個人的にはList<User> userList = dbaccessor.findUser(userInfo);とか書いてしまいそうだ

単一取得と複数取得を分ける理由はよく分からんな
まあ、書いた奴に理由を聞いてみるのが早いな

81 :仕様書無しさん:2006/03/14(火) 22:14:00
if(!x)とかif(x)とか省略使ってる奴のソースは読みにくすぎて話にならない
もっと読む奴の事考えてコーディングしろよ

82 :仕様書無しさん:2006/03/14(火) 22:18:00
>>81

変数xが悪いの?


83 :仕様書無しさん:2006/03/14(火) 22:27:04
だよなあ。
if(IsActive)
if(!IsActive)
読みにくいか?>>81

84 :仕様書無しさん:2006/03/14(火) 22:50:03
if (x != 0)
if (x == 0)
こういうことじゃないの
オレもどちらかと言えばこっち派

85 :仕様書無しさん:2006/03/14(火) 22:58:21
boolean b;
if (b != false)
俺はこっちの方が読みにくい。

86 :仕様書無しさん:2006/03/14(火) 23:24:19
>85
そんなの書かれたら腹立つなw

87 :77:2006/03/15(水) 00:08:20
俺だっていきなりexception投げはせんよ。見つからない場合を異常扱いするかは、もっと上の層で決めることだし。
俺なら見つからない場合はnull返すぜ、って言ったことにしといてオクレ。

要するに、たかがメソッド一つ呼び出すだけ、1行で書けるはずのモノが
なんでこんな大ごとになっちまうんだって言いたかった。
呼び出し準備に、返された結果コードのチェックに、結果を取り出すためのgetter呼び出し。
雑事に埋もれて、本当にやりたかったことが全然見えやしねぇ。


ちなみに、答2のfindUser()の中身はだいたいこんな感じ。
・第3引数に1を渡されたらuserIdからUserを1つ取得してlistにadd。
 2を渡されたらuserIdを無視、Userのリストを取得して全部listにadd。
・1件も見つからない、もしくは中でSQLExceptionが発生したらConstants.ERROR_FLGを返す。
 それ以外はConstants.SUCCESS_FLGを返す。
 (呼び出し側のtry-catchは無かった。その分少しすっきりするわ。スマソ)

リストを取得したかったら別途getUsers()とか定義すればよかろうに、
メソッドを複数の目的で使い回さないでお願い(;´Д`)
使い回すならinterfaceではなくimplementを。よい子の約束だ。

88 :仕様書無しさん:2006/03/15(水) 00:17:09
0が偽扱いされるC系言語でのことなのか、それによって話が違うな。
あと、xがポインタなのかもしれん。その場合は
if(x == NULL) {
でいいのかな。

89 :仕様書無しさん:2006/03/15(水) 00:46:01
bool値とポインタのNULL判定は
if( hoge )でやっちまうなぁ

数値なんかは if( hoge == 0 ) とかでやるけど

90 :仕様書無しさん:2006/03/15(水) 02:10:48
>>87
答2は、Constants.ERROR_FLGか、Constants.SUCCESS_FLGしか返さないのかよw

91 :仕様書無しさん:2006/03/15(水) 06:59:56
「おまえ、規約でソースの修正をしたら、
修正前の状態をコメントで残すって規約で決まってるだろ」
「CVSで管理しているんで、今からそうしましょうか?」
「出来るんだったらそうしてくれ」

で、1日かけて最初とのDIFFとりつつ仕込み仕込み…
3/4がコメントと言うすさまじいソース完成

そりゃ、設計書も固まってない頃からソース作ってるんだからこうなる罠

92 :仕様書無しさん:2006/03/15(水) 12:46:16
>>81
> if(!x)とかif(x)とか省略使ってる奴のソースは読みにくすぎて話にならない

むしろ、どこが省略なのか?と小一時間(ry

93 :仕様書無しさん:2006/03/15(水) 22:19:58
/* 1.123版 不適切なコメントを削除 /* やってられねー */ */

94 :仕様書無しさん:2006/03/15(水) 22:49:47
>>93
コメントのネストに対応していないコンパイラもあるでよ。

95 :仕様書無しさん:2006/03/17(金) 00:09:01
if (x == 0) {
  function1();
  }


何この気持ち悪いインデント

96 :仕様書無しさん:2006/03/17(金) 00:41:09
勘弁してほしいな

97 :仕様書無しさん:2006/03/17(金) 00:47:08
イヤミがシェーしてるみたいなインデントだな

98 :葉猫 ◆Jz.SaKuRaM :2006/03/17(金) 00:51:23
インデントに空白とか、タブ4、タブ8を使う香具師が混在つると凄いことになるよ。。。。。。。。。。。

99 :仕様書無しさん:2006/03/17(金) 01:25:48
文末に句点を並べるアホがいると凄いことになるよ。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

100 :仕様書無しさん:2006/03/18(土) 14:38:34
if(aaa) {
 if(bbb) {
////////////////
// Company:hoge
// Name:fuga
// 〜〜により削除
//  if(ccc) {
////////////////
   if(ddd){
     fadfa;
     fafda;
   }
/////////////////
// Company:hoge
// Name:fuga
// 〜〜により削除
//  }
////////////////
 }
}

101 :仕様書無しさん:2006/03/19(日) 00:17:32
>100
複数行コメントのない言語での経験が長いひとなのかねぇ。

102 :仕様書無しさん:2006/03/19(日) 00:32:43
そういう仕様になってる企業もあるから。

103 :仕様書無しさん:2006/03/19(日) 01:28:07
>>100
俺、たまにそういうコードを書き換えてはぼーっと眺めてるよ……

if(is_aaa && has_bbb && is_ddd){
  fadfa;
  fadfa;
}

4行が20行に大増量か……ハァ(´Д`)
そして虚しい気分で「保存せずに閉じる」……。

104 :仕様書無しさん:2006/03/19(日) 12:10:09
その前に、昔のソースをコメントで残すこと自体があんまり良くないとオモ
二度と復活させる予定がない部分が残ってるってどーなんだ?

105 :仕様書無しさん:2006/03/19(日) 13:16:54
rcsのようなすばらしいソフトのない世界もあるんですよ。

106 :仕様書無しさん:2006/03/19(日) 13:38:40
コーディング規約になっちゃってるところ世界もあるんですよ。

107 :仕様書無しさん:2006/03/19(日) 14:11:45
XXCODEは6桁なのに、

#define LEN_XXCODE 10

char XXCode[LEN_XXCODE + 1];

のようなコードがあって、これ以降の処理は、マジックナンバーで6を使いまくり。

108 :仕様書無しさん:2006/03/19(日) 15:35:08
>>105
>>106
それにしても現場のマも全然嫌がらないっていうか、疑問に思わなさすぎっていうか……。
いや、俺の周りの話だけどさ。

なんか、どう書くべきかって試行錯誤を全然してないような気がする。
とりあえず動くように書いて、動いたらはい次、って感じ。
一度書いたコードが全く姿を変えない。新規に書き起こしてる真っ最中のコードでも。

どんな状況でも「書き換える」ことが滅多にない特殊なことと思ってるから、
コメントみたいなバッドプラクティスも自然に思えるんじゃなかろーか。

CVS使ってるのにな……。
ってか係長、「Javaではそーなんだよね」って、
いやバージョン管理にJavaもCも無いですから。

109 :108:2006/03/19(日) 15:37:46
って、コメントは別にバッドプラクティスじゃないわ。
なんて言やいいんだろ。「コメントアウトによるバージョン管理?」

110 :仕様書無しさん:2006/03/19(日) 18:35:42
>109
いっそのことコメントアウトによるバージョン管理ツールを作ったらどうか

111 :仕様書無しさん:2006/03/19(日) 19:27:40
バージョン管理も満足にできていない職場って結構あるの?
勘弁してもらいたいんだが。

112 :仕様書無しさん:2006/03/19(日) 21:20:17
バージョン管理どころか、サーバーの共有フォルダをみんなでアクセスして、
ファイルを直接いじって開発ってのもあるぞ


113 :仕様書無しさん:2006/03/19(日) 21:37:56
>>110
CVSのdiffをコメントアウト形式で表示するとか、
ほんのちょっとだけアリかもと思ってしまった。

114 :仕様書無しさん:2006/03/19(日) 22:32:29
>112
それはすげえなw
コンフリクトは発生しないかもしれんが
気づいたら編集がなかったことになってたりするんだな

115 :仕様書無しさん:2006/03/19(日) 23:06:32
>112
なんだ、うちのことか。('A`)

116 :仕様書無しさん:2006/03/20(月) 00:37:06
>>115
お前の所もそうなのか・・・ウチもだよ('A`)

ってか俺以外だれもCVSの事を知っている人が
社内にいない気がするんだが俺の思い過ごしだろうか・・・

117 :仕様書無しさん:2006/03/20(月) 00:57:24
VSSを導入して使えるようにみたが、
結局ロクに使われなかった会社を俺は知っている。
どうやら、バージョン管理ツールを使った事がないやつらは、
チェックイン、チェックアウト、の作業を面倒だと感じるらしぃ。
まぁ、それなりにバックアップはとってたようだけど。

118 :仕様書無しさん:2006/03/20(月) 01:08:00
VSSならチェックインだけで使えるのになあ。

119 :仕様書無しさん:2006/03/20(月) 01:28:31
>>118 チェックアウトせずにできるの?

120 :仕様書無しさん:2006/03/20(月) 02:24:00
>>119
チェックインと同時にチェックアウトってのがある。
一人で使うにはこれが最強w

121 :115:2006/03/20(月) 02:27:01
>>117
>チェックイン、チェックアウト、の作業を面倒だと感じるらしぃ。

おいらがCVSの有用性を説いたあとにそう言われて一蹴された。
そのあといろいろあって>112な状況になってたことを知る。

関係ないけど更にどうも話がかみ合わないと思ったら共有ディ
スクのことを奴らはローカル言うてました。ボスケテ。

122 :仕様書無しさん:2006/03/20(月) 06:34:06
VSSはローカルでファイルが削除された場合の挙動がおかしいから微妙だな

123 :仕様書無しさん:2006/03/20(月) 06:59:37
CVSって常時チェックアウト状態になるのがデフォじゃね?

124 :仕様書無しさん:2006/03/20(月) 23:29:36
>122
おかしくなるか?
具体的に教えてくれ

125 :仕様書無しさん:2006/03/21(火) 00:59:05
ローカル側で削除
 ↓
でも鯖には残る
 ↓
最新Ver取得で消したはずのファイルがまた落ちてくる

という流れかと。

126 :仕様書無しさん:2006/03/21(火) 01:11:51
鯖から消せばええがな。

127 :仕様書無しさん:2006/03/21(火) 03:29:29
個人的にVSSはしっかり使うように指示してるな。
最初使ったとき確かに面倒だなぁとは思ってたけど
バージョン管理するのは楽だわ。

しかし最新のやつって使いづれぇ。
6だと随時下に何やってるか書いてくれるのに
7は一気にはき出すからなんとなく嫌い。
設定次第なんかな。


128 :仕様書無しさん:2006/03/21(火) 20:58:23
>125
うーむ
むしろその方がありがたい

129 :仕様書無しさん:2006/03/23(木) 00:56:39
String s = new String();
s = "aho";


130 :仕様書無しさん:2006/03/23(木) 01:24:04
ガーベジコレクタはメモリ資源を回収してくれるが
人間ゴミはむしろ増やす恐れがある、と……
# ってもシステムからいただいた後のメモリ管理は全部自前、てのは流石に最近辛くなってきた

131 :仕様書無しさん:2006/03/23(木) 14:12:47
>>129
そのコード、暗黙の new String("aho"); やってるけど、
これってコンパイル時に最適化してくれるんかな。

132 :仕様書無しさん:2006/03/23(木) 16:18:49
コードとして別物だからしてくれないんじゃ?

>>129 はコンストラクタ → =の演算子オーバーロードだけど
>>131 はコピーコンストラクタ だけのはず

133 :仕様書無しさん:2006/03/23(木) 16:19:40
あ…コピーコンストラクタじゃなくて、引数 char *型のコンストラクタか orz...

134 :仕様書無しさん:2006/03/23(木) 19:59:13
>>132
C++じゃなくてJavaじゃね?
最適化されるようなされないような……。
逆コンパイラ使って見てみれば分かりそうだけど、めどいからまぁいいや。

135 :131:2006/03/24(金) 13:27:30
ちっと暇が出来たんで軽くチェックしてみた。
WinXP + j2sdk1.4.2_04

source:
public class Test25 {
public static void main( String[] args ) {
String s = new String();
s = "aho";
System.out.println(s);
}
}

デコンパイル後:
import java.io.PrintStream;
public class Test25 {
public Test25() {}
public static void main(String args[]) {
String s = new String();
s = "aho";
System.out.println(s);
}
}


136 :仕様書無しさん:2006/03/24(金) 19:00:51
>>135
うわ、最適化してくれないのね。
私も Jad v1.5.8f で試してみたけど、同様の結果になりました。

コンストラクタ( public String() )でどんな処理がなされるのか、
というところまで踏み込んだ最適化をしていないからなのか、
問答無用で実行しちゃうんだね。

137 :仕様書無しさん:2006/03/28(火) 20:27:23
ソースの修正は関数単位で行う…のはまだいいとして、
修正前の関数をコピーして別の名前で残すという規約は参る

funcA()
{
  //30行くらいの処理
}

funcA_20060328()
{
  //30行くらいの処理
}

funcA_20060327()
{
  //30行くらいの処理
}
  :
  :
以下続く


138 :仕様書無しさん:2006/03/29(水) 01:16:46
>137
それオブジェクトファイルが無駄に肥大していくんじゃ……
無駄関数が最適化で抹殺されるならそうはならんだろうけど

139 :仕様書無しさん:2006/03/29(水) 01:24:47
そんなんでよく会社が成り立つもんだね

140 :仕様書無しさん:2006/03/29(水) 01:45:25
>>137
修正前の関数はコメントアウトしないの?

141 :仕様書無しさん:2006/03/29(水) 02:54:27
そういう規約を喜ぶ連中は2007年問題で激減するはずだから
もうちょっと我慢して改正しようぜ。

142 :仕様書無しさん:2006/03/29(水) 11:13:40
>>137
こっそり#if 0〜#endifを書き込んどいたほうがいいんじゃまいか?

143 :仕様書無しさん:2006/03/30(木) 00:30:38
CVS(とかVSSとか)使えってことだよな

144 :仕様書無しさん:2006/03/30(木) 11:20:29
>>143
開発者側としては当然CVSやVSS使いたいと思ってるやつが大半。
しかし、会社の規則で「GPLのものは使用禁止」とか、VSSの予算申請してもらえないとか、
硬直化したコーディング基準があるとか、様々な理由で使わせてもらえない現場が
よくあるんだよね。


145 :仕様書無しさん:2006/03/30(木) 12:00:58
Pen OshiriPenPen = new Pen(Color.Black)

146 :仕様書無しさん:2006/03/30(木) 15:15:58
>>145
PGの尻を黒いアザができるまで叩く上司がいるのか。

147 :仕様書無しさん:2006/03/30(木) 16:54:05
SM鞭でペンペンなんじゃないのか

148 :仕様書無しさん:2006/03/30(木) 17:21:26
ちょっと擬音として不正確じゃないかそれ

149 :仕様書無しさん:2006/03/30(木) 19:34:54
Petipeti

150 :仕様書無しさん:2006/03/30(木) 22:10:53
pengpeng

151 :仕様書無しさん:2006/03/31(金) 00:13:47
31個の引数が並んでたときとかか。


152 :仕様書無しさん:2006/03/31(金) 00:48:24
1関数で4000行ってのを見て、めまいがした。

153 :仕様書無しさん:2006/03/31(金) 08:48:16
○○○View.cpp 1,489,427 バイト

前任者失踪。。。orz

154 :仕様書無しさん:2006/03/31(金) 12:05:07
ウホッ

155 :仕様書無しさん:2006/03/31(金) 17:09:44
どの程度なら許せる?
いや容量じゃはかれないのは承知の上で

156 :仕様書無しさん:2006/03/31(金) 20:18:24
うむ。
容量がいくら多くても読みやすいのもあるからな。

157 :葉猫 ◆Jz.SaKuRaM :2006/03/31(金) 22:28:15
漏れも前に4000行の関数使ってるようなソースのバージョンUPやりまちたがあれは大変でちた。

しかも規約でコメントが英語。。。。 コメントもほとんど無かったYO ヽ(`Д´)ノ ウワワーン

158 :仕様書無しさん:2006/03/31(金) 22:36:51
流石qsortの使い道すらわからん香具師は英語も読めんか

159 :仕様書無しさん:2006/03/32(土) 00:34:05
Javaなんだが

メソッド名は全部大文字のプリフィックス+連番
引数なし
戻り値なし

っつー規約はやめてくれ
いったいどこのこぼらーがこんな規約作りましたか

160 :仕様書無しさん:2006/03/32(土) 12:25:09
>>159
うわ……邪魔規約の極みだな。心底同情するわ……。
俺ならストレスで潰れる前に何とかして逃げる。
糞コードに健康奪われないよう気をつけてくれ。

161 :仕様書無しさん:2006/03/32(土) 15:54:59
>>159
そこの連中脳は大丈夫なのか?
本気で心配だ。

162 :仕様書無しさん:2006/03/32(土) 16:09:27
うむ

163 :仕様書無しさん:2006/03/32(土) 22:22:48
>引数なし
>戻り値なし
名前はともかくこんな規約でまともなプログラムが組めるんだろうか。

164 :仕様書無しさん:2006/04/02(日) 02:24:30
COBOLは大雑把に言って全ての変数がグローバルだからなぁ。
それに慣れてしまうとローカル変数(関数の引数だって関数内ローカルだわな)を追えなくなってしまうんだろう。

165 :仕様書無しさん:2006/04/02(日) 03:00:45
ある場所で参照できる変数が、
他のところに行くと参照できないってのが理解できんのかな……。

やっぱりCOBOLは邪悪な暗黒の言語だ。
誰か魔界に永久封印してくれる勇者はおらんのか。

166 :仕様書無しさん:2006/04/02(日) 04:03:59
参照すべき変数が多くなってくるとめんどくさいんだよ。
めんどくさいから全部一個の構造体に突っ込んでそれを引き回すとか
そういうことをやり始める。だったらはじめからグローバル変数で
行ったほうが、まだましな気がする。

167 :仕様書無しさん:2006/04/02(日) 09:34:20
>159には書き忘れてたんだが

メソッドは必ずpublic
追加したらexcelのメソッド台帳にメソッド名と作成日と作成者を記入

>163
メソッド全部publicだからいちおう動くっちゃー動くんだが、
FUNC03_01() // 画面のデータを取得
FUNC03_02() // データベースに登録
みたいなことするんだわ('A`)


168 :仕様書無しさん:2006/04/02(日) 13:55:13
メソッドが全部staticじゃないだけ救われ・・・ないな('A`)

169 :仕様書無しさん:2006/04/02(日) 14:58:36
>>167
なんかもー信じられんわ。吐き気がする。
でもpublicフィールドは禁止されてないのかな。
なら「構造体」レベルの使い方ならぎりぎり利用できる?

つか、10年前に「はるみのゲームプログラミング」片手に
PC-8001でN-BASICしてた頃を思い出した。
あのころの俺の頭では「関数」が分からず「サブルーチン」しか理解できなかったが、
あのころ中学生だった俺が規約作ったらそーいう代物が出来たのかもしれん……。

170 :仕様書無しさん:2006/04/02(日) 15:23:51
167の会社はマシン語信者がトップにいそうだな
BASIC話でちと思った

171 :仕様書無しさん:2006/04/02(日) 16:10:29
>169
publicフィールドないとだめだよ
あるオブジェクトから別のオブジェクトにデータを渡す際、
メソッドの引数は禁止だからフィールドに直接突っ込むんだ('A`)
WORKING-STORAGE SECTIONだなまさしく

なんかもう俺も涙がでそうなくらいしょぼい工夫しちゃってんのさ

public String func03_01_in_userId; // FUNC03_01の引数(IN)でユーザーIDの意
public String func03_01_out_userName; // FUNC03_01の戻り値(OUT)でユーザー名の意

みたいなのwww

172 :仕様書無しさん:2006/04/02(日) 16:50:13
>>171
そんなときは泣けばいいと思うよ。
まともな規約なら

public String getUserName(String userId);

って感じか。コレより>>167 >>171の方が分かりやすいって感じる人間がいるんだなぁ……。

あとWORKING-STORAGE SECTIONて何だろうと思ったら、何だ、COBOLか('A`)。調べなくてもいいや。

173 :仕様書無しさん:2006/04/03(月) 01:28:10
コボル云々というより、品質管理の観点から
「昔からのやり方」を変えるわけにはいかないのだと、
昔上司から教わった。
要するに作り方が変われば品質にも当然影響が出るよね、と。

…それを聞いて、良い方に変わるならむしろ歓迎すべきだし、
結局何もしないのはSE/PGの怠慢じゃネーノ?と思いますた。

以上チラシ裏の感想文でした。

174 :仕様書無しさん:2006/04/03(月) 15:37:41
品質管理のためにやり方を変えられないのに言語を変えられるのか?

175 :仕様書無しさん:2006/04/03(月) 16:26:05
ステップ数とか人月による管理のことだろ>やり方

176 :仕様書無しさん:2006/04/03(月) 22:43:14
……そんなに「やり方」を変えるのが良くないならシステム化なんてしなきゃ良いじゃない。
と自らの(そもそもないに等しい)存在意義を抹消してみるテスト。

177 :仕様書無しさん:2006/04/06(木) 21:48:20
「良いほうに変わる」のが分からないこともある。
プログラムはやっぱ若い人の仕事なのかもしらん。

178 :仕様書無しさん:2006/04/07(金) 17:10:24
言語を変えて管理方法を変えなかったら悪いほうに変わってしまいそうだが。

COBOLは全部グローバル変数だからアベンド時のアドレスと変数のマップと
ダンプリストを付き合わせればだいたいの原因をつかめる=デバッガが使え
ない技術者でも対応可能という利点があるが、Javaだとデバッガ使えないと
難しい=未熟な技術者では対応困難という面がある。こういう欠点を取り上
げていけば、結局管理方法を変えないとダメになると思う。

179 :葉猫 ◆Jz.SaKuRaM :2006/04/07(金) 20:14:49
ICEもなく、メモリダンプのみで組み込みソフトの開発をちていた時は大変だったな。。。。。。。。。

デバッカがあればアホでも開発できるような気がつるけど。。。。。。

180 :仕様書無しさん:2006/04/08(土) 00:31:51
お前まだ居たのか
よく恥ずかしげもなく顔出せるね

181 :仕様書無しさん:2006/04/08(土) 01:35:16
「会社のクソなコーディング規約のせいで」
「プログラミングのプの字も解らぬ顧客/設計者による度重なる無茶な仕様変更のせいで」
「『動きゃあ何でもいいんだよ動きゃあ!』という会社のガテン系な雰囲気と納期のせいで」

コードが汚い言い訳がスラスラ出てくるようになれば
サラリーマンプログラマとして新人卒業だ。

182 :仕様書無しさん:2006/04/09(日) 01:20:33
>174
案件が変われば言語が変わることもある。
だが管理方法は上司や会社が変わらなければ変わらない。



183 :仕様書無しさん:2006/04/19(水) 03:28:12
vector<boo> aa;
...
sort(aa.begin(), aa.end(), aacomp());

こんなソース見つけた
これ書いた奴は才能あると思った…これで動いているんだもんな…orz...

184 :仕様書無しさん:2006/04/19(水) 05:21:49
どこが悪いんだろうと思ったら、aacomp()を呼び出してるのか。
でもsortに渡すアルゴリズムならboo&が二つ引数に必要なはずだが……。
aacomp()が関数オブジェクトでも返してるのか?


185 :仕様書無しさん:2006/04/19(水) 08:02:51
aacompって名前だとstrcmpとかと同じ3値を返す関数オブジェクトな気がする。
でsortの関数オブジェクトはstd::less<T>みたいに2値の関数だから結果が変になったとか。

186 :仕様書無しさん:2006/04/19(水) 09:05:00
183 が C++ 読めてないだけなんじゃね?

187 :仕様書無しさん:2006/04/19(水) 19:07:14
関数の引数int i

188 :仕様書無しさん:2006/04/19(水) 21:13:19
>>186
C++は深いぞ!

答え
bool aacomp::operator()(const boo & right, const boo & left);


アリエネー

189 :仕様書無しさん:2006/04/19(水) 22:11:24
だから関数オブジェクトじゃないか。基本。

190 :仕様書無しさん:2006/04/19(水) 22:29:02
......関数オブジェクトなんぞ一般的なC++のコードじゃねーか。
なにがアリエネーなのかワカラネー

191 :190:2006/04/19(水) 22:31:03
しまった。左右が逆ネタかよ。orz

192 :葉猫 ◆Jz.SaKuRaM :2006/04/19(水) 22:33:00
ウンコソース書く香具師ばっかりだな。。。。。。。。。。。。。

193 :仕様書無しさん:2006/04/19(水) 23:45:38
やぁその代表である無能コテくん
今日はどんな糞ソースを書いてきたのかな?

194 :仕様書無しさん:2006/04/20(木) 00:16:12
結局 183 には何も問題なくて、 188 だったってことか。

195 :仕様書無しさん:2006/04/20(木) 00:24:42
俺が今いるプロジェクトのソースは、
メンバーの問題人物が担当した部分は、機能追加や仕様変更があるたびに

#if defined(○○)
 : (追加したコード)
#else
 : (従来のコード)
#endif

ってなって、コード行数が増え続けてる。
#ifが何段にもネストされてる。
しかも、自分でやっといてよくわからなくなるらしくって、
自分で書いたメソッドなのに『どういう風に動いてるの?』とか聞いてくる始末。
勘弁してくれよ。。。

最近、時間があるときにステップ実行していって必要ないところをひたすら消してる。
もう、コード見て必要ないところを解析するのは面倒。。。

196 :仕様書無しさん:2006/04/20(木) 00:31:29
戦後に興った産業だから、他の産業の開発手法を模倣する事
から始まって、だんだん現状に合う様に代わって行った筈なの
に、ジジィどもにはそれが分からんのです。

197 :仕様書無しさん:2006/04/20(木) 09:25:42
ヲレ達にとっては「2007年問題」は、
問題どころか、COBOLerを排除する天啓?

198 :仕様書無しさん:2006/04/20(木) 10:36:11
>>197

生産業ならわかるけれど、ソフトウェアの世界で本当に2007年問題って起こるんだろうか?

199 :仕様書無しさん:2006/04/20(木) 10:55:36
>>197
あー、気持ちはわかるけどコボラーが作った
スパゲティーを賞味することになるだけだと思われ。

>>198
確実に起こる。
コボラーの書いた本人以外理解不能な
巨大システムのメンテ要員がいなくなる。

このスレの愚痴のサンプルコードが、
ヲレ達には理解不能な言語で埋め尽くされることになる。

200 :仕様書無しさん:2006/04/20(木) 10:57:45
んで、COBOLからJavaへの自動変換ツールとかどっかにないのか?

と煽ってみる。

201 :仕様書無しさん:2006/04/20(木) 11:15:08
>>200
確かにあるが、それで翻訳されたJavaコードのメンテやりたいか?

COBOLが嫌われるのはビジネス臭どうこうじゃなくて、
言語仕様からくる設計の悪さだということを忘れてはいけない。

確かに言語はJavaかもしれないが、巨大なmain文、全部グローバル変数、
そして関数名は英文字+数字のマジックナンバーだということを忘れてはいけない。

202 :仕様書無しさん:2006/04/20(木) 21:27:00
COBOLでベテランプログラマが重宝されるって話があるけど、ほんとかいな。
そこいらのJavaやVBプログラマをつっこめば、平気そうなきがする。

203 :仕様書無しさん:2006/04/21(金) 00:31:38
>202
いやJavaプログラマをCOBOLなプロジェクトなんぞに放り込んだら腐るだろ…
VBプログラマはまだ耐性あるかもしれんけど。
しかしベテランCOBOLerの耐COBOL性能に比べたら…

204 :仕様書無しさん:2006/04/21(金) 01:00:36
当時C/C++メインなのにちこっとだけCOBOLやらされたことがあったが
正直1ヶ月(しかもC++の本業の傍ら程度)でもうお腹いっぱいですた……

ちうか、AIX上でコンパイルせにゃならんかったのだが、現場コボラにUnices使える椰子なんてほとんどおらず
ソースは常に手元のWindows機で編集してFTPで上げて、あとは馬○の一つ覚えのシェルスクリプトを叩けば
いいようにしつらえてあって、
その辺の自動化が中途半端だったせいかとは思うが、Makefileが実行の度*.oを全部消すようになっていて……

漏れは手持ちの分のMakefileコソーリ書き換えてた


205 :仕様書無しさん:2006/04/21(金) 09:34:20
>>201
関数名連番はEclipseでリファクタリングかければどうにでもなるが…
論理構造に手を入れるのは大変かもなぁ。

206 :仕様書無しさん:2006/04/21(金) 09:59:39
>>205
もうひとつ君は忘れていることがある。

COBOLを自動変換でJavaにしようというプロマネが仕切るような
プロジェクトはリファクタリンクの工数を認めてくれるはずがない。

そもそも、その世代は「動いているものは触るな」という洗脳を
受けているので「リファクタリング」という概念自体理解できていない。

207 :206:2006/04/21(金) 10:02:27
個人的な実話で恐縮だが、
VBでスパゲティーボールになっているコードの
リファクタリングを提案したら、
「マニアの趣味じゃないんだよ。仕事なんだ」と
趣旨を全く理解されなかったことがある。

208 :仕様書無しさん:2006/04/21(金) 18:41:05
>>207
VBスパじゃテストスイートなんて書かれてるとは思えんし、
新しく書くにしても大変そうだなぁ……。
リファクタリングの必要性を納得させるのはマジ大仕事だと思う。

保守作業で書き換えが必要になった時に、
関連のある範囲だけテスト書いてリファクタリングして……
ってのが一番マシな戦略じゃないかね。


俺らデスマやらスパゲッティの経験ばっか語りがちだが、
ふとスレと逆のことを思いついてみる。
みんな逆に「読みやすいコード」を保守した経験ってあるか?

209 :仕様書無しさん:2006/04/21(金) 20:44:22
>208
> みんな逆に「読みやすいコード」を保守した経験ってあるか?

 ないな(断言)。
 俺なんか、リファクタリングするしないで社長と喧嘩して会社辞めたぞ。
#俺が「しないと絶対にマズイです、そもそも仕様書と書いてること違うじゃん!」
#と懇切丁寧に説明したのに、聞く耳持たなかった。社内開発のERPソフト。
##残った奴に聞いたら、先頃結局全破棄→作り直しが決定したそうな。


210 :仕様書無しさん:2006/04/21(金) 20:46:05
>>208
ある。極楽。
ぜんぜん別会社の人と四人チームで開発していたのだが、通信関係の
仕事だったので、二十四時間体制で、看護婦さんみたいに引き継ぎ
引継ぎで開発してた。
コメントで爆笑し、「あのヒトたち大丈夫?」とか言われてたりしたが、
マジ楽しかった。

211 :葉猫 ◆Jz.SaKuRaM :2006/04/21(金) 20:55:13
漏れはデグレを恐れることなく気ままにソースを綺麗に修正ちてまつYO

たまに怒られまつが。。。。。。。。


>>208
組み込みの仕事をちていたときのソースは割と綺麗でちた。
UNIXの時はアホのコボラーが書いたとちか思えんかったけど。。。。

212 :仕様書無しさん:2006/04/21(金) 21:12:13
>>207
そりゃ、あんたの説得能力に問題あり。

213 :仕様書無しさん:2006/04/21(金) 21:55:12
>>208
希ではあるが、ある。
やっぱ基本思想がはっきりしていて、
その思想に納得できる代物なら、
読んでもメンテしても楽しいよ。

214 :仕様書無しさん:2006/04/21(金) 21:58:09

// SELECT
SQL .= "SELECT ";
// HOGE
SQL .="HOGE ";
// TABLE
SQL .="FROM TABLE";

たまにはソースレビューしたほうがいいんジャマイカ。

215 :仕様書無しさん:2006/04/22(土) 00:22:45
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

216 :仕様書無しさん:2006/04/22(土) 00:24:50
学生時代、まったくソフトをやってなくて就職してからソフト(VC++)をやり始めた俺の意見だと、
ソースコードレビューをもっと積極的にやって欲しい。
ホントありえない日程組まれてるんだけど、
自分の書いたソースにマジで自信が持てないんです。。。

217 :仕様書無しさん:2006/04/22(土) 01:43:46
年寄りのプログラマや、少し特殊な領域(組込みとかゲームとか)のプログラマは
「おりゃーそこら辺のプログラマとは全然違う仕事をやってるんだ!」という歪んだ
プライドを根拠に、ソフトウェア工学は勿論のこと、現場から生まれた方法論も
ツールもすべて一蹴する。
「コードレビューもリファクタリングもテスト駆動も自動化もバージョン管理システムも
バグトラッキングシステムもXPもアジャイルも軟弱者が使う下らん道具だ」と
言わんばかり。「本物のプログラマは××」を地で行くような奴らだ。

218 :仕様書無しさん:2006/04/22(土) 12:42:27
>>217
そのオッサンもant厨と変わらんな

219 :仕様書無しさん:2006/04/22(土) 12:53:39
リファクタリングしてぇ糞きたねーコード見てるとうずうずもじもじする

220 :仕様書無しさん:2006/04/22(土) 13:06:07
>>217 アメリカ産というだけで毛嫌いする奴もいるし、マネージャーがソフト屋じゃなかったりするんだぞ?
隣の芝生が毒草ばかりだからといって叩くな厨房。

221 :仕様書無しさん:2006/04/22(土) 14:24:33
本物のプログラマをなめんな!

当時はSEなんて呼称無くてSEもデザイナーもアーキテクトも
全てひっくるめてプログラマって言われてたんだよ!

当時のプログラマは、上級PGでもあるし、超級SEでもあるし、
デザイナーでもあるし、アーキテクトでもあり、もしかしたらそれ以上の存在だ。

222 :仕様書無しさん:2006/04/22(土) 14:46:40
当時ってのはいつだろう。
少なくとも25年前の某メーカー (の金融SBU) には居たが。

223 :仕様書無しさん:2006/04/22(土) 15:01:00
ばか文系のせいでPGから分離したできたSE

224 :仕様書無しさん:2006/04/22(土) 17:00:41
>>217
結果を出してくれればいいんじゃね?


225 :207:2006/04/22(土) 17:07:53
>>209
ヲレも結局辞めた。
今でも正解だったと思っている。

226 :仕様書無しさん:2006/04/22(土) 18:01:54
>>224
結果って何だい? プログラムの行数? 納期を守ること?
はたまた、作ったものが会社にもたらす利益?

まあ、それがわかるくらいなら、リファクタリングするべきか否か、
何が正しいのか等について悩んだり議論することもないのだが。

227 :仕様書無しさん:2006/04/22(土) 20:06:01
>作ったものが会社にもたらす利益

これ以外になんの価値が?

228 :仕様書無しさん:2006/04/22(土) 20:43:19
>>226
>まあ、それがわかるくらいなら

おまえは、何が「結果」かも分からずに
仕事をしているのか?


229 :仕様書無しさん:2006/04/22(土) 20:45:47
はいはい。
コボラーヲヤジ乙

次のエンジニアの方どうぞ

230 :仕様書無しさん:2006/04/22(土) 21:11:06
メソッドに渡す引数が、日付も数値も文字列とかマジでやめれ

231 :仕様書無しさん:2006/04/22(土) 23:00:26
それなんてバリアント?

232 :仕様書無しさん:2006/04/23(日) 07:34:43
仕様変更に柔軟に対応するには文字列の方が良かったり・・・

いままで数字だった課番号に突然「東日本課」なんかが追加されたりして・・・

233 :仕様書無しさん:2006/04/23(日) 08:37:28
>>232
>いままで数字だった課番号に突然「東日本課」なんかが追加されたりして・・・
それを数値だと考えること自体間違ってると思うが。

234 :仕様書無しさん:2006/04/23(日) 08:44:42
今まで部署名が数字だけでだったほうも驚き

235 :仕様書無しさん:2006/04/23(日) 08:46:08
課番号,呼称
01,北日本課
02,西日本課
03,南日本課
04,東日本課

単に04が追加されただけとちゃうん?

236 :仕様書無しさん:2006/04/23(日) 08:47:35
天邪鬼だらけのインターネット

237 :仕様書無しさん:2006/04/23(日) 10:19:01
>>209
念のため突っ込んでおくと、
リファクタリングは仕様書と実動作(コード)との違いを修正する手段
ではありませんよ。
あなたは的外れな議論を社長として、仕事をやめたおばかさんってことですね。


238 :仕様書無しさん:2006/04/23(日) 14:12:03
バグを退治するために、プログラムを理解しやすい&修正しやすいように直す
けど?

239 :仕様書無しさん:2006/04/23(日) 14:53:44
確かに、バグを修正するためにリファクタリングせざるを得ないときもあるな。

既存のモノを弄るなと言われて、アドホックな方法で解決の無限地獄に陥ったあげくに、
読めないコードになったのを見た事ある。

240 :仕様書無しさん:2006/04/23(日) 16:05:26
コボラーは女の子多いから優しくしてやってくれ。
昨日コボラーで、巨乳の可愛い子と仲良くなたよ♪

241 :仕様書無しさん:2006/04/23(日) 16:14:26
>>238
リファクタリングはソースを見やすく、改造しやすくしやすいようにするための手段。
バグ修正がやりやすくなるのは結果に過ぎない。


242 :仕様書無しさん:2006/04/23(日) 16:33:34
>241 だから?何が言いたいんですか?
リファクタリングの結果、バグ修正しやすくなるのに何か不満でも?

...元々のコーダーがあなただから、人格が否定されたような気がしたのでつか?
そんな事はないでつよw


243 :仕様書無しさん:2006/04/23(日) 17:10:37
>>242
何を言っているのですか?
209からの流れをよく読み返してくださいよ。
209はバグの修正にリファクタリングが必要だと社長と議論して仕事をやめた、
といっていますが、仕様書との不一致を直すのにリファクタリングは必要条件ではないのですよ。
209はリファクタリングを別の意味に捉えているのを指摘しているだけですよ。
おばかさんにはわかりませんか?

244 :仕様書無しさん:2006/04/23(日) 17:24:10
309見たけど

>仕様書との不一致を直すのにリファクタリング
とは書いてないなw
243の思い込みじゃね?

>しないと絶対にマズイです、そもそも仕様書と書いてること違うじゃん!


245 :仕様書無しさん:2006/04/23(日) 17:25:09
>309


246 :仕様書無しさん:2006/04/23(日) 17:43:34
>>233-235
第1営業課
第2営業課
・・・
東日本営業課

工エエェェ(´゚д゚`)ェェエエ工

247 :仕様書無しさん:2006/04/23(日) 17:44:58
>246

もまえの方が工エエェェ(´゚д゚`)ェェエエ工


248 :仕様書無しさん:2006/04/23(日) 17:46:00
ドメインが営業だから数字だけで扱えると思ったら
東日本営業課、西日本営業課とか追加しなくちゃならなくなった場合って意味

249 :仕様書無しさん:2006/04/23(日) 17:48:50
>>237
説得の結果「仕様違いの修正はするけどリファクタリングは認めん!」を恐れて
リファクタリングとセットで主張したのかもな。
ダメコードのおかげで仕様を満たす修正に大量の無駄コードが要る、とかは
自分も覚えがある気がする。

まぁ、破棄して作り直しは決してリファクタリングじゃないから、
>>209の会社は結局「リファクタリング」は受け入れなかったんだな……。
丸ごと作り直しは全然駄目な戦略だとJoelは言っていたが。

>>241
バグ修正は改造の一種だと思うが……。
「修正しようにもこれじゃ怖くて触れねーよ」に対処するのに
リファクタリングは有効じゃないか?


コードの質に自己満足以上の価値を認めない職場は俺も御免だけど、
その質の生産性を証明しろと言われると実際どーしたもんだか……。
個人的には「このコードは正しく動いている」っていう自信が得られるのが嬉しいんだけどね。

250 :仕様書無しさん:2006/04/23(日) 17:49:20
233 :仕様書無しさん :2006/04/23(日) 08:37:28
>>232
>いままで数字だった課番号に突然「東日本課」なんかが追加されたりして・・・
それを数値だと考えること自体間違ってると思うが。


234 :仕様書無しさん :2006/04/23(日) 08:44:42
今まで部署名が数字だけでだったほうも驚き


251 :仕様書無しさん:2006/04/23(日) 17:58:50
>>248
printf("第%d営業課", sectionNo);
か……。

結果論だが、抽象化しすぎてたって感じかのぉ。
課名とかを個々で持っておいたほうがシンプルだったな。

252 :仕様書無しさん:2006/04/23(日) 18:00:02
>>244
読解力が無いうえに誤記までするとは・・・
本当に馬鹿丸出しですね。

253 :仕様書無しさん:2006/04/23(日) 18:00:56
営業課は数字以外も使って表すというビジネスルールがなかったから数字を使ったんだけど
そんな場合にも部署名、課名は全部マスタテーブルに入れて
マスタテーブルのPKを使ってやるの?

営業課を表す場合に数字以外は使わないのにこういう
課番号,呼称
1,第1営業課
2,第2営業課
3,第3営業課
4,第4営業課
マスタテーブルを作るの無駄じゃね?

それに
データベースサーバが落ちたらプログラム動かないじゃん

254 :仕様書無しさん:2006/04/23(日) 18:03:35
>データベースサーバが落ちたらプログラム動かない

...データベースなしでも動け、と?

255 :仕様書無しさん:2006/04/23(日) 18:17:00
「そもそも〜」は論点が定まらなくなるから止めた方がいいって事だな。

256 :仕様書無しさん:2006/04/23(日) 18:17:49
>>254
当たり前だろ?
データベースサーバーが落ちたくらいで業務が止まったらすごい損失が出るし。

257 :仕様書無しさん:2006/04/23(日) 18:35:10
マスタの話に便乗してちょっと質問させてくれ。

ASP.NETの画面にマスタから項目を拾うリストボックスがあったので
DBアクセスを伴う箇所を分離するためにユーザコントロール化したら
「再利用もしないのになんでそんなことするの?」とか
「そんな余計な事をするからいらんバグが出るんだ」とか散々に言われた。

これはつまり、MVCを知ったかぶった俺が
先走りしたということになるんだろうか。

258 :仕様書無しさん:2006/04/23(日) 18:35:19
>>254
……んな無茶な。

>>253
すまん、微妙に文章が読み取れない……。

営業課テーブルを作らないと拡張性が損なわれたり(今回のように)、課名の組み立てが複雑になるが、
まぁ設計した当初は「要らない」ほうに賭けたって事だよな。
その賭けに負けたんだから、頑張って掛け金を払うしかないわな。

俺なら拡張性とシンプルさを考慮して「要る」に賭けるが……。

259 :仕様書無しさん:2006/04/23(日) 18:58:20
>>257
「ユーザコントロール化」がその場で最適な解だったかどうかは俺らには分からんからなぁ……。
分離は再利用だけでなく、重複の排除、可読性の向上、自動テストが容易になる、等の効果もあるってくらいか。
ただ、単にクラスを分離するだけで十分だった、って可能性も……。

ん? さんざん言われたのはどっちに対してなんだ?
「ユーザコントロール化」か? それとも「分離」?

260 :仕様書無しさん:2006/04/23(日) 19:23:41
>>259
ユーザコントロール化そのもの。
確かに、リストの選択変更に伴うイベント処理とかも追加実装せにゃならんし
(「親リストを変更→子リストの項目が変化」みたいな処理)
DBアクセスを分離するだけならそこだけクラス作るべきだったかと
今になってはいろいろ反省することはあるんだ。

で、その時に「UC化の目的はDBアクセス周りを分離するため」と
説明したんだが、説明するたびに「?」な顔をされたんで
「そもそもUC化しても分離効果はない」という意味なのか
「分離すること自体が考えにない」という意味なのかを計りかねたんだ。


261 :仕様書無しさん:2006/04/23(日) 19:42:28
>>260
>「そもそもUC化しても分離効果はない」という意味なのか
>「分離すること自体が考えにない」という意味なのかを計りかねたんだ。
VB厨な職場なんでしょ?
たぶんユーザーコントロールの使い方(というかそもそも存在)を知らないから
「ヲタクが自己満足してる」って理解しかできずに叩いただけだよ。きっと。

ただ、話を聞く限りではクラス化だけでよかったかもね。


262 :仕様書無しさん:2006/04/23(日) 20:13:04
>>260
> 「UC化の目的はDBアクセス周りを分離するため」

この一文はかなり奇妙な気が……。いや、APS.NETあんまり知らないんだけど。
ユーザコントロールを作っても、ユーザインターフェースを分離する事にしかならないんじゃ?

ユーザコントロールの中にDBアクセス処理も入れて、
ページに貼り付けるだけで親選択->子DB検索->再表示まで全部やってくれる、みたいな?
それはロジックからPageクラスを分離してるんであって、
DBアクセスの分離とは別だし、MVCのMとVが混ざってることになるし……。

263 :仕様書無しさん:2006/04/23(日) 22:18:26
>>253って終わってるよ・・・
>>251はアフォ?そんなコーディグする発想は業務系にはあり得ない。
数字だけでできてたとしても文字列として扱うべき。
別に課番号使って計算するわけじゃあるまいし。
>>250
まともなレスを晒すなよ。おまえの低脳の方がよほど恥ずかしい。

264 :仕様書無しさん:2006/04/23(日) 22:27:48
>>263
まともなレスを晒すのは確かに問題がありますけど、
「馬鹿なあなたはまともだと思っているけれど、実際は全然そうではないレス」
を晒しても特に問題は無いと思われます :-)

265 :仕様書無しさん:2006/04/23(日) 22:42:58
>>263
引数は全部文字列でOK?

266 :仕様書無しさん:2006/04/23(日) 22:52:27
バリアントだろ

267 :仕様書無しさん:2006/04/23(日) 23:12:23
>>264
そこまで言うならどこがダメか言え。
まさか課番号をint型にしても問題ないと思ってるバカか?

268 :仕様書無しさん:2006/04/23(日) 23:40:09
あくまで課の名称でしかないんだから
俺ならフルで「第1営業課」と文字列にするな
コードが必要ならコードふるし。
もし数値として扱いたいなら課の属性として持たせるくらいかな?

269 :仕様書無しさん:2006/04/23(日) 23:41:12
なるほど

268はモテルタイプだと思う

270 :仕様書無しさん:2006/04/23(日) 23:49:31
>>267
264ではないが……
251に向けた台詞がおかしすぎ。
課名は文字列で持つべきという認識は251も含めた共通の認識だろ。
数値で持っていいという意見は253以外にはない。
253にしても、試みに聞いてみてるだけだろう。

271 :仕様書無しさん:2006/04/23(日) 23:51:23
主キーを文字列でもつって話か?
ここは素人の集団か。

272 :仕様書無しさん:2006/04/24(月) 00:01:20
ほんとに主キーとして使うだけなら、無駄に文字列にするのは好かんな……。
シーケンスで作った値をいちいち型変換したくないし。

ほかのシステムとか事務処理とかでも識別子として使われるなら、
もう文字列にするしか無いかなぁ。
いやでも、その場合でも主キーは主キーだけで一つのフィールドにしたい経験も……。

273 :仕様書無しさん:2006/04/24(月) 00:01:26
スレの名前が変更になりましたw


【ソフトハウス】この社員辞めさせようと思ったソースコード#1【経営者】

274 :仕様書無しさん:2006/04/24(月) 01:15:39
ORACLEで主キーがCHAR(10)とかなってるのっていくらでもあるぞ。

275 :仕様書無しさん:2006/04/24(月) 07:54:10
課の名称なんか、キーにすんなよ。
変更とかあったらどうすんだ。

276 :仕様書無しさん:2006/04/24(月) 10:07:37
前の方でリファクタリングの話が出てたけど、変数名があまりにも馬鹿or
一文字変数なのを直すのはリファクタリングに含まれないのかなあ?

277 :仕様書無しさん:2006/04/24(月) 14:17:57
1文字変数を馬鹿にするな!
いや、それがpublicとかなら別だけどね…

278 :仕様書無しさん:2006/04/24(月) 17:29:53
>>276
リファクタリング本見返してみたけど、一時変数名の変更は項目として挙がってないのな。
間違いなくリファクタリングの一種ではあるんだろうけど。

279 :仕様書無しさん:2006/04/24(月) 22:46:25
変数名は三文字以上の意味のある文字列

280 :仕様書無しさん:2006/04/24(月) 23:03:05
String abc = "あべし";

281 :仕様書無しさん:2006/04/24(月) 23:11:56
いきなりかよwwwwwwwww

282 :仕様書無しさん:2006/04/25(火) 01:31:35
>278
あの界隈の方々は一時変数自体滅多なことで使うモンじゃないって意見じゃなかったっけ。

283 :仕様書無しさん:2006/04/25(火) 23:30:10
一文字変数の話しなのか一時変数の話しなのか・・・

284 :仕様書無しさん:2006/04/26(水) 00:52:22
>>283
(;´Д`)ゴメン、さらに見返したら名称変更はメソッド名しか挙げられてなかった。
一時変数どころか引数もフィールドもクラスも。

本文であんまり当たり前のように修正してるからあるものと……。

285 :仕様書無しさん:2006/05/03(水) 15:51:36
if ( !!notSuccessful ) {
   :
}

もう恋なんてしないなんて言わないよ絶対〜♪

286 :仕様書無しさん:2006/05/03(水) 21:39:06
not成功のNOTのNOT・・・ヽ(`Д´)ノ

287 :仕様書無しさん:2006/05/03(水) 21:46:56
>>256
DBの故障をプログラム側でどうカバーしろと?

>>データベースサーバーが落ちたくらいで業務が止まったらすごい損失が出るし。
それはそうだけど
DBが落ちないようにRAID構成やバックアップ、ログファイルを使用するわけで
あくまでDBが正常に動いていることが前提でシステムを組んでいるわけで・・・

なんか、どっかのスレの営業SEに○○とかにありそうなねただな。

>>274
主キーがchar型なんて「ねた」だろ。設計の段階でOKが出るはずがない。
仮に主キーが文字型でも '1101' '1102' '1103' とか入れて暗黙変換とかばりばりかかってるのか?
表結合はどうするよ。参照先もchar型で統一か?

そんな「まぬけ」なものあるわけがない。


printf("第%d営業課", sectionNo);
とかもありえない。
第1営業課、第2営業課、第3営業課・・・
もDBで処理するべき。
でないとプログラムを変更した場合などのバグの発生原因になる。

288 :仕様書無しさん:2006/05/03(水) 22:03:31
>>287禿同

289 :仕様書無しさん:2006/05/03(水) 22:28:12
だから、壮大なつりだったんだよな。

それとも、それこそスレタイどおりのコードの書き方教室か?

290 :仕様書無しさん:2006/05/04(木) 09:25:06
>>287
>主キーがchar型なんて「ねた」だろ。
…阿呆?

291 :仕様書無しさん:2006/05/04(木) 10:29:23
DBからの自動割当数字以外のなんちゃらコードは文字列。これ常識。
そのコードの桁に意味がある。
例えば4418。最初の4は地方コード、次の4は部署コード、最後の2桁で課コード
って感じでそもそも仕様固めの段階で既に決められている。
これを数値にしたら0018なんてのは18に勝手に丸められるし不便極まりない。
たとえば最初の地方コードだけでSELECTするのに、元がintとかなら
わざわざプログラムの方で文字列に変換しなければならない(数値のままで
やろうとすればさらに無駄に複雑)。
てか上の桁が0のものはどうやって保存するつもりなんだ?
そもそも数値として扱う必要は絶対ないんだから(4418+2とかやらんだろ?)、
文字列に変換する手間をかける必要性はどこにある?
数値に見えるだろうがなんちゃらコードは数値ではないんだよ。
あれは文字列。

小規模開発しかやったことないのか?

292 :仕様書無しさん:2006/05/04(木) 10:32:10
>表結合はどうするよ。参照先もchar型で統一か?
当たり前だろ。

293 :葉猫 ◆Jz.SaKuRaM :2006/05/04(木) 11:43:24
うちの会社のDBは主キーが文字列で、しかも処理の高速化という名目でtableの
項目が重複ちていまつが何か?

294 :仕様書無しさん:2006/05/04(木) 11:47:27
何も。
氏ね。

295 :仕様書無しさん:2006/05/04(木) 12:32:51
うちも日付はばあきゃらつー型ですよ

296 :仕様書無しさん:2006/05/04(木) 13:16:14
>>295
さすがにそれはありえないw

と思ったが、固定長の電文を扱うゲートウエイなんかだと
電文を切り取ってDBにつっこむだけで済ませたい
という理由から日付っていうか全ての項目をCHARにして
あとは取り出す側の業務アプリでよろしく
みたいな設計になってることが多い。

297 :仕様書無しさん:2006/05/04(木) 13:23:00
主キーがCHAR(10)なんてアホだなと俺も思うけど、現実にそういうのはいくらでも存在する。
入ってるのは数値なんだけどね。コボラ上がりが設計したのかな。

298 :仕様書無しさん:2006/05/04(木) 13:23:43
前も書いたけど、主キーとchar(1)の列だけの性別テーブルがほんとに必要なのかと。
男、女しか入らないじゃないか。♂だの♀だの業務システムで使うのか?
0/1 もしくは true/false にして、プログラム内で固定値で扱えばいいだろ?
どうせプログラム内でもchar配列使って組んでるんだから、文字長変われば配列周りの調整も必要になるし。

299 :仕様書無しさん:2006/05/04(木) 13:49:12
文字列の主キーは駄目って主張する人が多いのはなぜ?

300 :仕様書無しさん:2006/05/04(木) 14:06:04
1バイトあれば
男、女、オカマ、オナベ、男→女性転換済み、女→男性転換済み・・・・・・
などなど表現できるぞ!

301 :仕様書無しさん:2006/05/04(木) 14:32:32
>>299
インクリメントの数値じゃなきゃだめなキチガイの住む村だから

302 :仕様書無しさん:2006/05/04(木) 14:39:18
「第一営業課」とかが主キーなってるのか?
死んだほうがいいよ。


303 :仕様書無しさん:2006/05/04(木) 14:48:42
バイナリから文字列へのマッピング処理が必要だし、レコードサイズが大きくなって
1ページ辺りのレコード数が減るから。

304 :仕様書無しさん:2006/05/04(木) 15:05:15
そうなのか…
うちのDBはCHAR以外の項目がほとんどないんで
DBだとintとか使わないんだと思ってたよ…
金額とかレートとかお金関連だけ数値型だったな


305 :仕様書無しさん:2006/05/04(木) 15:10:04
>>302
その例は確かに間抜けだ。
だが、例えば製品コード "TJM-630010F/J" を primary key に設定するとき
お前はそれをいちいち数値にマッピングするのか?

306 :仕様書無しさん:2006/05/04(木) 15:10:26
文字列だと比較するのもその桁数分必要でしょ。数値ならそこも軽い。

307 :仕様書無しさん:2006/05/04(木) 15:11:58
業務系コボラは2進数を知らないから。2^32までの数値なら4バイトの比較ですむことすら知らないんだよ。

308 :仕様書無しさん:2006/05/04(木) 15:21:56
ProductID NUMBER(4, 0),
ProductName VARCHAR(16)

309 :仕様書無しさん:2006/05/04(木) 15:22:44
文字列で主キーをインデックスにした場合、大分類ー中分類ー小分類分けられるのか?

310 :仕様書無しさん:2006/05/04(木) 15:24:16
こんなんばっかだからいつまでもDBがボトルネックなんだよな。

311 :仕様書無しさん:2006/05/04(木) 15:50:31
但し、入れるのは数値でも、フィールドの属性は計算しないなら文字の方がいいと思うけどな、特に日時の場合。
そのほうがDBMSのいろんな編集機能が使える場合が多い。

312 :仕様書無しさん:2006/05/04(木) 17:14:57
>>309
大分類ー中分類ー小分類が主キーに埋め込まなければならない情報なのか?

313 :仕様書無しさん:2006/05/04(木) 17:40:17
>>298
そんな単純なものはマスターテーブルにも作らない。
プログラムで処理するかDBのデザインのメモ欄にでも書いておく。

314 :仕様書無しさん:2006/05/04(木) 17:44:00
数値でやるってヤシはこれにも対策を答えてね。
>これを数値にしたら0018なんてのは18に勝手に丸められるし

315 :仕様書無しさん:2006/05/04(木) 17:48:50
そのシステムでは
18
018
0018
00018
が混合し、全て違う値として処理されるって事?
4桁固定ならプログラム側でゼロ足せばいいんじゃね?

316 :仕様書無しさん:2006/05/04(木) 17:48:56
>>314
おまえ、根本からダメだな。

317 :仕様書無しさん:2006/05/04(木) 17:56:42
テーブルのカラムにはなるべく○○idというのを格納するようにすればいいんじゃね?

318 :仕様書無しさん:2006/05/04(木) 18:32:54
今やってる案件もchar型8文字だなあ。
ずっと前にやってたのは、普通にDateTime型とかだったけど。

319 :318:2006/05/04(木) 18:33:57
>>295-296あたりの、DB上での日付のもち方の話な。

320 :仕様書無しさん:2006/05/04(木) 18:43:55
日付をCHAR(8)で持つことについては
「どうせ表示するときには文字列にするんだから」
と言われたことがある。……まぁ西暦10000年なんて来るかどうかも分からんし気にしたら負けなのかも?

# それならCHAR(10)にして区切りの"/"も入れとけばいいと思うんだがなぁ……
# どうせ国際化なんて英語くらいしか考えてないんだろうし、1レコード頭2バイトの冗長性なんてなんぼのもんかと

321 :仕様書無しさん:2006/05/04(木) 18:55:09
あのー日付を文字列で持ったら、今日から過去一か月分ってWhere句にどうかくんすか?

322 :仕様書無しさん:2006/05/04(木) 18:56:17
315みたいな奴がいるから意味わかんねプログラムが氾濫してるんだろうね。


323 :仕様書無しさん:2006/05/04(木) 18:58:48
4桁にしないと、ソートする時に18が159より後ろにいくだろうが!!!

324 :仕様書無しさん:2006/05/04(木) 19:00:47
DB関連はコボラが混じってるから寒い話が多いよな。
MS-SQLのTINYINTとかSAMLLINTとかINTってフィールドの型が存在する理由なんて100年経っても
わからないんだろうな。

325 :仕様書無しさん:2006/05/04(木) 19:06:41
ソースコードじゃないけど、
今、古い汎用機のシステムをPCサーバでリプレースする案件をやってる。

ここ3ヶ月ぐらい、会社の貸し倉庫で古文書の発掘と解読を行い、
解読に行き詰まったら隠居した長老に古い言伝えを伺いに行き、
今にもデッキに絡まりそうな遺品から貴重なデータを復元し、
徐々に明らかになる政治と欲望と苦悩が複雑に絡み合う壮大な歴史スペクタル。

何か間違った方向に進んでる気がしてならない。

326 :仕様書無しさん:2006/05/04(木) 19:08:51
映画化決定

327 :仕様書無しさん:2006/05/04(木) 19:21:07
>>321
数値も日付も計算する必要があるならそれぞれその型にしとくのが良いと思うよ。
そうでないなら、文字列型の方がDBMSが提供する関数群が充実している場合が多いというだけで。


328 :仕様書無しさん:2006/05/04(木) 19:30:42
つTO_CHAR

329 :仕様書無しさん:2006/05/04(木) 19:58:58
>>316
ほぅ、なんで?
数値にしてしまうと0018は18になってしまうだろが。

330 :仕様書無しさん:2006/05/04(木) 20:02:13
日付に関しては用途による。
関数あるからそれ使う。
なんちゃらコードと違って日付は結構いじる。


331 :仕様書無しさん:2006/05/04(木) 20:16:44
hhmiss って秒まで登録されてるって話だったのに、誰だよ hhmi で登録したやつは
そんなことがあるから文字列で登録するのは・・・

332 :仕様書無しさん:2006/05/04(木) 20:54:29
>>306-307
ハッシュとかインデックスとかって知ってる?

>>309
正規化くらいしろ無能。

333 :仕様書無しさん:2006/05/04(木) 20:56:28
けどまあ、中抜き検索だけはSQLでできないから注意しないとな
例えば20060503で各年の5月分だけSQLクエリーで抜き出そうたってそうはいかない
2006-05-03と大中小分類分けないと

334 :仕様書無しさん:2006/05/04(木) 20:57:24
インデックスが指すのはページまで。

335 :仕様書無しさん:2006/05/04(木) 21:12:36
>>333
20060503 の形式でも substr とか mid で月の部分を切り出せばよくね?

まあ、漏れは普通に日付型をつかってる。
もし日付型が使えなければ YYYYMMDDhhmmss を数値で入れて、
しかも入力の時に必ずフィルター関数を通してフォーマットチェックしてる。

336 :仕様書無しさん:2006/05/04(木) 21:15:32
>>333
likeつかえばいいんじゃないの?

337 :仕様書無しさん:2006/05/04(木) 21:19:52
http://pc8.2ch.net/db/

338 :仕様書無しさん:2006/05/04(木) 21:44:44
日付を格納するはずのフィールドに"9999/99/99 ab:cd:ef"みたいな文字列が入ってしまっても
平然と処理が進むようでは困るだろう…?
"0018"とか"18"とかじゃなくて18で同一視されるからいいんじゃないか!
DBの側で入力制限できるものはできる限り制限しといた方がいいの!

型とか単位とかの概念が理解できてない人達は本当に困るなあ。
データ自体と入出力の形式とは切り離せ、と言っても意味が通じないんだろうなあ。


339 :仕様書無しさん:2006/05/04(木) 21:59:20
>>329
数字しか入らないのに、0018、__18、18__を区別して運用しなければ
ならない状況になってるシステムの保守とかやりたくねーな。

340 :仕様書無しさん:2006/05/04(木) 22:06:09
この場合は018と0018と18の区別じゃね?
どっちにしろ糞いけど

341 :仕様書無しさん:2006/05/04(木) 22:08:46
なにここDBスレですか?orz

342 :仕様書無しさん:2006/05/04(木) 22:32:44
not null制約可能な限りつけておけば・・orz

343 :仕様書無しさん:2006/05/04(木) 22:33:34
その後担当が替わって
データ移行が失敗するからという理由で制約を解除

344 :仕様書無しさん:2006/05/04(木) 22:59:22
全角数字が混入して誤発注の巻き。
IDの桁あふれで受注システムが大混乱の巻き。

10進数18桁の数字で可変長文字列型。
下2桁が〜id、その次の2桁が〜id、その次がフラグで・・・・
だれだよこんな設計にしたやつはorz

345 :仕様書無しさん:2006/05/04(木) 22:59:57
ワロタ

346 :仕様書無しさん:2006/05/04(木) 23:01:32
06-12-01
06-12-01
06-12-01
06-12-01
06-12-02
06-12-02
06-12-03
06-12-04
06-12-04
18-12-5



347 :仕様書無しさん:2006/05/04(木) 23:20:17
DB内部では日付型で持ってるんだが、年の入力を下二桁だけにしてる古いシステムがあって……
データ見ると2003年とか2004年に混じって2015年とか2016年が……ユーザーが和暦とごっちゃにしてやがるorz
そのデータを移行するのが仕事だったんだが多分2015年くらいまでは使うはずのシステムだったんで
期日より未来の日付は適当に古い日付に矯正してやった
(お客さんもそれでいいよゆーてはったしw)

348 :仕様書無しさん:2006/05/04(木) 23:23:38
>>347
内部は4桁だろうけど入力は二桁のところは多いんじゃないの?

349 :仕様書無しさん:2006/05/04(木) 23:54:30
>>344
ファイル用のデータフォーマットをそのままDBに移したんだね・・・

350 :仕様書無しさん:2006/05/05(金) 00:11:05
>"0018"とか"18"とかじゃなくて18で同一視されるからいいんじゃないか!
>DBの側で入力制限できるものはできる限り制限しといた方がいいの!
おまえの言ってる意味わかんない。同一視なんかしちゃダメでしょ。
コードなんだからもし18ってしか書いてなかったら
地方コード(頭2桁とする)は00ってソース側で判断させるのを
書かなきゃならない。01や02・・・・って全部で4桁になるように調整しなきゃならない。
そんなめんどくさいこと数値で格納してまでする必要性は?
単にDB重くなるとかそういう理由なら仕方ないとしての最後の手段だよ。
前にも書いた人いるけど、コードなんか計算には使わないが
ソートには使うだろ。だったら固定の文字列でいた方がずっといい。
おまえらソートはしないのか?
なんでオイラこんな初歩的な事までこのスレで説明しなきゃならないんだ?
>>339>>340も。

351 :仕様書無しさん:2006/05/05(金) 00:14:41
>日付を格納するはずのフィールドに"9999/99/99 ab:cd:ef"みたいな文字列が入ってしまっても
>平然と処理が進むようでは困るだろう…?
なんでおまえの頭には入力チェックって概念がないんだ?

352 :仕様書無しさん:2006/05/05(金) 00:18:53
>350
お前が初歩的なDB特性を理解できてないようだが

353 :仕様書無しさん:2006/05/05(金) 00:22:13
>>344の人なんだけど、うちも西暦2桁、24時で入力するところがあって、
±3年や営業時間の±3時間の値を入れると、
「ちょwwww12年後のAM3時にマジで受注はいるの?ちょっと未来すぎね?」
みたいな確認ダイアログ出して、さらに確認画面で、

2018年5月5日(土)3時23分 (平成30年5月5日(土) AM3時23分)
備考:こどもの日(祝日)

ここまで表示してるけどOK押しちゃう人いるからな・・・

入力ミスは必ず発生するってことを考えてインターフェイス作らないとダメぽ。

354 :仕様書無しさん:2006/05/05(金) 00:27:05
>>353
エラーメッセージが出すぎで、読まずにOK押すのが習慣になってるとかってことはない?

355 :仕様書無しさん:2006/05/05(金) 00:33:52
確認ダイアログ→確認画面ってとっても無駄っぽいな
OKボタン隠れるくらいのラベルでもつけときゃいいんじゃね?

356 :仕様書無しさん:2006/05/05(金) 00:34:20
あるな、それ。
メッセージボックス出しすぎるとダメぽ。

357 :仕様書無しさん:2006/05/05(金) 00:38:05
350が上級者なのかよ

泣けるぜ

358 :仕様書無しさん:2006/05/05(金) 00:39:35
>>350
そういうときは頭2桁の地方コードと下2桁のカラムを分けて、
数値以外が入力されないなら数値型にするべき。
ソートも SQL なら order by code_a, code_b で意図した順序で並ぶ。
しかも>>344みたいに地方コードが99を越えたときも対応できる。

359 :仕様書無しさん:2006/05/05(金) 00:49:14
>>357
>>352 みたいなのよりも少しはマシっぽい。

360 :仕様書無しさん:2006/05/05(金) 00:56:19
>>359
くだらん自演する暇あったら
もう少しまともなDBの使い方覚えなよ

361 :仕様書無しさん:2006/05/05(金) 01:21:23
そもそも正規化するのはページ辺りのレコード数を増やすため。
だから一レコードのサイズを押さえるためにバイナリの数値を識別子として連結させる。
当然、プライマリキーになる。
文字列で持つ必要があるなんとかコードがあるなら、別にユニークなIDを持たせてそれをプライマリキーにすべき。
なんとかコードはあくまでも人間用ということで、名称とみなすわけだ。

362 :仕様書無しさん:2006/05/05(金) 01:22:26
>>354-356
入力ミスは警告のダイアログが出て確認ページに進まない。
入力は本決定の前に入力内容の確認ページを挟むってのが基本仕様。
一部だけイレギュラー対応に値の閾値を越えてると確認ダイアログが出て、
OKを押すと入力内容の確認ページに進む。

やっぱりなれてくるとダイアログは読まずにOK押しちゃうから、
「閾値を超える値を許可する」みたいなチェックボックス作った方がよさそうだよね。

それよりも関連部署で1年近く仕様調整しまくったはずなのに、
システム稼動後に続々とイレギュラー対応が発覚するのって変だよねorz

363 :359:2006/05/05(金) 01:58:56
>>360
自演と判断するに至った相応の理由を聞かせて貰おうか。

>>361
>そもそも正規化するのはページ辺りのレコード数を増やすため。
何そのトンデモ理論。つか、そもそもページって、何のDBMSの話してるんだ?
>別にユニークなIDを持たせてそれをプライマリキーにすべき。
うわ…出たよおい。

364 :仕様書無しさん:2006/05/05(金) 02:52:33
そろそろこいつら隔離してくれん?

365 :仕様書無しさん:2006/05/05(金) 03:19:00
何のためにデータベース板の誘導リンク >>337 を
つけたと思ってるんだ。

DB板雑談スレ
http://pc8.2ch.net/test/read.cgi/db/1056975852/

頼むから正規化しろよ 第二正規形
http://pc8.2ch.net/test/read.cgi/db/1116097001/

そっち行ってやれ

366 :仕様書無しさん:2006/05/05(金) 03:27:53
第二正規形って・・・伸びれば第百正規形とかにもなるのか?
1年で200レス未満の現状じゃ考えるだけ無駄か・・・

367 :仕様書無しさん:2006/05/05(金) 03:35:51
流れは変わるが、もう結構前に納品した書籍検索システムで
検索結果が変と報告が来て調べたらこんなの発見した。

static chare[] ISBN_10_to_13(static chare[] strISBN) {
 /* 2007/1/1までにXXXXX君が書くと思います */
 return NULL;
}

XXXXXは漏れの名前。前任者は退社済み。
ちょwwwwwww何も聞いてないってwwwwwwww

368 :仕様書無しさん:2006/05/05(金) 03:40:10
ワロチ

369 :仕様書無しさん:2006/05/05(金) 03:56:54
まだ6ヶ月以上あるじゃないか
それまでにお前も辞めるんだ
もちろん、XXXXXのところを書き換えてね☆ミ

370 :仕様書無しさん:2006/05/05(金) 04:57:40
>>367
何の言語かわからないけど、C互換だったら
返却用のバッファを内部に持たないといけないのかな

うちだと、マルチスレッド非対応って言われて怒られそうだ
そもそも、下位ライブラリが非対応なのに・・・

371 :仕様書無しさん:2006/05/05(金) 07:26:02
っていうか、この話長すぎ。

「第一営業部」
「第二営業部」

これを、文字列でキーにするってのが、釣り。

これでFAでしょ?

372 :仕様書無しさん:2006/05/05(金) 07:26:56
あ、もしかして、もっと「高級言語」で「連想配列」?

しらんしらん。

373 :仕様書無しさん:2006/05/05(金) 09:55:19
>>363
OracleもMSSQLもI/Oはページ単位だよ。Oracleは8KB単位だっけ。
おっさんの知ってるISAMは行単位なんだろうな。

http://biz.rivus.jp/word_multi_blocksize.html

374 :仕様書無しさん:2006/05/05(金) 10:42:50
>>356
なんでそんなに頭かたいの?
おまえの頭は入力チェック=ダイアログボックスなのか?はぁ?
チェックでひっかかったから必ずしもダイアログボックス出す必要ないだろ。
メッセージ出して次のページに飛ばないようにすればいいだけで。
それともおまえはメッセージ=ダイアログボックスしか考え付かないのか?


>>358
>ソートも SQL なら order by code_a, code_b で意図した順序で並ぶ。
INT型なら数値の小さい順で並ぶだろ。それは文字列主張派の意図した順番じゃないじゃないか。
何が意図した順序で並ぶだ。初心者が。


375 :仕様書無しさん:2006/05/05(金) 10:44:09
>>374
なんでそんなにガチ頭なんだ?
スレ違い。いい加減に汁。


376 :仕様書無しさん:2006/05/05(金) 11:18:41
>INT型なら数値の小さい順で並ぶだろ。それは文字列主張派の意図した順番じゃないじゃないか。

ハァ?
どんな場合だ?例をあげてみ

377 :仕様書無しさん:2006/05/05(金) 12:37:20
マジレスすると
こういう会話が社内で繰り広げられていたら
やっぱり会社辞めようと思うわけだよな。

378 :仕様書無しさん:2006/05/05(金) 12:44:44
>>371
釣りじゃないよ。
インクリメント数値信者のボケナスが本気でこの論争に勝てる超名案と思って書いたことだよ。

379 :仕様書無しさん:2006/05/05(金) 13:01:09
日本語で書いてくれ

380 :仕様書無しさん:2006/05/05(金) 13:12:01
>>379
aho

381 :仕様書無しさん:2006/05/05(金) 13:52:42
おまいら、dBXL以来、DB歴15年の俺がアドバイスしてやる。
結論からいえば、計算機が人間にあわせるべきだ。それが高級というものだ。
よって、全てのデータは文字列であるべき。
また、高速にランダムアクセスできるように固定長であること。
これは絶対条件だ。
結論は、全てのフィールドをCHARにして連結などという分かりにくいものを使うなということだ。

382 :仕様書無しさん:2006/05/05(金) 14:29:46
>>381
二行目だけ同意。

それ以下はどこが高級なんだ?

383 :仕様書無しさん:2006/05/05(金) 14:49:56
『計算機』っていう表現が
>DB歴15年
ってのを裏付けてるよな
でもコボラってのも露呈してるけど。

384 :仕様書無しさん:2006/05/05(金) 15:11:59
まあ、企業システムの世界はPCヲタクには理解できないだろう。

385 :仕様書無しさん:2006/05/05(金) 15:27:55
いえいえ先輩!COBOLだってまだまだ現役ッスよ!
先輩のシステムはIBM?日立?ユニシス!?!?!?!?!?!?!?!?

386 :仕様書無しさん:2006/05/05(金) 15:37:32
コロボックル 略して コボル

387 :仕様書無しさん:2006/05/05(金) 15:48:07
キモヲタ氏ね

388 :仕様書無しさん:2006/05/05(金) 15:55:27
計算機かぁ・・・

389 :仕様書無しさん:2006/05/05(金) 16:50:27
>>381
3行目だけ同意。
したいと思ったが、数字に全角混ざる時代なんだよな。

390 :仕様書無しさん:2006/05/05(金) 17:12:26
「計算機プログラムの解釈と実行」を読んでから、
"計算機" という言葉にコンプレックスが無くなったな。

ってか、今まで "計算機" という言葉を嫌がる奴の中で、
出来る奴を1人も見かけたことが無いのだが。


391 :仕様書無しさん:2006/05/05(金) 17:27:02
>>390
計算キと聞くと
ttp://www.eonet.ne.jp/~crescent-service/calcurator.htm
この手のハードウェアを連想してしまうよ

392 :仕様書無しさん:2006/05/05(金) 17:43:09
>>391
>この手のハードウェアを連想してしまうよ

それはそれでいいんじゃねーの?

でもさ、プログラマが誇るべきは
自分の生み出した「コード」であって、
それが動作する実行環境が rich だろうが poor だろうが、
基本的にどうでも良くね?

俺はむしろ、「計算機」という言葉を嫌がる奴と、
「メインフレーム」に拘って、
パソコンをオモチャ扱いする COBOLer に
共通した心性を感じ取るね。


393 :仕様書無しさん:2006/05/05(金) 17:53:11
電子計算機なら全く問題ないんじゃね?
計算機といったら、俺はそろばん連想するよ

394 :仕様書無しさん:2006/05/05(金) 17:58:32
キモヲタさん的には電脳でつか?

395 :仕様書無しさん:2006/05/05(金) 18:04:11
いや、やっぱり "サイバー" でしょ。


396 :仕様書無しさん:2006/05/05(金) 18:57:12
INT厨が何言おうがまともな企業のコードは固定長のCHAR。
特に組織が大きくなればなるほど。
銀行、信金、公共団体、いろいろやったがINTで定義してあるのなんて見たことない。


397 :仕様書無しさん:2006/05/05(金) 19:06:56
まともな企業だからと言ってシステムがまともであるとは限らない訳だが。


398 :仕様書無しさん:2006/05/05(金) 19:36:09
コードがcharでもいいけど、名称を主キーにしてるとか言ってたじゃん。

399 :仕様書無しさん:2006/05/05(金) 19:43:30
そもそも主キーの意味がわかってないだろ。コボラは

400 :仕様書無しさん:2006/05/05(金) 20:02:47
Oracleの初期データベースに入っているテーブルEMPの主キーEMPNOに付いていて、NUMBER(4)です。

401 :仕様書無しさん:2006/05/05(金) 20:07:51
確か金融機関の振込先を一意に識別するためのキーに「支店名」が必要だったはず

402 :仕様書無しさん:2006/05/05(金) 20:27:50
んな訳ねーだろ('A`)
支店コードだって。

403 :仕様書無しさん:2006/05/05(金) 20:45:36
支店コードは頭の0省略可能だよね。
っていうか0詰めで入力して進むと勝手にはぶかれる。
ボラクルならINT型で扱ってそう。


404 :仕様書無しさん:2006/05/05(金) 21:47:59
んなわけねー

405 :仕様書無しさん:2006/05/05(金) 21:50:56
GWの愚痴が書いてあるのかと思いきや、何この流れ

406 :仕様書無しさん:2006/05/05(金) 21:56:54
>403
んな訳ねーだろ('A`)

407 :仕様書無しさん:2006/05/05(金) 21:58:58
>405
コードに限定されないぐち一般ならぐちスレだろ。
……あれ、ぐちスレ5/2で止まってるな……ありえん

408 :仕様書無しさん:2006/05/05(金) 23:07:56
>>396
>固定長の
幾らなんでもそれは阿呆というもの。
>銀行、信金、公共団体、いろいろやったが
どこがまともだ。

409 :338:2006/05/05(金) 23:30:46
>>365 すまんすまん。
というわけで>>351氏は下記のあたりを読んでくれ。

【恐怖】主キーがないテーブルみたことありますか?
http://pc8.2ch.net/test/read.cgi/db/1069324950/252-258

410 :仕様書無しさん:2006/05/06(土) 00:42:05
DBがボトルネックになる案件がなぜ多いかよくわかるなー。
ISAMの概念をRDBMSに持ち込むコボラ氏ね。
ID列はNUMBERにしろ。


411 :仕様書無しさん:2006/05/06(土) 02:35:06
サロゲートキーの採用は賛成するが、
NUMBER型というのは異論ある。

GUIDとか、UUIDとか、とにかく完全ユニークな値を用いるべき。
NUMBER型では、いつか終わりが来る。
そして、その終わりは、たいてい最も着てほしくない時に訪れる。

412 :仕様書無しさん:2006/05/06(土) 03:11:26
ソースは読めてもスレタイは読めねーのかおめーらは。

413 :仕様書無しさん:2006/05/06(土) 04:12:34
>>390
『計算機プログラムの構造と解釈』?

414 :仕様書無しさん:2006/05/06(土) 09:24:41
>>>413
ちっ、気づかれたか。。。

でも、google で検索かけるとヒットしてしまう不思議。


415 :仕様書無しさん:2006/05/06(土) 10:32:43
だってコードってのは結局支店名に隠しフラグを含ませてるようなものだもの。
支店名そのものはフラグないからコードを使う。
そのコードがNUMBER型である必要性は?
DBが重くなるとかそういう理由は
「うちのシステムはそんなにやわじゃないから心配しなくてもいい」と一蹴される。

416 :仕様書無しさん:2006/05/06(土) 11:37:08
システムのかなりコアな部分のCプログラムの話。
0か1しか値をとらないデータ列をint型配列で実装していやがった。

417 :仕様書無しさん:2006/05/06(土) 11:49:36
それでいいじゃん


418 :仕様書無しさん:2006/05/06(土) 11:52:42
書き換えが頻繁だったりデータ量が多かったりしたら、それって嫌だな -> 416

419 :仕様書無しさん:2006/05/06(土) 11:52:58
>416
それぐらいいいんじゃね?

その配列の要素数が 10000 を超えていたりするようならば、
さすがに考えるけどな。


420 :416:2006/05/06(土) 11:55:50
要素数は2000^2。

421 :仕様書無しさん:2006/05/06(土) 11:57:52
bool配列とかにすればいいの?

422 :416:2006/05/06(土) 12:13:43
ビット演算、もしくは、値が1の要素の添字の保持が定石だと思う。

423 :仕様書無しさん:2006/05/06(土) 12:22:00
ビット演算ってint配列以外でできるの?

424 :仕様書無しさん:2006/05/06(土) 12:43:21
>>422
値が1の要素の添字の保持って値1が多いと効率悪くない?
並べ替えもしないといかんだろうし。

425 :仕様書無しさん:2006/05/06(土) 12:43:31
std::vector<bool>

426 :仕様書無しさん:2006/05/06(土) 13:00:34
システムプログラミングとかだとそこまでのチューニングが必要になるのだなぁ……。
必要なフラグの数がXだとすると、メモリ確保はchar flags[(X - 1) / 8 + 1]でいい……のか?
直接bit flags[X];とか書きたいもんだ。

427 :仕様書無しさん:2006/05/06(土) 13:03:41
>>416
やれやれとは思うが、辞めようとまでは思わんな。

428 :仕様書無しさん:2006/05/06(土) 13:10:42
オブ厨としては、データがビット配列でも直感的に操作できるようなメソッドが用意されてりゃいいや
何のフラグを操作してるのか一々仕様書とか見るのはめどいし

429 :仕様書無しさん:2006/05/06(土) 13:16:58
>>428
オブジェクト指向でなくても、マクロとか関数とかよういするだろ。ふつー。

430 :仕様書無しさん:2006/05/06(土) 13:47:06
普通なら

431 :仕様書無しさん:2006/05/06(土) 15:45:20
>>426
拡張STLにbitって型なかったっけ?

432 :仕様書無しさん:2006/05/06(土) 18:09:40
>>431
bitsetてテンプレートクラスがあるね。
vectorにもboolの特殊化版があるっぽいし。
ただ、どっちもC++の話だわな。

433 :仕様書無しさん:2006/05/07(日) 05:51:55
boolって内部でビット演算してるの?

434 :仕様書無しさん:2006/05/07(日) 09:21:28
CHARを主キーっておかしいよな。

435 :仕様書無しさん:2006/05/07(日) 10:40:46
>434
おかしいなら、なぜ制限されていないのか考えてみれ。

436 :仕様書無しさん:2006/05/07(日) 14:04:35
>>433
boolはintにダウンキャストされる。
って仕様で定められてた気がする。

437 :仕様書無しさん:2006/05/07(日) 16:15:54
NUNBERか何かで別途候補キー持って、支店コードやらなんやらがくっついたコードはそれぞれカラムを分割するのが筋なんじゃないの?
人間が分かりやすいよう設計したコードをDBの世界に持ち込む意味がわからないんだが。
なんて、DB設計などしたことないヘタレプログラマな俺がいってみた。

438 :仕様書無しさん:2006/05/07(日) 16:27:01
“DB設計などしたことないヘタレプログラマ”とやらが口を挿む意味がわからないんだが。

439 :仕様書無しさん:2006/05/07(日) 16:52:20
“DB設計などしたことないヘタレプログラマ”が推測で答えてみる。
「合わせることで一意になる」コードなら、分割すべきじゃないケースもあるのでは?

440 :仕様書無しさん:2006/05/07(日) 17:23:31
>>439
代替キーとか複合キーとかって知ってる?

地域(2桁)支店(3桁)部署(2桁)
固定長のコードがあって、それが上のような構造だとすると、
DBのテーブル上は意味ごとにカラムを分割すべき。
固定長レコードのファイルで送られてくるデータから一つずつ
切り出すのマンドクセとか言う理由で結合してるならその設計者の無能っぷりが伺える。

検索のSQL書くたびにsubstrとか使ってられねorz

441 :仕様書無しさん:2006/05/07(日) 19:06:51
>>440
持つべきときは持つし持たなくてもいいときは持たないよ。
主流の表なんかは両方持ってたりするし。
固有ID(地域コード+支店コード+部署コード)、地域コード、支店コード、部署コード

442 :仕様書無しさん:2006/05/07(日) 19:37:50
>boolはintにダウンキャスト

ごく一般的な形のキャストはそう呼ばないんちゃう?


443 :仕様書無しさん:2006/05/07(日) 19:57:07
>>436
ダウンキャストじゃなくて integral promotion だな。
ちなみに日本語では「汎整数拡張」とかなるらしい。

しかも >>433 とは関係ない。

444 :仕様書無しさん:2006/05/07(日) 20:15:54
>形

型ぢゃね?

445 :仕様書無しさん:2006/05/07(日) 20:28:23
>>444
「ごく一般的な型のキャスト」って、意味わかんねーよ。
まぁ元々キャストでもないから「ごく一般的なかたちのキャスト」でも的外れなわけだが。

446 :仕様書無しさん:2006/05/07(日) 20:35:04
ダウンキャスト、って基本クラスから派生クラスの型に変換する場合だろって話では?

心のかたち 人のかたち

447 :仕様書無しさん:2006/05/08(月) 06:56:17
うねうねうねうね

448 :仕様書無しさん:2006/05/08(月) 07:54:28
>441
整合性を保つ仕組みは必要だが、よくあることではある。

あとで固有コードと、ばらしたコードがずれたり、重複して泣くけどな。

449 :仕様書無しさん:2006/05/09(火) 22:07:43
WHERE句で比較するフィールドがNUMBERの場合とCHARの場合で速度差ってあるの?

450 :仕様書無しさん:2006/05/09(火) 22:30:01
>>449
まともな DBMS と、その DBMS にとって常識範囲内のデータ量という条件で、
かつきちんとインデックスを作っていれば、そうそう差は出ないでしょうね。

451 :仕様書無しさん:2006/05/09(火) 22:30:08
>>449
可変長、サイズ指定の固定長、型によりサイズ固定なんかで変わるし、
さらにNUMBERとCHARの格納されている実際のバイト数とかも関わるし、
格納・比較方法はRDBMSに依存するので、とても一言では言えないかと。

452 :Mb:2006/05/09(火) 22:42:36
>>410
> DBがボトルネックになる案件がなぜ多いかよくわかるなー。
> ISAMの概念をRDBMSに持ち込むコボラ氏ね。
Codd のRDB 理論にはDatabase Key という概念があったはずだが、
それを知らずに正規化を行なってめちゃくちゃな構成になってる
システムがやたら多い。
『楽々ERD』といういい本が出たので、それくらい読んでおいて
ほしい(なお、べつに宣伝でもなければ、著者から頼まれたわけでも
ない。つーか漏れが言っても褒め殺しにしかならん)。
言っとくけどISAM とRDBMS は別次元の話。ISAM はそれなりに重要。
RDBMS の実装には関係するが、RDBMS という概念とはまた別物。

453 :仕様書無しさん:2006/05/09(火) 23:01:53
MSSQLだとID列はINTが普通じゃね?

454 :仕様書無しさん:2006/05/10(水) 00:18:25
>>1
ごめん…
耐えられないからがっ!

455 :仕様書無しさん:2006/05/10(水) 00:48:14
>>453
何かの練習問題ならINTにしてるけどたいてい練習問題って
列の種類がそれだけで済むからね。

456 :仕様書無しさん:2006/05/13(土) 02:32:43
javaなんだけど無意味なsynchronized文がいっぱいある。
別のスレッドが他のスレッドで動作しているローカル変数にはアクセスできないことに気づいて・・・

static void method1 (){
 Object obj1;
 synchronized (obj1){
  処理がいろいろ
 } ;
}

457 :仕様書無しさん:2006/05/13(土) 10:46:18
5月から参加してるメンテナンスの仕事、
1つの関数内で同一のローカル変数が
・インデックスカウンタ
・人数
・条件フラグ
と使いまわしされてる。
プログラムの修正で変数を増やすのに一々書類を書いて
モジュールの使用総メモリを申請しなければならないルールを
かいくぐる為の「クールな」手法らしいんだけどorz

458 :仕様書無しさん:2006/05/13(土) 11:04:54
>>457
そんなルールがあるのならば、
確かに「クール」な方法かもしれんな。

でも、そもそも使いまわせる変数ならば
別の変数として確保しても、
使用総メモリ数は変わらないような・・・
ってか、そもそもレジスタに
マッピングされるんじゃね?


459 :仕様書無しさん:2006/05/13(土) 12:24:12
>>

460 :仕様書無しさん:2006/05/13(土) 12:35:57
>>457
漏れが3末から火消しで入れられたプロジェクトもヒドイ。

Java+Oracleの案件だが、テーブルからデータを取得する際、
マスタから名称も取ってきて表示するのだが、
リレーション使わず、テーブルのレコード数分ループ回して取ってきてたりする。

クラス設計もいい加減、共通処理もほとんどなく、同じ処理が何度も現れる。

Web案件なのにHTMLも分からないと言われ、
試験結果の資料もない。


疲れた…orz

461 :仕様書無しさん:2006/05/13(土) 13:29:33
>>449
主キーを数値型(4バイトを想定)ですむところをchar(8)にした場合、
インデックスのブロックに入るレコード数が半分になるので、
物理読み取りの回数が倍になる。
だから差は出るんじゃないの?

462 :仕様書無しさん:2006/05/13(土) 18:44:20
「使用総メモリを申請しなければならないルールをかいくぐる為」なら
実際にメモリ確保している変数は1つでも
そこを参照する変数
>・インデックスカウンタ
>・人数
>・条件フラグ
を必要な数用意すれば?

463 :仕様書無しさん:2006/05/13(土) 20:22:25
>>462
そんなムズかしいことしたらこーどがよめないひとがいるだろ!
それぐらいくうきよめ!

464 :仕様書無しさん:2006/05/13(土) 21:28:57
Private Function Mona() As Boolean
Dim bRet As Boolean = False

  If expr1 Then
    Return bRet
  Else
    ………
  End If

  If expr2 Then
    Return bRet
  Else
    ………
  End If

  If expr3 Then
    Return bRet
  Else
    ………
    bRet = True
  End If

  Return bRet
End Function

改善の際にexpr3の条件式が不要になったんだが、
直感的にIfブロックをまるごとコメントアウトしてひどい目に遭ったorz


465 :仕様書無しさん:2006/05/14(日) 15:40:50
>expr3の条件式が不要

'  If expr3 Then
  If False Then
    Return bRet
  Else
    ………
  End If

じゃねの、普通?

466 :仕様書無しさん:2006/05/15(月) 09:19:20 ?
>>460
》リレーション使わず、テーブルのレコード数分ループ回して取ってきてたりする。
SELECT文を投げたりしちゃダメ?

467 :仕様書無しさん:2006/05/15(月) 12:09:49
Javaなのに、DBからデータ引っ張ってくる際にまず、
select count(*) from hoge
投げて配列長を取得して、配列を確保して
select fuga from hoge
みたいにして、配列に入れていた。

ArrayList使おうよと思った。
そもそも、ロックもかけていないので一つめのSQLと二つめのSQLの間に
ほかのユーザがInsertとかDeleteとか投げたらどうするの?と思った。

しかも、一つSQL投げるたびにコネクション接続&切断。

468 :仕様書無しさん:2006/05/15(月) 13:22:40 ?
>>467
>select count(*)

これが既に嫌だ

469 :仕様書無しさん:2006/05/15(月) 13:25:35
>>467
ロックかけてないのは不味いだろ・・・・・・

470 :仕様書無しさん:2006/05/15(月) 18:29:19
>>468
主キーに索引張ってあったら問題ないと思うけどな。

>>469
分離レベルがSerializableかもしれんよ。
と思ってよく>>467をみたらひとつクエリ投げるたびに接続しなおしてるのか。
これじゃだめだね。

471 :仕様書無しさん:2006/05/15(月) 21:54:38
>>470
プライマリーキーはなかった。
代わりになぜかユニークキーが張ってあった。

NOT NULLであるのにプライマリーキーでなくユニークキーでなければならない理由が知りたい。

472 :仕様書無しさん:2006/05/16(火) 16:32:27
>>471
PRIMARYのつづりがわからなかった。そしてUNIQUEは覚えてた。

473 :仕様書無しさん:2006/05/16(火) 18:24:28
>472
 ソ レ ダ !

474 :仕様書無しさん:2006/05/16(火) 21:55:32
>>472
いや。
Excelでカラム名などが入った設計書らしきものが送られてきた。
で、表の中にkeyという謎な項目があったのでこのkeyというのはプライマリーキーということでいいか?
と問い合わせたところなぜか、ユニークキーだという回答が。

NOT NULLだし一組しかないのだから、プライマリーキーが自然じゃないかと思った。

というのは、同一プロジェクトの新規テーブルを作ったときの話。


475 :仕様書無しさん:2006/05/16(火) 23:43:12
keyで検索したらユニークキーが最初に出てきたとか。
そしてそれを見ながらコピペ。

476 :仕様書無しさん:2006/05/17(水) 07:15:53
DB板の受け売りだが、オラクルでもPKが実装されたのは
バージョン6くらいで、それまではNOT NULLかつ
ユニークキーで実装していたらしい。
だから昔の名残じゃないの?
別に害はないしこれでも悪くない(良いわけでもないが)と思うよ。

477 :仕様書無しさん:2006/05/17(水) 08:28:06
not null かつ ユニーク (かつ インデックス) で、
プライマリキーと同じだな。
あとは意味的な役割か。

478 :葉猫 ◆Jz.SaKuRaM :2006/05/18(木) 11:01:24
  switch( id ){
  int a;    ← 注目
  case 1:
     処理
     break;
  :
  :
  default:
     break;
  }

こんな感じで変数を宣言つる香具師がいるのでつが、どう考えても変態でつよね。

479 :仕様書無しさん:2006/05/18(木) 11:22:36
はいはいqsortの使い道もわからんキチガイは失せろ

480 :仕様書無しさん:2006/05/18(木) 12:44:20
>>478
冒頭でしか変数を宣言できないC言語の仕様の回避と
変数領域を節約するテクニックとして聞いたことはある。
変態呼ばわりはちょっとかわいそうだが、今日的でない
のも確か。

481 :仕様書無しさん:2006/05/18(木) 22:17:54
その文の中でしか使わない一時変数が欲しくなったときには
ついついやっちゃうかも。

482 :仕様書無しさん:2006/05/18(木) 22:31:00
どこが問題か全く解らん。
例えそれが使われないとしても。だ。

483 :仕様書無しさん:2006/05/18(木) 22:53:51
揃いも揃って気狂いコテに釣られんなって

484 :仕様書無しさん:2006/05/19(金) 00:11:29
やめようと思ったわけではないけど,
Cのソースコードのコメントに何の脈略もなく

好 き だ

って書いてあった.

485 :仕様書無しさん:2006/05/19(金) 00:12:50
杉田のtypoだな

486 :仕様書無しさん:2006/05/19(金) 00:44:40
杉田でも意味わかんねーよ

487 :仕様書無しさん:2006/05/19(金) 01:03:05
過ぎた


かも

488 :仕様書無しさん:2006/05/19(金) 02:46:48
>>478
switch 以外ならたまに使う

489 :仕様書無しさん:2006/05/19(金) 06:16:38
>>486
ヒント: ターヘル・アナトミア

490 :仕様書無しさん:2006/05/19(金) 11:10:40
>>480
節約にはなら無いんじゃないの?


491 :仕様書無しさん:2006/05/19(金) 23:18:15
>>486
ヒント:根岸線

492 :仕様書無しさん:2006/05/19(金) 23:55:27
>>490
例えば、switch 文抜けた時に関数を呼んだ場合とか。

493 :仕様書無しさん:2006/05/20(土) 01:48:11
>>478
マジレスすると…
普通のブロックでならむしろ推奨。
変数のスコープを制限して保守性を高める。
ただし switch の先頭というのは却ってスコープが分からなくなるのでよくない。

こんな感じに書くこともある。
switch (id) {
case 0:
 {
  int temp;
//処理
 } //ここでtempの寿命終わり
break;
//...
}

494 :仕様書無しさん:2006/05/20(土) 06:09:08
switchでスコープ分からなくなるとかどこの素人ちゃんだよw

495 :仕様書無しさん:2006/05/20(土) 07:23:03
いまだにStringTokenizer 使ってる香具師がいる……

496 :仕様書無しさん:2006/05/20(土) 14:40:51 ?#
>>492
ブロックを抜けて、その中のauto変数の分だけスタックフレームを縮める処理系なんてほとんどないと思うけど。

497 :仕様書無しさん:2006/05/20(土) 17:39:57
>冒頭でしか変数を宣言できないC言語の仕様の回避

まぁこれに決まりだろうな
なんで最初にすべての変数を宣言せにゃならんのよって
...長い関数にしなきゃ全然問題にならないんだけどね

498 :仕様書無しさん:2006/05/20(土) 20:02:09
>>495
String#splitを使えってことか?
StringTokenizer自体deprecatedにはなってないんだが・・・

499 :仕様書無しさん:2006/05/20(土) 21:55:01
{
}
でローカルブロック作ってたらよ、
よくわかって無いやつに消されたわけだよ。
でエラーになるわけだよ。
でエラーを回避するためにメソッド先頭に移動されたんだよ…





なにしてくれてんだうらぁ。


500 :仕様書無しさん:2006/05/20(土) 22:14:53
>>498
少数の整数部と小数部を分けるのに、"." をデリミタに指定して
StringTokenizer を使っている(もちろん while ループを
hasNextToken() で回しているのだ)プログラムがあり、
作成日付を見ると、つい最近の日付だったりするのだ
(つーか indexOf で十分じゃねぇか?)。
J2SE のバージョンが 1.4 になり、正規表現がサポートされて
漏れがStringTokenizer を使うのを止めた後に生まれた娘が、
もう幼稚園に通っているのだがな。

>>499
漏れも同じような経験があるものだから、
for (Iterator <Hoge> itr = list.iterator(); iter.hasNext(); ) {
  Hoge hoge = iter.next();
  ....
}
とかいった不本意なスタイルを使ってイテレータを閉じ込める
破目になっている……

これも慣れりゃあどうってことないんだが、お世辞にも判りやすい
コードとは謂えんな。

501 :仕様書無しさん:2006/05/20(土) 23:34:42
VB4で。

Global i

吐いた。

502 :仕様書無しさん:2006/05/21(日) 00:18:29
>>501
あるあるwwww

ちょっと昔はそれが普通だったんだよな

503 :仕様書無しさん:2006/05/21(日) 01:47:30
>501
ガクガクブルブル

504 :仕様書無しさん:2006/05/21(日) 11:05:16
>>501
うむ、iは多用されるし型もほぼ同じだから共有するのは良い案だな。
そうなると、あとはjとkも欲し(r

505 :仕様書無しさん:2006/05/21(日) 16:03:08
反復構文の制御変数の共用ねぇ
自分にはそんな事してちゃんと動くプログラムを書けるとは思いませぇん

506 :仕様書無しさん:2006/05/21(日) 17:04:01
最近、無粋なボケ潰しが、どの板行っても多いな

507 :仕様書無しさん:2006/05/21(日) 17:05:47
厨度があがってるんだよ。ネタをネタと

508 :仕様書無しさん:2006/05/21(日) 17:46:01
そっとしておいてやれ

509 :仕様書無しさん:2006/05/22(月) 00:14:52
>>506
ボケがくだらな過ぎ&手垢がついてるんで
そうそうに潰して置くのは悪い手ではない。

510 :仕様書無しさん:2006/05/22(月) 00:43:55
というくだらな過ぎる&手垢がついてる言い訳ですか。

511 :仕様書無しさん:2006/05/22(月) 00:46:00
くだらないんならスルーしろよ。マジレスしといて何言ってるんだか。

512 :仕様書無しさん:2006/05/22(月) 02:02:24
そうそう、こんな感じ。
大概空気の読めないマジレスが投下されると、空気がおかしくなりはじめ、
そこでマジレスクンが必死で言い訳すると、スレの空気が一気に悪化する、と。
最近このパターンが多いんだよな。
これこそ見飽きるほど使い古された悪手のような気がするんだけどな。

513 :仕様書無しさん:2006/05/22(月) 04:17:46
あくしゅが好きな人もいるんだよ

514 :仕様書無しさん:2006/05/22(月) 05:57:36
汗ばんでると嫌な感じだけどな

515 :仕様書無しさん:2006/05/22(月) 09:03:14
>>512
>スレの空気が一気に悪化する、と。
それこそどうでもいいなあ。
馴れ合いたいなら別の場所へどうぞ。

516 :仕様書無しさん:2006/05/22(月) 11:01:57
もういいってお前。

517 :仕様書無しさん:2006/05/22(月) 20:49:52
if (hoge.equals("")) {
 処理A
}

if (!hoge.equlas("")) {
 処理B
}

とか平気で書いてあるんだが、elseを使わない理由ってあるんか?

518 :仕様書無しさん:2006/05/22(月) 20:54:15
その情報だけで聞かれても、
処理Aの結果が二番目のif節に影響あるんじゃね、とか、なんとでも言えそうな

519 :仕様書無しさん:2006/05/22(月) 21:20:11
>>517
length() 使わない理由は?
null 判定までしたいときは "".equals(hoge) とかやるのがいいらしいけど

520 :仕様書無しさん:2006/05/22(月) 21:58:09
グローバル変数しか使えないクソ言語で、i と ii と iii 、j と jj と jjj 、
k と kk と kkk が使われていたのなら、見た事ある。

521 :仕様書無しさん:2006/05/22(月) 23:34:35
switch文が1K

522 :仕様書無しさん:2006/05/22(月) 23:35:05

'落ちたー
iCount As Long 'Integer

523 :仕様書無しさん:2006/05/22(月) 23:42:03
同種で

'Overflowの可能性があるので修正 XXXX/YY/ZZ ○○
intCount As Long 'Integer

とかなら見たことある

524 :仕様書無しさん:2006/05/23(火) 00:30:27
・string型は遅くなるので使用禁止
・スマートポインタは遅くなるので使用禁止
・vectorのpush_backはコピーが発生するので使用禁止

あのー、サーバプログラムと聞きましたが…
もしかして、サーバってのはブレードじゃなくてただのタワーPCですか?

525 :仕様書無しさん:2006/05/23(火) 00:32:41
>524
それはつまりC++コンパイラは使うがCで書けということですか?

526 :仕様書無しさん:2006/05/23(火) 00:56:04
>あのー、サーバプログラムと聞きましたが…
>もしかして、サーバってのはブレードじゃなくてただのタワーPCですか?
お前の突っ込みも意味分からんよ。


527 :仕様書無しさん:2006/05/23(火) 11:11:27
ささやかなネタだが、
受け持ったモジュール、Webやおまけディスクのサンプルを朴って
つぎはぎした箇所がかなり多くて、当然コーディングスタイルも
変数なんかのネーミングルールも統一されてなくて、なんかいや。

528 :仕様書無しさん:2006/05/23(火) 22:32:42
ほとんど同じ処理のロジックが
if分岐で記載されている

1パターン動いたからコピペしてそれをif分岐で処理させたのがバレバレで
その各処理内容が3〜4Kステップある、、、。

コピペで作られてるならそれていいので
一応、例外が無いか全ステップ確認してくれと言われた。。

泣きたいんですけど、ないていいですか?


529 :仕様書無しさん:2006/05/23(火) 22:53:25
>520
Cでグローバル変数使ってそれやってるの見たことがある

530 :仕様書無しさん:2006/05/24(水) 00:13:52
>528
泣きなさ〜い〜♪

531 :528:2006/05/24(水) 00:23:00
>>530

さらに似たような処理のcase文やif文がうじゃうじゃあり、
ソースコードの確認のみでもうすぐ3ヶ月経過。。。

鬱だ
早く契約切れろ!!!!!!って怒る気すら失せた

もう生き地獄だ。

新規製造で入ったはずなのに、、、、。

532 :仕様書無しさん:2006/05/24(水) 00:24:54
契約ってところで、一番泣いた

533 :仕様書無しさん:2006/05/24(水) 00:36:29
>>531
作り直したほうがよさげ・・・




って悪魔のささやき


534 :仕様書無しさん:2006/05/24(水) 00:38:55
>>528
それぞれの処理を別ファイルにして、diff取ればいいんジャマイカ?

535 :528:2006/05/24(水) 00:40:39
>>533

作り直す為の既存の確認でやってるんですが、、、。
予算確保に失敗し、新規製造(作り直し)の話は無くなり、そのまま保守業務へ、、、。

もう死にたい。。



536 :仕様書無しさん:2006/05/24(水) 00:41:48
>>535

じゃあ、>>534の方法は?

537 :仕様書無しさん:2006/05/24(水) 00:43:57
>>534
ロジックを理解し、さらにソース解析結果をレビューという形で
報告せねばなりません、、。

なので、ソースを理解しておく必要があり、diff結果のみとは逝きません。。。

538 :仕様書無しさん:2006/05/24(水) 00:49:42
>>537
誰もdiffの結果のみをそのまま提出しろ、とも言ったないだろ。
解析すべき箇所が少なくなるかもしれない、と言っているんだ。

539 :仕様書無しさん:2006/05/24(水) 00:49:43
>>537

diffとって比較済み?
それとも想像もできないような大量のソースコードなのだろうか・・・

540 :仕様書無しさん:2006/05/24(水) 00:53:44
>>538
実際にはそうしています。
diff結果のみの提出とは逝かない。という意味でした
すいません

diffを取ってからめぼしをつけて、差分のみソース解析に入ってますが、、、

それでも激しくウンザリです、、。




541 :仕様書無しさん:2006/05/24(水) 01:54:08

                         ハ_ハ
                 ハ_ハ    (^( ゚∀゚)^) 
               ('(゚∀゚∩    )  /
                ヽ  〈   (_ノ_ノ
                 ヽヽ_)

542 :仕様書無しさん:2006/05/25(木) 23:39:19
「飛び込めばなんとかなるよ!」「なるよ!」

かな?

543 :仕様書無しさん:2006/05/29(月) 13:17:55
/* 16進数を2進数の文字列に変換する */
char *cMakeBinStr( long lArgv ) {

  char *cAns;

  if( lArgv == 0x0001 ) strcpy( cAns, "0001" );
  if( lArgv == 0x0002 ) strcpy( cAns, "0010" );
  if( lArgv == 0x0003 ) strcpy( cAns, "0011" );
  if( lArgv == 0x0004 ) strcpy( cAns, "0100" );
  if( lArgv == 0x0005 ) strcpy( cAns, "0101" );

           ・
           ・
           ・

  if( lArgv == 0x000f ) strcpy( cAns, "1111" );

  return cAns;

}

えーと、どうしてくれようかorz


544 :仕様書無しさん:2006/05/29(月) 14:42:21
毎朝 printf の書式を暗唱させる。

545 :仕様書無しさん:2006/05/29(月) 14:51:45
0xffffffffまでの全ての組み合わせを書かせる


546 :仕様書無しさん:2006/05/29(月) 15:01:05
せめて0xffまで対応しろよと(違

547 :葉猫 ◆Jz.SaKuRaM :2006/05/29(月) 16:03:31
つうか、メモリ破壊ちてるでちょ。。。。。。。。。。。。。

548 :仕様書無しさん:2006/05/29(月) 19:21:51
0x0000には対応しなくていいんだろうか……

549 :仕様書無しさん:2006/05/29(月) 19:33:19
>547
つうか、さっさと死んでちょ。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

550 :仕様書無しさん:2006/05/29(月) 23:31:57
>>543 ほどひどくはないが、Perl でわざわざ十進→十六進変換をがんばって実装してた 100 行はある先輩のプログラムを見てしまった。




らくだ本を読ませたかった。

551 :仕様書無しさん:2006/05/30(火) 01:12:09
>>550
あーなんかわかるなー。車輪の再発明すらせず力任せな解決法。
その昔、select()を知らずに複数のrecv()をタイムアウトでループさせてた奴がいたな。
しかし十進→十六進って、Perlの得意技じゃん。

552 :仕様書無しさん:2006/05/30(火) 09:28:34
>>550-551
いくら力任せ/車輪の再発明とはいえ、
10進→16進変換ごときに100行は必要ないと思う。


きっと、突っ込み所満載なんだろうな…(w

553 :仕様書無しさん:2006/05/30(火) 10:52:05
>>550
晒し上げてw

554 :仕様書無しさん:2006/05/30(火) 11:07:56
const char Renketu = '<';
const char SuperRenketu = '/';
public const char SpecialRenketu = '-';
bool renketued;

('A`)

555 :仕様書無しさん:2006/05/30(火) 11:39:52
Javaで、

ProcessA();
ProcessB();

ってメソッドにまとめた処理を2つ逐次に行っているのがあったのよ。
ProcessA()で処理したデータを一時ファイルに書き込んで、
ProcessB()でその一時ファイルを読んで次の処理を行う。

これを書いた奴の環境では動いたらしいんだが、
俺の環境に持ってくるとどうもうまく行かない。
二つの処理の間にSleepをはさんだりすると、ちょっと挙動が変わる。
問い詰めたら「マルチスレッドにした覚えはないんですけどねぇ」とか。

よくよくソース読んでみたら、開いたファイルを閉じていなかった。
GCがありゃ何でもかんでも作って放置でOK、って考えらしいな。

556 :仕様書無しさん:2006/05/30(火) 13:37:58
>>555
>GCがありゃ何でもかんでも作って放置でOK、って考えらしいな。
考え方って訳じゃないだろうけど、そんな奴はいる。
webサーバーでしか通用しないけど、フィルター作ってハンドル管理してみました。

557 :仕様書無しさん:2006/05/30(火) 15:07:11
>>554
> bool renketued;

ワラタw 「連結された」って意味か?

558 :仕様書無しさん:2006/05/30(火) 15:54:57
[Java]

try{

 省略

if(条件){
return true;
}else{
return false;
}

}catch(Exception eee){
throw eee;
}finally{
return false;
}

おい!なんかおかしいと思ったらこのメソッド false しか返ってこねーよw

559 :仕様書無しさん:2006/05/30(火) 16:36:40
>>558
finally節にreturnて書けるのか…
知らなかった…

560 :仕様書無しさん:2006/05/30(火) 18:14:28
>>543
隣の席のやつの話。
測定器からデータをもらう処理で、エラー値の各ビットに
それぞれエラーが割り当てられてるという仕様らしかった。

if (err & 1) ... エラーA
if (err & 2) ... エラーB
if (err & 4) ... エラーC
...

こういう感じ。

でも、エラーの値が"0C"みたいにテキストで渡されるから、
ビット演算ができない。

if (strcmp(strErr, "01"))...
if (strcmp(strErr, "02"))...
...

全部のエラーに対応するには255通りのifを書かないといけないって、
騒いでた。


561 :仕様書無しさん:2006/05/30(火) 20:00:43
RDBのテーブルを、データファイルのように考えてる
プログラムがCREATE TABLEとDROP TABLEばっか
画面ごとに表示データのをその都度ワークテーブル作って
スキーマ内、ものすげえのテーブル数

ER図も作れないし、統計情報も取れねえからパフォチューも何も無い

ストアドプロシージャ使ってるのに動的SQLしか使えねえ
SPが全然意味なし

しかも、仕様書がなんにもねえ
古株PG曰く「作れないよ、このシステムは」って開き直ってやがる
つーか、おめえはいい歳してドキュメントもまともに書いたこと無いんだろ!



562 :仕様書無しさん:2006/05/30(火) 21:11:44
ドキュメントがない
ソースには引数のコメントは書いてあるが、クラスやメソッド自体の機能説明が書かれていない
全面改修の案件で全てのソースを追わないといけない・・・('A`)

563 :仕様書無しさん:2006/05/30(火) 22:07:46
独自パッケージを持ってるとかだったが
要は最初にどっかの客に作ったシステムの
一発物のソースをひたすらコピーしてるだけの代物だった

画面を立ち上げる際の関数の引数で
CASE分岐で処理分岐してる
新規客の度に機能追加しててものすげえ
全然訳わからねえ

全然、パッケージじゃないし、しいていうなら
なんとなく共通なソース群があってそれがそうかもしれない


564 :仕様書無しさん:2006/05/30(火) 22:16:13
コードじゃないんだが、

vertical-align: left;

565 :仕様書無しさん:2006/05/30(火) 22:19:20
>>564
ちょwww
text-align 違いwww

566 :仕様書無しさん:2006/05/31(水) 00:23:13
JAVA。
スレッドを多数生成する部分のコーディングをチームでやっていたのだが、
少しずつ部品を実装するうち、ある日突然テストする際にCPUの使用率が100%になった。

調べてみるとスレッドの待機処理のところにこんなコーディングが・・・

try{
w = (待機時間を取得するメソッド)
Thread.sleep(w);
} catch (Exception e) {
//何もしない
//System.out.println(e);
}

待機時間を取得するメソッドの戻り値をうまく型変換できずに必ず例外が発生していた。
単体テストをやったんだろうか?とも思ったけど、やったからこそわざわざコメント入れて
例外の表示を消したんだろうな・・。

567 :仕様書無しさん:2006/05/31(水) 00:36:30
>>556

なぜ隠すんだろうか?


568 :仕様書無しさん:2006/05/31(水) 00:36:55
おかしくないか?
時間を取得するメソッドならlongとかjava.util.Dateとかで返ってきていいと思うんだが・・・
待機時間取得メソッドの内部でExceptionが発生してるとかなら分からんでもないけど

569 :仕様書無しさん:2006/05/31(水) 02:16:13
>>564
コメント追記したくなった。

vertical-align: left;   /* ガッツ石松 */

570 :仕様書無しさん:2006/05/31(水) 09:19:02
>>561
PGだからドキュ書けねーべ (*゚ヮ゚)

571 :仕様書無しさん:2006/06/01(木) 00:04:49
>>567
知らん。が、これを書いたヤツが相当DQNなヤツなので、
原因を深く(っつーかこれくらい見れば分かるだろうが・・・)
調べる前に諦めただけのような。

>>568
Stringで返ってきてたのをLongに変換していた。
メソッド自体はプロパティーファイルから値を取得するもので、返却値はStringに統一されていたため。


572 :仕様書無しさん:2006/06/01(木) 01:39:54
>>500
>for (Iterator <Hoge> itr = list.iterator(); iter.hasNext(); ) {

って、たぶんJavaだと思うんだけど、Generics使えるなら、
Iterator使わずに、拡張for文を使えばいいんじゃないの?

573 :仕様書無しさん:2006/06/01(木) 01:41:36
どっちだって同じじゃん
結局forブロック内のコードが劇的に変わるわけでも無し
そんなんどーでもいーよ

574 :仕様書無しさん:2006/06/02(金) 14:14:40
#define DEBUG 1
...
#if DEBUG == 1
...本番コード
#endif

#if DEBUG == 2
...デバッグ用コード
#endif


575 :仕様書無しさん:2006/06/02(金) 23:51:33
#ifdef _DEBUG とかじゃないのか・・・

576 :仕様書無しさん:2006/06/03(土) 01:01:01
Microsoftルールに無用な拒否反応を示す人もいたりするので。

577 :仕様書無しさん:2006/06/03(土) 01:36:25
MSは
#ifdef NDEBUG
じゃなかったっけ?

578 :仕様書無しさん:2006/06/03(土) 01:38:32
NDEBUG は C 標準。 _DEBUG は MS の流儀。意味は反対。

579 :仕様書無しさん:2006/06/03(土) 03:50:26
NDEBUGは標準ライブラリにあるassertが見るくらい標準。

580 :仕様書無しさん:2006/06/03(土) 11:04:07 ?#
>>576
574は、そういう問題じゃないから。

581 :仕様書無しさん:2006/06/03(土) 22:47:19
>578-579
しまった脳内で逆になってたorz

582 :仕様書無しさん:2006/06/06(火) 15:35:53
>>581
脳内でなく、脳そのものが裏返しになってないか、注意したほうがいい。

583 :仕様書無しさん:2006/06/06(火) 17:25:43
四次元の脳、出現か!?

584 :仕様書無しさん:2006/06/06(火) 17:31:48
イメージ的にはクラインの壺だろうか。

585 :仕様書無しさん:2006/06/08(木) 07:57:27
発想を逆転するんだ
裏返しになるスタンド攻撃を受けても安心だと思えばいい

586 :仕様書無しさん:2006/06/23(金) 10:51:12
System.setProperty()、getProperty()
メソッド間の値の受け渡しでコレ使ってるのは初めて見たよ・・・。

587 :仕様書無しさん:2006/06/23(金) 20:54:04
俺のソースを読んだやつは辞めたくなると思う。
でも元から辞めたくなるソースだったんだよ。
次のやつも辞めるだろうな・・・


588 :仕様書無しさん:2006/06/23(金) 21:04:53
キッタネーコードを引き継いでメンテすることになった。

バージョン管理すらされてなかったのでとりあえずsvnに突っ込んだのだが、
今後漏れの名前のコミットしかなくて、将来見た香具師が「原作者==漏れ」
だと思うかもしれないと思うと今から鬱だ。

589 :仕様書無しさん:2006/06/23(金) 21:10:01
>>588
ここにまた一人、俺が誕生したようだな

590 :仕様書無しさん:2006/06/23(金) 21:29:29
ようこそ俺様

591 :仕様書無しさん:2006/06/24(土) 00:07:55
前任者から引き継いだある条件文が集約されたソースで
あるリテラル文字を含んだ部分を割愛したい処理で
if(strstr(paramstr,"hoge1") !=NULL){
goto nullpo;
}else if(strstr(paramstr,"hoge2") !=NULL){
goto nullpo;
}else if(strstr(paramstr,"hoge3") !=NULL){
goto nullpo;
.....
....
...
....
}else if(strstr(paramstr,"hoge185") !=NULL){
goto nullpo;
}else{
prccount ++;
}
nullpo:;
って永遠200行くらい続いていた。

592 :仕様書無しさん:2006/06/24(土) 01:09:19
>>591
書いたヤツを死刑に。

593 :仕様書無しさん:2006/06/24(土) 01:29:32
インド人は右に

594 :仕様書無しさん:2006/06/24(土) 15:28:30
VB.NETで

Try

  Try




  Catch ex as Exception

    Throw New ApplicationException("エラー")

  End Try

Catch ex as Exception
 
 Throw New ApplicationException("エラー")

End Try

これをDllでやられた。
最初どんな例外で落ちてるのか、影も形もNeeeeeeeeee!

595 :仕様書無しさん:2006/06/24(土) 21:16:29
例外処理なんてもんはな、握りつぶす, とりあえず新しい例外を投げる、どっちかなんだよ・・・

596 :仕様書無しさん:2006/06/24(土) 22:05:58
>>595
ユーザーに伝えるのと、ラップして新しい例外を投げるのも選択肢に入れてください。

597 :仕様書無しさん:2006/06/24(土) 22:29:57
/* 奴隷募集 時給〜5000円 カップラーメン支給 勤務地 首都圏各地 */

598 :仕様書無しさん:2006/06/24(土) 22:38:27
カップラーメン支給 ←これ重要

599 :仕様書無しさん:2006/06/24(土) 22:41:56
時給5000円確実に出るなら、結構イイナ

600 :仕様書無しさん:2006/06/24(土) 22:46:01
パッと見、高給っぽいけど実際は
時給0〜5000円だったりするからな


601 :仕様書無しさん:2006/06/24(土) 23:04:53
0からなら法律違反なわけだが。

602 :仕様書無しさん:2006/06/24(土) 23:25:01
>>596
あとはログやらスタックトレースに投げておしまいあたりか・・・
まあまともな例外処理なんて・・・

603 :仕様書無しさん:2006/06/24(土) 23:28:54
catch(Exception e){}

やっぱこれだよな

604 :仕様書無しさん:2006/06/24(土) 23:36:44
>>603
意味があってそういうことすることはあるが…。

( Ocaml のhashはキーが見つからないと、Not_found例外を投げて
 くるので、意図的にもみけすことはしばしばある)

まあ、異常系の実装が先送りになっているか、本当にごまかしているか
のどちらかだな。


605 :仕様書無しさん:2006/06/24(土) 23:37:11
それを上回る
catch(Throwable t){}

やっぱこれはまずいよな

606 :仕様書無しさん:2006/06/24(土) 23:46:08
徹底的な先送り精神が伝わってきますな。いかにもわが国らしい。


607 :仕様書無しさん:2006/06/24(土) 23:55:46
>606
先送りなら
catch(Throwable t) { throw t;}
だろ
あれはもみ消し。これまたいかにも日本的だがorz

608 :仕様書無しさん:2006/06/25(日) 00:55:30
意味があるなら、無視している旨(できれば理由も)コメントしておいてね。

609 :仕様書無しさん:2006/06/25(日) 01:16:17
>スタックトレースに投げて
詳しく


610 :仕様書無しさん:2006/06/25(日) 01:49:43
>>605

Map result = null;
try {
...処理...
result = ほげほげ;
} finally {
return result;
}

ネタじゃなく実話なのがツライ……orz

611 :仕様書無しさん:2006/06/25(日) 02:35:44
>>609
詳しくも何もprintStackTrace呼んで終わりだが何かあるのか?

612 :仕様書無しさん:2006/06/25(日) 03:28:02
609じゃないけど、ログいれようよ

613 :仕様書無しさん:2006/06/25(日) 10:04:34
スタックトレースに投げる
って表現が新鮮だっただけだ、すまそ


614 :仕様書無しさん:2006/06/25(日) 16:32:09
>>610
意味ない書き方ではあるが
握り潰してる>>605よりはましでそ。


615 :仕様書無しさん:2006/06/25(日) 18:32:42
catch(Throwable t){}
return result;
になってたら同じだけどな

616 :仕様書無しさん:2006/06/25(日) 19:09:11
javaって例外時でもfinaly実行後に例外消えるの?
それともreturnの場合だけ特殊動作なわけ?


617 :仕様書無しさん:2006/06/25(日) 19:18:37
> 例外消えるの?
はぁ?

618 :仕様書無しさん:2006/06/25(日) 19:38:35
そういや >>610 のソースには catch が無いな。

>>616
例外による大域脱出は finally 節に入った時点でストップするみたいだよ。
結果、null が返る。

619 :仕様書無しさん:2006/06/25(日) 20:38:56
>>616
return だけ特別扱い。
というより正確にはfinally内にreturnを記述するのが×。(警告出る)

620 :仕様書無しさん:2006/06/25(日) 22:07:25
>>616
そのあたりはjava言語規定を中途完了という単語で探すと色々出てくる
ちなみにreturnが特別扱いというわけでもなくてfinallyでreturnやthrow
するとそれまで発生する予定だったreturnや例外が捨てられるということ

621 :610:2006/06/25(日) 22:07:52
わかりづらくてスマソ。

finally節の中でreturnすると、tryブロック中でどんな例外が発生していても全て消えちまう。
つまり、>615と同じこと。

> というより正確にはfinally内にreturnを記述するのが×。(警告出る)
最近のコンパイラやIDEはfinallyブロック中のreturnに警告を出してくれるが、
ちょっと前まではそういう警告も出なかったのよ。
# 確かSun JDK 1.4.2やEclipse 2.1とかは警告を出さなかったはず。

仕方ないので、finallyで検索して必死に手で修正したさ。
そしたら、今まで闇に葬られていた大量のぬるぽが大発生して、
事態が収拾するまでさらに何日もかかっちまった。
もう、あんなソースは二度と触りたくない。

622 :仕様書無しさん:2006/06/25(日) 23:24:10
直感でぬるぽかと思ったがやはりそうなのか・・・ガッ

623 :仕様書無しさん:2006/06/25(日) 23:30:28
>直感でぬるぽかと思ったが
このソースだけじゃ ぬる だが ぽ じゃねぇだろ?

624 :仕様書無しさん:2006/06/25(日) 23:34:45
いや、そんなことはないだろ
でなきゃここに書く理由がない

625 :仕様書無しさん:2006/06/25(日) 23:47:21
あるだろ。問題は例外を潰していると言うことで
nullを返却する所は二次的な物

626 :仕様書無しさん:2006/06/26(月) 00:05:24
例外起きてるのに何かしようとするのは間違いでしょ。
(例外処理中にまた例外が起きる可能性がある)
それでも何かしたい時、例外を握り潰す以外何をしろと。

627 :仕様書無しさん:2006/06/26(月) 00:09:22
>>626
>>614


628 :仕様書無しさん:2006/06/26(月) 00:12:09
>>626
例外起きてんなら素直にそのまま投げろよ、糞グラマ。

629 :仕様書無しさん:2006/06/26(月) 00:20:17
自前で処理できないからってこっちに投げてくるんじゃねえよ糞

630 :仕様書無しさん:2006/06/26(月) 00:22:37
>>629
( ゚д゚)ポカーン

631 :仕様書無しさん:2006/06/26(月) 00:26:26


632 :614:2006/06/26(月) 00:38:42
>>621
そか、なるほど、勘違いしてた。すまそ。


633 :仕様書無しさん:2006/06/26(月) 13:07:02
たまにtry,catchとthrow知っててもthrowsリスト知らない人いるよな

634 :仕様書無しさん:2006/06/26(月) 13:32:37
mainにthrows

635 :仕様書無しさん:2006/06/26(月) 14:45:25
>633
その逆もみたことあるけどな。
634の言うように、 throws Throwable のみ。



636 :仕様書無しさん:2006/06/27(火) 11:51:19
>>598
それなんてエロゲ屋?

637 :仕様書無しさん:2006/06/27(火) 21:03:31
稼動済みプログラムのソースにてハケーン。
本日の日付以後のみ選択可にする判定。orz

if( CalanderDate.getFullYear() >= TodaysDate.getFullYear() &&
  CalanderDate.getMonth() >= TodaysDate.getMonth() &&
  CalanderDate.getDate() >= TodaysDate.getDate() )

638 :仕様書無しさん:2006/06/27(火) 21:25:37
よくそれで動いてるな

639 :仕様書無しさん:2006/06/27(火) 21:37:57
いや、さすがにこれは動かないだろ。

640 :仕様書無しさん:2006/06/27(火) 22:12:23
月またぎ、年またぎがなければ問題ないな
そういう運用方法にすればいい

641 :仕様書無しさん:2006/06/27(火) 22:39:15
CalanderDate.getDate()はCalanderDate.getDay()のがいい希ガス

642 :仕様書無しさん:2006/06/30(金) 12:00:11
いや、このスレに出てくる例は、どういいとか言い出す以前だから

643 :仕様書無しさん:2006/06/30(金) 21:37:37
いや、わかった上であら捜ししてるんだと思うし

644 :仕様書無しさん:2006/07/03(月) 23:17:46
今所属しているプロジェクトがかなり暇なので新人の教育担当をやらされることになりました。
本日新人が配属され教育が始まりました。
新人たちは5〜6月にJava研修を受けていたらしいですが、確認のためかなり簡単なJavaの課題を10問与えました。
新人が私のところに「どうしても1問目がコンパイルが通りません」と言ってきました。
私はコードを見ました。

class hoge{
public static void main(String args[]){
System.out.println(Hello, World);
}
}

orzorzorz

645 :仕様書無しさん:2006/07/03(月) 23:34:36
本人にやる気がなくて「やらされてる」と思っているようではこんなもんだろ。
つまり、バカって事だ。

646 :仕様書無しさん:2006/07/03(月) 23:54:18
未経験者歓迎で採用するとそうなる


647 :仕様書無しさん:2006/07/04(火) 00:05:23
未経験者でもやる気がある奴はしっかり吸収するぞ。
ていうか最初は誰でも未経験者だけどな

648 :仕様書無しさん:2006/07/04(火) 09:25:00
>>644
大丈夫。そこまで書けるならまだまだ十分有望だ。

649 :仕様書無しさん:2006/07/04(火) 10:37:29
>646
たとえ未経験者だろうと,2ヶ月もの研修を経てアレだとヤバイだろ

650 :仕様書無しさん:2006/07/04(火) 12:56:04
>>644
涙が止まりませんねえ。


651 :仕様書無しさん:2006/07/04(火) 13:55:43
>>644
それは、その新人さんの前に研修・教育担当者をクビにせんといかんな。

652 :仕様書無しさん:2006/07/04(火) 16:23:55
採用担当は?(´・ω・`)

653 :仕様書無しさん:2006/07/04(火) 20:52:54
その担当者をきめた上層部はみんな首だな

654 :644:2006/07/04(火) 23:18:07
慰めの言葉ありがとうございます。
ちなみに今日は自信満々でこんなコードを渡されました。
死にたいです。

class StartUp {
 public static void main(String args[]) {
  Customer cus = new Customer() ;
  cus.print();
 }
}

public class Kokyaku {
 String code ;
 String name ;
 public Kokyaku() {
  code = "000001";
  name = "○○株式会社" ;
 }
 public void print(code, name) {
  System.out.println(code) ;
  System.out.println(name) ;
 }
}


655 :仕様書無しさん:2006/07/04(火) 23:26:58
コンパイルエラーじゃん

656 :仕様書無しさん:2006/07/04(火) 23:30:44
>655
多分その「自信満々」というのは
「先輩、これコンパイルエラーって言われるんですけど、間違ってないですよね? 」
という「自信満々」ぶりなのでは。

どうでもいいが>644氏、その講習とやらでJavaとJavaScriptとごたまぜに教えたりしてないか?

657 :644:2006/07/04(火) 23:42:37
>>655-656
どう考えてもコンパイルエラーなんだが、偽装した実行結果を添付して渡されたw

>>656
まだスクリプトとかそういう段階じゃないから
とりあえずオブジェクト生成させたくて、そのための例題
class StartUp {
 public static void main(String args[]) {
  Kokyaku kokyaku = new Kokyaku("000001", "○○株式会社" ) ;
  kokyaku.print();
 }
}

public class Kokyaku {
 private String code ;
 private String name ;

 public Kokyaku(String code, String name) {
  this.code = code ;
  this.name = name ;
 }
 public void print() {
  System.out.println(code) ;
  System.out.println(name) ;
 }
}
こんなのを書いてほしかったの

658 :仕様書無しさん:2006/07/04(火) 23:58:38
1〜2か月やってそれってのも才能がないとしか言えないが
それすらできないのって教育係にも問題があると思うよ
ましてや偽装って、マとしてより社会人として最悪
教育係共々クビにすれ

659 :葉猫 ◆Jz.SaKuRaM :2006/07/05(水) 00:07:24
やっぱアホにはVBAでちょ。 これちかない。

660 :仕様書無しさん:2006/07/05(水) 00:24:44
>>654
> Customer cus = new Customer() ;
カスタマー カス イコール …

って読んでしまった

661 :仕様書無しさん:2006/07/05(水) 00:48:46
VBA使って、いざとなりゃAPI叩けば大概のことはできる……
そう思っていた時代が(ry

662 :仕様書無しさん:2006/07/05(水) 02:54:00
一体何を学ばせていたんだろう

663 :仕様書無しさん:2006/07/05(水) 03:00:27
おそらく、研修も捏造実行結果で乗り切ったんだな。

664 :仕様書無しさん:2006/07/05(水) 06:48:56
そういうやつばっかりだからこういうスレができるわけだな。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=31711&forum=12

665 :仕様書無しさん:2006/07/07(金) 09:09:59
>>655
仮に Kokyaku がちゃんと書いてあってコンパイルが通ったとしても
StartUp クラスは実行できない。Customer クラスがどこにも書かれて
ないから class not found だ。


666 :仕様書無しさん:2006/07/07(金) 09:25:18
コンパイルエラーか
他社の人からリリース用に渡されたコードもらってコンパイルしてみたら
普通にエラーがでていたなあ
速攻つきかえしたけど

667 :仕様書無しさん:2006/07/07(金) 12:47:53
>>664
  宿題は写すもの
  試験でいい点さえ取れればいい

と言う考え丸出しだな(w

668 :仕様書無しさん:2006/07/07(金) 16:32:20
前 協力会社が書いた関数が長すぎてCコンパイラがcore dumpしたことがあったなあ ...

分割してお願い orz


669 :仕様書無しさん:2006/07/07(金) 19:53:25
>>668
それは凄い。

俺は昔全てが main() に書かれた学生が苦労して作った作品を見たことがあるが、
それはコンパイルが通ってちゃんと動いたから、まだまだそれには及ばないという
ことだったんだなあ。


670 :仕様書無しさん:2006/07/07(金) 20:18:58
判読に苦労した。既に作品と呼んでも差し支えないであろう。

671 :仕様書無しさん:2006/07/07(金) 20:36:32
>>665
おはよう、バカ新人さん

672 :仕様書無しさん:2006/07/07(金) 20:43:57
#pragmaが#preagmeは笑ったな

673 :仕様書無しさん:2006/07/07(金) 20:58:38
>>649
うちは3ヶ月研修あったが糞もいいとこだったな。
PCの立ち上げ方から始まった。研修中ソースを書いたことなし。
あとは好きに想像してくれ。

674 :仕様書無しさん:2006/07/07(金) 21:02:49
初心者が変なコード書くのは当たり前だからなぁ
もう少し際どいのが見たいぜ

675 :仕様書無しさん:2006/07/07(金) 23:24:17
同じ処理の大量コピペはもちろんのこと、
何十ものプロパティがある上に内部クラスまでごっちゃり作ってあり、
DBアクセス処理でSQL構築する所は度重なる追加修正により
分岐しまくりつつコメントだらけで一体どこが本文で
どんなSQLが出来上がるんだか一目見ても分かりゃしない。



そんなカオスというか生命のスープというかビッグバン直前なクラスに遭遇した。
誰か助けてorz


676 :仕様書無しさん:2006/07/07(金) 23:52:09
if( hoge!=1 || hoge!=2 || hoge!=3 ) {
    hoge = DEFAULT_VALUE;
}

こんなんばっかり('A`)
&& を || にするだけで自然な動作になるんだけど、もう保守の状態にあるソースだからうんたら・・・
ログ見てみると作ったのはあなたですよ・・・と。
hoge が適正値のときのリソースが使われていない現状を見るともうね

677 :仕様書無しさん:2006/07/08(土) 00:29:30
>>661
そう考えると、VBAって、何から何まで用意されてる
C#やJavaよりは難しいよな〜とも思う。

678 :仕様書無しさん:2006/07/08(土) 03:14:49
if (0<=n && n<=9) printf(" %d", n);
else if (10<=n && n<=99) printf(" %d", n);
else if (100<=n && n<=999) printf(" %d", n);
else if (1000<=n && n<=9999) printf("%d", n);
すべてこんな調子。
負の値を表示する箇所では、ifの数が更に倍になってる。。。

679 :仕様書無しさん:2006/07/08(土) 08:54:47
>>678
何のためのprintfなんだろうか…

680 :仕様書無しさん:2006/07/08(土) 11:09:17
>>678
意味不明・・・って思ったらスペースがトリミングされているのな
printf("%4d", n); をわざわざ展開しているのか…

681 :仕様書無しさん:2006/07/08(土) 12:44:51
これは引くね

682 :仕様書無しさん:2006/07/08(土) 12:48:51
>>681
引いたらこんな感じ?
printf("%-4d", n);

683 :仕様書無しさん:2006/07/08(土) 13:27:27
レイアウトの為とかじゃないの?わからんけど。
俺はどちらかというとifの記述内容にひく・・・

684 :仕様書無しさん:2006/07/08(土) 13:29:26
大丈夫か>>683

685 :仕様書無しさん:2006/07/08(土) 13:47:39
libcなめるなよ>>683

686 :仕様書無しさん:2006/07/08(土) 13:56:30
ホタテをなめるなよ!

687 :仕様書無しさん:2006/07/08(土) 13:56:56
お前は何を言ってるんだ >683

688 :仕様書無しさん:2006/07/08(土) 13:59:51
新人なんだろ

689 :仕様書無しさん:2006/07/08(土) 14:31:27
>>686
なんだっけ?妙に懐かしい

690 :仕様書無しさん:2006/07/08(土) 14:58:17
>>688
入社6〜7年目くらいかな。

691 :仕様書無しさん:2006/07/08(土) 15:02:05
>>690
683が?

692 :683:2006/07/08(土) 18:55:41
何か変なこといったかなぁ
if (n < 0);
else if (n < 10)
else if (n < 100)
...
みたく書かないかなって思っただけなんだけど

693 :連投スマソ:2006/07/08(土) 18:58:13
誤解されるとめんどうなのど追記
フォーマット記述子の*も一応知ってはいるよ。

694 :仕様書無しさん:2006/07/08(土) 19:35:11
>>692
使えない新人スレへどうぞ

695 :仕様書無しさん:2006/07/08(土) 19:47:16
>>692
printfの機能使えばいいじゃん

696 :仕様書無しさん:2006/07/08(土) 20:41:48
>>692-693
>>683の一行目がアレなんだとオモう

697 :仕様書無しさん:2006/07/09(日) 05:48:48
#define NUM_MAX_LEN 10

char buf[256]="";
itoa( n, buf, 10 );
int len = NUM_MAX_LEN - strlen( buf );
for(int i=0; i<len; i++) printf( " " );
printf("%d", n);


698 :仕様書無しさん:2006/07/09(日) 22:43:12
itoaは非標準関数だから無意味に使われるとやる気なくすよな。
とか、あえて一番どうでもいいとこに突っ込んでみたり。

699 :仕様書無しさん:2006/07/09(日) 23:41:17
おおー
多重ループから抜けるときー
goto使うの嫌だからとー
フラグをー 立たせてー breakしてー
外でもフラグ見てもう一度breakするのをー
やー めー ろー おおー

700 :仕様書無しさん:2006/07/09(日) 23:56:31
必ず下に抜けるだけいいじゃないか
と言ってみる

701 :仕様書無しさん:2006/07/10(月) 00:38:17
>699
goto使えない言語だとそれ封じられたら無意味に例外投げるしかない
ってこともままあるんだがどっちがいい?
あるいはそれだけのためにループの部分を関数に切り出して
breakの代わりにreturnするか。

// そもそも多重ループなんぞ書くなと言われたらどーしよーもないが……
// アンタこれまでに仕事で一度も多重ループ書かずに済んできたのかい? と聞き返したい気もするなそれだと

702 :仕様書無しさん:2006/07/10(月) 00:39:59
>>699
俺もどうするか聞きたい
今後参考にするので

703 :仕様書無しさん:2006/07/10(月) 00:41:14
多重ループ書くことはあるが、その深いネストから
一気に脱出しなきゃならん要件にはぶつかったことがないな。

704 :仕様書無しさん:2006/07/10(月) 01:15:05
メインループ(){
 ゲームループ(){
  ステージループ(){
  :
   if(全員死亡) ゲームループの外へ
  :
  }
 }
}

こんな時かな?

705 :仕様書無しさん:2006/07/10(月) 01:43:38
>>704
そのレベルで関数が分かれていないなんて、ありえない。

706 :仕様書無しさん:2006/07/10(月) 03:13:31
>701,702
ループを脱出したい部分の終了条件を満たすようにループ変数の値を設定すればいい。
多重ループを全部抜けたい場合はもちろん、多重ループのうちのいくつかだけを抜けたい場合も思いのまま。

707 :仕様書無しさん:2006/07/10(月) 06:42:52
ループ変数って余計分かりにくくなりそうだな

708 :仕様書無しさん:2006/07/10(月) 09:58:28
>>706
それって例えばfor(int i = 0; i < 10; i++)の中でi = 10;するって事?
(露骨に悪い例でスマンが)

「通常の終了条件を満たしたわけじゃないけど、
 特殊な理由でループを抜けたい」
って意図をコードに盛り込めない点で好きじゃないなぁ……。
ラベル付きbreak;があるならそっち使いたいな。
それ以前に関数化でほとんど片が付くと信じたいが。

しかし多重ループ脱出って意外に悩んだ記憶無いな。
例外処理と並ぶgotoの最後の存在意義じゃなかろーか。

709 :仕様書無しさん:2006/07/10(月) 20:29:04
for(int i=0 ; i<HOGE && loop_flg ; i++) {
  for(int j=0 ; j<HAGE && loop_flg ; j++) {
    for(int k=0 ; k<HUGE && loop_flg ; k++) {
  
    if( var[i][j][k] == HOGEHAGE ) loop_flg=false;
    }
  }
}


710 :仕様書無しさん:2006/07/10(月) 20:46:52
loop_flgの部分を括りだしたら何か出来るかな

711 :仕様書無しさん:2006/07/10(月) 21:08:32
for(int i=0 ; i<HOGE && loop_flg ; i++) {
  for(int j=0 ; j<HAGE && loop_flg ; j++) {
    for(int k=0 ; k<HUGE && loop_flg ; k++) {
      for(int l=0 ; l<HUGE && loop_flg ; l++) {
        for(int m=0 ; m<HUGE && loop_flg ; m++) {
          for(int n=0 ; n<HUGE && loop_flg ; n++) {
            if( var[i][j][k][l][n][m] == HOGEHAGE ) loop_flg=false;
          }
          if( l<HUGE ) loop_flg=true;
        }
        if( var[i][j][k][l] == HOGEHOGE ) loop_flg=false;
      }
    if( var[i][j][k] == HOGEHAGE ) loop_flg=false;
    }
  }
}


712 :仕様書無しさん:2006/07/10(月) 22:53:05
とりあえず変数名に"l"は使わないな

713 :仕様書無しさん:2006/07/10(月) 23:30:12
変数名のiとjの区別が付きにくくなってきた今日この頃。
失明するのは時間の問題か。

714 :仕様書無しさん:2006/07/10(月) 23:40:46
見やすいフォントを使いなされ


715 :706:2006/07/10(月) 23:52:46
>>708
goto が使えなかったりする場合の最後の手段ということで。

716 :仕様書無しさん:2006/07/11(火) 00:31:51
>706
その場合だとむしろ699のアプローチを取ってしまいそうな俺ガイルorz
まぁ、多重脱出がものすごく例外的な実行パス上の話だったらやらんけど。
(意味的に「どの条件がループの肝なのか」ってとこのさじ加減で)

717 :仕様書無しさん:2006/07/11(火) 15:55:05
>>701
goto が使えない言語で尚且つ多重ループからの break も不能な言語って何て言語?


718 :仕様書無しさん:2006/07/11(火) 15:57:05
>>713
大きいディスプレイに低解像度で表示するとよい。


719 :仕様書無しさん:2006/07/11(火) 16:16:11
>>717
日本語かな?
gotoによる即結論はだめで、話の多重ループからの脱出も不可能。

720 :仕様書無しさん:2006/07/11(火) 16:16:24
フォントを変えればいい

721 :仕様書無しさん:2006/07/11(火) 16:53:55
>>713
俺はii jj というふうに二つ続けてる

722 :仕様書無しさん:2006/07/11(火) 17:02:41
ijiijiijijjijjjijijiijiiiiijijijiiijijijijijijijijijiiiijijiji

723 :仕様書無しさん:2006/07/11(火) 18:16:46
flag |= HOGE_MASK;
LOOPXX:
if( flag & HOGE_MASK ) != 0 ) { /* このように記述しないと */
goto LOOPXX; /* 正しいコードが出力されない */
}

某大手メーカーがハードの検査用プログラムとして出していたものだが
コメントで笑わせて貰った。
少なくとも組み込み系なら常識だと思うのだが…。


724 :仕様書無しさん:2006/07/11(火) 18:18:06
印象に残ったスレへどうぞ

725 :仕様書無しさん:2006/07/11(火) 18:30:48
>>723
括弧が対応してないから正しいコード以前にコンパイルが通りませんよ。

726 :仕様書無しさん:2006/07/11(火) 18:35:05
> 括弧が対応してない

727 :726:2006/07/11(火) 18:38:36
ごめん間違えた

728 :仕様書無しさん:2006/07/11(火) 18:47:58
>>723
括弧が対応していると脳内で補完して読んでも、無限ループに入ることが気になってしまう。
結局間違いだらけで、何が組み込み系の常識なのかわけわかめ。

729 :仕様書無しさん:2006/07/11(火) 18:52:20
HOGE_MASKが0なら抜け……る?

730 :仕様書無しさん:2006/07/11(火) 19:09:32
別のタスクが flag を書き換える (HOGE_MASK で 1 になったビットを落とす) 筈なので
それをビジーウェイトしている、ってだけだ。

   ただ、普通はそんな事で goto など使わない。

731 :仕様書無しさん:2006/07/11(火) 20:52:48
コメントを入れないとコンパイラがバグるんだろう。gotoは偽の手がかりだ。

732 :730:2006/07/11(火) 22:59:20
…コメント読んでてふと思ったんだが、

  while (flag & HOGE_MASK)
    ; /* wait for reset */

これだと最適化で消えてしまうから goto を使ってる、って事なのか?
flag が volatile でもそうなるなら、それはしょうがないかも…

733 :仕様書無しさん:2006/07/11(火) 23:01:36
>729
もちろん抜ける。GMASKで除去できるのでもおk。
でも、マスクかかってるなら、それはそれで
なんかいろんな事妄想しちゃうよね。

734 :723:2006/07/12(水) 10:00:34
すまん、括弧が対応してないのはこっちのミスだわ。
結論としては>>730が言ってた通りなのだが、
flagが、volatile されてないんだよね。
コメントとその事実を総合して考えると、こいつvolatile の
使い方知らないんじゃなかろうか?って事で笑えたわけだ。


735 :仕様書無しさん:2006/07/12(水) 22:11:04
入力画面→入力確認画面→修正ボタンで入力画面へ
ありがちな遷移だが、これを何度も繰り返すと特定の文字が増えていく・・・
ありがちなバグだが、10年もの間なんで誰も気づかないんだよ

736 :仕様書無しさん:2006/07/14(金) 23:17:44
俺の書いたソースを見て、
一体何人の人が退社を決意してくれただろうか。

これからも頑張ってソースを書き続けて、
より多くの人に幸せを授けたいと思う。

737 :仕様書無しさん:2006/07/14(金) 23:41:31
そんなことより、この俺のソースコードを見てくれ。
こいつをどう思う?

738 :仕様書無しさん:2006/07/14(金) 23:43:50
すごく・・・スパゲッティです

739 :仕様書無しさん:2006/07/15(土) 00:51:20
_ □□    _      ___、、、
  //_   [][]//   ,,-―''':::::::::::::::ヽヾヽ':::::/
//  \\  //  /::::::::::::::::::::::::::::::i l | l i:::::::ミ  このスパゲッティを
 ̄      ̄   ̄/ /:::::::::,,,-‐,/i/`''' ̄ ̄ ̄ `i::;|  
―`―--^--、__   /:::::::::=ソ   / ヽ、 /   ,,|/  作ったのは 
/f ),fヽ,-、     ノ  | 三 i <ニ`-, ノ /、-ニニ' 」')    
  i'/ /^~i f-iノ   |三 彡 t ̄ 。` ソ ハ_゙'、 ̄。,フ | )  誰だぁっ!!
,,,     l'ノ j    ノ::i⌒ヽ;;|   ̄ ̄ / _ヽ、 ̄  ゙i )  
  ` '' -  /    ノ::| ヽミ   `_,(_  i\_  `i ヽ、 ∧ ∧ ∧ ∧
     ///  |:::| ( ミ   / __ニ'__`i |  Y  Y Y Y Y
   ,-"        ,|:::ヽ  ミ   /-───―-`l  |  //     |
   |  //    l::::::::l\    ||||||||||||||||||||||/  |     // |
  /     ____.|:::::::|    、  `ー-―――┴ /    __,,..-'|
 /゙ー、,-―'''XXXX `''l::,/|    ー- 、__ ̄_,,-"、_,-''XXXXX |
/XX/ XXXXXXXXXX| |         _,  /ノXXXXXXXXXX|

740 :仕様書無しさん:2006/07/15(土) 04:51:03
俺俺、俺だよ俺。

741 :仕様書無しさん:2006/07/15(土) 16:53:44
volatile最強

742 :仕様書無しさん:2006/07/15(土) 19:31:31
ヴォァチェ

743 :仕様書無しさん:2006/07/16(日) 15:35:41
>736
やめるまではそのソースで地獄みるけどな

744 :仕様書無しさん:2006/07/16(日) 16:08:11
>>723
組み込み系のこういう処理って
間違って最適化されてる部分がぜってーありそうな気がする。

745 :葉猫 ◆Jz.SaKuRaM :2006/07/17(月) 11:20:42
いやないから。。。。。

746 :仕様書無しさん:2006/07/17(月) 12:10:03
qsortの使い道もわからん無能はさっさと死ねって

747 :仕様書無しさん:2006/07/17(月) 14:54:48
コンテナでvectorしか使えない人、要素をループで検索するのやめてください。
せめてmap使ってください

748 :仕様書無しさん:2006/07/17(月) 15:04:01
こんてな ?

749 :仕様書無しさん:2006/07/17(月) 15:23:04
STLのコンテナでそ

750 :仕様書無しさん:2006/07/17(月) 15:48:41
>>747
やだ
たしかmapじゃランダムアクセスできなかったよね?

751 :仕様書無しさん:2006/07/17(月) 17:11:42
>>750
何を言っているのか解らんが
・vector … プログラマが決定した順序で、連続して配置される。
・map … 順序や連続性よりも、キー一発でアクセスできる事を重視。
まったく用途が違うんだが。

752 :仕様書無しさん:2006/07/17(月) 17:23:35
だから頻度も分からん検索のためだけに、mapを選択することはないって事だろ。

753 :仕様書無しさん:2006/07/17(月) 18:38:18
そこでわざとHashTable

754 :仕様書無しさん:2006/07/17(月) 22:11:57
stdextですね

755 :仕様書無しさん:2006/07/17(月) 22:26:32
>>747
頭悪そう。きっと中卒か高卒ぐらい。かわいそう。

756 :仕様書無しさん:2006/07/17(月) 22:29:49
2ちゃんねる版 邪悪なCコードコンテスト
http://pc8.2ch.net/test/read.cgi/tech/1042802490/

757 :仕様書無しさん:2006/07/17(月) 22:34:26
>>751
特定の使い方しかしないならそれでいいけど
色々な方法で要素を探さないといけない時はどうするの?


758 :仕様書無しさん:2006/07/17(月) 22:38:41
明確なキーがあるときはmapを使うだろ

759 :仕様書無しさん:2006/07/17(月) 23:28:46
try
{
hoge.exec()
}
catch(Exception e)
{
System.exit(0);
}



760 :仕様書無しさん:2006/07/18(火) 02:04:06
>>757
複数の map と単一の vector を組み合わせるでしょう、普通。
「速度なんかどうでもいい、メモリを節約!」という場合は set とか。

761 :仕様書無しさん:2006/07/18(火) 04:39:27
複数のキーと条件の組み合わせで動的に検索する場合、vectorのテーブルを
毎回読み出して、map作るわけ?「○年○月○日以降生まれ」のように大小
比較とか、キーがユニークとならない場合mapは使えんと思うが?

それと、マッチしたアイテムリストをレコードの任意の要素を選択してソート
して再表示する時は?

762 :仕様書無しさん:2006/07/18(火) 05:05:15
そういう場合は、そもそもvectorなんか使わんと思うが?

763 :仕様書無しさん:2006/07/18(火) 08:16:06
>>761
わかってないのはお前だけだから心配しなくていいよ

764 :仕様書無しさん:2006/07/18(火) 08:31:07
>>761
赤面して打ち込んでそうだな
適材適所もわからんのか

765 :仕様書無しさん:2006/07/18(火) 09:07:15
multimap...

766 :仕様書無しさん:2006/07/18(火) 09:25:55
LinkedHashMap

767 :仕様書無しさん:2006/07/18(火) 09:59:50
>>760の例を教えてもらいたい

768 :仕様書無しさん:2006/07/18(火) 10:19:10
なんだ、プログラムも書けない自称接待エンジニア(SE)さんばかりでしたか。

769 :仕様書無しさん:2006/07/18(火) 11:11:47
>>768
ああ、接待エンジニアでSEか。うまい。
山田君、座蒲団一枚あげて。


770 :仕様書無しさん:2006/07/18(火) 19:39:04
いっしょうけんめい、がんばってべんきょうしているんだからよいじゃないか
べつにせったいえんじにあでも、おまえらみたいなぎじゅつばかよりは
かいしゃのやくにたつ。

771 :仕様書無しさん:2006/07/18(火) 19:58:57



???

772 :仕様書無しさん:2006/07/18(火) 21:24:46
> いっしょ
>   に
>   し の

???

嫌でつ。

773 :仕様書無しさん:2006/07/19(水) 10:24:46
>いっしょうけんめい、がんばってべんきょうして
>おまえら
>のやくにたつ。

良い心がけだ。頑張ってくれ給え。

774 :仕様書無しさん:2006/07/20(木) 00:08:50
#include <stdio.h>

int ret;

int func1( void )
{
ret = なにかしらの処理;
return ret;
}

int func2( void )
{
ret = なにかしらの式;
return ret;
}

ほぅ、みんなが使うから使い回しか・・・

775 :仕様書無しさん:2006/07/20(木) 00:42:40
>774
多分func1()、func2()の戻り値を受けるのもretなんだろうな('A`)

776 :仕様書無しさん:2006/07/20(木) 01:07:49
/*ふぁいる1 */
int hoge1

777 :仕様書無しさん:2006/07/20(木) 01:13:45
途中で送信スマソ
最近こんなのがあった

/* ふぁいる1 */

int hoge ()
{
char str[10] ;
...
なんかする

...


hoge2(str)
}




/* ふぁいる2 */
int* p;

void hoge2(char* str)
{
p = (int*)str;
}

/* ふぁいる3 */
extern int* p;


778 :仕様書無しさん:2006/07/20(木) 01:50:19
>777
……それでそのプログラムは動いてるのかほんとに。
ふぁいる2、3のpを何処でいつ誰がいじるかに掛かってるわけか……

779 :仕様書無しさん:2006/07/20(木) 02:55:59
p = (int*)str;

が素敵w

780 :仕様書無しさん:2006/07/20(木) 07:34:19
>>778
hoge2() はぢつはここでしか呼ばれてないから今のところ
大丈夫っぽい

>>779
str[0] しか使って無いから(w

ふぁいる3 はただ単に名前がかぶったんじゃないかと思う。
つまり他に int* pがあって、ふぁいる2 のint* pはもともと
char* p で、コンパイル通んなくてint にしてー、とか妄想
してる。



781 :仕様書無しさん:2006/07/20(木) 08:05:56
共用体の替わりなのかと思った

782 :仕様書無しさん:2006/07/26(水) 14:57:14
SetとGet両方やるから合わせてセゲット

783 :仕様書無しさん:2006/07/26(水) 16:12:54
下駄と雪駄

784 :仕様書無しさん:2006/07/26(水) 18:01:59
下っ駄ーロボ

785 :仕様書無しさん:2006/07/26(水) 18:03:17
うおっまぶしっ

786 :仕様書無しさん:2006/07/26(水) 18:43:06
>>783
誰が上手いことを言えと

787 :仕様書無しさん:2006/07/27(木) 14:23:28


788 :仕様書無しさん:2006/07/27(木) 18:46:13
グッジョブ

789 :仕様書無しさん:2006/07/30(日) 07:35:16
http://society3.2ch.net/test/read.cgi/atom/1153668032/1-100

790 :仕様書無しさん:2006/08/01(火) 02:32:50
排他してくれといいました。。。出来上がったコードは詐欺コードでした。
端折って書くとこんな感じ

char g_dat[256];

int threadProc(void*)
{
  CRITICAL_SECTION cs;
  InitializeCriticalSection(&cs);
  while(1)
  {
    EnterCriticalSection(&cs);
    g_datを変更
    LeaveCriticalSection(&cs);
    if(なんとか)break;
  }
  DeleteCriticalSection(&cs);
}

。。。使い方を理解してください、中年猿

791 :仕様書無しさん:2006/08/01(火) 07:09:43
>>790
すまん。俺には分からん。


792 :仕様書無しさん:2006/08/01(火) 08:05:38
>>790 の意味がわからない俺がいる

793 :仕様書無しさん:2006/08/01(火) 10:20:53
この会社辞めようと思った電波な指示 #1

794 :仕様書無しさん:2006/08/01(火) 10:45:02
g_datを変更するときだけロックかけてるつもりなんだよな?
しかしcsが関数内で消滅してるという

795 :仕様書無しさん:2006/08/01(火) 11:31:08
csをどっかに渡してるとか。

796 :仕様書無しさん:2006/08/01(火) 16:42:03
static CRITICAL_SECTION cs; にしておいて、初期化は
静的にやるようにしないといけないってことだよね。

POSIX Thread だったらこんな感じにしろってことだろ。
static pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_lock(&m);
/* 処理 */
pthread_mutex_unlock(&m);


797 :仕様書無しさん:2006/08/01(火) 21:30:55
g_dat 何に使ってんだよ!?
じゃないの?

798 :仕様書無しさん:2006/08/01(火) 23:20:21
暇だしg_datは何を意味してるのか考えてみるか
ゴキジェットはg_jetだし・・・

799 :仕様書無しさん:2006/08/01(火) 23:29:12
g_ 御苦労
dat だった

800 :仕様書無しさん:2006/08/02(水) 00:21:47
でも、staticって初期化の順番が規定されてないからマルチスレッドの関数内で使うのは危険とどこかにあった。それにg_datはグローバルだから、g_datの同期(排他?)用のオブジェクトもグローバルにするのがお勧めな感じ。

801 :JoJo風に読め:2006/08/02(水) 00:21:56
g ゴゴゴ…
_ 〜(中略)〜
dat だとォ!?

802 :637:2006/08/02(水) 00:52:47
やっと直ったので載せられるコード。
ユーザー側にインストールしたActiveXコントロールでオブジェクトを作ってる。

function DoClearLoginInformation()
{
//Try to stop Engine via WMI.
try
{
var a = new ActiveXObject("xxxxx.yyyyy");
var b = a.CreateObjectSafe("WbemScripting.SWbemLocator");
var c = b.ConnectServer();
var d = c.Get("WIN32_Service=\"サービス名\"");
d.StopService();
}
catch(e)
{
}

OnLoad();

}

803 :仕様書無しさん:2006/08/02(水) 08:58:06
>>800
C言語の場合は実行前に静的な値が入るだけなので問題なし。
問題になるのはC++の場合じゃないだろうか。


804 :800:2006/08/02(水) 12:54:26
>>803
なるほど。調べときまつ orz

805 :仕様書無しさん:2006/08/05(土) 18:03:23
社内の標準フレームワークだとか言っているDLLのヘッダファイル。

#ifdef _DLL_EXPORT
class __declspec(dllexport) CommonUtil
#else
class __declspec(dllimport) CommonUtil
#endif
{
  BaseUtil baseUtil;
public:
  …
  void SetVal(int val) { baseUtil.SetVal(val); }
  …
};

これをincludeして CommonUtil::SetVal()を呼び出すと、BaseUtil::SetVal()
の呼び出しにインライン展開されちゃうんだよね。
BaseUtilの実装部分はDLLに含まれているにもかかわらず、エクスポート
してないんで、リンクエラーになるんですけど…

で、みんなどうしてるかというと、BaseUtil.cppをコンパイルして
スタティックリンクしてますww
なにせ、インライン展開されてエラーが出るのがひとつやふたつじゃないんで…
もう、何のためのDLLなんだかww

しかもどうやら、DLLが作られたときのBaseUtil.cppと、手元にある
BaseUtil.cppは微妙に違うらしい…。 ということは、インライン展開されて
呼び出されたBaseUtilの処理と、インライン展開されず、DLL内部で呼ばれた
BaseUtilの処理が異なる可能性も…

ヤバすぎですww

806 :仕様書無しさん:2006/08/05(土) 18:09:17
標準フレームワークだとか言っているDLLのヘッダファイル。

#ifdef _DLL_EXPORT
class __declspec(dllexport) CommonUtil
#else
class __declspec(dllimport) CommonUtil
#endif
{
  BaseUtil baseUtil;
public:
  …
  void SetVal(int val) { baseUtil.SetVal(val); }
  …
};

これをincludeして CommonUtil::SetVal() を呼び出すと、BaseUtil::SetVal()
の呼び出しにインライン展開されちゃうんだよね。
で、BaseUtilの実装部分はDLLに含まれているにもかかわらず、エクスポート
してないんで、リンクエラーになる…

807 :806:2006/08/05(土) 19:29:30
あう、二重投稿になっちまった…

808 :仕様書無しさん:2006/08/06(日) 01:38:43
何でもインターネットや人の作ったサンプルのコピペで、済まそうとする馬鹿が
いてむかつくんですけど

マジで理解してコード書けや!!!!!!!!!!!!!
動かなかったことを人のせいにするんじゃねーよ!!!!!!!!
コピペで給料貰ってんじゃねーよ!!!!!!!!!!!!

809 :仕様書無しさん:2006/08/07(月) 07:44:09
まずこんなのを発見して↓
String isHoge(){
 if(i > setHoge()){
  return null;
 }
 else{
  return "False";
 }
}

setHogeを確認したらこんなので↓
String setHoge(){
 return this.hoge;
}

まさかと思ってgetHogeを探したら予想通り↓でした
void getHoge(int i){
 this.hoge=i;
}

何か嫌なことでもあったのだろうか?

810 :仕様書無しさん:2006/08/07(月) 08:40:13
そのクラスが主語でsetとgetなんだろうか。

811 :仕様書無しさん:2006/08/07(月) 12:36:09
>>809
逆に考えてみたんだと思う

812 :仕様書無しさん:2006/08/07(月) 23:03:23
あげちゃってもいいさ と考えるんだ

813 :仕様書無しさん:2006/08/07(月) 23:27:41
前にもどっかのスレで書いたけど

 void setFooBar() {
   getFooBar(foo_, bar_);
 }

絶対なんか嫌な事があったに違いないと思う。たぶn。。。

814 :仕様書無しさん:2006/08/09(水) 20:41:24
とりあえずjavascriptはhtmlのヘッダ内に
まとめて書いて欲しいと思うのはおかしいのでしょうか?
常識だと思っていたが、実はもう考えが古いのだろうか。
bodyのあちこちに散乱しているのがもしかして今流行り?
あまりにも汚いソースを見すぎて
自分の中の常識を見失いつつあるのか?
もうだめぽ 誰か教えてください・・・

815 :仕様書無しさん:2006/08/09(水) 20:44:42
教えて君ウザイ

816 :仕様書無しさん:2006/08/09(水) 20:47:21
レス早!
なるほど、ありがとうございました。

817 :仕様書無しさん:2006/08/09(水) 21:18:28
>>814
外部ファイルに分割するのが普通。
ヘッダになんて書かない。書くわけが無い。

818 :仕様書無しさん:2006/08/09(水) 23:45:25
ボディに書くってある意味勇者だよな。
だが俺にはできん。

819 :仕様書無しさん:2006/08/09(水) 23:52:23
wiki のプラグインで堂々と body に突っ込む俺が来ましたよ
xhtml 化のことを考えると外に出したいのだが、めんどい


820 :仕様書無しさん:2006/08/10(木) 00:27:59
なんかエロくなってきた気がする

821 :仕様書無しさん:2006/08/11(金) 06:06:23
つまりヘッダに書く奴は顔射好きと

822 :仕様書無しさん:2006/08/11(金) 12:19:08
プログラムコードはさらけ出せないが
非プログラム系企業(零細)の主要業務をサポートするソフト

中堅(プログラミング歴20年)が作ったプログラム。
  とても大きい容量で使いにくく、ある程度は手作業(エラー出てないかとかをCtrl+Fで検索)
  作成に1年かかった。(作ったのは5年ほど前)
  エクセル非対応

今年入ってきた新人が本を見ながら試行錯誤して作った同じ事をさせるプログラム。
  中堅のプログラムよりも容量が少ない(3割容量を削減。あるソフトは7割減った)
  全部自動で行う。(エラーを自動検出。POPメニューが出力される。)
  エクセル対応
  作成に3ヶ月かかった。

中堅が役立たずなのか、この新人が素質あるのかレベル差が違いすぎ。

新人の作ったソフトのほうが使いやすいため、中堅が作ったソフトはその本人しか使ってません。
プログラムって本人のセンスによって差が大きすぎ。特に一人でソフト作ると更に謙虚に出るね。


823 :仕様書無しさん:2006/08/11(金) 12:22:42
>>822
> 作ったのは5年ほど前

これはでかいんじゃね?ライブラリとか開発環境とか、だいぶ違うだろ。
まぁそれだけじゃないだろうけどね。

×謙虚
○顕著

824 :仕様書無しさん:2006/08/11(金) 21:31:51
プログラミング歴20年で中堅?
3年経ったらもう中堅だろ

825 :仕様書無しさん:2006/08/11(金) 21:32:09
>>808
コピペで開発するのが、一番生産性がいいのでつい・・・・


826 :仕様書無しさん:2006/08/11(金) 22:12:27
たぶん「ライブラリ?何それ?」っていう人ばっかりなんだろうね。

827 :仕様書無しさん:2006/08/11(金) 23:06:57
>>826
うん。そういうヤツ多い。

828 :仕様書無しさん:2006/08/12(土) 01:22:41
>>825
コピペは生産ではない。

829 :仕様書無しさん:2006/08/12(土) 01:25:34
「ばか、ライブラリはトショカンだろ!」

830 :仕様書無しさん:2006/08/12(土) 03:43:03
ライブラリもどきな、ユーティリティー関数を集めたクラス、、、辞めてください
こんな腐ったクラス、作成者しか使ってませんって

class CUtil { char _buf1[1024]; char _buf2[1024]; ,,,,ほかいろいろ
public:
int toInt();
const char* format(ひきすう);
・。・。・。・。・
};


831 :仕様書無しさん:2006/08/12(土) 03:48:38
>>825
お前、コピペしかできないだろwwwカスだなwwww

832 :仕様書無しさん:2006/08/12(土) 08:29:27
852 名前:えー,だってこのほうが分かりやすいでしょ?[sage] 投稿日:2006/08/10(木) 08:33:29
if(i==0){
strcpy(buf,"0");
}else if(i == 1){
strcpy(buf,"1");
}else if(i == 2){
strcpy(buf,"2");
}
863 名前:仕様書無しさん[sage] 投稿日:2006/08/10(木) 21:02:57
>852 >856
勉強不足で申し訳ないのですが>852のソースの何がいけないのか教えてもらえませんか?
またどのようにするのがベストなんでしょうか?

867 名前:仕様書無しさん[sage] 投稿日:2006/08/10(木) 21:50:36
buf[0] = 30+i かな

889 名前:876[sage] 投稿日:2006/08/11(金) 00:06:38
なんだかんだで >>852 はそんなに悪くないコードだという理解でよろしいでしょうか!


833 :仕様書無しさん:2006/08/12(土) 09:55:12
なんだこいつ

834 :仕様書無しさん:2006/08/12(土) 18:40:00
>>832
>>831

835 :仕様書無しさん:2006/08/17(木) 13:23:06
>>818
ボディは単発で短いやつの場合に書かない?
ページ開いた時の日時を出すだけとか。(あまり意味ないか…)


836 :仕様書無しさん:2006/08/18(金) 05:52:53
マジでこの業界、、コードかけねーやつ、消えろや
人に迷惑撒き散らして、大人のやることじゃねー

あ、、、この業界、ガキしかいなかったかwww

837 :仕様書無しさん:2006/08/18(金) 08:23:55
コピペでスパゲッティ生産して、長時間デバッグを続ける。

君はよく頑張ってるね。


綺麗で単純なコードを書いて、早く終わらせる。

暇なら手伝え。

838 :仕様書無しさん:2006/08/18(金) 23:01:11
>>837
真理

もちろん評価は残業してがんばってる用に見えるほうが上で給料も上

839 :仕様書無しさん:2006/08/19(土) 01:23:28
そしてコピペで生産されたスパゲッティのメンテを頼まれる俺。


840 :仕様書無しさん:2006/08/19(土) 23:42:04
日本人プログラマが生産しているのは”スパゲティではなくて”でなくてきっと”そば”です。

841 :仕様書無しさん:2006/08/20(日) 00:35:32
>>840
その心は?

842 :仕様書無しさん:2006/08/20(日) 00:38:29
>841
噛まなければ3口で食える。
(=理解しようとせずに必要最小限弄るだけなら何とかなる(ように見える))

843 :仕様書無しさん:2006/08/20(日) 10:32:12
だがな
スパゲティはソースでごまかしはきくが、そばの麺はごまかしきかんよ


844 :仕様書無しさん:2006/08/20(日) 20:37:45
836見て
類友
が脳裏に浮かんだのは俺だけだろうか

845 :仕様書無しさん:2006/08/20(日) 22:50:23
>>844
いえ、少なくとももう一人、同じ感想を持った人が存在します。

846 :仕様書無しさん:2006/08/21(月) 02:08:55
>>824
入社した瞬間に中堅じゃないの?

847 :仕様書無しさん:2006/08/21(月) 04:11:34
作成者の書かれていないソース。

848 :葉猫 ◆Jz.SaKuRaM :2006/08/21(月) 23:05:08
ソースに名前入れるの嫌いだからよっぽどのことが無い限り入れた事はないな (・∀・)

849 :仕様書無しさん:2006/08/21(月) 23:08:58
ああついでにここでも名前入れずにROMっててくれたまえキチガイクン

850 :仕様書無しさん:2006/08/21(月) 23:10:42
恥ずかしいソースを書くから、名前入れたくないんだろ。

851 :仕様書無しさん:2006/08/22(火) 05:26:50
作成者が書かれてない上に下手なコードをメンテしてて
>>588みたいな状況になった事がある。

俺もそんな大したコードが書けるわけじゃないけどさ。
せめて変数名にわかりやすい英単語使うくらいはしてくれ _| ̄|○

void syori1(int a ,b)
{
 int c, d, e f ... 
}

みたいなの見た時は本気で逝きそうになった。

852 :仕様書無しさん:2006/08/22(火) 06:52:43
原作者不明とか、コメントしておけば?

853 :仕様書無しさん:2006/08/22(火) 06:54:36
つか、1文字変数はやめた方がいいよ。検索しにくいから。
いくらバカでもaaaとかbbbとかにしとけ。

854 :仕様書無しさん:2006/08/22(火) 07:05:24
>>853
幼稚園児の年少組と年長組程度の違いしかないようだが。

855 :仕様書無しさん:2006/08/22(火) 08:59:00
>>851
void syori1(int a ,b)
{
 int c[30];
}
ってやつなら見たことある
本気で殴り倒しそうになった

856 :仕様書無しさん:2006/08/22(火) 09:00:37
int hage,kasu,sine,boke;

とか書いてるソースを見た時思わず同意した

857 :仕様書無しさん:2006/08/22(火) 16:43:38
MFCアプリで、任意のタイミングでダイアログを閉じるのに
「CDialog::OnCancel();」を呼んでいる。
そして、ダイアログ終了処理の一部が派生先のOnCancelに書かれている…

858 :仕様書無しさん:2006/08/23(水) 08:20:07
>857
明示的にCDialog::OnCancel()を呼んでいれば問題だが、OnCancel()自体
は仮想関数だから、派生ダイアログオブジェクトへの実体参照または、
派生ダイアログオブジェクトのポインタ経由で呼べば、ちゃんと派生
クラスのOnCancel()が呼ばれると思うけど?

まぁ、普通ならPostMessage(WM_COMMAND,IDCANCEL,0)でしょうな。


859 :仕様書無しさん:2006/08/23(水) 09:53:22
>>858
だから、OnCancel() オーバーライドしてんのに基底クラスを明示して呼んでる、って話でしょ?

860 :仕様書無しさん:2006/08/23(水) 10:03:45
>>859
派生クラスに書かれているという「ダイアログ終了処理の一部」が具体的
にどんな処理か判らんが、オーバーライドされているOnCancel()を呼ばれ
たくないという理由があれば、明示的に基底クラスを呼ぶことは問題では
ないと思うが?

それを避けるために、わざわざメンバ変数を設けて派生クラスのOnCancel()
内で、メンバのフラグを見て、「ダイアログ終了処理の一部」をスキップ
させるというのも、美しいとは思えん。

OnCancel()は、タイトルバーの[×]ボタンのクリックなどからも呼ばれる
しな。

861 :仕様書無しさん:2006/08/23(水) 11:02:10
>>860
>オーバーライドされているOnCancel()を呼ばれ
>たくないという理由があれば
当たり前。

そうでないからこそ >>857 が問題視して書き込んでいる、という前提で、
>>858 の「呼んでいれば問題だが」に対して
「呼んでる、って言ってんじゃん」という突っ込みを入れたに過ぎない。

862 :仕様書無しさん:2006/08/23(水) 11:28:41
>>822
経歴20年って、、、
40代PGは「でもしか」多いぞ(^^;

863 :仕様書無しさん:2006/08/23(水) 16:13:29
>>862
プログラマの世界に限った話ではないが、やってる年数が長ければ
良いってもんでもない。長くやっているのは何か別の事情があって
のことかも知れないからだ。(それしかできない、またはその他
政治的な理由でそれしかやらせてくれない、など)。


864 :仕様書無しさん:2006/08/23(水) 22:10:29
「このコードを書いたのは誰だぁ!!」(AAry

865 :仕様書無しさん:2006/08/23(水) 22:57:57
>>822
なんとなく想像つくのは
まぁ新人の方は本見ながらということで、そこに書いてある通りに作ったはず。
基本、オイラも知らない言語はそんな感じで作る。
そのレスだけじゃ、新人が特別スゴイとは思わないな。
そのレベルならたいていの人はそこまでは到達できる。
その中堅にも同じ本を渡せばいいだけ。
それに5年も前のと比較しちゃぁね。当時は確かドットネットもなかったような・・・・
仕様もおそらく本に書いてあるものだろう(自動検出、POPメニュー等)。
入力チェックは自動で、とかPOPメニュー作ってとか
その新人が作ったものと同じ仕様を要求して本渡せば
別に中堅でも作れるんじゃないの?
センスっつか要領のよさだと思う。センスがあるのは本の著者。
でもこれも結構普通だと思う。
ほんとにセンスがあるかどうかは複雑怪奇な業務を理解して
それに見合う設計ができること。

866 :葉猫 ◆Jz.SaKuRaM :2006/08/23(水) 23:05:47
つうかエクセルくらいVC6でもOLEで簡単に操作できるでちょ。。。。。。。。。。。。。

867 :仕様書無しさん:2006/08/24(木) 00:23:15
>>865
1を聞いて10を知る必要はないが、2や3を知れるセンスがなければ
本に書いてあるとおりなだけでモノが作れるわけないだろ。
1を聞いて1を知れないセンスのない輩もかなり多いのに。

868 :仕様書無しさん:2006/08/24(木) 02:26:52
>>866
さっさと死ね。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

869 :仕様書無しさん:2006/08/24(木) 11:02:59
>>865
さすがにそこまで言っては憶測が過ぎるべ。

しかしほんと>>822くらいの差って存在するよなぁ……。
モノの本では最大10倍(だっけ?)の生産性差が指摘されていたが。

しかし、しない人はホント勉強しないな。
そのへん、「自費で技術書買ったりしますか?」くらいの
質問だけで選り分けられる気がしてしょーがない。

上記質問にYesと答えるのはプログラマだ!
それを聞いて「よくやるなぁ(なんでそこまでするんだ)」的反応をするのは
適当にIT講習受けたサラリーマンだ!
ホント、ソフト屋は色々と地獄だぜヒャーハー

870 :仕様書無しさん:2006/08/24(木) 12:53:56
      ./       ;ヽ
      l  _,,,,,,,,_,;;;;i  <いいぞ ベイべー!
      l l''|~___;;、_y__ lミ;l  自費で技術書を買うやつははプログラマーだ!!
      ゙l;| | `'",;_,i`'"|;i |  買わない奴は適当にIT講習を受けたエセグラマーだ!!
     ,r''i ヽ, '~rーj`c=/
   ,/  ヽ  ヽ`ー"/:: `ヽ
  /     ゙ヽ   ̄、:::::  ゙l, ホント ソフト屋は地獄だぜ! フゥハハハーハァー
 |;/"⌒ヽ,  \  ヽ:   _l_        ri                   ri
 l l    ヽr‐─ヽ_|_⊂////;`ゞ--―─-r| |                   / |
 ゙l゙l,     l,|`゙゙゙''―ll___l,,l,|,iノ二二二二│`""""""""""""|二;;二二;;二二二i≡二三三l
 | ヽ     ヽ   _|_  _       "l ̄ ̄ ̄ ̄ ̄ ̄ |二;;二二;;二=''''''''''' ̄ノ
 /"ヽ     'j_/ヽヽ, ̄ ,,,/"''''''''''''⊃r‐l'二二二T ̄ ̄ ̄  [i゙''''''''''''''''"゙゙゙ ̄`"
/  ヽ    ー──''''''""(;;)   `゙,j"  |  | |


871 :仕様書無しさん:2006/08/28(月) 11:21:08
延々とクライアントと上司に対する愚痴がコメントとして残されていた時。

昔はファミコンのロムにこっそりテキスト入れたりしてたらしいが・・・

あとは、延々うめき声(// う・うう・・・・)とかが書かれてたソースは怖かった。

872 :仕様書無しさん:2006/08/28(月) 11:31:47
最近も時々あるよ
CDとかDVDとかがメインだから容量余ってるし

873 :仕様書無しさん:2006/08/28(月) 11:51:01
ダミーデータにそういうの入れておいたら面白そうだな

874 :仕様書無しさん:2006/08/28(月) 11:58:43
オレ、ガノタなんだけど、DBにテスト用のデータで機種コードとかを全部
RX-78-2とか、MSZ-001とか、モビルスーツの型番にしといたら、
上司がそのまま客先デモに使って、客に「モビルスーツを開発してるんですか?」
と言われたらしく、「変なデータ入れるな!」と怒られたことならある。

客はノリが良かったのに、上司ノリ悪いなと思った(´・ω・`)

っていうかデモ用に使うと知っていたなら、もっとマトモなデータ入れたのに・・・

875 :仕様書無しさん:2006/08/28(月) 21:09:50
そういや、花屋のシステム開発したとき「ラフレ死亜」だの「デンドロビウム」だの
テストデータに入れてたやついたけど、ガンオタだったのかな

876 :仕様書無しさん:2006/08/28(月) 22:02:25
今月から参画したとこ↓

仕様書なし。
前担当者既に不在。
Javadocいっさいなし。
数年前の修正箇所がコメントアウトで残してある。
比較は全てマジックナンバー、マジック文字列と。
同じ処理を繰り返す。


if (a.getA(b.getB()) != null && a.getA(b.getB()) != "") {
if ("3".equals(a.getA(b.getB())) || !("1".equals(a.getA(b.getB())))) {


ウウ... (;-Q)TTLL



・・・・・・・・・・・・。









877 :仕様書無しさん:2006/08/28(月) 23:06:10
// TODO:この実装のまま一年経過すると困るはず!

・・・ちなみにあと1ヶ月切ってる

878 :仕様書無しさん:2006/08/28(月) 23:09:30
ソニータイマーかよ

879 :仕様書無しさん:2006/08/28(月) 23:57:51
>>876
>ウウ... (;-Q)TTLL

文字化け?

880 :仕様書無しさん:2006/08/29(火) 00:01:50
えーっと・・・それはボケだよね?

881 :仕様書無しさん:2006/08/29(火) 00:17:26
縦に見るのか横に見るのかわかりづらいAAだな

882 :仕様書無しさん:2006/08/29(火) 01:02:45
昔流行った、あの黒いビニール製人形に似てるよ

883 :仕様書無しさん:2006/08/29(火) 01:32:15
>>881
冒冒グラフ乙

884 :仕様書無しさん:2006/08/29(火) 03:23:35
>>874
もう時効だと思うけど、建設重機関係のテストデータに
「賄賂建設」「丸投げ組」「孫請土木」「零細鉄工」等々の会社名を
ばんばん入れてたよ。「手抜土建」「肉欲企画」も確か使ったと思う。

たまたまそこらへんにあった漫画(ナニワ金融道)に出てきた会社名を
使っただけなんだけどね。

客先デモに使われなくて助かったのかもな。
同僚(後輩)になぜか怒られたw

885 :仕様書無しさん:2006/08/29(火) 05:03:06
>>874
バンダイはガンダムの権利関係にはものすごくうるさいから気をつけた方が。


886 :仕様書無しさん:2006/08/29(火) 07:14:46
>>885
外部流出かますかバンダイビジュアル、創通エージェンシー相手の案件で
やらなけりゃ大丈夫だと思いまふが。

887 :仕様書無しさん:2006/08/29(火) 07:40:28
バンダイへはマクロスデータでデモ汁

888 :仕様書無しさん:2006/08/29(火) 08:50:54
タカトクw

889 :仕様書無しさん:2006/08/29(火) 09:52:17
>>883
そこで冒冒グラフ連想する君が素敵だ。愛してる。

890 :588:2006/08/29(火) 10:02:30
♪たーかーとーくくろーばあーいまごろどーしてるかなー?

891 :仕様書無しさん:2006/08/30(水) 01:18:37
俺コンビニの食品データに
「遺伝子組み換え食品」とか入れてたなあ

892 :仕様書無しさん:2006/09/01(金) 14:09:56
ガンダムは、クローバーがメイン・スポンサー
マクロスは、タカトクがメイン・スポンサー

バンダイは、程度の悪いガンプラをガキに抱き合わせ販売して儲けた利益で、
倒産したクローバーやタカトクの版権を買いあさり、その後、あたかもガン
ダムやマクロスを生み出したのはバンダイであるかの如く歴史を捏造。

ガンダムやマクロスの製作に関して、バンダイは、なんら創造的な著作
行為を行っていないのに、著作者気取り。

バンダイとその系列会社って、その金儲け優先で品質の悪い商品作りが
祟ってスタジオジブリから出入り禁止業者に指定されていて、版権の
許可が出ないらしいね。

893 :仕様書無しさん:2006/09/01(金) 17:55:22
それが本当なら確かに著作者ではないが著作権者ではあるな。
下のは本当なら納得できる。

そして俺も貴様もスレ違い。

894 :仕様書無しさん:2006/09/01(金) 22:06:28
>>892
「著作者気取り」の意味がわからん。
>あたかもガンダムやマクロスを生み出したのはバンダイであるかの如く歴史を捏造。
「捏造」のソースは?

895 :仕様書無しさん:2006/09/02(土) 07:18:50
ぐぐるといくつか出てくるな。

つかスレ違いだぜ兄弟。

896 :仕様書無しさん:2006/09/02(土) 14:37:07
空気嫁無いからガノタっていうんですよ

897 :仕様書無しさん:2006/09/02(土) 16:17:12
つ エアリーズ

898 :仕様書無しさん:2006/09/02(土) 17:49:57
ファブリーズと共同開発。
緑茶成分配合。

899 :仕様書無しさん:2006/09/02(土) 20:54:59
>>896
しょうがないよ。空気のないところで戦ってるんだから。

900 :894:2006/09/02(土) 21:25:54
>>895
スレ違いスマヌ。本気でわからんのよ。
どうぐぐったらなにがでてくるのか、教えてたもれ。

901 :仕様書無しさん:2006/09/02(土) 21:31:10
「スレ違い」って言葉もわからないようでは
記事を見つけても内容を理解できないだろ

902 :仕様書無しさん:2006/09/02(土) 21:36:15
もうその子に触らんでいいよ
空気嫁でもくれてやれ

903 :仕様書無しさん:2006/09/02(土) 21:38:39
この会社辞めようと思ったソースコード


894の書いたソースコードだろうな
設計書まるで無視して独自実装とか勝手に入れてそう
設計書書いたとしても要件無視して独自仕様(ry

904 :仕様書無しさん:2006/09/02(土) 21:45:25
>>874
漏れはギャルゲーなヒロインの名前でライブラリ作りましたが、何も。

まあ、気づかれないだろし気づかれたら同類だし。(w

905 :仕様書無しさん:2006/09/03(日) 19:10:13
きも^^

906 :仕様書無しさん:2006/09/03(日) 20:33:31
int haruhi=0;

907 :仕様書無しさん:2006/09/03(日) 21:18:56
昔零細量販で社内Sヨ兼事務みたいなことやってて
直営小売店のレジデータ集計システム作ってたとき
某エロゲヒロインの名前をシステム名に借りましたorz
……多分もう使ってないとは思うが。いや店名が「風」にちなんでたのでそっから連想でね……

908 :仕様書無しさん:2006/09/04(月) 00:09:23
>>907
発覚したら小一時間問いつめられること必至だな。

909 :仕様書無しさん:2006/09/04(月) 09:45:28
>>907
TOMOYO Linuxとどっちが恥ずかしいのかな。
つーか、あれは小一時間問いつめられるべきだと思うのだが。

NTTデータはへんなとこでリベラルだな。

910 :仕様書無しさん:2006/09/04(月) 09:58:43
HITODEと入力するとフリーズします(>ヮ<)

911 :仕様書無しさん:2006/09/04(月) 21:00:19
>>909
SYAOLAN(だっけ)とSAKURAも忘れないであげてください。

NTTデータ本社は結構変な人いるよ?

912 :仕様書無しさん:2006/09/04(月) 23:01:18
>>911
いや、だからそれも含めて言っておるのだ。
ちなみに俺はヤンマガで連載されてるホリックしかしらん。しらねてば。


#噂をすれば影。
スラッシュドット ジャパン | TOMOYO Linux Ver.1.2 リリース
http://slashdot.jp/security/06/09/04/0743229.shtml


913 :仕様書無しさん:2006/09/05(火) 07:44:18
>>912
そっち見てから書いたのかと思ったwww

914 :仕様書無しさん:2006/09/07(木) 10:18:30
そういえば、データをGCAで圧縮して送ってくる、
和塩とか和鳥のスペースに仕事のデータをアップして
「ここからダウンロードしてください」とかやってた彼は
その後元気だろうか・・・

915 :仕様書無しさん:2006/09/07(木) 15:47:21
GCA懐かしいな。自己解凍形式のやつだよね。
01-02年あたりによく流通してた覚えが。

916 :仕様書無しさん:2006/09/07(木) 15:49:51
>>915
圧縮・解凍プログラムが一部のワレモノ愛好家にくらいしか
出回ってなかったから自己解凍形式が多いが、普通の圧縮形式もある。
元ファイルの内容によるが、LHAやZIP、RARよりも高い圧縮率を誇る。

・・・が、仕事のメールで使うやつなんて、後にも先にもその彼しか
出会ったことがない。

917 :仕様書無しさん:2006/09/07(木) 16:05:26
Sit形式で圧縮されてきたときは、おいちゃんちょっぴり殺意が湧いちゃったぜ

918 :仕様書無しさん:2006/09/07(木) 16:46:48
shit!!!!

919 :仕様書無しさん:2006/09/07(木) 17:58:13
相手はMacユーザか。

920 :仕様書無しさん:2006/09/07(木) 18:11:10
tar.gz

921 :仕様書無しさん:2006/09/07(木) 19:14:16
.sitx

922 :仕様書無しさん:2006/09/07(木) 23:07:39
tar.Zで送られてきたときは思わずニヤけた

923 :仕様書無しさん:2006/09/07(木) 23:44:16
業務に使っているらしき、ビューアも提供されていないマイナーなCADのファイルとかヒドス

924 :仕様書無しさん:2006/09/09(土) 01:30:46
なんでもsizeofつけて初期化してるソースコード

int size = sizeof(int)*100;
int ary[100];
memset(ary, 0, sizeof(size)); // 正しくはmemset(ary, 0, sizeof(ary));
とか
int* p = new int[100];
memset(p, 0, sizeof(p)); // 正しくはmemset(p, 0, sizeof(int)*100);

。。。ホント頭どうなってるの??? これ書いたのは「ベテラン」だそうで。。。

925 :仕様書無しさん:2006/09/09(土) 02:12:10
>924
それをmallocでやらかしてたらもっと早く間違いに気付いた……と思う?
自分で言っといて追い打ちを掛けるようだがコンパイラのバグだと騒ぎまくるだけに10000ペリカ orz

926 :仕様書無しさん:2006/09/09(土) 02:18:11
>924
ベテランPG≠コーディング能力の高いPG。
ベテランPGが下手なコード書いたっていいぢゃないか。

糞コードを見たくないなら、ベテランには得意分野に専念してもらい、
お前が穴埋めをすりゃいいのだ。

927 :仕様書無しさん:2006/09/09(土) 06:19:00
>>924
ベテランだってはじめからベテランだったわけじゃない

928 :仕様書無しさん:2006/09/09(土) 09:28:46
ベテラン≠エキスパート

929 :葉猫 ◆Jz.SaKuRaM :2006/09/09(土) 11:58:27
memset(p, 0, sizeof(p));
漏れが引き継いだソースにもあったよ。。。。。。。。。。。。。。

930 :仕様書無しさん:2006/09/09(土) 11:59:01
で?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

931 :仕様書無しさん:2006/09/09(土) 15:08:53
ボタンと値の対応付けのためだけに、CButtonを派生させてるMFCプログラム。
なんと必要性&汎用性の低いクラスを乱造してるものかと思った。
実際全体を見てみりゃ、高々ダイアログ1個の単機能なツールなのに、
ソースは10個前後のプロジェクト、千は越えるクラスで構成されていたり…

使ってるテクニック等を見るに技術力はあると思ったが、
正直オナヌー見せられてる気分だった。

932 :仕様書無しさん:2006/09/09(土) 15:22:21
>>931
暇だったんだろw
独立したちょっとしたツールを作るときとかなら、自分にも心当たりがある。
わざとらしいデザパタとか。

933 :仕様書無しさん:2006/09/09(土) 15:36:46
>>926
下手なコード≠間違ってるコード

934 :仕様書無しさん:2006/09/09(土) 18:01:39
この世界でベテランはありえない。
全てただのロートルと化す。

935 :仕様書無しさん:2006/09/09(土) 18:11:01
まだまだ終わらんよw

936 :仕様書無しさん:2006/09/09(土) 18:14:38
>>934
「トレンド」に追従した開発をガリガリする人は居ないが、センスのいい人はいるよ。
KEKの恩師には勝てる気がしない。

937 :仕様書無しさん:2006/09/09(土) 18:41:20
>>930
何でお前、このスレいるの?

938 :仕様書無しさん:2006/09/10(日) 04:54:34


939 :仕様書無しさん:2006/09/10(日) 11:58:22
ポインタがよくわかってないようだから教えてあげるけど
>>924の例では確保したメモリを初期化しないで
メモリへのアドレスが入っているポインタを0でクリアしているの
だから次に p にアクセスしたらアクセス違反が起こる
わかった?

940 :仕様書無しさん:2006/09/10(日) 12:09:26
>>939
落ち着いてよく見直せ。

941 :仕様書無しさん:2006/09/10(日) 12:46:33
>>940
ポインタがよくわかってないようだから教えてあげるけど
ポインタって0でクリアできないんだよ。
そこんとこわかってる?

942 :仕様書無しさん:2006/09/10(日) 12:49:23
>939
お前アホコテあぼーんしてる?

943 :仕様書無しさん:2006/09/10(日) 12:54:39
>>941
>ポインタって0でクリアできないんだよ。

おまえは本当にポインタをわかっているのかと(ry

944 :仕様書無しさん:2006/09/10(日) 13:04:39
で、>930は、その上のアホコテのが p の型が不明なので、
「で?」としか言いようがないだけかと。
>924 がヘンだとは言ってないと思われ

945 :仕様書無しさん:2006/09/10(日) 13:13:10
>>939
落ち着いてよく見直せ。
× memset(&p,...
○ memset(p,...

946 :仕様書無しさん:2006/09/10(日) 13:17:49
>>945
・・・いちからCやり直すよ orz



947 :仕様書無しさん:2006/09/10(日) 13:25:40
>>924 をよーく見ろ。
sizeof(size)
sizeof(p)

size変数はint型、pはint型ポインタ。sizeofでサイズ求めたらいくつになるよ?w
初期化しようとしてるメモリのサイズは要素数100のint型配列だぞ?

948 :仕様書無しさん:2006/09/10(日) 13:32:27
>>947
そこを見落としてるやつはいないだろ。

949 :仕様書無しさん:2006/09/10(日) 13:34:53
>>948
ならいいんだけどな

950 :仕様書無しさん:2006/09/10(日) 13:39:23
>>948
でも>>926からの流れは・・・

951 :仕様書無しさん:2006/09/11(月) 10:21:07
まあ、ベテランにも2種類いる。
常に最新の技術に関して調査してる、第一線で活躍できる
歴戦の勇者と、過去の技術だけで最新の開発ツールの機能は
使いこなせず、作法も構造も前時代のコードしか書けない老兵と。

952 :仕様書無しさん:2006/09/11(月) 16:59:19
日本でベテランというと長年やっていてとてもできる人というような意味
だけが広まったようだが、元々の英語の veteran には他にも意味がある。

http://dictionary.goo.ne.jp/search.php?MT=veteran&kind=ej
veteran
━━ n. 老練者, ベテラン; 老兵; 退役[在郷]軍人; 使い古したもの.
━━ a. 歴戦の; 老練な.
veteran car 〔英〕 ベテランカー ((1916年(特に1905年)以前に製造されたクラシックカー)).
Veterans Administration 〔米〕 (the 〜) 退役軍人援護局 ((1930年設立)).
Veterans Day 復員軍人の日 ((11月11日)).


953 :仕様書無しさん:2006/09/11(月) 17:03:34
"You are veteran."
訳: 「君は 使い古したもの だ。」


954 :仕様書無しさん:2006/09/11(月) 21:51:45
今度からベテランって言葉の代わりにオブソレートって言葉を使う

955 :仕様書無しさん:2006/09/12(火) 00:10:59
レガシー

でいいんでね?

956 :元PG:2006/09/12(火) 08:30:47
木村氏ね!

957 :仕様書無しさん:2006/09/12(火) 12:39:20
World legacy = 世界遺産


958 :仕様書無しさん:2006/09/12(火) 14:11:45
function UwaRite()

959 :仕様書無しさん:2006/09/12(火) 16:58:48
>>958を見て意味を理解できてしまう自分が悲しい。

960 :仕様書無しさん:2006/09/12(火) 17:22:21
…えーっと、まさかと思うけど…
日本語+綴りを間違えた英語?

961 :仕様書無しさん:2006/09/12(火) 17:35:42
overwrite?
せめてuwagakiだよなあ・・・

962 :仕様書無しさん:2006/09/12(火) 17:51:52
罵倒語禁止なんじゃないかな。
ガキとは何事だと

963 :仕様書無しさん:2006/09/12(火) 21:09:15
writeをwrightと書いた院卒の先輩がいます

死んでください^^

964 :仕様書無しさん:2006/09/13(水) 00:03:33
大量のスペルミスとかローマ字と英単語の中間みたいな変数名を見ると
作成者のやる気の無さを感じるよな。


965 :仕様書無しさん:2006/09/13(水) 01:29:12
>>964
能力の無さを感じる。

966 :仕様書無しさん:2006/09/13(水) 01:42:33
やる気が無くても書かんし。

967 :958:2006/09/13(水) 02:02:45
最初に入った会社で、バグが出たからバグの原因だけ調べてくれと言われて
1年目に見ていたソースにあった関数の名前。

当時、発見直後その現場で物凄く盛り上がった。(バグそっちのけで)

その後、俺がいなくなるまでは(その後は知らん)、何かポカミスをすると
「またウワライトしたのかよw」みたいな格言というか表現が定番となった。




なお、ウワライト発見時、その伝説の関数名をつけた人が真後ろにいたことは
知らなかった。その人が辞めた後に聞いた(´・ω・`)

他にも daita_check とか errar とか ellor とか caunto とか、伝説にはならないものの
物凄い変数名や関数名を大量に作っていたことは、今でもしっかりと覚えている。


                                    その人は自称大卒だった

968 :仕様書無しさん:2006/09/13(水) 02:08:13
別に大卒ゆーてもピンキリだし本人のセンスの問題でそ
そもそも綴りがあってようがなかろうが
よりによってウワライトが思いついてそれを採用しちゃったセンスに乾杯

969 :仕様書無しさん:2006/09/13(水) 02:12:16
2chのスクリプト内もローマ字多そうというか、変な名前が多い。

970 :仕様書無しさん:2006/09/13(水) 02:13:03
それ、多分綴り間違いじゃなくてわざと付けてる。

971 :958:2006/09/13(水) 02:32:20
>>970
最初はネタだと思ったけど、その人自分の名前の漢字もよく変換ミスしていたから
天然の異常者だったと思う。

例: 高橋 達夫 を 高は 筒夫

とか書いてたりして、「誰これ?」が何度かあった

972 :仕様書無しさん:2006/09/13(水) 03:18:35
>>958
すまん、普通に書くとどういう感じ?

973 :仕様書無しさん:2006/09/13(水) 05:37:08
>>971
> 天然の異常者だったと思う。
お前、最低な奴だな。

974 :仕様書無しさん:2006/09/13(水) 06:51:21
>>972
function ObaaGaki()

975 :仕様書無しさん:2006/09/13(水) 07:24:51
>>974
おばあちゃんとガキ?

976 :仕様書無しさん:2006/09/13(水) 09:53:30
>>973
本人降臨!?(゚д゚;

977 :仕様書無しさん:2006/09/13(水) 10:12:52
>>967
それは強烈だな・・・
errorとかcountなんて良く目にするものなのに・・・
ellorなんて読めねえよw

978 :仕様書無しさん:2006/09/13(水) 10:32:12
画家だかにエロールってのがいたような。

979 :仕様書無しさん:2006/09/13(水) 10:37:39
>>978
ellorでググってみたが、アローって読むみたいだな。

ところで、ググって出てきたサイトの上から3番目に

ログインフォームからアドレス、Passを入力してもEllor表示がでてすすめません。

ってのがあったんだけど、これ本人?w

980 :仕様書無しさん:2006/09/13(水) 10:40:11
もしかして英語じゃないんでは?
ポルトガル語とか

981 :仕様書無しさん:2006/09/13(水) 11:57:53
>>979

件名:ログインできません。
投稿者: miyuki 最終更新時刻: 2004-02-02 11:42:59
今日さっそく登録していざログインしようとおもったら・・
ログインフォームからアドレス、Passを入力してもEllor表示がでてすすめません。
登録はきちんとして、メールに備え付けられていたURLからとびました。
どうしたらいいのですか?


---------------------------

ちょww

982 :仕様書無しさん:2006/09/13(水) 12:10:48
萌えw

983 :仕様書無しさん:2006/09/13(水) 13:36:20
ディスクのミラーリングで、 mirror を mira と書いてあるのを見つけたことがある。
まあ、ローマ字書きだからいいか・・・。



984 :仕様書無しさん:2006/09/13(水) 17:02:23
>>963
飛行機のプログラムだったらOK

985 :仕様書無しさん:2006/09/13(水) 17:56:42
>>984
そんな奴ぁ flight を frite と書くだろう。

986 :仕様書無しさん:2006/09/13(水) 17:58:44
>>984
flightは、fwriteのことぢゃないZOO!!

987 :仕様書無しさん:2006/09/13(水) 19:52:45
>>975
iesu


988 :仕様書無しさん:2006/09/13(水) 19:55:14
サーバーの設定を表す定数が皆 SAVER_ で始まるってのはあったぜ。
しかもその定数いろんな所で使ってるのに誰も何も言わないんだぜ。
さすがにこれは誰か助けてくれってサインだと見たぜ。

989 :仕様書無しさん:2006/09/13(水) 20:27:56
ただのオタだったとか

990 :仕様書無しさん:2006/09/13(水) 20:49:23
#define SABRE 0xf86f

991 :仕様書無しさん:2006/09/13(水) 21:39:27
よく、切れそうだ。

992 :仕様書無しさん:2006/09/13(水) 21:41:26
>>988
この前夜中にやってた映画「回路」だな。


993 :仕様書無しさん:2006/09/13(水) 22:05:47
>>990
オメガワロス
セイバーGJ

994 :仕様書無しさん:2006/09/14(木) 00:50:55
問おう、貴方がこんなgdgdなコードを書いたのか#

セイバー違いですね、はい。

995 :仕様書無しさん:2006/09/14(木) 01:06:26
おおう、goodgoodなコードですネ

come! come! come!!!

996 :仕様書無しさん:2006/09/14(木) 06:49:02
>>951
その老兵は俺だなw
職業プログラマからは足を洗ったんで空白期間ができたせいもあるけど
全く最新技術についていけてないのは自覚してる。
少しずつでも追いつかないとね。前時代的なことをやってると、何より
やってて自分が面白くない。

997 :仕様書無しさん:2006/09/14(木) 07:54:26
>>979
ELLOR No115が表示されます


01: 名前:小林 正投稿日:2003/02/07(金) 13:58
カシミールを起動すると、ELLOR No115が表示されファイルが開けませんと出てきます。
OKをクリックすると起動はしますが、以前作った登山ルートを表示さそうとしても、ルートの表から消えており表示しません。

998 :仕様書無しさん:2006/09/14(木) 08:18:55
だれか つぎすれ たのむ

999 :仕様書無しさん:2006/09/14(木) 08:30:06
立てました。

この会社辞めようと思ったソースコード#14
http://pc8.2ch.net/test/read.cgi/prog/1158190165/l50


1000 :仕様書無しさん:2006/09/14(木) 08:40:17
UwaRite(1000);


1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

217 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)