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

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

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

前スレ
この会社辞めようと思ったソースコード#20
ttp://pc11.2ch.net/test/read.cgi/prog/1200967660/
2仕様書無しさん:2008/07/27(日) 19:21:01
今いじっているソース。

/*****************************************************
    XXシミュレーション 
    1989/02/22
     :
    1992/08/02
     :
    2003/10/03
     :
    2006/06/12
     :
******************************************************/
#include <stdafx.h> // VCに移植
   :
  return(ret);
}

#include "F00d0001.c"
#include "F00d0002.c"
#include "F00d0003.c"
  :                ← 延々と#include
#include "F10d0022.c"
#include "F11d0001.c"

int r020001() {
:
#include "F22r1012.c"        ←関数の中なのに
#include "F34c2023.c"
 :
}
3仕様書無しさん:2008/07/27(日) 19:36:14
名付け方や羅列っぷりはひどい感じだが、
別に関数の中だろうがナンだろうが構わんけどな。
4仕様書無しさん:2008/07/27(日) 20:16:12
ファイル名も関数名も酷いな。

*.cをincludeする事自体には問題少ない。
古めのX11のプログラムだと、*.xbmとかincludeしてるしな。
(XBMはCの配列に見えるように作ってあるフォーマット)
5仕様書無しさん:2008/07/27(日) 21:41:42
昔見たCのソースで

(hoge1.c)
……
#include "hogehoge.c"
……

(hoge2.c)
……
#include "hogehoge.c"
……

なんというかもう少しこう、分割コンパイルというか……
6仕様書無しさん:2008/07/27(日) 22:55:32
>>4
> 古めのX11のプログラムだと、*.xbmとかincludeしてるしな。

それは、かなり例外的な話で、普通 *.c をインクルードする状況は
あまり勧められないと思うよ。
7仕様書無しさん:2008/07/28(月) 14:55:46
んなこたぁみんなわかっているさ。
>>6には。>>4をスルーする能力がつきますように。
8仕様書無しさん:2008/07/28(月) 17:49:26
ひどいのになると
int hogehoge() {
  :
#include "fuge.c"

 if (xx>0)
  goto fuge001;  ←ラベルがfuge.cの中

なんてのが本当にあるからなぁ。
9仕様書無しさん:2008/07/28(月) 20:56:06
>>7
わかってなかった奴みっけ。(w
10仕様書無しさん:2008/07/29(火) 13:58:13
>5
言いたいことがイマイチ判らんが、共通定義部分だからこそ、ヘッダファイルで外出しに
してincludeしているんじゃないのか?
11仕様書無しさん:2008/07/29(火) 14:00:04
定義なら.h使うだろうから、同じような関数がstaticで入ってたり、だとおもうよ
12仕様書無しさん:2008/07/30(水) 07:48:32
>>11
staticの意味ねーw
13仕様書無しさん:2008/07/31(木) 05:36:50
恥を晒すがCの仕事を始めた頃に #include "hoge.c" をやって注意された。
なんか懐かしいなぁ....

皆もわかってると思うけど『Makefile を管理する人の身になれ』ってのが駄目な理由ね。
14仕様書無しさん:2008/07/31(木) 10:36:11
はあ?Makefile以前に可読性わるすぎだろ。
15仕様書無しさん:2008/07/31(木) 12:36:41
>>13
Makefile がどう関係あるんだ?
手動で依存関係作ってるってこと?
16仕様書無しさん:2008/07/31(木) 14:12:41
>>11
インライン展開する関数の代わりかな。
コンパイラが貧弱で最適化が行われないチープな環境なんだろう。
8ビットとかの。
17仕様書無しさん:2008/07/31(木) 20:53:20
長い間、hoge.cをインクルードできることを知らなかった俺
18仕様書無しさん:2008/07/31(木) 21:07:02
> インライン展開する関数の代わりかな。

それなら、普通にマクロ定義して展開させるだろ。
19仕様書無しさん:2008/08/01(金) 00:31:17
マクロじゃなくてもinlineでおk
20仕様書無しさん:2008/08/01(金) 01:02:34
ていうかコンパイルオプションでよくね?
サイズだってオプションひとつで変わるし、
インライン展開がふさわしくない関数とかも判断してくれる。
21仕様書無しさん:2008/08/01(金) 01:16:56
>>14
俺がやったのは関数単位だったので可読性に問題はなかったと思う。
何を意図してそうしたかは謎だが...

>>15
そうだよ。mkdepend 使うと include されたソースがコンパイル通らなかったりするし。
22仕様書無しさん:2008/08/01(金) 23:25:26
出来るってのはやっても良いって事じゃないんだよ。
23仕様書無しさん:2008/08/02(土) 00:01:56
このスレまとめのテンプレとかないのが惜しいね
こんだけスレ数進んでたら香ばしいのも結構集まってる気がするんだけど
漏れは新参なので古い話はわからんです・・・
24仕様書無しさん:2008/08/02(土) 00:29:25
1行80文字のうち
右端30文字がコメント列
コメント列のうち
右端6文字が変更番号

てのは甘い?

若輩の俺にはWindows環境で80文字の制約守る意味がよくわからない('A`)
25仕様書無しさん:2008/08/02(土) 00:30:47
>>22
同意
俺こんな凄い技知ってるんだぜって奴のコードは正直読みたくない
ROM容量超ギリの場合なら設計資料添付してくれたら読めるが、
「ソースコード=仕様書です。それが何か?」ってのが意外と多い世の中
(特にB型に多いな・・)
26仕様書無しさん:2008/08/02(土) 00:31:53
>>24
80だと確かに少ない感じだけど、一行が長いと、レビューとかで、コードを印刷するときに、
折り返しが入って、すごい読みにくいね。
27仕様書無しさん:2008/08/02(土) 00:37:03
>>24
ケースバイケースかと
無理に80文字に詰めて読みにくくされる位なら、
コードレビュー時に用紙横印刷してくれた方が嬉しい

その場の書き方に合わせるという方法もお勧め
文句言う奴が減るよ
2824:2008/08/02(土) 00:39:34
>>26
そう考えると利点もあるんだなあ。
でもこの制約のせいで、関数のコールにほとんどの場合3行以上使う('A`)
29仕様書無しさん:2008/08/02(土) 00:45:37
>>27
規則とかで決まってるわけじゃないけど、縮小して、一枚に4ページを割り付けて
印刷するってのがデフォになってるんで。。。

C#で仕事してるけど、ネームスペースとかクラスのインデントがあるんで、
たしかに80桁だと苦しいけど、100桁くらいなら、まあ、自然に書けると思う。

120桁を超える行があちこちにあると、もう画面でも読みにくいし。
30仕様書無しさん:2008/08/02(土) 00:54:49
>>26
プリントアウトなんてしないから無問題
31仕様書無しさん:2008/08/02(土) 00:54:52
>>27
昔からの慣習を原則にしちゃったのか守らざるを得ないんだ。
守らないからと言って特に注意されることはないけど、皆しっかり守ってる

>>29
ごめんなさい、言語書き忘れたけどちなみにC。
30文字がコメント列なので、有効なソース列は50文字。
CでもキツいからC#だと想像できないな・・・
3224:2008/08/02(土) 01:01:20
すまん>>31は俺な。
ほとんどカキコしないから慣れないなぁ
33仕様書無しさん:2008/08/02(土) 01:11:38
>>31
意味の無い慣習はむしろ害悪
34仕様書無しさん:2008/08/02(土) 04:55:52
大きなディスプレイ買え。印刷するな。
35仕様書無しさん:2008/08/02(土) 09:22:26
モニターでかくても、横に長すぎるコードは読みにくいよ。
36仕様書無しさん:2008/08/02(土) 09:23:59
>>31
いくらCでも50桁だとな…
ポインタとか使っちゃうとすぐただの代入文が三行必要にならんか?
そのために変数名短くしてたりするのかな。
37仕様書無しさん:2008/08/02(土) 09:29:17
問題は>>24の会社に
ソースの良し悪しを判断できる人間が居ないってことだろうな

誰かが改善しない限り糞ソース量産会社になる
38仕様書無しさん:2008/08/02(土) 22:28:54
フルスクリーンでエディットしているやつが多い。
右側スカスカで、マルチウィンドウの意味なし。
そのせいか、右側まで伸びている行があっても気にしない。
39仕様書無しさん:2008/08/02(土) 23:16:41
インデントしすぎで左側がスカスカのソースは良く見る。
40仕様書無しさん:2008/08/03(日) 00:40:22
80文字制限を課せられたときは
端末が物理的に80文字なんだろうと思うことにしてる。
41仕様書無しさん:2008/08/03(日) 02:23:27
パンチカード使ってるんじゃね?
4224:2008/08/03(日) 06:10:40
>>36
なるなる。こういうの↓を多用せざるを得ないので余計に困る。

aaaap = (ulong *)INPUT(&(((bbb_bbbt *)cc_ccccp->ddddl)->eeeel));

>>37
言われてみたら確かに、ロジックの善し悪しを言われることはあっても
ソースそのものの善し悪しを述べられたことはないな。。。
43仕様書無しさん:2008/08/03(日) 07:22:56
> なるなる。こういうの↓を多用せざるを得ないので余計に困る。
> aaaap = (ulong *)INPUT(&(((bbb_bbbt *)cc_ccccp->ddddl)->eeeel));

局所的に使うならまだしも、こんなのを多用してるとすると、
そりゃソース指摘以前のレベルだわな。
44仕様書無しさん:2008/08/03(日) 08:03:32
>>42
多用するポインタは別のローカル変数に入れとけよ
45仕様書無しさん:2008/08/03(日) 09:57:48
構造体の間接参照が多段すぎ。JK。
46仕様書無しさん:2008/08/03(日) 13:30:02
>>42
ネタじゃなくマジでそのコード使ってるならそんな会社辞めた方が良い
理由は>>22の通り
周りの悪環境に染まりすぎると本人にとって悲惨な結果しかまっていない
4724:2008/08/03(日) 14:41:02
>>46
疑問を持ちながらも、インフラ系の組み込みだから多少特殊なのかと思ってた。
忠告、ありがとう。
でもちょうど再来月で辞める予定なんだ。
他にやりたい仕事があるし、この会社にも未来感じてない。
48仕様書無しさん:2008/08/03(日) 16:23:45
どうせ辞めるなら、辞めてからでもいいので会社名晒してくれ。
49仕様書無しさん:2008/08/03(日) 16:56:47
辞める気は無いんで社名は伏せるけど
日立三菱富士通ソニー日本IBMNEC東芝NTT・・まあそんなレベルの会社。

コードの詳細は忘れたけど

 if (・・・) {
   if (・・・) {
     map
        .put(Hoges.HOGE
           Integer.valueOf(a));
     map.put(Hoges.FUGA, BigDecimal
        .valueOf(b));
     Something.method(c, d, e, f, g,
        h.moreMethod(i, j, k),
        l.moreMethod(aaa, bbb, ccc
           ddd, eee, fff, ggg, hhh, iii, jjj));
     Something.anotherMethod(c, d, e, f, g,
        h.moreMethod(i, j, k, aaa, bbb, ccc
           ddd, eee, fff, ggg, hhh, iii, jjj,
           kkkkk,mmmmm, ooooooo));
   }
 }

みたいな、なんかうまく書けなかったけど
本当に奇麗なグレート・ブリテン島のAAが出来上がってた。

30個も。
ほぼ同じ内容で。
50仕様書無しさん:2008/08/03(日) 17:08:16
>>49
その中にない大手なわけだな。
・・・
シャープかパナソニックか
51仕様書無しさん:2008/08/03(日) 17:14:01
だが、そのどれでも納得してしまいそうだが。
52仕様書無しさん:2008/08/03(日) 17:23:38
目立系のコーディング規約がひどいというのはよく読むな。削除コードを全てコメントで残すとか。
53仕様書無しさん:2008/08/03(日) 17:25:57
>>49
引き数大杉。
54仕様書無しさん:2008/08/03(日) 19:18:28
>>52
ポインタの参照は禁止とか
5524:2008/08/03(日) 20:59:06
>>48
約束する。

しかし・・・うかつだ、
もし職場の人がこのスレ見たら>>42>>47でこれで完全に足がつくw ('A`)
円満退社できますように願いつつ話題が脱線sage
56仕様書無しさん:2008/08/04(月) 00:20:18
>>54
『ポインタの参照は禁止』ってどういう意味?
"->" の禁止って事だと C/C+++ のコードは書けないよなぁ
57仕様書無しさん:2008/08/04(月) 00:28:34
>>24
待て。足が付くなら社名書いちゃまずかろう。 w
58仕様書無しさん:2008/08/04(月) 00:34:20
>>56
ダブルポインタじゃないの?
59仕様書無しさん:2008/08/04(月) 00:42:02
>>58
そうです。
禁止事項だろうって笑ってました。あはははは
6024:2008/08/04(月) 02:07:10
>>57

( ゚д゚ )!

ソースコードと社名を結びつけたことで名誉毀損とかで訴えられるとかだったらやめとく
6157:2008/08/04(月) 03:08:42
>>60
名誉毀損とかはないだろうけど。完全に縁を切るならいいのかもな〜。
そうでなかったら気まずいんじゃないかと思ったのさ。
62仕様書無しさん:2008/08/04(月) 15:51:02
ポインタのポインタ禁止すると多次元配列とかどうするんだろ?
63仕様書無しさん:2008/08/04(月) 17:20:09
ジャグ配列が使えないってだけで、なんで多次元配列がダメになると思うのか。

しかし、そーゆー脳足りんルール押し付ける職場って実在するんだな。
64仕様書無しさん:2008/08/04(月) 17:20:56
配列[i][j]とか、配列[n][m][l] とかやるに違いない。Fortran時代はふつうにやってたし・・・
65仕様書無しさん:2008/08/04(月) 18:25:01
はあ?
66仕様書無しさん:2008/08/04(月) 18:30:35
ポインタのポインタが禁止されたら、配列のような表記にするだけさ。
67仕様書無しさん:2008/08/04(月) 19:25:34
ダブルポインタと配列にどういった繋がりがあるのか良く判らない
68仕様書無しさん:2008/08/04(月) 20:57:54
a[ N * i + j ] みたいにするんじゃね。
69仕様書無しさん:2008/08/04(月) 22:15:06
……やれやれ。
70仕様書無しさん:2008/08/05(火) 06:11:53
まあロジックは配列にあわせる必要はある。
要素のサイズは固定で、まとめて全部アロケート・リサイズ。
71仕様書無しさん:2008/08/07(木) 23:16:01
ポインタの入門書の大半は、配列参照で書いてる所が多いので
配列うんぬんの話題がちらほら出てるのかな

と、配列の話題が出た原因を想像してみた
配列の話を膨らませるつもりは無い。次の話題どうぞ
72仕様書無しさん:2008/08/08(金) 17:42:48
では次の話題

VARCHAR2(1) なカラムに '△' を INSERT/UPDATE してた
仕様書にはそう書いてあったかもしれんが
それは半角スペースだろJK

そんなコード書いて平気な連中は
毒餃子で氏ねばいいのに
73仕様書無しさん:2008/08/08(金) 18:54:21
多次元配列の話を振った者だが...

ジャグ配列が使えないとサイズが未知な場合や非矩形な場合にメモリ効率が悪くなると思うんだけど
...資源が豊富な今となっては考慮に値しないんですかねぇ
74仕様書無しさん:2008/08/08(金) 19:27:05
「ジャグ配列」をググって来ましたか。結構結構。

>>72
それ、JK?
ファイルは固定フォーマットが当然、って時代は
よく△とか?とか使われてたけど、
最近殆ど見ないよ。

/* ところでそのカラム、varchar2(1 char) だと
  エラーにならず正常に格納出来てしまうという罠が */
75仕様書無しさん:2008/08/08(金) 19:30:03
あ、バケたかも。「△とか」の次の記号は U+2423 ね。
76仕様書無しさん:2008/08/09(土) 01:40:32
半角SPを△で表してたのは仕様書が手書きの頃だな

ところでJKって何?

77仕様書無しさん:2008/08/09(土) 01:47:28
女子高生
78仕様書無しさん:2008/08/09(土) 02:00:12
>>76
俺も最近言われたので調べたよ。
「常識的に考えて」の略らしいが。「常考」とも。
79仕様書無しさん:2008/08/09(土) 02:00:51
某社系列はまだ半角スペースが認識しづらい年寄りのために使ってますよ。
80仕様書無しさん:2008/08/09(土) 04:25:58
>>76
このレスを読むまで△の話題の意味がわからなかった。
固定長を扱うときにデータそのものを固定長にしておくわけか。
汎用系は全くさわったことなくて、ファイルIOで固定長に対応してたよ。
81仕様書無しさん:2008/08/09(土) 08:23:10
可変長で普通にやってる所、最近は老人のコーダ代わりに
固定長でやってます。

帳票だすのに固定長の馬鹿でかいtxtファイル作るのはねぁ・・・。
82仕様書無しさん:2008/08/09(土) 13:54:02
>>78
そんなの判るかぁ
『純粋な考察』でも『熟女の腰砕け』でも『自民党は国家犯罪組織』でもとれるぉ

日本語のアルファベット化反対!!
83仕様書無しさん:2008/08/09(土) 15:54:42
>>82
んなこと言ったら、NHKなんてどうなるんだ。w
84仕様書無しさん:2008/08/09(土) 16:01:17
懐かしいな練馬変態倶楽部
85仕様書無しさん:2008/08/09(土) 17:58:31
練馬名物股ぐら納豆 っていうこまわりくんのネタがあったな
86仕様書無しさん:2008/08/09(土) 23:32:02
>85
略すと……NMN? NMMN?
なんだろう、よくわからない。
87仕様書無しさん:2008/08/10(日) 08:55:17
ヒューマンライフこまわり君 海岸通りの糖尿病
88仕様書無しさん:2008/08/11(月) 10:11:52
お前らが見た最も大きなソースってどのくらい?
俺が見たのは2MByte、秀丸さんが気の毒になったぉ

....しかも関数4つしかなかた
89仕様書無しさん:2008/08/12(火) 07:23:59
行数でどのくらいだったの? 言語はFortran?
90仕様書無しさん:2008/08/12(火) 21:57:37
俺は1.8MBくらいだったな。
ほとんど使われなくなった関数でコメントアウトされているかまとめて#if 0になってた。
VSSで管理しているのに修正したり,関数ごと書き換えたりしたときに元のコードを消さないからこうなる。
91仕様書無しさん:2008/08/13(水) 00:38:33
>>89
約20Kステップで最大の関数が約8Kステップ、ありえないC言語
ちなみにコメントアウトされた履歴が残ってるとかではない(俺が始めてメンテした)
コピペって怖いなぁと心底感じた

書いた奴は当然いない訳だがソースに書いてある名前を見たら別の現場でちょっと教えた奴
1関数は100ステップ以下にしろとあれほど言ったのに...
92仕様書無しさん:2008/08/13(水) 04:41:10
俺はステップという単位がいまだにわからない
改行コードの数がステップなのか
文字の数がステップなのか
Byte数がステップなのか
何らかの塊がステップなのか(これはファンクション何ちゃらだっけ?)
93仕様書無しさん:2008/08/13(水) 05:22:23
20Kステップ、コメントアウトされたコードがあまりなくて2MBて計算合わなくね?
1行あたり平均100文字?
コメントは多いのかな?
94仕様書無しさん:2008/08/13(水) 08:57:47
関数が3つほどまとめて#if 0で切られてるの気づかなくて
そっちを一生懸命なおしたことある。
ちなみに各関数は4千行前後。

#if 0とかは1画面に収まる範囲でやってくれないと厳しいね。
95仕様書無しさん:2008/08/13(水) 09:01:21
>>92
Cの場合は;の数でいいんじゃね?
96仕様書無しさん:2008/08/13(水) 09:09:24
>>94
別に4千行の関数書いた池沼を擁護する気はないが、
#if 0 〜 #endif までを色違いにするエディタくらい使おうぜ
97仕様書無しさん:2008/08/13(水) 09:23:22
>>96
後出しですまんが、今は無きDECのWSにそんな高尚なエディタは当時なかったんだ。
たぶん今も無いと思うが。
FTPでWinに持ってきて秀丸等でって事ができる環境でも無かったんだ。

若い子はDECって言われても分からないかもしれないけど。
Doキーを制する物は世界を制するのさハハハ
98仕様書無しさん:2008/08/13(水) 09:42:28
>>97
普通にemacsでいいだろ・・・
99仕様書無しさん:2008/08/13(水) 10:28:02
モノクロのVT100で、#if 0〜#endifは反転ブリンクなんて設定だったらストレス溜まるだろうな...
100仕様書無しさん:2008/08/13(水) 15:51:43
>92
> 俺はステップという単位がいまだにわからない

ちょっとした疑問だが、デバッグってどうやってんの?
今時のソースコードデバッガならステップ実行が基本単位だと思うが…。
101仕様書無しさん:2008/08/13(水) 15:56:06
今時つっても環境は千差万別じゃないの
ええ、俺は携帯電話はもうこりごりですよ
102仕様書無しさん:2008/08/13(水) 15:56:17
>>100
今時のコンパイラが吐くコードならソース上のステップとデバッガのステップ実行が一致しないのは普通だが?
103仕様書無しさん:2008/08/13(水) 16:39:34
ネットリストを入れていいなら500MBなんてのがあった。
修正どころか表示することすら手間がかかる。
104仕様書無しさん:2008/08/13(水) 17:36:52
ステップについては、名称からの誤解か?「実行文に限る」 という縛りがあったな。
んじゃ100行のcase文で実行すれば100stepだが、関数table[100]で実装したら3stepかい?
てな話はよくあった。
105仕様書無しさん:2008/08/13(水) 17:52:49
ステップ数で見積もりや進捗報告とかHは滅んで欲しい
106仕様書無しさん:2008/08/13(水) 18:37:33
caseを100も分ける時点でDQNコードと思われ。
107仕様書無しさん:2008/08/13(水) 18:41:33
分かりやすい例え話だろ
108仕様書無しさん:2008/08/13(水) 19:10:23
>>100
LEDチコチコです><;
ってのは半分冗談だけど、デバッガのステップと作業見積もりのステップは別物だと漠然と思ってた
109仕様書無しさん:2008/08/13(水) 19:31:48
デバッグでいい方法思いついた。

バグの好きなえさを撒いて集めて網で掬い取って佃煮にして食べたらいいと思うよ。
110仕様書無しさん:2008/08/13(水) 19:52:31
>>109
つ[リテラル]
つ[頑張って一行に纏めた式]
111仕様書無しさん:2008/08/14(木) 07:23:34
>>109
よそのプロジェクトのバグも集まってくるよ
112仕様書無しさん:2008/08/14(木) 08:10:56
>>107
そうか?table[100]の中身を定義する段階で同じ程度のステップ数になると思うが?
というかむしろステップ数増えないか?
113仕様書無しさん:2008/08/14(木) 15:03:11
全部違う関数なら当然増えますね。仕切が多くなるし。マトリックスなんかだと、同じ関数を
指す中身が多かったりするので、あまり増えず可読性が良いこともあります。
表引きで済むのにcase使うというのも、step数稼ぎの定石(w
114仕様書無しさん:2008/08/14(木) 16:25:26
>>113
同じような処理が多い場合も
switch (...) {
case X1:
case X2:
case X3:
  X関係の同じ処理();
case Y1:
case Y2:
case Y3:
Y関係の同じ処理();
....
}
てな具合にまとめることになるけどな。
115仕様書無しさん:2008/08/15(金) 09:46:18
うちのソースなら

int x = 2;
switch ( x ) {
case 1;
case 2:
(略)
case N-1:
case N:
}
で、最初にxに代入してるのだけが違う処理が
そこかしこにちりばめられてるね。

ってなってるね!どうだ参ったか。
116仕様書無しさん:2008/08/16(土) 21:11:07
if ("YES" != "絶対!")
{
//ダイターンな処理
}
117仕様書無しさん:2008/08/16(土) 21:12:56
ミスった
if (::strcmp("YES", "絶対!"))
{
//ダイターンな処理
}
118仕様書無しさん:2008/08/18(月) 02:00:03
>>92
行の意味でstepを使った俺が悪かったかも知れん...まぁ堅いこと言うな

>>93
・モジュール化という概念の無いコード特有の多段インデント(タブはスペース)
・セミコロンまでは必ず一行に書くポリシー
・各行末には役に立たないコメント

よって128文字を超える行も目立つコード
読むのしんどかったぉ
119仕様書無しさん:2008/08/18(月) 02:06:48
>>115
別に珍しくねぇよ
その手のコードでは switch に default が無いのも一般的だよね
120仕様書無しさん:2008/08/20(水) 00:59:52
if文追加によるインデントでテスト工数増やすのが嫌なので
「カラムズレアリ」とか書いてインデントしないのが常識になってるソース。言語はC。
121仕様書無しさん:2008/08/20(水) 02:12:54
インデントと工数にどういう関係が?
122120:2008/08/20(水) 02:25:18
>>121
1文字でも変更のあった行には変更番号を振らなければならない。
というコーディング規約。
そして変更番号を振った箇所は全てデバッグしなければならないという鬱規則。
123仕様書無しさん:2008/08/20(水) 11:45:38
いっその事 if 文をインデントしたら?

    if( hoge ) {
  func1();
  func2();
  ....
    }
124仕様書無しさん:2008/08/20(水) 22:34:16
逆転の発想だな
125仕様書無しさん:2008/08/20(水) 23:11:09
新しすぎて誰もついてこれないだろw
126123:2008/08/21(木) 01:41:12
>>124, 125
ところが15年程前に見たこと有るんだよな
FORTRAN のソースなんだが、部分的に >>123 の様なインデントだったんだ(IF と END_IF がインデント)
当時は理由が全く判らなかったのだが >>122 の様な理由があったのかもしれない
127仕様書無しさん:2008/08/21(木) 21:57:08
>>122
さすがに今時アホすぐる規則だな。
インデントの為の空白/タブの変更は変更とみなさないとすればいいのにね。
多くの差分ツールでそう言うオプションあるし。
128122:2008/08/21(木) 23:21:35
>>127
ちなみに>>24で書いた職場ね
129仕様書無しさん:2008/08/22(金) 21:55:21
そんな規則におとなしく従ってる君もどうかと思うけどな。

派遣さんとかならまだわかるけど。
130仕様書無しさん:2008/08/23(土) 14:17:28
>>129
俺のことに言及してくれるな。返答に困る。
ていうか従ってないからな?
131仕様書無しさん:2008/08/23(土) 14:20:20
派遣なら派遣らしく、嬉々として「修正行数」を稼げばいいのにねw
132仕様書無しさん:2008/08/23(土) 15:55:11
>>130
> ていうか従ってないからな?

改善提案もしないし、規則にも従わない。

派遣だとしても最低な奴ですね、わかります。
133仕様書無しさん:2008/08/23(土) 16:25:38
>>132
俺が未熟なのは認める。叩きたいのもわかる。しかしスレの空気を悪くするのはやめてくれ。
差分出てもレビュー時に一言入れて済ます人が多い。規約遵守する人が妙なインデントを残す。
結局何百人もの人がスルーする規約なので俺も右へならえ。>>132のような行動力ない。
134仕様書無しさん:2008/08/23(土) 16:54:31
いやいや……それでもなんでも、規約がおかしいと思ったら意見ぐらい言うべき
135仕様書無しさん:2008/08/23(土) 17:03:34
規約を作ったのが社長で、「君、明日から来なくていいから。」
136仕様書無しさん:2008/08/23(土) 17:17:15
>>134
ですよね。結局俺も無意識のうちに仕事増やすまいとしてるんだな・・・。

俺「先輩、if文追加でインデントが変わるだけの部分ってテs」
先「当たり前じゃん」
俺「ですよね」

素質ねぇ orz
137仕様書無しさん:2008/08/23(土) 18:16:25
>>133
だったら素直に ROM ってろよ。

>>135
> 規約を作ったのが社長で、「君、明日から来なくていいから。」

どの道そんな社長のいる会社は先がないと思うんだが。
138仕様書無しさん:2008/08/23(土) 18:21:18
>>137
わかったよ
139仕様書無しさん:2008/08/23(土) 20:54:07
>>120, >>122
if 文追加してると言うことはそのコードに入る条件変わってるんだから、
その部分をデバッグと言うかテストするのは当たり前だと思うが。
140仕様書無しさん:2008/08/23(土) 21:40:20
ifに入るかどうかだけじゃなくて、中のテスト済みもやり直すんだろ
141仕様書無しさん:2008/08/23(土) 21:46:17
だから、条件違うだからやり直すのは当たり前だろ。
どこまでやり直すのかという話はあるけど、インデント違うだけだから
テスト不要と言い切るのはちょっと問題だろ。
少なくともレビューは必要だと思う。

ましてやインデント変えてないからなんて言うのはそれ以前の話だが。
142仕様書無しさん:2008/08/24(日) 02:51:36
は?
143仕様書無しさん:2008/08/24(日) 08:06:30
だな。コードの事前条件がかわるのだから回帰テストするのが常識だと思われ。
144仕様書無しさん:2008/08/24(日) 20:34:18
近いスレが立ったな

ふざけた変数名を使う奴
http://pc11.2ch.net/test/read.cgi/prog/1219495516/
145仕様書無しさん:2008/08/26(火) 23:09:06
条件式を逆にしてgotoすればインデントは変わらないんじゃ…

if( hoge ){
 /* 既存処理 */
}
 ↓↓↓
if( !hoge ){
 goto LABEL1;
}
/* 既存処理 */
LABEL1:

でもそういうところは「goto文は一切使用禁止」って規約もありそうだな。
146仕様書無しさん:2008/08/26(火) 23:18:20
そんなことするぐらいなら、変なインデントの方がまだマシ。
147仕様書無しさん:2008/08/27(水) 09:12:28
変なインデントはエディタのほうで何とかできる。
変なgotoはどうしようもない糞。
148仕様書無しさん:2008/08/30(土) 06:33:18
>>120
そこで、2インデント、1インデントに変更ですよw
149仕様書無しさん:2008/08/30(土) 08:59:57
最初にインデントを32文字単位ぐらいにしておけば多い日も安心
150仕様書無しさん:2008/09/02(火) 20:48:04
>>145
こんなの見たら
書いた奴捕まえてボコボコにするぞ
151仕様書無しさん:2008/09/02(火) 20:55:06
通報?
152仕様書無しさん:2008/09/03(水) 00:03:03
通報!24!通報!24!
153仕様書無しさん:2008/09/04(木) 23:46:14
10年くらい前からあるASP(vbscript)なんだが、
古いからフレームワーク何それ?なべた書きは仕方が無いにしても…

・ 大量にある似た処理を関数化、ループ処理してない
・ 配列皆無
・ 一回しか使わないsession、requestも全て変数に代入
・ その変数は全て最初に空文字列代入 (おまけに全てグローバル)

おかげで何千行('A`)

ついでに、インデント滅茶苦茶
154仕様書無しさん:2008/09/05(金) 19:47:32
俺四半世紀ほどこの商売やってきたけど、いま動いてるコードの八割強は
捨てた方が世の中良くなるのはみんな知ってるとおり。
でももっと困るのは、主に業務系で九割ほどの書かない方がいいコードが
主に輸入されちゃってたりする事実。使う金もひとも大して変わらないんだけどさ。
155仕様書無しさん:2008/09/05(金) 20:36:56
スレタイが読めないほど知性が崩壊したおっさんの登場です。
156仕様書無しさん:2008/09/06(土) 15:42:40
> いま動いてるコードの八割強は捨てた方が世の中良くなるのはみんな知ってるとおり。

それは事実だが、かと言って書き直せばましになるかと言うと必ずしもそうでないのも
みんな知ってるとおり。
157仕様書無しさん:2008/09/07(日) 15:03:15
捨てて書き直してる間にシェアを奪われてそれっきりというパターンも多い。
158仕様書無しさん:2008/09/07(日) 15:54:12
これから書く動くかわからないコード<滅茶苦茶な内容でもとりあえず動いてるコード
159仕様書無しさん:2008/09/07(日) 17:37:27
いま動いてるコードもハードも十割を捨てた方が世の中良くなると思う
160仕様書無しさん:2008/09/07(日) 23:12:33
そのコードを書いた人を捨てたら?
161仕様書無しさん:2008/09/08(月) 00:14:16
>160
翌日、この世から「プログラマ」という職種が消えた
162仕様書無しさん:2008/09/08(月) 13:51:38
平和になるか北斗の拳の世界になるかどちらかだな
163仕様書無しさん:2008/09/08(月) 17:30:21
C#で
SQL書くときに

string str;
str = str + "hoge";

で数百行続いていた時・・・・
StringBuilderか せ・・せめて str += ""; で頼みたかった

気になって聞くと
VBとかでも使いまわせるようにこう書いているんだそうな…・・
164仕様書無しさん:2008/09/08(月) 18:47:38
VB6だとしても「+」じゃなく「&」だろう。
165仕様書無しさん:2008/09/08(月) 18:51:00
C#で、VBでの使い回しを考慮する意味がわからん。w
166仕様書無しさん:2008/09/08(月) 18:57:30
どっちにしろ置換で一括変換すりゃいいだけだろうに
167仕様書無しさん:2008/09/08(月) 19:12:32
>>163
ていうか連結しないといけないの?
168仕様書無しさん:2008/09/08(月) 19:34:28
>167
連結自体は有りでしょ。
SQLの途中をコメントアウトしたりとか便利なこともあるし。
169仕様書無しさん:2008/09/08(月) 20:25:57
>>163
その場合は、たぶん、SrringBuilderはいらない。
StringBuilderは、ループとかで、追加する回数が不定のときに使う。
170仕様書無しさん:2008/09/08(月) 20:30:21
>>163
http://www.kohgakusha.co.jp/books/detail/978-4-7775-1380-2
この本を本屋でパラパラと読んだら、やっぱり「こういう書き方は、他の言語に移せないのでやめましょう」みたいな書き方してたな。
そんなこと気にするこたねえだろってオモタよ。
171仕様書無しさん:2008/09/08(月) 21:36:19
>>170
特定の環境以外に移植される事がありえないなら移植性を気にする必要は皆無だね
でも例えばwebブラウザみたいなのだといろんなOSに移植される可能性があるから移植性を考慮する必要があるよね
172仕様書無しさん:2008/09/08(月) 21:43:55
他の言語に移すことまで考えてコーディングなんて必要ないだろ。
173仕様書無しさん:2008/09/08(月) 22:28:47
突き詰めるとこの世に複数の言語が存在する意味を否定してしまう事になるな
174仕様書無しさん:2008/09/08(月) 22:47:52
+= はマクロで単純に+に置き換え可能だから問題ないよ。

VBスクリプトのサンプルに FOREARCH使ったのがあったんだけど、
これをFOREARCHのないスクリプトに移す方法が分からなくて困った。
いやもちろん配列数分繰り返せばいいんだろうけど
COMオブジェクトが取ってきたリストを単体で取り出す方法が分からないんです。
僕がそれを知らなくて使えないだけなんだろうけど、
FOREACHなしに単体アクセスできないようなものがあるとしたら移植性は落ちることになるね。

っていうかとあるスクリプト言語でCHAR型の配列を作れなくてDLL呼べません・・・
175仕様書無しさん:2008/09/08(月) 23:05:37
>>174
それ関係ない話題ですね。
176仕様書無しさん:2008/09/08(月) 23:32:20
>>175
関係ないと思った理由は何ですか?
177仕様書無しさん:2008/09/09(火) 00:58:56
移植性考慮してたらソースにSQL埋め込んだりしないだろ
178仕様書無しさん:2008/09/09(火) 03:29:21
SQL格納用DBとかが別途あって、そこから取得してくる訳ですね。
179仕様書無しさん:2008/09/09(火) 16:43:35
>173
バベルの塔でネ申の怒りを買っていなければ今頃こんな問題は……。
180仕様書無しさん:2008/09/09(火) 22:40:19
プログラマが信奉するのはハノイの塔だろ
181仕様書無しさん:2008/09/09(火) 22:49:55
そんで象牙の塔にこもる
182仕様書無しさん:2008/09/10(水) 01:41:12
ドルアーガの塔・・・?
183仕様書無しさん:2008/09/10(水) 15:05:22
遅レス

>>167
連結自体は>>168の言うとおりのことと
VB.NETでも移植可能なように
VB側だとアンダースコア入れなきゃいけないのもあってのことみたい

>>169
まぁいまさらこんなちっぽけなコストのこと言っても仕方ないんだけど
String += "Hoge"

てインスタンスの作成が複数回入るからせめて数百回連結するくらいならStringbuilderのが効率いいかなと思って・・・
それとAppendLineでデバッグ時に解読しやすようになるかなってのも考慮に入れてたつもり
文字列結合繰り返しながら改行コード入れろと言われれば終わりだけどw

↓出力イメージ
SELECT
  HOGE
  ,HAGE
FROM
  DUAL

こんなかんじ
まぁどうでもいいかw

184仕様書無しさん:2008/09/10(水) 20:35:38
>>183
MSが、StringBuilderの使いどころを解説した文章があって、それには、
ただの連結では、使う必要ないって書いてあった。
ループの中で連結させるとか、連結の回数が固定されてないとき使えって。
185仕様書無しさん:2008/09/10(水) 23:08:41
ちょっとしたテストプログラムでも書いて実証してみるべきか
と言うだけ言ってやらない俺
186仕様書無しさん:2008/09/11(木) 09:31:45
>>184
そうなんだ、ちょっと気になるな
折角なのでもし残ってるならURL欲しい

>>185
( ´゚д゚`)
187仕様書無しさん:2008/09/11(木) 10:12:07
>>184
http://blogs.sun.com/okazaki/entry/performance_myth_string_plus_string
コンパイラ様の最適化の前では無駄な議論だ。
188仕様書無しさん:2008/09/11(木) 10:58:00
>>187
サンクス
JAVAの例だったけどこれは・・・・
いい勉強になった ありがとう

確かに他の部分のコーディングやSQLの書き方次第で処理時間的に変わるところの方が大きいだろうし、可読性優先させた方がいいかもってこっちゃね
189仕様書無しさん:2008/09/12(金) 00:23:20
javaのStringBuilderって初期容量を指定して、その容量を超えないようにappendするのが最速ってどこかで見たけど…
190仕様書無しさん:2008/09/12(金) 01:57:35
もうこういう小手先テクニックを使うような時代じゃないのかもね。
ジャンルにはよるだろうけど
191仕様書無しさん:2008/09/12(金) 12:23:47
>>189
…当たり前だろうに。C++のコンテナだってそうだ。
192仕様書無しさん:2008/09/12(金) 14:25:57
>>191
ディクショナリとかコレクション系もそうじゃなかったっけ?
193仕様書無しさん:2008/09/12(金) 15:03:27
>>192
そ。Cで言えば、
 1. 最初に必要な領域を malloc で確保。
 2. 必要に応じて realloc を繰り返す。
で、「1. の方が早らしい」つってるようなもん。
そりゃあそうだろうと。
194仕様書無しさん:2008/09/12(金) 15:16:47
しかし、場合によってはコンパイラの最適化に身を任せると、最初に固定で割り振る
とかの芸当を見せてくれるから手動で事前に容量計算して割り当てるより更に早かった
りするから油断が出来ない。

という話でしょ。
195仕様書無しさん:2008/09/12(金) 20:58:35
>>186
http://www.microsoft.com/japan/msdn/enterprise/pag/scalenetchapt05.aspx

よく読んでみたら、1ステートメントのときは+を使えって書いてあるな。
複数のステートメントで+=で連結してるときのパフォーマンスは検証したほうがいいかも。
196仕様書無しさん:2008/09/12(金) 21:09:25
そもそも SQL 発行の方がよほど時間がかかるのでそんなことをちまちま指摘する
暇あるならもっと他にやることあるだろと思う。

深いループ中で何百万回も呼ばれるなら >>195 の言う通りだが。
197仕様書無しさん:2008/09/14(日) 21:23:00
103:初心者(東日本) :2008/09/14(日) 15:13:22.04 ID:8Pa2emDm0 [sage]
こーいうのやめてくんない
   ↓↓↓↓↓
func()
{
  try
  {
    // とても重要な処理を行う
      :
      :
  }
  catch()
  {
   sleep(3000);
   func();
  }
}
198仕様書無しさん:2008/09/14(日) 21:28:51
無限ループって怖いねえ

まぁどっかでスタック使い果たすだろうけど
199仕様書無しさん:2008/09/18(木) 02:34:14
はなしはかわるけどさ、
無限ループって怖くね?
200仕様書無しさん:2008/09/18(木) 02:50:10
重要なことだから無限回言うかもしれません
201仕様書無しさん:2008/09/18(木) 13:26:55
俺クミコ屋さんだから、今まで作った製品全部無限ループ(w
202仕様書無しさん:2008/09/18(木) 23:58:02
ループ抜けちゃったらクレームだなw
203仕様書無しさん:2008/09/19(金) 04:31:50
念のためそのループの後ろには0番地へのジャンプ命令を置いてある。
204仕様書無しさん:2008/09/19(金) 07:17:49
空き領域をRST 00hで埋めたりとか
205仕様書無しさん:2008/09/21(日) 22:15:03
ヘヘヘヘヘヘヘヘヘヘヘヘヘ
206仕様書無しさん:2008/09/22(月) 00:13:56
ずっと小さな会社でオープン系の仕事やってて、
最近組み込みの会社に転職したんだけどさ。

・モジュールという名の数万行のソースファイル。
・関数の平均step数500オーバー。
・その中は if( a!=0 ) { … if( a==0 ) { … else { … if( a==0 ) { } } } } みたいなのがいっぱいで構成されている。
・標準関数使用禁止なのはいいとして、ライブラリが全く整理されていない。
 memcpyの劣化(低速化、高容量化)関数がいっぱいw
・hogehoge[5] = 画面遷移を握る重要なパラメータ; みたいなのが盛り沢山。
・関数よりもexternで↑の値を参照。
・設計も糞も無いから少しいじると即デグレ。

入社面接でxmlとかumlとか出てきて少しはできるのかと期待してたらこんなもんでした。
207仕様書無しさん:2008/09/22(月) 01:19:09
でかい会社の方が技術的にアレってのはよくあること
にしてもひどい会社だなwww
208仕様書無しさん:2008/09/22(月) 14:21:32
まるで某会社の携帯電話開発の現場を見ているようだ。
209仕様書無しさん:2008/09/22(月) 15:21:15
なんで標準関数使用禁止とか多いんだろ?
組み込みは話にしか聞かなくてやったことないのでわからん・・・
210仕様書無しさん:2008/09/22(月) 16:01:57
インターフェース仕様が読めない/読む気がない奴が多い。
自分で書いた奴でないと信用しないという奴も多い。
strxxx memxxx sprintfなんか実際使えば便利なんだけどね。
211仕様書無しさん:2008/09/22(月) 23:08:11
xxprintf() は内部で malloc() してたりして遅くてメモリ食いすぎ



と言う過去のトラウマの影響と思われ。

まあ、小規模系だと今でも俺は使わないけど。

strxxx(), memxxx() を使わない理由はよくわからんな。
212仕様書無しさん:2008/09/23(火) 00:34:33
>209
標準関数を使うと、大抵の場合は使わないモジュールの分までリンク時にくっついて
きちゃうからでしょ。LSI-Cなんかはそこら辺を細かく切ってたりして小さくいけますよと
いうのをウリにしていた位で。
ソースコードの行数より、実際にROMに落ちたときのメモリ使用量とかをいかに
小さくするかというのがコストにダイレクトに跳ね返ってくるところで、LIBを
ドカンとくっつけられたらたまらんでそ?
213仕様書無しさん:2008/09/23(火) 00:49:06
組み込みっていうと SymbianOS しか経験がないけど
コンパイラが標準ライブラリをサポートしていない、というのもあるかもね。

例えば SymbianOS だと static 変数が使えなかったりするんだけど(今もまだ使えないのかな?)
確か、それはハードウェアの制限だって聞いたような。
そういう事情で、標準ライブラリを揃えるのが面倒くさい・・のかどうかは知らないけど
事情をすべて織り込んだ独自ライブラリの方が、制限の多いハードウェアを活かせるだろうし。

標準の strxxx は nil 終端が前提だから、何をするにもまず nil が見つかるまでバッファをなめる必要がある。
リソースに余裕のない場合は、やっぱりそういうのは避けたいんじゃなかろうか。
速度に悩んでた mozilla も、文字列の持ち方はかなり工夫してたよね。なんかいろいろと紆余曲折を経て。

いくら最近の携帯のリソースは潤沢になったと言っても、ユーザの欲求はまだまだそれを上回ってる。
今時、動画なんて当たり前。でもCPUにでっかいファンはつけられない。
常時「うぃーん」なんてファン音がしてる携帯、誰も買わないよね。漏れは買うけど。全裸で。
214仕様書無しさん:2008/09/23(火) 00:50:39
だから sprintf() 系ならまだわかるけど、memxxx() なんかまで目の敵にするのは、
ちょっとロートルすぎ。

そもそも >>206

> memcpyの劣化(低速化、高容量化)関数がいっぱいw
           ~~~~~~~~~~
って書いてあるだろ。
215仕様書無しさん:2008/09/23(火) 01:07:28
すぎ、とか言われても、そういう文化なんだから、ケチ付けるなら、改革してきてくれよ。
216仕様書無しさん:2008/09/23(火) 01:18:02
お前ン所の文化なんか知らんがな、勝手に改革でも自滅でもしててくれ。
217仕様書無しさん:2008/09/23(火) 04:55:58
>>212
最適化で未使用なものは削除されたりしないの?
218仕様書無しさん:2008/09/23(火) 08:59:55
ライブラリとリンカ次第の面もあるけどさ、例えば標準関数の多くがglobalで参照
errnoを参照していると芋づるでつながってくっつけられたらたまらんでしょ? 全裸でも。
他にも、組み込みではあまり浮動小数点演算なんか用がないんだが、浮動小数点エミュなし
のライブラリが用意されていないとこれも太る原因で困る。
とか、いろいろ。
219仕様書無しさん:2008/09/23(火) 09:35:44
>>213
>SymbianOS だと static 変数が使えなかったり
そりゃDLL内部の話じゃないのか?
>それはハードウェアの制限だって
なんでやねん。
220仕様書無しさん:2008/09/23(火) 13:43:45
>>219
おお、ずばり、DLLの話だべ。SymbianOSの一般的なアプリってのはDLLの形だから。
てことは、ハードウェアの制限とか関係ないのかな?
いやでも ROM には static なものは書き込めないから、みたいな話だったんだけど。
あーもういろいろ忘れた。
でもとにかく、SymbianOSでは static 使ってるとビルドエラー。1回うっかりやらかして怒られた。

気合入れた組み込み系って、コンパイラから自前で調整しなきゃいけなかったりするんでそ。
SymbianOSだとgccをベースにして、なんか細工してたりするんじゃね。
221220:2008/09/23(火) 13:48:12
って勢いで書いちゃったけど、もともとの >206 は

> ・標準関数使用禁止なのはいいとして

あー、標準関数がねーぞゴルァと愚痴ってたんじゃないのね・・
無いなら無いで、同等の効率のライブラリを寄越せよ、と。
失礼しますた・・
222仕様書無しさん:2008/09/23(火) 14:28:36
> いやでも ROM には static なものは書き込めないから、みたいな話だったんだけど。

普通は、スタートアップルーチンが ROM から RAM にコピーするが、組み込みでそこを
サボってる奴は見たことある。

ただし、static 禁止じゃなくて、「使ってもいいけど初期値は保証しないよ。」って
言うスタンスだった。
223206:2008/09/23(火) 21:53:49
文章力低くてスマン(;´ρ`)
プログラムの書き方というか、方針自体は大して意義無いんだ。
16bitマイコン(OS無し)なので、まぁ色々と事情があったとは思う。

ただ、その制約の中で10年間以上続けた成果が、
前述の無駄なROMの使用方法だとか、
不具合だらけのスパゲッティコードとか、
当然のデスマで労基に突っ込まれたりとか。(入社前だけど)

まぁ、こんな状態で長くいたら病気になりそうだし、
何より新人がかわいそうだから自爆覚悟で改革してみるつもり。
224仕様書無しさん:2008/09/24(水) 01:04:28
ガンガレ
225仕様書無しさん:2008/09/25(木) 09:28:02
小数点のある金額計算でfloat使わないでください
桁落ちしてるのにきづいてください おねがいします。
226仕様書無しさん:2008/09/25(木) 09:56:05
あるある('A`)

小数部と整数部と分けて変数を設定するのはいいよ
でもなんで文字列形なんだよ。COBOLでもないのに。
227仕様書無しさん:2008/09/25(木) 10:20:28
>>226
>小数部と整数部と分けて変数を設定するのはいいよ
いいのか?
228仕様書無しさん:2008/09/25(木) 11:44:06
「まだ」いいよ、って意味じゃない?
229仕様書無しさん:2008/09/25(木) 15:24:05
>>225
小数がなくてもダメだろ、jk。w
floatの有効桁の相場を知るがよい。
230仕様書無しさん:2008/09/25(木) 15:57:51
とあるゲームのスコアが40億でカウンターストップしたのだが
そのスレで桁数もっと用意しとけよという流れの中、唐突にdouble型を使うのが定石とか力説しだした自称プログラマを思い出した
231仕様書無しさん:2008/09/25(木) 16:12:52
>>229
小数がなければ使っていいとは書いてない。
そう読めなくもないけど相当意地悪だと思う。
232仕様書無しさん:2008/09/25(木) 16:30:39
>>230 カウンターストップしたということは仕様ってことですな。
233仕様書無しさん:2008/09/25(木) 22:42:22
>>231
> 小数がなければ使っていいとは書いてない。

そう読まれてもしょうがない、と言うかそう言うツッコミされるのは当然。

小数の有無に関係なく使っちゃいけないなら

「金額計算でfloat使わないでください」って書けばいいだけ。
234仕様書無しさん:2008/09/25(木) 22:57:44
なんという揚げ足取り・・・
>>225は「少数が無いならfloat使う意味が無い」という前提で言ってるんだろ。
235仕様書無しさん:2008/09/25(木) 23:26:51
>226
あのさー
旧VBで
変数はString型で宣言してるのに
計算は全部浮動小数点でやって格納してるという
凄まじいソースが手元にあるんだが……

なんだろうね、最早コボラの所行とも思えない。下手にPerlでも囓ったか?
236仕様書無しさん:2008/09/26(金) 00:11:52
>>234
いや、君がどう言う前提を置いて解釈してもいいけど、世間はそんなに
都合よく解釈してくれないよ。

>>235
なんかの勘違い君なんだろうね。
Perl とかと混同してる奴なら、型指定なし (=Variant) でやると思う。
237仕様書無しさん:2008/09/26(金) 00:11:53
コボラーだと、単位円の項目に20桁とか設定するのが関の山だな。
238仕様書無しさん:2008/09/26(金) 01:18:43
以前メンテ任された30000行くらいのC++のソース。
読んでるとやたらgotoが目につくので、ふと思い立って"goto"でgrepしてみた。

1000個以上引っかかった。

その場で転職サイトに会員登録した。
今は新しい会社で幸せに暮らしている。
239仕様書無しさん:2008/09/26(金) 03:28:55
使い方にもよるが30行にひとつとは穏やかじゃないな
240仕様書無しさん:2008/09/26(金) 03:42:37
>>238
PHP5.3にはGOTO文が「導入」されたんだぜ?
何故いまさら・・・?
241仕様書無しさん:2008/09/26(金) 11:01:03
>>240
エラー発生時に関数の最後に飛んでエラー処理をする理路整然な
使い方ならいいけど、縦横無尽に飛びまくってたら辞めたくもなるわなw
242仕様書無しさん:2008/09/26(金) 16:30:22
>>234
金額計算なのに、小数以下があるからってfloatを
使わないでください。

と書けばよかったんだよ。
243仕様書無しさん:2008/09/26(金) 20:21:54
>>241
PHPユーザは素人から玄人まで結構な人数がいるからな。
新人とかがgotoを使いだすと・・・
244仕様書無しさん:2008/09/26(金) 22:12:52
バカとGOTOは使いよう
245もちろん GOTO もな。:2008/09/26(金) 23:44:44
・馬鹿とはさみは使いよう

・馬鹿にはさみは使わすな
246仕様書無しさん:2008/09/26(金) 23:56:37
要は後藤さんにまかせろ、と。
247仕様書無しさん:2008/09/27(土) 00:22:49
後藤の口から「こいつは一仕事だぜ」と独り言が洩れた。
248仕様書無しさん:2008/09/27(土) 08:48:06
>>242
そうすると、「floatの端数落ちして困るのは金額計算だけじゃないぞ」とか言い出す馬鹿が出てくるぞ。
249仕様書無しさん:2008/09/27(土) 10:18:49
「じゃあ勝手に全部挙げとけよ、馬鹿。」って返せばいいだけ。
250仕様書無しさん:2008/09/27(土) 14:09:10
>・馬鹿にはさみは使わすな

はじめて聞いたのでぐぐってみたら、多数ヒットして驚いた。
251仕様書無しさん:2008/09/27(土) 23:50:21
・バカとハサミは使いよう

・キチガイに刃物

ごっちゃになってそうだな。
252仕様書無しさん:2008/09/28(日) 01:54:14
こんなもんでごっちゃになると思うのは君だけかと
253仕様書無しさん:2008/09/29(月) 11:56:11
>>250
「馬鹿にはさみは使わすな」というフレーズそのものでヒットしているのは一件しかないじゃん
254仕様書無しさん:2008/09/29(月) 12:28:18
「使わすな」じゃなくて「使わせるな」じゃないか、と同でもいいことに突っ込んでみる


確かにはさみは刃物だしなあ。
255仕様書無しさん:2008/09/30(火) 01:05:55
例外処理の為に使うgotoは良いgotoなんだよって死んだばーちゃんが言ってた
256仕様書無しさん:2008/09/30(火) 03:42:44
俺はgoto使いたくなるなんて関数でかすぎじゃないか派
257仕様書無しさん:2008/09/30(火) 05:31:38
そして回らないループとbreak脱出
258仕様書無しさん:2008/09/30(火) 10:19:21
もしくはswitchと制御変数
259仕様書無しさん:2008/09/30(火) 22:29:25
>>255
初心者は何が例外処理がよくわかってないから、そんなこと教えちゃダメ。
260仕様書無しさん:2008/10/01(水) 00:59:54
gotoを乱発するプログラマにコーディング基準書読み直せって説教したら
関数全体をtry〜catch(...)で括って、gotoの代わりにthrow -1とか書き始めた。
それ、やってること本質的にgotoと変わらんから。
261仕様書無しさん:2008/10/01(水) 01:03:14
発想の本質が変わらないならそーなるだろ
その位のことがわからないほうがおかしい
262仕様書無しさん:2008/10/01(水) 09:10:41
定数を使うなという規約があるのか、
#define NUM_01 1
みたいなのが10くらい並んでいるソースを吐く害虫がいた。
一人だけかと思ったら、その会社全員使っていた。
263仕様書無しさん:2008/10/01(水) 10:05:48
>>262
定数をマクロ定義するのって、Cでは普通にやることだけど。何が問題?
264仕様書無しさん:2008/10/01(水) 10:53:35
>>263
↓こういうことだろ。莫迦が書くコードの典型。
#define NUM_01 1
#define NUM_02 2
#define NUM_03 3
#define NUM_04 4
#define NUM_05 5
#define NUM_06 6
#define NUM_07 7
#define NUM_08 8
#define NUM_09 9
#define NUM_10 10
265仕様書無しさん:2008/10/01(水) 20:04:08
そして、ある箇所で「引数が1から2に変更になりました」ってことになると

#define NUM_01 2

に書き換えるのが大馬鹿
266仕様書無しさん:2008/10/01(水) 20:05:37
なぜ記号定数にするのかということを理解してないからそうなる
267仕様書無しさん:2008/10/01(水) 22:49:40
>>260
> それ、やってること本質的にgotoと変わらんから。

いや、try〜catch() は、飛び先が限定されるから闇雲 goto 乱発より相当ましだよ。

ただ大抵そう言う奴はそれだけではどうにもならなくなって、フラグ使ってゴニョ
ゴニョしてわけわかめのソースができちゃうことが多いから、よく見とかないと危険
だけど。
268仕様書無しさん:2008/10/02(木) 01:09:18
フラグってのもgotoやマジックナンバーと並ぶ害悪だよな。

もちろん正しく使えば問題はないんだろうが
本当にフラグが必要な場面ってそう多くはないと思うし
デバッグ時に場当たり的にフラグ作って逃げる、みたいなのを
繰り返してフラグをどんどん増殖させる奴って結構いるから困る。

用途不明のフラグだらけのソースの面倒見るくらいなら
gotoの方がまだましだよ・・・。
269仕様書無しさん:2008/10/02(木) 09:28:03
>>262
それって、定数じゃなくてリテラルと呼ぶんだよ。
270仕様書無しさん:2008/10/02(木) 23:11:45
>>268
> 用途不明のフラグだらけのソースの面倒見るくらいなら
> gotoの方がまだましだよ・・・。

でも、意味不明フラグと闇雲 goto って大体セットででて
くる...。

>>269
はいはい、正しい指摘できてよかったねぇ。
満足したら巣に帰ってくれないかなぁ。
271仕様書無しさん:2008/10/03(金) 04:45:19
Cで定数と言えば、定数マクロかconst修飾された変数だろ・・・
272仕様書無しさん:2008/10/03(金) 10:24:14
123 は、定数じゃないと?

人と会話できてる?
273仕様書無しさん:2008/10/03(金) 10:42:32
>>272
ひょっとしてお前、先輩に「ここの123ってリテラル、定数定義しとけ」と言われて
> 123 は、定数じゃないと?
とか答えるのか?

人と会話できてる?
274仕様書無しさん:2008/10/03(金) 11:40:23
正式な定義と普通の会話の使い分けもできないの?

やっぱり、人と会話するの難しそうな人だね。
275仕様書無しさん:2008/10/03(金) 11:50:33
先ず「定数」を well-defined にしろ無能共。
276仕様書無しさん:2008/10/03(金) 18:29:44
確かに>>272は正式な定義と普通の会話の使い分けもできてないな。
277仕様書無しさん:2008/10/03(金) 19:15:09
>>276
どこがどうできてないか具体的に指摘しなよ。
それとも、君にとってはそれが普通の会話なの?
278仕様書無しさん:2008/10/03(金) 19:22:26
もしかして毎日辞書引きながら会話する系の人?
279仕様書無しさん:2008/10/03(金) 20:08:39
普通に
正式な定義=123も定数
普通の会話=定数定義といえば#defineやconstのこと
ってこと以外に考えられる?
280仕様書無しさん:2008/10/03(金) 21:06:25
>>271 定数と言えば
>>279 定数定義といえば
     ====
目悪いの?
281仕様書無しさん:2008/10/03(金) 21:36:15
>>280
君さあ、>>273読める?それともメクラ?それとも日本語NG?
282仕様書無しさん:2008/10/03(金) 21:54:53
粘着にエサやるな、ヴォケ
283仕様書無しさん:2008/10/03(金) 22:30:36
あー!もう訳が分からん!揚げ足取りの誰かが作ったバグ(>>280)のせいでな!
284仕様書無しさん:2008/10/03(金) 23:07:29
>>281
> 123 は、定数じゃないと?
     ====
墓穴乙。
285仕様書無しさん:2008/10/03(金) 23:18:29
確かに>>284は正式な定義と普通の会話の使い分けもできてないな。
286仕様書無しさん:2008/10/04(土) 00:08:02
下線ぐらいズレないようにひけよ低能
287仕様書無しさん:2008/10/04(土) 00:21:50
288仕様書無しさん:2008/10/04(土) 01:45:56
このスレおもしろーい
289仕様書無しさん:2008/10/04(土) 06:09:09
>>284 は墓穴を掘ったな。
290仕様書無しさん:2008/10/04(土) 08:35:52
      | |/ノ二__‐──ァ   ヽニニ二二二ヾ } ,'⌒ヽ
     /⌒!|  =彳o。ト ̄ヽ     '´ !o_シ`ヾ | i/ ヽ !    おケツを…掘った?
     ! ハ!|  ー─ '  i  !    `'   '' "   ||ヽ l |
291仕様書無しさん:2008/10/04(土) 09:41:53
>>284
や ら な い か
292仕様書無しさん:2008/10/04(土) 12:48:22
うほっ
293仕様書無しさん:2008/10/04(土) 16:35:46
汚いスレだなぁ
294仕様書無しさん:2008/10/04(土) 17:01:03
2ちゃんねるをやめたくなった
295仕様書無しさん:2008/10/04(土) 17:04:57
やめれば?
296仕様書無しさん:2008/10/04(土) 17:11:30
しかしやめると生活が・・
297仕様書無しさん:2008/10/04(土) 17:53:50
シャッキリしてしまうな。
298仕様書無しさん:2008/10/05(日) 02:09:58
健康的になってしまう
299仕様書無しさん:2008/10/05(日) 02:46:01
>>271とは言葉の定義のズレやらなんやらを補正しながら会話できる
>>272はそういう補正をやらないみたいなので怖くて会話できない

>>271は多分
「ここの123ってリテラル、定数にして」
って言い方するんだろうけど、これで意味汲み取るなり
定数の意味聞くなりして会話できるよな
300仕様書無しさん:2008/10/05(日) 09:08:20
>>299
某H社のプログラマは定義のズレが激しすぎて補正能力が高くないと仕事できん
しかしこっちがイミフなこと言ってしまうと>>272のようなきっつい切り返しも待っている

はぁ・・・月曜日がやってくるぜ・・・
301仕様書無しさん:2008/10/05(日) 11:24:39
まあマクロ定義は変だと思うけど意味解釈しないエディタで検索する場合は絞り込めるので使える。

某ソフトでバージョン番号を定義なしの埋め込みにされてたんだけど
そのおかげでデータの追加が行われるたびにデータ付加前と後の2つのデータができる。
ソフト業界ではこれで会社がひとつに絞り込まれるような気がするがまあいい。

これをたとえマクロ定義してあったとしてもパッチ当てないといけないことに変わりはないが、
versionって単語でプロジェクト内検索で一発で見つかるのと、
見当をつけてソース片っ端から探すのとじゃえらい違いだ。

まあ、データ作るほうがフォーマット互換性を保障してくれないクソ野郎だからまじめな人間はエラーではじくしかないんだよな。
んで、「決め打ちで」って指示を出したら判定部分に数字打ち込むし。

つまり仕様の指示を出す人間とコーディングする人間の間に、
ソースレベルで設計できる人間が必要なんだ。
設計は仕様定義とソースレベル定義とかっちり分けて考えないといけない。
302仕様書無しさん:2008/10/05(日) 12:13:41
>>299
> >>272はそういう補正をやらないみたいなので怖くて会話できない

自称エスパー乙。
ついでに、>>301 が何を言ってるのか翻訳しといてくれ。
303仕様書無しさん:2008/10/05(日) 14:15:20
>>301
お前向いてねーわ。
辞めろよ。
304仕様書無しさん:2008/10/05(日) 14:32:21
デスマーチばっかりな>>303が何か吠えてます。
305仕様書無しさん:2008/10/05(日) 16:39:38
仕様の指示を出す人間=SE
コーディングする人間=コーダ
ソースレベルで設計できる人間=プログラマ
306仕様書無しさん:2008/10/05(日) 16:45:13
>>305
プログラマがみんなソースレベルで設計できるんだったらJavaで手続き型だの
COBOLもどきだのやらないと思います。
307仕様書無しさん:2008/10/05(日) 17:39:48
>>301 日本語おk
308仕様書無しさん:2008/10/05(日) 17:42:18
>>305
> 仕様の指示を出す人間=SE

ダウト。仕様を決定する権限のあるSEなんて極少数。
ほとんどは降りてきた仕様から概略設計/詳細設計するだけ。
309仕様書無しさん:2008/10/05(日) 20:47:51
>308
だから「指示」なんじゃまいか?
自分では決めてないが、上から来たものを下に受け流す、と
310仕様書無しさん:2008/10/06(月) 00:09:46
SEは技術に口出さず客とのプロキシになってくれればそれでいい。
プログラマから叩き上げのSEならともかく、世の中のSEって大半が
最初からSEとして新卒採用された連中だろ。
場数を踏んだプログラマよりいい設計ができるとは思えない。

SE:客との折衝、要件定義、人・物・金の管理、事務処理
PG:設計、実装、テスト

ちょうどうちの会社がこんな感じなんだけど
個人的にはこういう分担が一番仕事しやすいかな。
技術的な決定権はコード書く人間に持たせないと駄目。
311仕様書無しさん:2008/10/06(月) 11:14:39
PG上がりのSEが多くなることを切に願う
営業もだけどさ・・・・
312仕様書無しさん:2008/10/06(月) 12:49:41
>>311
問題は、実態はPG上がりではなく、PG崩れのSEや営業が多いということ。
313仕様書無しさん:2008/10/06(月) 22:09:59
>>310
いいなあ・・・
うちのとこだとこうだ

SE:人・物・金の管理、事務処理
PG:客との折衝、要件定義、設計、実装、テスト
314仕様書無しさん:2008/10/07(火) 08:01:31
うちの場合、
SE: スポ新を読む
PG:人・物・金の管理、事務処理、客との折衝、要件定義、設計、実装、テスト
315仕様書無しさん:2008/10/13(月) 09:54:12
スレタイとは逆になっちゃうけど

// ミドルウェアのバグを回避するためここで一旦0を代入

的なコメントを書いておくと「消せ!」って言われる会社ってどうよ?
316仕様書無しさん:2008/10/13(月) 10:30:34
辞めとけ
317仕様書無しさん:2008/10/13(月) 22:10:47
>>310-314
コピペだが...↓

プログラマーの格言 66(盗作多し)
プログラマーに必要なスキルは、交渉・スケジュール管理・業務分析・提案・設計・言語・構築・保守・運用。
SEに必要な能力は、これから言語・構築・保守・運用を引く。
マネージャーに必要な能力は、さらに業務分析・提案・設計を引く。
営業に必要な能力は、さらにスケジュール管理を引く。
318仕様書無しさん:2008/10/16(木) 20:54:15
ここ掘れワンワン
   ∧_ ∧
  (・∀・* )
   (⊃⌒*⌒⊂)
    /__ノ''''ヽ__)

319仕様書無しさん:2008/10/18(土) 01:45:18
>318
おとこわりだ
320仕様書無しさん:2008/10/18(土) 10:28:15
>>318
こんなのがソースに書かれてたら、会社を辞めたくもなるよな。
321仕様書無しさん:2008/10/18(土) 16:23:47
いやべつに
322仕様書無しさん:2008/10/27(月) 14:04:46
単なる変数の初期化じゃないのか
323仕様書無しさん:2008/10/28(火) 01:56:50
むしろオワットル
324仕様書無しさん:2008/10/28(火) 11:18:05
「俺の肛門も初期化されそうです」
325仕様書無しさん:2008/10/28(火) 22:22:54
『既出荷製品で問題なく動いている』とご自慢のプログラムに
こんなコードがあったこと。
上位バイトの初期化漏れで見事不具合を出していた。

unsigned long hoge;
(unsigned short)hoge = xxx;
326仕様書無しさん:2008/10/28(火) 22:24:06
コンパイル通らんだろそれ
327仕様書無しさん:2008/10/29(水) 09:26:27
思いつきなのか
思い出せてないのか

*(unsigned short *)&hoge = xxx;

だろう、普通。いや普通はそんなバカやらんか。
328仕様書無しさん:2008/10/29(水) 15:00:41
警告が出ると思うが、無視してたんだろうなあ
329仕様書無しさん:2008/10/29(水) 16:01:15
警告?出るか?
330仕様書無しさん:2008/10/29(水) 18:25:42
(unsigned short&)hoge = xxx;
じゃないの?
C++の参照型。
これもエラーか?
いやー、最近はPerlばっかりなもんで。orz
331325:2008/10/29(水) 23:14:19
>>326-330
Cのソースをプリコンパイル済みヘッダ使わなきゃ
VC9でもコンパイル通るし、警告も出ない。
ただ実際やってみると
---
unsigned long hoge;
(unsigned short)hoge = 0x1234;
---
実行結果はDebugモードで hoge == 0xCCCC1234 な感じ。
16bitの世界のソースを何も考えずに移植したんだと。
332仕様書無しさん:2008/10/30(木) 03:12:57
>>331

代入の左辺のキャストはC99あたりで禁止になったんじゃないかな?
たしかgccがその辺の挙動を変えて、Linuxのカーネルソースの修正がとかいう話があった。
333仕様書無しさん:2008/10/30(木) 03:25:05
左辺値のキャストとか馬鹿かと思うけど右辺でそれぞれキャストするよりいいのかなと思ったけど
やっぱり全体をキャストできるんだから左辺値をキャストする奴は馬鹿だな。
そしてLinuxを書いてるのはそのレベル。
334仕様書無しさん:2008/10/30(木) 07:15:43
実際に見もしないで貶してるんだと思うけど、Linuxのコードは相当綺麗な方だよ
335仕様書無しさん:2008/10/30(木) 07:21:50
うん見てないけど、
Linux初期のコードは素人が書きなぐったようなものだったって最近2ちゃんねるで見た。
336仕様書無しさん:2008/10/30(木) 12:02:38
過去はこうだったって殴り書きだけを拠り所に全体を評価、か。
相当馬鹿なんだな、お前。
337仕様書無しさん:2008/10/30(木) 12:16:52
Cのソースの読みやすさには、初心者に読みやすいソースと、玄人に読みやすいソースがある。
Linuxは主に初心者に読みやすいソースだし、BSD系はどちらかと言うと玄人に読みやすいソース。
338仕様書無しさん:2008/10/30(木) 12:52:11
>>337
ああ、なんか分かる。
引数が多いWindowsプログラム最初に見たとき、引数ごとに改行してさらに引数ごとにコメント入れないとさっぱり分からんかった。
339仕様書無しさん:2008/10/30(木) 20:27:25
ん?
340仕様書無しさん:2008/10/31(金) 02:01:09
左辺値をキャスト出来る言語仕様にしたのは
どんな使い方を想定してるのだろう?
341仕様書無しさん:2008/10/31(金) 05:11:02
構造体の代入とか
342仕様書無しさん:2008/10/31(金) 15:35:48
構造体現物のキャストはできんでしょう
できる処理系あったっけ?俺の勉強不足?

int hoge = 0;
(short)hoge = 0xFFFF;
とかやったら
hoge = 0xFFFF0000; 又は
hoge = 0x0000FFFF; になるんだっけ?
前者になる処理系なら使い道有るかも知れんけどあまりにトリッキーだし危険だな


343仕様書無しさん:2008/10/31(金) 15:55:05
上読み直したら >>327 のやりかたで構造体のキャスト代入できるわ
失礼しました
疲れてるから寝ます
344仕様書無しさん:2008/11/02(日) 18:21:15
左辺値のキャストキモイよー
345仕様書無しさん:2008/11/30(日) 12:35:36
(FARPROC&)はよくやる
346仕様書無しさん:2008/12/04(木) 19:35:15
左辺値キャストの本来意図した使い道はよくわからんが、
linux kernel で使われた例を見てみると、
ハードウェアとのI/O等でベタなバイト列をCの型や構造体として変換・扱いたい場合とかに
型をより明示したいという意図で使われたように思えるね。
ttp://search.luky.org/ML/linux-kernel.2004/msg58563.html

例えばこの辺とかも、まあ書いた人の気持ちはわからんでもないかなー、ぐらいは思う。
- (adpt_hba*)(host->hostdata[0]) = pHba;
+ host->hostdata[0] = (unsigned long)pHba;

この辺は元は一行だったのが三行で書き直さなきゃいけなくなってるし。
- *((u16*)buf)++ = le16_to_cpu(inw(NE_BASE + NE_DATAPORT));


>>343
>>327 のやりかたは構造体現物のキャストでも左辺値キャストでもないでしょ。
まあ本題ではないけど。
347仕様書無しさん:2008/12/07(日) 01:43:55
8085で、こういうのはやったな。これも左辺キャストになるのかな。
/*  strcpy(xxbuf+xxen,"\n");  ** 以下に最適化 */
   *(int*)(xxbuf+xxlen) = '\n';  /* <LF>を付加 */
H8系ならアウトだけど、8085だとうまくいく(w
348仕様書無しさん:2008/12/07(日) 02:30:58
いやそれは
*(int*)(xxbuf+xxlen)
が左辺値だから
左辺値キャストはされていない。
349仕様書無しさん:2008/12/22(月) 13:38:16
ヌル終端を一緒に書き込んでるのか
だったらまだ
xxbuf[xxlen] = '\n';
xxbuf[xxlen+1] = '\0';
のほうがマシな気がするが

>>346 を見るに、行数を気にする人もいるのかね?

>この辺は元は一行だったのが三行で書き直さなきゃいけなくなってるし。
>- *((u16*)buf)++ = le16_to_cpu(inw(NE_BASE + NE_DATAPORT));

bufにu16サイズ分書き込むだけなら気にしないんだが
++はキモいなー
350347:2008/12/22(月) 17:36:56
>>349前半 それだとアドレス計算が2度されるし、DEregにsetした16bit値をストアする命令が
出ないので、347のほうが速いです。 なにせ3MHzの85(w
351仕様書無しさん:2008/12/22(月) 20:10:05
ロートル乙
352仕様書無しさん:2008/12/24(水) 08:41:18
速度が気になるならアセンブリで書け、っつーこった。
353仕様書無しさん:2008/12/24(水) 16:31:07
1秒毎に4.8Kbitの電文80バイトぐらい。コンマで区切られたパラメータの並べ替えをするのに
strxxxを使ったら間に合わなかったので、引数のHL,DEをpush/popで保持しながら自前movstr()
を呼び出す部分を_asm_c("ASM文"); で埋め込んで書いたことはある。
前任者が書いたASMより俺が書いたcのほうが軽かったこともある。
今でも、重さが気になるときはASMコード吐かせて確認してる。
354346:2008/12/25(木) 13:46:03
>>349 後半
単なる行数を気にしてるのではなくて、
そのためだけにわざわざ一時変数を用意しなきゃいけなくなっていて、
コードのシンプルさが失われちゃってるよねってこと。
もし元々 buf が u16*型だったとしたら(キャスト無しで)ごく自然なコードなんだしさ。

むしろ incb と incw をちゃんと意識している感じが
非常に「高級アセンブラ」らしい使い方だなあ、と
俺はなるほどと感心したくらいだが。
355仕様書無しさん:2009/01/05(月) 21:19:38
2年前に会社辞めた奴の残したコード

} catch(Exception e) {
Exception x = new Exception();
x.initCause(e);
e.initCause(x);
throw x;
}
356仕様書無しさん:2009/01/06(火) 14:04:19
俺はクミコ系なので、スローとキャッチの意味は推測なのだが、
その残したコードは恨みか愉快犯か故意犯か、どれかに思えるな。
357仕様書無しさん:2009/01/06(火) 15:06:32
>>355
これ、試しに書いてみたら、
stackTrace出すと、stackOverflowでこけるな
initCauseの時点では問題なさげだけど、参照をお互いに保持してるから、
printStackTrace()とかを呼ぶと、問題になるね

意図せずにこんなコード書かないだろうから、
遠回しな悪意の表明だろうなぁw
358仕様書無しさん:2009/01/06(火) 18:35:17
x.initCause(e); // ちくしょう…
e.initCause(x); // ちくしょう…
throw x; // ちくしょぉぉぉぉぉぉぉぉ!!

に見えた。
359仕様書無しさん:2009/01/25(日) 19:13:45
>>347
コードのどこにも書いていない '\0' の代入を、挙動を追いながら想像しろって?
最 悪 な コ ー ド じ ゃ ん 。
「プログラム書法(共立出版)」を最初から最後まで全部読め。速くするのはそれからだ。
360仕様書無しさん:2009/01/25(日) 19:37:46
業者乙
361仕様書無しさん:2009/01/25(日) 20:18:30
今ならプログラミング作法じゃないの。おっさん乙
362仕様書無しさん:2009/01/25(日) 20:30:35
>>361
「プログラム書法」に必要十分なことは書いてあるから、類似のものなど読まなくていい。
おまえら若者が古いという理由だけでこういう良い本を読まないのは哀れにも愚かにも思える。
「ビートルズやツェッペリンなんか聴いても仕方ない」と言っている奴らとまったく同じだ。
363仕様書無しさん:2009/01/25(日) 20:38:36
そうやって古き良き時代にしがみつくからだめなんだよ
364仕様書無しさん:2009/01/25(日) 21:10:51
>363
「古きよき時代にしがみつく」って日本語の意味を
ちゃんと理解してから出直してこい
365仕様書無しさん:2009/01/25(日) 21:27:11
>>363
そういうのは「反論」じゃなくて「ただの減らず口」って言うんだよ。覚えとけ。
反論したいなら、何か相手をうならせるようなことを言ってみろ。
366仕様書無しさん:2009/01/25(日) 22:09:36
つぎで、うなってください
367仕様書無しさん:2009/01/25(日) 22:13:28
∈(゚◎゚)∋ウナー
368仕様書無しさん:2009/01/25(日) 22:40:21
はいはい、類似なら書店で手に入るものでいいでしょ
369仕様書無しさん:2009/01/25(日) 23:46:50
>>362
> 「ビートルズやツェッペリンなんか聴いても仕方ない」と言っている奴らとまったく同じだ。

それとこれとは話が違うだろと思うビーヲタの俺。
370仕様書無しさん:2009/01/25(日) 23:58:13
見やすいのが一番だぜ
371347:2009/01/26(月) 04:08:37
プログラム書法なら、出てすぐにイヤってほど読んだよ。チームでする仕事にはもちろんやらない。
俺以外に誰も保守する人が居ない状況での*遊び*だからやってるの。
372仕様書無しさん:2009/01/26(月) 09:17:39
>>359
>コードのどこにも書いていない
Cのスタンスでは
「態々 int* にキャストしてるところで気づかない奴が間抜け」
まして >>347 がいつの時代だと思ってる。
作法も糞もあるか。

>>371
遊んじゃダメだろ…
373仕様書無しさん:2009/01/26(月) 20:24:57
暗黙の了解の上で仕事してちゃ引き継げるわけがないだろう。
374371:2009/01/27(火) 15:34:29
いつ引き継いでくれと言われてもいいように、個々のVerの他に 「このシステムの保守は
どんな仕事でハードの概要はこうでソフトの作りはこうで・・・」 って文書用意してるよ。
でも一度もそんな話出ない。他の害虫使ったこともあるがすぐ俺に戻ってきたし。
俺がよっぽど安いのかも。
375仕様書無しさん:2009/01/27(火) 23:44:12
本人は気付かないんだろう たぶん
376仕様書無しさん:2009/01/29(木) 01:03:57
static char *price_str[] = {
"\\0", ←A
"\\1",
"\\2",
...
"\\99,998",
"\\99,999",
"\\100,000" ←B
};
strcpy(buf, price_str[price]);

Aの行番号が486…Bが100485…間はABも含めてちょうど100,000行…
やはり1行足りぬ、うらめしや…
377仕様書無しさん:2009/01/29(木) 01:10:31
>>376くん、カンマの位置の打ち間違いが無いかどうか、目視確認してくれたまえ。」
378仕様書無しさん:2009/01/29(木) 03:08:06
それ全部取っ払って、
if( price > 1000 )
 sprintf(buf,"\\%d,%03d",price/1000,price%1000);
else
 sprintf(buf,"\\%d",price); じゃいかんのか?
379仕様書無しさん:2009/01/29(木) 04:53:49
>>372
> >コードのどこにも書いていない
> Cのスタンスでは
> 「態々 int* にキャストしてるところで気づかない奴が間抜け」

エンディアンだけでなく、intのバイト数にも依存している事実に気付け。
380仕様書無しさん:2009/01/29(木) 07:59:40
余分に入っているだけなら問題無いっしょ。
381仕様書無しさん:2009/01/29(木) 09:06:38
>>379
>エンディアンだけでなく、intのバイト数にも依存している事実に気付け。
んなもん当たり前だろうに。
なんで気付いてないと思ったんだ?
頭おかしいの?
382347:2009/01/29(木) 14:33:00
別に釣りでも火に油まくつもりでもなかったのだが、なんか後引いて申し訳ない(m_ _m)

でも俺、製品で遊びはよくやるんだよね。大昔、現金輸送車の監視コードを8085で書いたとき
いざ!ってときのブザーの鳴動リズムを・・・−−−・・・にしたらこれが大受け(w

別のブツで警告の種別を3種類のタイマトーンで知らせるときに、原案は無意味な3音の組合わせ
だったので、楽典(らくてんと読まないように)を調べて♪レミソ・ミソレ・ソミレ に聞こえる分周比
を設定したらこれも受けて、そのまま製品になった(w
383仕様書無しさん:2009/01/29(木) 20:13:58
>>382
正直そんな事どうでもいい。
384仕様書無しさん:2009/01/29(木) 22:01:45
扱いに困るエンジニアだな
385仕様書無しさん:2009/01/29(木) 23:05:31
>>376
>>378に類する処理でFAな気もするが、ほんとにそんなデータが必要なら、
perl -e 'for (0..100000) { 1 while s/(.*¥d)(¥d¥d¥d)/¥1,¥2/g; print qq("¥¥$_",¥n) }'
とでもやって出力とそっくり置き換えてしまえ。
386仕様書無しさん:2009/01/30(金) 07:43:11
>>380
バッファオーバーラン
387仕様書無しさん:2009/02/02(月) 18:51:17
>>376 はさすがにネタだと思う
388仕様書無しさん:2009/02/02(月) 22:43:54
ウチの会社、文字コード変換全部テーブル使ってるの有ったよ。
JISとSJISとUTF8、UTF16で数万stepだた。
389仕様書無しさん:2009/02/02(月) 22:54:14
区点コード系どうし(JIS<->SJISとか)
Unicodeのエンコード
それぞれ身内での相互変換は計算でできるけど、
グループをまたがった変換は表に頼るしかないんじゃなかったっけ?
390仕様書無しさん:2009/02/02(月) 23:07:11
nkf がコメント等含めて全部で約二千行
jis sjis euc 対応だったかな
391仕様書無しさん:2009/02/03(火) 09:20:18
>>389
殆どバラバラだからね。
で、Unicode Consortium のバグ入り変換表を参考にしちゃって
〜(波ダッシュ)→~(チルダ)に変換されちゃうという悲劇。
392仕様書無しさん:2009/02/03(火) 11:47:28
数万ステップって事は漢字一文字の文字列配列を定義したのか?
ステップも無駄だがメモリも1.5倍使うな
393仕様書無しさん:2009/02/03(火) 11:53:27
>>392
>漢字一文字の文字列配列を定義したのか?
なんでそうなる。
394仕様書無しさん:2009/02/03(火) 12:16:29
>>394
short 配列なら数万ステップにならないんじゃね?

訂正:メモリも1.5倍→3.5倍
395仕様書無しさん:2009/02/03(火) 13:42:46
>>394
うん。やっぱり君が何考えてるかわからない♪
X0208+X0212で何文字あると思ってるんだろう。
しかも、Unicode への変換・逆変換が必要だってのに。
396仕様書無しさん:2009/02/03(火) 17:31:00
>>395
漢字が正確に何文字有るか知らんけど2^16以上ではないだろ
読みやすさを考えれて一行に16個ずつ並べれば最多で4096行
テーブル2セットで数万ステップにはならんだろ?

それにこのネタは >>376 から派生してるんだから漢字の文字列テーブルが有ったと考えるのが自然じゃね?
397仕様書無しさん:2009/02/03(火) 18:42:54
どうでもいいんだけど

>396
>一行に16個ずつ並べれば
決め付け(・∀・)イクナイ!
>有ったと考えるのが自然じゃね?
思わないけど
398仕様書無しさん:2009/02/06(金) 00:09:08
どうでもいいというかどうとでも取れると言うか
まぁ仕事だったら突っ込みどころだけど
399仕様書無しさん:2009/04/05(日) 01:17:24
>>359
そう思って自分は右辺もキャストするな
*(WORD*)ptr=*(WORD*)"\n\0";
明示的にナル文字つけてる分1バイト無駄なのが欠点

>>389
合ってる筈だけど、区点コードにも版があるみたいで良く分らん。
Unicodeを含む相互変換にはテーブルが必要になる…が、
ttp://nurucom-archives.hp.infoseek.co.jp/digital/ecl.js.txt
このくらいの分量に収めることは出来るらしい。
400仕様書無しさん:2009/04/05(日) 05:31:26
347のコードをH8Sに移植してみた。例の部分はもちろんstrcpy(xxbuf+xxen,"\n"); に直すはめに。
8bit 3MHz→16bit 33MHzだから、もういくらでも無駄できる(w

エンディアンの左右以外にも違いがあったよ。charは85ではunsignedで、H8ではsignedだから
80h以上の値だと比較する時に符号拡張した負の16bit値と008xhが比較される。
85的な動作を期待するためには_UBYTE型を使わなきゃいけないんだが、char[]の替わりに
_UBYTE[]を使うと、その配列をstrxxxやsprintfの引数に使うと Argument mismatch の
Warning 対象になるのね。そういう箇所ではみんな(char*)のキャストつけて呼ばなきゃいけない。
typedefine.h と iodefine.h をincludeするだけではすまなくて、隅々まで再点検する事になった(w
401仕様書無しさん:2009/04/06(月) 19:36:26
今さっき本番サーバーで見つけたシェル。

zip.sh

#!/bin/sh

SHELL=/bin/tcsh
export SHELL

cd /hoge/applog/
/usr/bin/tar cvf /hoge/dblog/DBLog.zip $1*.log


・・・前の会社の担当者出て来い(゚Д゚#) ゴルァ!!!!
テストしてないだろ以前に、書いてて判るだろが!!!
402仕様書無しさん:2009/04/06(月) 20:55:22
>>401 正しい拡張子は .zip じゃなくて .tar だよな。当然。
403仕様書無しさん:2009/04/06(月) 21:41:37
拡張子なんて飾りです
404仕様書無しさん:2009/04/06(月) 21:54:52
そのまえに

#!/bin/sh

こう書いておいて

SHELL=/bin/tcsh
export SHELL

こうはないだろって思うのだ
405仕様書無しさん:2009/04/06(月) 22:25:47
あり
406仕様書無しさん:2009/04/06(月) 22:36:14
出口が山ほどある関数がてんこもりのコードを引き継ぎました。
破棄してリファクタした方が早いよう。
407仕様書無しさん:2009/04/06(月) 22:55:13
>>402
仕様書に「zipでくれ」って書いてあったのかも
408仕様書無しさん:2009/04/06(月) 23:54:16
>>406
デグレード地獄
409仕様書無しさん:2009/04/07(火) 02:38:45
シェルスクリプトの事をシェルと略している時点で>>401も似たようなもんだ
略すならスクリプトといえ
それにこのスクリプト、ちゃんと動くだろ
usage: zip.sh <prefix>
/hoge/applog/<prefix>*.log を /hoge/dblog/DBLog.zip に tar 形式でアーカイブします
410仕様書無しさん:2009/04/07(火) 02:56:15
>>404
子プロセスの環境を変えたかったんだろ。
411仕様書無しさん:2009/04/07(火) 05:02:02
H8S ルネサスのコンパイラで、_UBYTE &= 0x7F; に対して precision lost のwarningが出るのね。
bit0〜6のoffには出ない。しょうがなくて_UBYTE = (_UBYTE)(左の変数 & 0x7F); とか書くんだ。
特に変な書式じゃないのに怒られるみたいで、なんかヤだな(w
412仕様書無しさん:2009/04/07(火) 10:05:58
>>402, 407
413仕様書無しさん:2009/04/07(火) 10:11:02
ごめん、書き込みミスった。

>>402, 407
今、あってないようなものな仕様書見た。

>指定された日付のDB更新結果ログを圧縮してダウンロード

zip でくれ、とは書いてなかったよ! でもtarって圧(ry
414仕様書無しさん:2009/04/07(火) 12:40:26
むしろヘッダ分大きくなるな。
415仕様書無しさん:2009/04/07(火) 14:00:53
連結されるからディスクの使用単位毎の余りが無くなって実使用容量は少しは減るかもよ。
416仕様書無しさん:2009/04/07(火) 14:05:35
アーナルほど。
417仕様書無しさん:2009/04/07(火) 22:26:19
圧縮できないtarなんてまだあるのか。
418仕様書無しさん:2009/04/07(火) 22:31:41
圧縮すると一部破損しただけで復号できなくなる範囲が大きいから
好意的に解釈して障害対策だな
419仕様書無しさん:2009/04/08(水) 17:57:09
>>411
論理演算の結果がintになるからって理由かも?
420仕様書無しさん:2009/04/09(木) 12:21:10
つか、こんなshわざわざ書くなら、logrotateでも使えばいいじゃまいか
421仕様書無しさん:2009/04/09(木) 16:50:02
>>419 それだとbit6〜bit0のoffにwarningが出ないことは説明できないじゃん。
8bitの値が7bitの値になるのだから、precision lost なのは確かなんだが。
422仕様書無しさん:2009/04/09(木) 21:21:44
>421
0x80 が符号拡張されて 0xFF80 になる、って話じゃないの?
423仕様書無しさん:2009/04/10(金) 05:11:56
NaN
424仕様書無しさん:2009/04/10(金) 06:27:11
>>422 411でのmaskは0x7Fだもん。
425仕様書無しさん:2009/04/10(金) 11:12:46
_UBYTE &= 0x7Fu
とか?
426仕様書無しさん:2009/04/10(金) 15:27:17
>>425 今試してみた。0x7FuはOKだったけど、maskを#defineで書いてるんで、#define XX 0x80;
で _UBYTE &= ~XX; はダメ。 _UBYTE &= (_UBYTE)~XX; だとOKでした。 ありがとうございます。
ヘッダファイルのほうにも#define XX (_UBYTE)0x01 のように明示キャストを付けました。
出る機械語は特に変わりません。
427仕様書無しさん:2009/04/10(金) 16:08:53
たしか H8S のやつはデフォルトで char 同士の演算を整数格上げなしで char のまま
演算するっていう独自仕様だった気がする。

標準では int より小さい型は演算前に必ず int に格上げされる。

標準に合わせるためになんかオプション足してたような。
428仕様書無しさん:2009/04/10(金) 17:45:39
これHewのコンパイラの鳥説に書いてなかったか?
429仕様書無しさん:2009/04/11(土) 05:38:10
>>428 今見てるけど、どこに書かれてるか見つからない。言語仕様の章にはcharはsignedだと
しか書いてないし、オプションの所にもそれっぽい指定はないし。
プログラミングの章のどこかかな・・・
430仕様書無しさん:2009/04/11(土) 06:52:47
private unsafe void FerguuenSamtzongeImage(ImagePtr pimgInStff, ImagePtr pimgEzStff){
  int fezstraag = pimgInStff.Stride;
  int kup_enn = -this.m_iRaad;
  int arde_enn = this.m_iRaad;
  byte* p_in = (byte*)pimgInStff.Scan0;
  byte* p_eiz = (byte*)pimgEzStff.Scan0;
  for(int y = kup_enn; y <= arde_enn; y++){
    int hoegt = (this.m_poZentrum.Y + y) * fezstraag;
    int pos_raad = (int)Math.Round(Math.Sqrt((kup_enn * kup_enn) - (y * y)));
    int neg_raad = -pos_raad;
    for(int x = neg_raad; x <= pos_raad; x++){
      byte datum; byte ougten_nigburhijd = 0x00;
      int org = (hoegt + 0) + ((this.m_poZentrum.X + x + 0) * 3);
      int naw = (hoegt - 1) + ((this.m_poZentrum.X + x - 1) * 3);
      int nrd = (hoegt - 1) + ((this.m_poZentrum.X + x + 0) * 3);
      int nai = (hoegt - 1) + ((this.m_poZentrum.X + x + 1) * 3);
      int wst = (hoegt + 0) + ((this.m_poZentrum.X + x - 1) * 3);
      int ist = (hoegt + 0) + ((this.m_poZentrum.X + x + 1) * 3);
      int saw = (hoegt + 1) + ((this.m_poZentrum.X + x - 1) * 3);
      int sed = (hoegt + 1) + ((this.m_poZentrum.X + x + 0) * 3);
      int sai = (hoegt + 1) + ((this.m_poZentrum.X + x + 1) * 3);
      ougten_nigburhijd = (p_in[naw] & p_in[nrd] & p_in[nai] &
                 p_in[wst] &       p_in[ist] &
                 p_in[saw] & p_in[sed] & p_in[sai]);
      if(ougten_nigburhijd != 0xff){datum = 0x00;}
      else{datum = 0xff;}
      p_eiz[org + 0] = p_eiz[org + 1] = p_eiz[org + 2] = datum;
    }
  }
}
431仕様書無しさん:2009/04/11(土) 11:53:27
>>430 ドイツ語表記と英語表記が混じっているということはオランダ語のソース?
432仕様書無しさん:2009/04/11(土) 22:06:50
ドイツ語とオランダ語は少し分かるんだけどどっちでもないよ。
でもいかにもゲルマン系だよね。何語なんだろうね。。。でも
変数名の意味は類推でわかるとこもある。
二値画像とみなしてるデータの円の中をなめて収縮処理してる
んだね。処理対象ピクセルの8近傍を東西南北で名づけてるよう
な感じなんだけど。。。
433仕様書無しさん:2009/04/13(月) 08:38:06
/* おまじない */

/* おまじない2 */
434仕様書無しさん:2009/04/16(木) 15:06:29
>>433 なんか俺が保守したコードかと思った(w 回路図上はどっちが先でもいいという言葉を
信じて、TX_PLLの設定をRX_PLLの設定より先にしたらノイズ出まくり、おまじないでRXを先に
したらぴたりと止まった、って体験があるよ。
435仕様書無しさん:2009/04/16(木) 17:11:15
単に /*おまじない */ で済ませずに

/*
回路図上はどっちが先でもいいという言葉を信じて、
TX_PLLの設定をRX_PLLの設定より先にしたらノイズ出まくり、
おまじないでRXを先にしたらぴたりと止まった
*/

と書いておけば十分じゃね?
436仕様書無しさん:2009/04/16(木) 17:25:23
/*
シミュレーションでは問題無かったので私の責任ではありません
*/
437434:2009/04/16(木) 18:07:46
直したコードには>>435さんみたいなコメントをしっかり残しました。同志よありがとう。
438仕様書無しさん:2009/04/17(金) 01:47:43
組み込みとかだと結構おまじない的な経験則でないとどうにもならないことがある気がする

#defineマクロの末尾エスケープが一回しか処理されないコンパイラで数日繰り返し悩まされる羽目になったり…
タイマとIO方向の設定順序によってIO設定が無効化されたりとか…
439仕様書無しさん:2009/04/17(金) 03:42:08
>>438
いや、それはコメントで書けよ。
440仕様書無しさん:2009/04/17(金) 04:23:08
// 石のマニュアルにはIPRKが載っているが、ioddefine.hにはIPRKが定義されていない。
// これは明らかにへうの不備だ。幸いこのレジスタはデフォのままで使えたので、
// 実際の被害は出なかった。
とかね・・・この手のコメント残すと、なんか愚痴っぽくなるな。
441仕様書無しさん:2009/04/18(土) 01:40:30
「なに」じゃなく「なぜ」を書くという観点で十分価値のあるコメント
442仕様書無しさん:2009/04/18(土) 15:54:57
>>433
アホPGは、その「おまじない」っていうコメントすら書いてないから困るw

いきなり意味不明の処理があって、
そこを触ると当然動きが変わるという。

>>440
おそらくハードウェアの不具合的な部分だろうから、
○○さんの指示でこういう風にやった
とか書いておくと、後々楽かもw

数年後に、なんでこんな変な事やってんだよー!って周りから攻められた時回避できるし。
443仕様書無しさん:2009/04/18(土) 20:15:42
>「おまじない」っていうコメントすら書いてないから困る
わざとだぉ
444仕様書無しさん:2009/04/18(土) 23:50:57
/* ボクがやっと見つけた正しく動く順序だ。書き換えることは許さない */
445仕様書無しさん:2009/04/19(日) 00:55:35
>>444
お疲れさんとは思うが
別に辞めたくはならんなぁ
446仕様書無しさん:2009/04/20(月) 14:03:12
冗談に見えるか、ちょっと壊れてるのかが大きな差かな?w
447仕様書無しさん:2009/04/24(金) 07:04:14
phpの

なんだろ。 コメントアウトあり、なしで
挙動が代わるのがあった。
俺は解析していなくて、聞いただけだったが。
よくみつけたなと感心した。

448仕様書無しさん:2009/04/24(金) 08:56:24
【知的財産】中国:ITソースコード強制開示強行へ・制度を5月に発足…国際問題化の懸念 [09/04/24]
http://anchorage.2ch.net/test/read.cgi/bizplus/1240524654/
449仕様書無しさん:2009/04/25(土) 04:07:32
/* ボタンクリック事件 */
450仕様書無しさん:2009/04/26(日) 21:00:13
/* 整数型の変数iを宣言 */
int i;

/* 整数型の変数aを宣言 */
int a;

/* 整数型の変数aを0で初期化 */
a = 0;

/* 以下複雑になるので省略 */
for(i =0; i < param; i++) {
451仕様書無しさん:2009/04/26(日) 21:13:46
>>450
電車の中なのに吹いたじゃねーかwwwwwwwww
452仕様書無しさん:2009/04/26(日) 21:15:19
これはwwww
453仕様書無しさん:2009/04/26(日) 23:23:20
>>450
ちゃんと自己説明的なコードを書いているのにコメント要求された時に
ふてくされて書いた。今は反省している。
454仕様書無しさん:2009/04/27(月) 01:03:02
>>408
デグレードって表現を嫌ううちの試験部隊。
デグレードっていうと鼻で笑われて、"直し壊し"だろ?っていわれる。
同じ意味だと思っているが、試験部隊にはさからえない俺。。。
455仕様書無しさん:2009/04/27(月) 08:35:10
>>406
出口が複数あるのは普通だろ。
456仕様書無しさん:2009/04/27(月) 08:44:31
>>455
つーか、無理に出口を1つにまとめるために
無駄なフラグや変数を増やしているコードのほうが
ずっとイヤすぎるよな。
457仕様書無しさん:2009/04/27(月) 12:31:37
エラー以外で出口が複数あるのは関数分けが出来てない気がする。
458仕様書無しさん:2009/04/27(月) 12:41:06
>>457
if (foo()) return 1;
if (bar()) return 2;
return 3;

こんな関数ザラにあるだろ?こんなのも関数分けの問題なのか?
それとも、出口をひとつにするために int result とか用意しろって言うの?
何のために?
459仕様書無しさん:2009/04/27(月) 13:02:35
それくらいならいいんじゃね
460仕様書無しさん:2009/04/27(月) 13:13:19
何それ?量によるの?
結局「長い関数は関数分けができていない」ってだけじゃないの?
461仕様書無しさん:2009/04/27(月) 13:13:57
出口が1つだけの関数のほうがよほど珍しいだろ。
簡単な探索アルゴリズムでも大抵、目的物を発見した時と次の領域に進む時とでは
別のreturn文になることのほうが多いし、それが自然だ。
462仕様書無しさん:2009/04/27(月) 13:32:09
俺ならリターン用の変数使う後者のやり方するけど

463仕様書無しさん:2009/04/27(月) 13:34:44
出口は複数可というのが、最近の王道だぞ。
文句を言っているのが、20年前にプログラム技法を習得して惰性でそのまんまの
おじさんなのか、あえてその王道が気に食わんと言っているのかしらんが。
464仕様書無しさん:2009/04/27(月) 14:07:04
if (foo()) goto RESULT_X;
return 0;
RESULT_X:;
return 1;
465仕様書無しさん:2009/04/27(月) 15:47:13
フローチャート書くときに中ぬけとか書くやつは素人レベルだと思ってたけど

最近の王道とは世も末じゃ
466仕様書無しさん:2009/04/27(月) 16:11:09
まあ、何でも良いんだけどCode Completeくらい読みなよ。
ダイクストラ(というよりその半端な解説本)を未だに引きずってないでさ。

その年じゃコード規約を決める側だろう。部下が可哀相だ。
467仕様書無しさん:2009/04/27(月) 16:58:40
throwの中ぬけはわかるがリターンはわからん。

リターンにしなきゃわかりにくいという。どんだけ一個のメソッドの図体でかくしてんだよ。
468仕様書無しさん:2009/04/27(月) 18:28:14
今どきフローチャート書くやつがシロートだろw
469仕様書無しさん:2009/04/27(月) 18:36:23
某家電系はまだやってるぞw
フローチャートって古いのか?ってマジ質問されたから。
20世紀なところだったな。2度度かかわりたくない。
470仕様書無しさん:2009/04/27(月) 20:54:58
>>467
処理を中断するときはその場で抜けたほうがいいと思う
それともいちいちフラグで管理するつもり?
471仕様書無しさん:2009/04/27(月) 21:20:16
作ってるものにもよるかなぁと思った。
けど、やっぱしその場で抜けたほうがいいのかな?
472仕様書無しさん:2009/04/27(月) 21:24:28
returnは1つだけって言うやつは
continueやbreakも使うなと言いそうだ
473仕様書無しさん:2009/04/27(月) 21:25:05
MISRA禍
474仕様書無しさん:2009/04/27(月) 21:25:54
でかいメソッドで出口が複数あると面倒なんだよねぇ
といっても、フラグ立ててもそれを追うのも大して変わらんのだが
475仕様書無しさん:2009/04/27(月) 21:51:13
出口一箇所にするためにフラグ立てて複雑になるようなソースな時点で
構造的にダメだろ・・・。

476475:2009/04/27(月) 21:52:35
見やすくするためにリターン入れるようなのはOK。

if文がめちゃくちゃネストしてるような状態で
出口1箇所にするのはフラグいっぱいになるのでやだよー
だからリターンしたいよー

ってなソースが多いんだよな・・・。
477仕様書無しさん:2009/04/27(月) 21:55:08
>if文がめちゃくちゃネストしてるような状態で
>出口1箇所にするのはフラグいっぱいになるのでやだよー

これも見やすくするためじゃないの?
478仕様書無しさん:2009/04/27(月) 22:13:03
returnを検索して内容追うほうが好きかなー
479仕様書無しさん:2009/04/27(月) 22:19:33
return; が複数あること自体は全然OKだが
こういう馬鹿なのはやめてくれとは思う

void func() {
 前処理();
 if (!x) {
  後処理1();
  後処理2();
  return;
 }
 if (!y) {
  後処理1();
  後処理2();
  return;
 }
 〜延々と続くと思いねえ〜
 本処理();
 後処理1();
 後処理2();
 return;
}

挙げ句5つめぐらいでコピペし忘れてバグってるというオチ
480仕様書無しさん:2009/04/28(火) 03:13:58
ハードやってる側からすると出口一個の方が楽だなー。

監視場所が減るし、
シミュレーション見てて動きが何となく分かるから。
481仕様書無しさん:2009/04/28(火) 07:06:53
>>480
監視場所をCALLした次の行にすればいいだけじゃね?知らないけど。

ああ、CALLされた関数をちぇっくしたかったんですか。
482仕様書無しさん:2009/04/28(火) 07:11:53
そういう特定の事案は個々に考えれば良いだろうよ。

定本と言われている本くらい目を通して、物事を語れということだ。
フローチャートなんて、「人月の神話」でんなもん使うなと言われているのに。

「人月の神話」はようやく高水準言語が使われるようになったころ出てきたすごく古い本。
逆に言えば、フローチャートが意味をなすのは、ベタベタのアセンブラだということになる。
人間のための抽象化がなされた高級言語とは、相性が悪い。

フローチャートが書きづらいからreturn複数不可なんてのは、まったくもって本末転倒。
483仕様書無しさん:2009/04/28(火) 08:42:19
出口複数理論だとcase文でもbreakで抜けるんじゃなくてreturnで抜けてそうだな。

return複数反対派はbreakもだめとかいいそうさんは
論点ずれすぎてなんもいえねえ
484仕様書無しさん:2009/04/28(火) 08:50:39
そもそもひとつのメソッドで中ぬけする時ってどういう処理?
485仕様書無しさん:2009/04/28(火) 08:57:41
2重3重ループ中に中断するとき
486仕様書無しさん:2009/04/28(火) 09:22:46
>>479
のどこが駄目なのか分からない・・・
487仕様書無しさん:2009/04/28(火) 11:43:13
>>484
とりあえず、実装パターン読んでから出直せ
488仕様書無しさん:2009/04/28(火) 14:06:29
サブルーチンの入り口や出口が一箇所ってのは、非構造化言語時代のお作法だろ。

出口や入り口がはっきりきまってなくて、gosubやcallで飛ぶ先が入り口になって、
returnのある場所がサブルーチンの終わる場所になってるような言語の。
489仕様書無しさん:2009/04/28(火) 14:15:53
>>488
それも違う。
ダイクストラ本には、確かにreturnは一つという言明がある。
それが、もはや(と言っても1990年代〜だが)オブソリュートだってこと。
490仕様書無しさん:2009/04/28(火) 14:17:07
つーか、本読めよ、本。
491仕様書無しさん:2009/04/28(火) 17:03:29
obsolete 旧式の
absolute 絶対的な
492仕様書無しさん:2009/04/28(火) 20:17:03
absolutely obsolete ってことか
493仕様書無しさん:2009/04/28(火) 21:00:04
>>486
共通化できるところを共通化しないこと、かと。

たとえば 後処理3() を追加しなければならなくなったときに、
全部の return の直前に追加していくつもりで、
一箇所コピペし忘れてました!ごめんなさいっ!
みたいなバカなことをやってるのをたまに見る。
494仕様書無しさん:2009/04/28(火) 22:00:31
>>486
俺も初見では気付かなかったが、
後処理1,2() って共通なんだぜ...
つまり、
void func() {
 if (x && y ...) {
   本処理();
 }
 後処理1();
 後処理2();
}
495仕様書無しさん:2009/04/28(火) 23:28:49
こうやってスパゲティができていくんですね
496仕様書無しさん:2009/04/29(水) 00:12:12
>>481
基本的にソフトの中にまで立ち入ってる暇なんか無いわけで、ソースは見ない。
↓みたいに信号がゴソゴソ動いてるのを見て、
怪しいところを引っかけたりする。
ttp://japanese.sugawara-systems.com/image3_meta.gif
必ずココを通るというポイントが少ないほど楽。

SoCのCPUなんてインターコネクトにぶら下がっている
数あるモジュールのうちの一つだし(´・ω・`)

たぶん下の階層になるほど入口一個・出口一個の
やり方が生きてくるんだと思う。
497仕様書無しさん:2009/04/29(水) 00:34:15
C言語ならローカル変数を使うけど、
アセンブラならグローバル変数の方が
楽だというのに近いかな。

>>473
MISRAは知らないけど、
PCアプリのために作った訳じゃないということだろうね。
498仕様書無しさん:2009/04/29(水) 00:58:42
>>483
WinProcはbreakしないでreturnするのがザラ
サブクラス化したらほぼ必須

この手の議論の万能回答:状況次第
499仕様書無しさん:2009/04/29(水) 08:11:15
関数が単一の仕事しかしないのであれば
どこで抜けようが同じ
ということかなあ
500仕様書無しさん:2009/04/29(水) 08:14:44
会社が単一の

いあなんでもないんだ
501仕様書無しさん:2009/04/29(水) 08:18:18
手続や関数、メソッドなどの正しさはユニットテスト(xUnit)で保証するもんじゃないの?

returnの個数なんて関係ないじゃん。
502仕様書無しさん:2009/04/29(水) 08:24:57
>>501
メンテのしやすさ無視するな
503仕様書無しさん:2009/04/29(水) 08:28:23
returnを無理矢理1つにまとめたソースなんて保守性最悪だからな。
データ依存や制御依存がグチャグチャ。
504仕様書無しさん:2009/04/29(水) 08:46:42
適当に分割すればいいじゃんよ。
ま、適当に書くとじゃんじゃんふくれますけどねー
505仕様書無しさん:2009/04/29(水) 09:49:11
>>501
何処をどう読んでんだか知らんが、
>正しさ
の話なんか誰もしてない。
506仕様書無しさん:2009/04/29(水) 11:02:11
goto論争並の不毛さだな。
ちなみにおれはreturnはいっこ派。
そう育てられたから仕方ない。
507仕様書無しさん:2009/04/29(水) 11:11:52
>>506
なぜそうなのかを考えないと駄目だろ。
意味を判らないでルールを振り回す人間が
老害になっていくんだろうな。
508仕様書無しさん:2009/04/29(水) 11:45:52
変数宣言は必ず先頭で。
gotoは絶対に使うな。
出口は必ず一つ。
型をつけるハンガリアン

509仕様書無しさん:2009/04/29(水) 12:32:30
>>507
なぜそうなのかなんてどうでもいいだろ。

どうするのがいいのか。それが問題だ。
510仕様書無しさん:2009/04/29(水) 12:40:28
じゃあ、結論はとっくに出ている。
出口一つ論の大御所ダイクストラがその論を放棄しているんだから。
511仕様書無しさん:2009/04/29(水) 12:43:33
なぜ そうするのがいいかを理解して物事に取り組まないと応用がききませんよ?
512仕様書無しさん:2009/04/29(水) 12:44:50
構造化と出口一つは関係ないよね。

だってIF分岐って構造的にはGOTOと同じなんだから。
あれ?
513仕様書無しさん:2009/04/29(水) 12:49:25
>>511
なぜそうするのがいいと思う人がいるかなら理解してますが。


無理やり出口を一箇所にするくらいならこーやって関数を二重化してやんよ

前処理
ret = Func
 IF 分岐 RETURN true
 いろいろ
 RETURN false
Fend
後処理
return ret
514仕様書無しさん:2009/04/29(水) 13:06:27
>>513
そういうこったな
returnやbreakの違いは
どこに処理を移すかの違いでしかない
関数内で関数が作れればどこでreturnしてもおk
515仕様書無しさん:2009/04/29(水) 13:19:26
いい加減「returnは一個」スレッドでもたててそっちでやってくれんかね
516仕様書無しさん:2009/04/29(水) 13:42:27
CodeCompleteでは、可読性を高めるための複数のreturn文の使用は推奨されているけどね。
517仕様書無しさん:2009/04/29(水) 14:32:39
returnは1個を厳密に守るなら、void関数内でのreturn文を使えなくすればいいのに。
最後の}にたどりつけば抜けるんだから。
518仕様書無しさん:2009/04/29(水) 15:43:12
VB6でのレコード初期化処理
For分処理に変えたら書いた本人からこんな書き方もあるんだって言われた
俺新人書いた奴VB10年選手ww

rec.Fields("field1") = ""
rec.Fields("field2") = ""
   ;
rec.Fields("field49") = ""
rec.Fields("field50") = ""

そういや他の奴もPerlでも配列が使えないとかいって
$A = 0
$AA = 0
$AAA = 0
とか変数作りまくって保守に苦労したなぁ

これでも"少数精鋭"だそうです
519仕様書無しさん:2009/04/29(水) 15:54:38
× 配列が使えない
○ 配列の使い方を知らない
520仕様書無しさん:2009/04/29(水) 16:07:44
>>518
だからVB厨って言われるんだなあ(しみじみ
521仕様書無しさん:2009/04/29(水) 16:45:16
緊急指令
Ruby on Railsオフショアアジャイル開発で退職阻止せよ!!!
http://www.tech-arts.co.jp/news-and-topics/press-releases/20090427.html
522仕様書無しさん:2009/04/29(水) 19:49:51
>>518
× 配列の使い方を知らない
○ 配列の使い方が理解できなかった
523仕様書無しさん:2009/04/29(水) 21:56:43
配列理解できないのは、さすがにきついな
524仕様書無しさん:2009/04/29(水) 22:03:53
中国って
525仕様書無しさん:2009/04/29(水) 22:04:59
少人数=少数精鋭

それ以外の表現は聞いたことがない
526仕様書無しさん:2009/04/29(水) 22:21:32
表現じゃないだろ?

本人達は少数精鋭だと思ってるだけで
実情は少人数なだけという事実。
527仕様書無しさん:2009/04/29(水) 22:26:19
少人数だからこそ、少数精鋭に成るんだ
という意味を持たせたい。
という感じで昔やってたな。仕事じゃないけど
528仕様書無しさん:2009/04/30(木) 00:10:19
>>527

ノアの箱舟に乗った奇特な人たちでおk?
529仕様書無しさん:2009/04/30(木) 00:18:17
むしろ、泥舟だけどな
530仕様書無しさん:2009/04/30(木) 01:24:14
回路設計するときは実配線しないといけないから return 一箇所のほうがいいと思うが
ソフトウェアの場合は物理配線がないから return 複数あってもいいと思う
531仕様書無しさん:2009/04/30(木) 16:44:18
出口が複数をreturnが複数にすり替えた奴は死ねよ
532仕様書無しさん:2009/04/30(木) 17:02:38
えっジャンプだったの?
日本語が弱い文章だから伝わんないよ〜
533仕様書無しさん:2009/04/30(木) 18:33:09
ソフトウェアっていうか普通のプログラムでは出口とreturnは同じだよね。

現実にはENDはないとしても、CALLされた場所に必ず戻るわけで、
仮想的にENDに飛ぶと考えてもいい。

returnで行けない出口といえば、関数を超えたgotoとか
スタックをいじって自分自身の関数ポインタを書き換えるとか
そういう変態的なプログラムしかないよね。
534仕様書無しさん:2009/04/30(木) 18:39:27
return 以外の出口っていうと、例外のことかな?
と思ったけど、よく考えたら例外合わせて出口がひとつだと例外の使いようが無いな。
535仕様書無しさん:2009/04/30(木) 19:07:38
もう On Error Resume Next でいいよ('A`)
536仕様書無しさん:2009/04/30(木) 19:11:25
C#で全関数、全変数staticでグローバルなあのプロジェクトはあと何千年したら完成するんでせうね
537仕様書無しさん:2009/04/30(木) 19:30:39
中国核実験で19万人急死、被害は129万人に アホかと
ttp://tsushima.2ch.net/test/read.cgi/news/1241086238/
538会社じゃねーですが:2009/05/01(金) 00:44:02
>>533
スタック弄って戻り先変えるのはわりとよくやる
パッチだから不可抗力なんでせう

pushとretだけでAPIを呼ぶのも結構楽しい。
スタックにSuspendThread積んでRETって結構便利じゃね?

>>534
ハンドリングすることでエラー処理が明示的になるじゃないか
例外の付加情報の伝達にも例外型が必要だし、戻り値を戻り値として使えるようにもなるし
539仕様書無しさん:2009/05/01(金) 08:45:16
pushpop
callret
540仕様書無しさん:2009/05/01(金) 10:23:37
スタックいじった時点で、言語の抽象化を踏み越えてるんだから、
出口が複数もへったくれもないだろ。頭が悪いやつだ。
541仕様書無しさん:2009/05/01(金) 16:21:52
extern山ほど.hをincludeするのと、使う変数だけを明示的にexternで書くのはどっちが好き?
俺はリーダビリティの点で後者をよく使うんだけど、会社っぽい仕事だと前者が多いみたい。
542仕様書無しさん:2009/05/01(金) 16:28:59
>>541
どっちも嫌
543仕様書無しさん:2009/05/01(金) 16:36:32
>>541
後者は絶対に駄目。
理由書くのめんどくせー。
544仕様書無しさん:2009/05/01(金) 16:44:52
後者が「ポータブル」だと思うのはなぜだ!???
545仕様書無しさん:2009/05/01(金) 16:56:26
自分が書いたextenが間違ってても、コンパイル(リンクじゃないよ)は出来ちゃうよね。
だから駄目。
546仕様書無しさん:2009/05/01(金) 19:12:11
そもそも Global Scope の大域変数は使わない。
547仕様書無しさん:2009/05/01(金) 22:44:14
いやーん、ばかーん、えくすたーん
548仕様書無しさん:2009/05/01(金) 23:23:12
>>544
俺には>>541はリーダビリティと読めるのだが…
どの広域変数を操作してるか分りやすいって事だろう

>>541
後者がダメな理由は色々ある
・コピペミスが起きうる
・ヘッダファイルの意味が無い
・変更があったときにgrepしないと修正漏れが出る
・広域変数にアクセスしていることが、インクルード部分を抽出しても分らない
・使う広域変数が一部だけなら、使う部分だけ切り出す前に意味単位ごとにヘッダを切り分けるべき
他色々

だがそれ以前に広域変数によってたかってアクセスするような構造はスパゲッティの代表格なんでどの道アウト
549541:2009/05/02(土) 01:37:11
ふむふむ・・・どれも尤もな理由ですね。 俺、小規模のクミコ屋なんで、
>だがそれ以前に広域変数によってたかって・・・ これを完全にクリヤしようと思うと
カプセル化とか、オブジェクト指向みたいな、えらく着膨れな実装になっちゃいますよね。
ROM/RAMの制限からどこかで妥協、ってことで・・・俺の場合、かなり裸よりのほう。
550仕様書無しさん:2009/05/02(土) 03:13:09
>>549
ROM/RAM の制限でグローバルアクセスとか、無茶苦茶だ。
問題ない範囲のカプセル化やオブジェクト指向もあるだろ。
C でもせめて private 扱いの変数を .c ファイルローカルにして
ヘッダの関数を通すとかさ。
551仕様書無しさん:2009/05/02(土) 03:52:29
>>549

実効データ/コードを伴わないヘッダファイルなら基本的にリソース食わないので、意味・用途に合わせたヘッダの分割やヘッダ単位での非参照externの取り込みをためらう理由はない筈
この辺はマトモなコンパイラならROM/RAMの制限は特に関係ないと思う

関数の小型化とファイル整理で境界を明確にする作業・資源のコストは、スパゲッティになって無駄足をたった一つ踏むリスクと十分に釣り合う物だと信じている。
全データを専用関数で操作しろってわけじゃないし、 >>550て事で


コンパイラの能力制限で1コンパイル中に取り込める外部参照数に制約がある等の理由があるなら仕方ないけどな・・・
AVRのアセンブラで#defineの改行文字のエスケープが1段しか展開できないから、多重マクロで代用するとか、
VC++の名前修飾の制約でテンプレート引数によるバリエーションが警告なしに集約されるから、マクロ関数で強引に展開するとか、
VC++のマクロ展開の制約で1段展開だと文字列化出来ないから、多重マクロにするとか、
多重マクロで__LINE__を展開してもデバッグモードだとバグるので、基本的には定数値のものをprintf族で展開したりとか、
そういう例を何度か見ていると時として非合理なことをやらざるを得ないってのは分る
552仕様書無しさん:2009/05/02(土) 07:38:48
グローバル変数を使うなってのは
オブジェクト指向以前の構造化の話
553仕様書無しさん:2009/05/02(土) 08:40:53
>>552
publicでstaticな変数を大量に作って
あちこちからアクセスするのか!?

OOPならグローバル変数使わなくても
組めるようになっただけだろ・・・。
554仕様書無しさん:2009/05/02(土) 11:40:36
オブジェクト指向以降でもグローバル使うなは
よく聞く話だが
555仕様書無しさん:2009/05/02(土) 13:30:05
>552
オブジェクト指向かどうかでグローバル変数に関する害が変わるの?
以前とか以後とか関係あるの?
556仕様書無しさん:2009/05/02(土) 17:41:45
>>549 が売っている、裸のクミコたんが気になる件について
557552:2009/05/02(土) 22:08:25
オブジェクト指向云々以前の話という意味で書きました。
誤解を招く表現で申し訳ありません。
558549:2009/05/03(日) 04:42:26
H8やH8Sで、cとASMで作ってました。C++やC#はありません。
8085+82xxシリーズもまだやってて、こちらはず〜っとASMだったのを私がLSIC導入しました。
へうになってからは、お仕着せのベクタ部や割り込み部テンプレがあるのはいいが
不透明なのとオーバーヘッドなのがちょっと嫌ですね。
559仕様書無しさん:2009/05/03(日) 22:10:27
>558
HEWにしただけでオーベーヘッドなんて有ったかな。
コンパイル済みのアセンブリリストで確認してみた?
560549:2009/05/04(月) 05:22:23
動的オーバーヘッドは_INITSCT( )かな。初期値のコピーとクリヤする必要なくてもRAMクリヤ。
俺は初期値は書かないので実害はないけど。
静的オーバーヘッドは、0〜ベクタ、400h〜resetprgとintprog、800h〜アプリ、とテンプレ化
されてるとこ。詰めて使えない(w まあ、何百Kもあるんだから俺がセコいだけなんだけど。
hwsetup( )の叩き台も不親切。バスコントローラ関係なんてハード屋さんに聞かなきゃ
チンプンカンプン。 へうが環境用意してやるからcのメインから先を心配してりゃいいだろ的な
日立のおごりを感じる(w
561559:2009/05/04(月) 08:03:18
>560
静的変数の初期化が必要なければ、確かに _INITSCT() は呼ばなくてもいいですね。
割込みベクタは詰められないので、resetprg が 400h からなのは仕方ないです。
アプリが 800h からというのは、リンカでセクションを仕切り直せは良いかと。
バスコントローラの設定なんて個々のシステムに依存するんだから、自分で対応しないといけないですよ。
562549:2009/05/04(月) 17:14:13
レスありがとです。そういうのを、へうが出てからかなり後までDOS窓で自分でやってたのです。
コンパイルオプションやリンカオプションを環境変数に設定したり、環境ファイルに書いたり。
makefileを作り、makeを駆使してやってました。 (はい、自称シーラカンスと言ってます)

ソース一式は誰でも残すけど、.hwsを残さないと上記みたいな情報は消えちゃいますよね。
関数内でのスタックサイズ計算を16/32bitどちらでやるか、などCPU/コンパイラどちらに依存
すべきかみたいな情報も、あいまいな表現で残るし。「石と友達」 みたいな人がプログラム書くには
へうは足枷みたいなもんです。
563仕様書無しさん:2009/05/04(月) 17:37:46
どこぞのスレの

// ここ掘れワンワン
//   ∧_ ∧
//  (・∀・* )
//   (⊃⌒*⌒⊂)
//    /__ノ''''ヽ__)

のコメント・・・ウチの会社だった・・・OTL

564仕様書無しさん:2009/05/04(月) 18:48:26
何かバグあったらここ掘ってみ?ってことか
565仕様書無しさん:2009/05/04(月) 21:21:23
いや、もっとシンプルに
「やらないか」っていうメッセージだろ。

ソースコードを掲示板代わりにするという、プログラマ同士のコミュニケーション。
566仕様書無しさん:2009/05/08(金) 00:51:53
where HOGE = nullが実行時エラーになるからと全テーブル全カラムが暗黙でnot nullで作られてるプログラム。
コメントをみる限り2005年作。
567仕様書無しさん:2009/05/08(金) 01:23:13
ですマーチの産物と思いたい
568仕様書無しさん:2009/05/08(金) 02:46:58
>>566
実行時エラーになってしまう言語仕様もどうかとは思うけど
全カラムnot nullで対応してしまうとこが悲しいかな
IT土方と言われてしまう所以
569仕様書無しさん:2009/05/08(金) 09:39:00
try{
// 処理A
}catch(NullPointerException e){
// ぬるぽ対策
}

orz
570仕様書無しさん:2009/05/08(金) 10:09:47
■━⊂( ・∀・) 彡 ガッ☆`Д´)ノ

ぬるぽはバグだから対策も何も以下略
571仕様書無しさん:2009/05/08(金) 21:42:42
データベース的にNULLチェックを=NULLでやるのもどうかと思うけどな
572仕様書無しさん:2009/05/08(金) 22:57:20
え?基本、NOT NULLがデフォだろ?
573仕様書無しさん:2009/05/08(金) 23:44:35
>>572
それは無い
574仕様書無しさん:2009/05/09(土) 03:07:42
>>573
正規化を進めていけば自然とNULLは消えていくだろ
575仕様書無しさん:2009/05/09(土) 03:21:08
JOIN
576仕様書無しさん:2009/05/09(土) 07:55:18
>>574 ぽかーん、、、こいつ本当にマ?
577仕様書無しさん:2009/05/09(土) 08:40:23
>>574
数値や日時の未入力状態を、NULL無しでどうやって記録してる?
578仕様書無しさん:2009/05/09(土) 09:30:14
>>577
どうしてもNULLを使いたくなければテーブル別にすればいいだけの話

>>576
全てのデータを1個のテーブルに押し込めるのが好きみたいね
579仕様書無しさん:2009/05/09(土) 09:54:50
NULL値の意味が分かっていない方がいらっしゃいます。
580仕様書無しさん:2009/05/09(土) 09:58:12
>>578
正規化すると必ずNULLが無くなると?
凄いな!!!!!
581仕様書無しさん:2009/05/09(土) 10:43:10
SQLが何のために3値論理を採用したか、まるでわかっていない馬鹿がいます。
582仕様書無しさん:2009/05/09(土) 11:05:58
NULLに関しては、とりあえず、C.J.Dateの主張を知ってから発言してくれ。
583仕様書無しさん:2009/05/09(土) 11:09:07
584仕様書無しさん:2009/05/09(土) 11:17:32
1:0..1の関係を1レコードでNULL使いまくりにするよりも、分割すればNULLを使わなくて済む。
そんなこと?
585仕様書無しさん:2009/05/09(土) 11:26:51
書き込みを見る限り
>>578>>583に書かれているような理由でNULLはダメと言っているのではないな。

>>584
>>578の主張はそういうことだな。
586仕様書無しさん:2009/05/09(土) 16:26:32
NULLがなぜ=で比較できないかも理解してないだろうなぁ。
587仕様書無しさん:2009/05/09(土) 16:41:48
仕様だから
588仕様書無しさん:2009/05/10(日) 00:25:15
>>577の問いに>>578の返答が来るのがさっぱり理解できん
もしかして、NULL無しで記録するために別テーブルにするってことか?

で、その検索のために外部結合を使うとNULLが復活するわけだが(´д`)
589仕様書無しさん:2009/05/10(日) 00:43:40
Oracleに関して言えば、nullと空文字列の区別がつかない仕様があるので
無理に排除しようとすると余計に面倒になる。
590仕様書無しさん:2009/05/10(日) 01:02:34
今度新規自社開発パッケージの作成があるので、ちゃんとコーディング規約も作りましょうと提案したら煩わしいし生産性が下がるからって却下された
少人数でまわしてるから(移動はあるけど)必要ないって考えなんだろうけど…
他にも細々と面倒くさいこと良く提案しているけど、殆ど効率が下がるとかで却下されてる
591仕様書無しさん:2009/05/10(日) 01:15:33
書いたら書きっぱなし、ましてや他人のコードなんて絶対に読まない、ってことなんだろうな。
生産性よりも大事なことがあるだろうに。
592仕様書無しさん:2009/05/10(日) 02:25:13
ということは、コーディング規則を書いたら書きっぱなしになって理不尽な規則を延々守る羽目になるわけですね。
そのくらいならないほうがマシかもしれない。

面倒なら

規則1、他人に読めるコードを書き、それが不可能な箇所にはコメントで補足を入れること。
以上

このくらいで
593仕様書無しさん:2009/05/10(日) 02:28:23
逆だろ。釣りか?
594590:2009/05/10(日) 02:36:53
>>591
他でも絶対とまでは言いませんが、確かにそんな傾向はあります。
他人が作ったんだから分からなくて当然って考えみたいです。

まあ、そういう方針でやってるんだから嫌なら辞めろってことですね
595590:2009/05/10(日) 02:53:27
>>592
確かに一度作ったら、無駄な工数は割けないらしいので改訂などきっとしないと思います
ただ、それ以上に今のままではきっと強制力のない規約となるので理不尽なら破っても
何ら問題にならない可能性が高いです
逆に理不尽じゃないところも破っても多分問題にならないです

まあ、その規則に+αして強制力はきちんと持たせるって方にもっていくのが一番いい落としどころ
かもしれませんね
ただでさえ目をつけられてるので自重します
596仕様書無しさん:2009/05/10(日) 03:01:09
仕事ならそうだよなぁ
UNIXには、2回作り直せって格言みたいなものがあるが
597仕様書無しさん:2009/05/10(日) 09:36:50
脅迫されたらやるきしないよね。

読めればいいんだから単純単純

ふくらしこ装備してます
598仕様書無しさん:2009/05/11(月) 11:08:06
最低もう一人あんたに賛同してくれないと話の進めようがないな。
599仕様書無しさん:2009/05/14(木) 22:49:00
俺ってコードへたくそだよな。

そう思って自分のコードデバッグしてるわ。
600仕様書無しさん:2009/05/16(土) 13:25:48
pubilc Stat(int xxxCount, int xxyCount, int xxzCount,
int xyxCount, int xyyCount, int xyzCount,
int xzxCount, int xzyCount, int xzzCount,
...(20行略)
double zzzMin, double zzzMax, double zzzAverage)
{
this.xxxCount = xxxCount;
this.xxyCount = xxyCount;
this.xxzCount = xxzCount;
...
601仕様書無しさん:2009/05/16(土) 14:24:36
this.
this->

これ?
602仕様書無しさん:2009/05/16(土) 14:28:57
Javaなんじゃねーの
603仕様書無しさん:2009/05/16(土) 16:19:43
引数の数だろ
ってかそれに気づかないおめーらも同等レベルか?
604602:2009/05/16(土) 16:23:26
>>603
そんなことわざわざ言わなくても分かるから
605仕様書無しさん:2009/05/16(土) 16:45:29
>>604
> 602 名前:仕様書無しさん [sage]: 2009/05/16(土) 14:28:57
> Javaなんじゃねーの

こんなこと言ってる奴にいわれたくねーよw
606仕様書無しさん:2009/05/16(土) 19:00:23
>>600に違和感を覚えないバカ→>>601
>>601のバカさ加減を指摘した人→>>602
>>602>>601に対するレスだと気づけないバカ→>>603
>>603のバカに付き合ってしまうバカ→>>604
>>604のバカに付き合ってしまうバカ→>>605
バカに付き合ってしまうバカ→>>606
607仕様書無しさん:2009/05/16(土) 19:03:08
自演乙
608仕様書無しさん:2009/05/16(土) 19:10:07
プロデュース乙
609仕様書無しさん:2009/05/19(火) 02:54:51
お後がよろしいようで
610仕様書無しさん:2009/05/21(木) 05:40:45
Random rand = new Random();

int getRandom(int min, int max)
{
return (rand.nextInt()+rand.nextInt()+rand.nextInt())/(max-min)+min;
}

ふつうにrand.nextInt(int)ってメソッドあるのにね
611仕様書無しさん:2009/05/21(木) 05:41:42
あ、/じゃなくて%だった
612仕様書無しさん:2009/05/21(木) 07:20:29
>>610

javaは詳しくないから何とも言えないけど

(rand.nextInt()+rand.nextInt()+rand.nextInt())

これ結果が負の値になることはないのかな?
613仕様書無しさん:2009/05/21(木) 08:58:32
流石にそれは…ググれよ。

それより、3回足してる意味が判らん。
614仕様書無しさん:2009/05/21(木) 09:26:41
数値の偏りをどうにかしたかったんだろ
615仕様書無しさん:2009/05/21(木) 09:30:52
>>613
大事な事なので3回言いました。

それよりminとmaxが同値の場合を考えるとむらむらしてくる
616610:2009/05/21(木) 14:17:59
>>615
記憶があいまいだが、max-min+1だったかも、でも3回足してたのは間違いない

本人によると、1回だと、複数回使ったときに値が偏ることがあるから
とのこと(>>614正解)。

>>612
nextInt()自体負になるっぽい(可能な値を一様分布で出力)
だから足したら桁あふれたりしそう
したらどうかわからんがしなかったとしても出る値が0に偏るよね

それ以前に余りを求めてるだけで偏るし
617仕様書無しさん:2009/05/21(木) 15:10:51
>>616
そうそう。そこは割るんじゃなくて余りを求めるはずだ。
んでアンサインドならいくら数字がでかくなって循環しようと関係ない。
618仕様書無しさん:2009/05/21(木) 16:18:39
一様乱数を複数足し合わせたら一様じゃなくなるよね
かえって偏らせてる
619仕様書無しさん:2009/05/21(木) 16:50:24
>>618
え?
620仕様書無しさん:2009/05/21(木) 17:10:41
>>619
サイコロと一緒
サイコロを二つ投げたら目の和が7になる確率が一番高い
621仕様書無しさん:2009/05/21(木) 18:07:49
>>620
さらにたぶん偶奇性も不安定に。
622仕様書無しさん:2009/05/21(木) 18:12:58
しかも2^n以外の値で剰余なんか取ったら益々偏る一方。
623仕様書無しさん:2009/05/21(木) 18:14:45
たまに偏るのも粋なものだよ
624616:2009/05/21(木) 18:36:12
>>617
625仕様書無しさん:2009/05/21(木) 18:36:37
これぞ蛇足だなw
バカほど解ってないくせに余計な事をして、さらに問題を増やす
626仕様書無しさん:2009/05/21(木) 20:01:33
>>618
これは、「一様分布に従う確率変数の和の確率分布は一様分布ではなくなる」
ということでしょうか?
627仕様書無しさん:2009/05/21(木) 21:37:32
>>617
http://ja.wikipedia.org/wiki/%E7%B7%9A%E5%BD%A2%E5%90%88%E5%90%8C%E6%B3%95
下位ビットは偏るので、剰余をとるのは不味い

だよね>>616
628仕様書無しさん:2009/05/21(木) 23:56:46
>>626
>>620の通り、と・う・ぜ・んですよ?
値域が変わっちゃうんだから。
値域が[0〜1)の一様乱数と、もうひとつの『値域が[0〜1]の一様乱数』
の和の値域は[0〜2)になるわけだが、この値域で一様に分布するとでも?
629仕様書無しさん:2009/05/21(木) 23:59:25
…と思ったけど、[0〜UINT_MAX]の乱数を二つ足して[0〜UINT_MAX]に
切り詰めりゃ(繰り上げ無視すりゃ)一様になるのか。
両端のあたりはめんどくさいから確認しねえよもう
630仕様書無しさん:2009/05/22(金) 05:33:17
この板は俺同様、底辺コーダの集いと思ってたけど
ちゃんとロジカルな話してて全俺が驚いた
631仕様書無しさん:2009/05/22(金) 06:24:42
本物の底辺コーダは、ソース見て会社辞めようとか思わないからw
632616:2009/05/22(金) 14:10:36
>>627
うん

>>626
どんな確率分布でもそれを繰り返すと正規分布に漸近的に近づく
この場合一様分布だから0のところで盛り上がる
桁あふれはそれを折りたたむことになるが、それでも0が多分もっとも
確率高くなる
633仕様書無しさん:2009/05/22(金) 14:55:54
いわゆる中心極限定理
634仕様書無しさん:2009/05/22(金) 19:33:40
n回目に投げたサイコロの目 xn を 0〜5 に換算する
で、さいころの目の和に対して 6 で剰余を取る
( x1 + x2 ) % 6
( x1 + x2 + x3 ) % 6
これなら偏らないってのが >>629
635仕様書無しさん:2009/05/22(金) 20:08:38
>>634
間違ってね?
結果が5になる確率が低い気がする。
636仕様書無しさん:2009/05/22(金) 20:28:54
> 気がする。
気のせいです。
637616:2009/05/22(金) 22:15:00
>>634
あー、じゃあ折りたたんでも等しくなりそうだな
638仕様書無しさん:2009/05/22(金) 22:26:42
goto >>800
639仕様書無しさん:2009/05/22(金) 23:37:31
自分で組めばいいじゃん
640仕様書無しさん:2009/05/23(土) 06:40:29
試しに ( x1 + x2 ) % 6 で計算してみた。

確率 : 和   : 余
1/36 : 和 = 0 : 余 = 0
2/36 : 和 = 1 : 余 = 1
3/36 : 和 = 2 : 余 = 2
4/36 : 和 = 3 : 余 = 3
5/36 : 和 = 4 : 余 = 4
6/36 : 和 = 5 : 余 = 5
5/36 : 和 = 6 : 余 = 0
4/36 : 和 = 7 : 余 = 1
3/36 : 和 = 8 : 余 = 2
2/36 : 和 = 9 : 余 = 3
1/36 : 和 = 10 : 余 = 4

合算すると、

余   : 確率
余 = 0 : 6/36
余 = 1 : 6/36
余 = 2 : 6/36
余 = 3 : 6/36
余 = 4 : 6/36
余 = 5 : 6/36

誰か ( x1 + x2 + x3 ) % 6 の場合をお願い。
もしくは一般化して。
641仕様書無しさん:2009/05/23(土) 07:33:16
>>640
( x1 + x2 ) % 6 = y1 とおく
このとき y1 は 0 〜 5 の一様乱数

( x1 + x2 + x3 ) % 6 = ( y1 + x3 ) % 6
以下 >>640 と同じ
642仕様書無しさん:2009/05/23(土) 12:09:29
public int nextInt()

乱数ジェネレータのシーケンスを使って、一様分布の int 型の擬似乱数を返します。
nextInt の一般規約では、1 つの int 型の値が擬似乱数として生成されて返されます。
2^32 の可能なすべての int 値が (ほぼ) 均等な確率で生成されます。
nextInt メソッドは Random クラスによって次のように実装されます。

public int nextInt() { return next(32); }

戻り値:
乱数ジェネレータのシーケンスを使って生成された等分布の int 型擬似乱数


だから3回足しても一様乱数だな
643616:2009/05/23(土) 14:04:43
>>642
もうめんどくせぇ
644仕様書無しさん:2009/05/23(土) 16:22:17
結局出てくるものが変わらないなら、
余計な処理してるだけ頭悪くね?
645仕様書無しさん:2009/05/23(土) 23:27:32
>>642
>>610 のコード書いた本人乙。
646仕様書無しさん:2009/05/24(日) 00:18:01
3回足しても〜ってだったら3回足す意味なくね?
647仕様書無しさん:2009/05/24(日) 01:16:13
2回足すと酷いことになった
648仕様書無しさん:2009/05/24(日) 01:59:42
じゃあ足さなければよくね?
649仕様書無しさん:2009/05/24(日) 03:11:53
int/int による桁落ちのとこには突っ込まないの?
650仕様書無しさん:2009/05/26(火) 18:50:33
>>649
除算じゃなくて剰余だから。
651仕様書無しさん:2009/05/27(水) 04:28:39
あ〜、cに慣れてるから%じゃないと剰余と思えなかったんだ。
652仕様書無しさん:2009/05/27(水) 04:47:53
そういえば俺も%じゃないと剰余と思わないな・・・職業病か
653仕様書無しさん:2009/05/28(木) 02:39:51
あれ? じゃ、あの言語では割り算は何て書くの?
654仕様書無しさん:2009/05/28(木) 03:58:57
mod
655仕様書無しさん:2009/05/28(木) 08:56:33
それは酷い言語ですね。
656仕様書無しさん:2009/05/28(木) 09:13:56
%
657仕様書無しさん:2009/06/20(土) 21:43:42
\
658仕様書無しさん:2009/06/21(日) 01:52:11
ここまでの流れをナナメ読みしただけだけど・・
奥村先生の本の中で、rand() を 6 回くらい足して 6 で割ると
ナニカがどうにかなっちまう、みたいな事を書いてたけど
そういう話?違う?俺バカ?死ぬ?
659仕様書無しさん:2009/07/11(土) 20:31:24
// xを偶数で近似する。
x += 2;


----
理解できないのはおれだけか?
660仕様書無しさん:2009/07/11(土) 20:35:41
とりあえず2足したいんじゃないかな

コメント意味なしの方向で
661仕様書無しさん:2009/07/12(日) 01:19:26
x &= -2; の書き間違いかもよ。 コメントのほうが本気なら。
662仕様書無しさん:2009/07/12(日) 01:46:27
書き間違いにも程があるだろ
663仕様書無しさん:2009/07/12(日) 01:59:53
x *= 2;
かもしれない。
664仕様書無しさん:2009/07/12(日) 06:06:45
>>661
恥ずかしながらこの書き方知らなかった。
マイナスで上位ビットが全部立つのはC言語で既定事項?
665仕様書無しさん:2009/07/12(日) 06:07:26
CでもJavaでも何でもいいけど
666仕様書無しさん:2009/07/12(日) 06:42:47
>>664
二の補数を使うCPUなら全部そうです
言語はほとんど関係ないです

ほとんどと書いたのは、もしかしたらマイナスを専用フラグで持たしている処理系が
自分が知らないだけで、どこかにあるかもしれないからです
667仕様書無しさん:2009/07/12(日) 09:04:27
世の中には負数を1の補数で表現する処理系もあるんだそうな
C言語の規格もそれを反映してる
668仕様書無しさん:2009/07/12(日) 10:13:36
>>666
まあCPU内部では負の数はレジスタの1ビットで持ってるわな。
今時そこまでコアなマシン語を我々が扱うことはないけど。
669仕様書無しさん:2009/07/12(日) 11:23:19
えっ?
670仕様書無しさん:2009/07/12(日) 11:28:55
>>668
そうなの?
今手元にあるSH7211のマニュアルには載ってないよ
他のCPUの話をしてるのかもしれないけど・・・・
671仕様書無しさん:2009/07/12(日) 13:34:40
演算結果が負になったときにフラグが立つことを勘違いして言ってるのではないかと
672仕様書無しさん:2009/07/12(日) 14:16:00
8086のJNS命令とかで参照されるSign Flagのことか
673仕様書無しさん:2009/07/12(日) 15:00:05
>>668
誤解を招きやすい書き方は良くないと思う。
674仕様書無しさん:2009/07/12(日) 15:33:03
>>668 自身が勘違いしてるだけだろ。
675仕様書無しさん:2009/07/12(日) 15:39:34
普通にMSBのことを言ってると思われ。
676仕様書無しさん:2009/07/13(月) 01:27:17
-1 を(16ビットで) 0x8001 とでも表現しそうな表現だからヤだな...
677仕様書無しさん:2009/07/13(月) 07:23:59
つーか、MSBのことをサインビットとも呼ぶってこと知らない子がCPUの何を語ってるんだい?
678仕様書無しさん:2009/07/13(月) 07:32:54
コアなマシン語というからてっきりw
679仕様書無しさん:2009/07/13(月) 08:16:45
話を勝手に符号拡張しないでくれる?
680仕様書無しさん:2009/07/13(月) 09:54:21
>>676
うん。仮に符号ビットのことを言ってるんだとしても
>>668 の書き方じゃあ符号ビット+絶対値表現に取れるな。

まあ >>666 で答えは出てるし、引っ張るような話でもない。
681仕様書無しさん:2009/07/14(火) 01:18:54
実は浮動小数点の形式の話なんじゃね?
682仕様書無しさん:2009/07/14(火) 03:41:59
浮動小数点数は小数点の位置が固定で、固定小数点数は小数点の位置が浮動する。
683仕様書無しさん:2009/07/14(火) 11:15:08
不動小数点とか
684仕様書無しさん:2009/07/14(火) 19:03:10
>>664
知らなくておk。
~1と書くべきだから。jk
685仕様書無しさん:2009/07/15(水) 00:01:21
>>682
じゃなくて、普通にIEEE754は絶対値表現採用してて符号ビットが存在するって意味じゃぁ?
どのみちデータの一部が符号ビットとして振舞うわけだが。

データ型の一部としては大概高級言語でもアクセスできるというか大抵機械語の時点で既に演算命令越しだから、コアな機械語でないと触れないケースの方がレアだと思うな
機械語必須の符号ビットっていうとFPUを直接ゴリゴリ弄る場合くらいか?
686仕様書無しさん:2009/07/15(水) 01:53:50
コアなマシン語おせーてくらさい
687仕様書無しさん:2009/07/15(水) 06:52:30
>>685
>>682は、有名な皮肉なんだが・・・
688仕様書無しさん:2009/07/15(水) 21:50:18
>>686
CPUの仕様書取り寄せればズバっと解決
689仕様書無しさん:2009/07/16(木) 09:03:03
「コアなマシン語」と呼ばれるに相応しいのはやはり
非公開オペコードではないだろうか。
690仕様書無しさん:2009/07/16(木) 21:09:24
はあ?
コア内にのみ存在するマシン語なんだから、
マイクロコードのことに決まってるだろ。
691仕様書無しさん:2009/07/16(木) 23:34:43
>>690
なるほどねぇ。これなら、今時扱わないね。
692仕様書無しさん:2009/07/17(金) 05:39:04
>>620のは、コアな とは言わずに、コアの と言うとおもう。
693仕様書無しさん:2009/08/28(金) 14:54:35
age
694仕様書無しさん:2009/08/28(金) 23:44:34
//* このヘッダはCとC++両方から読み込むので */
//* どちらでも使えるようこの形式のコメントとする */

寝言はコンパイル通してからにしていただきたい
695仕様書無しさん:2009/08/29(土) 01:01:56
むしろ、C++のコメントを受け入れるCコンパイラで通ったのを見て、
「俺の書き方が正しかったんだ」と誤解してるんじゃないかな。
いずれにしても、そんな変なコメント考える奴とは仕事したくないが。
696仕様書無しさん:2009/08/29(土) 02:01:13
#if 1//**/2
#else
    #error "//に対応していないコンパイラは死ね!"
#endif
697仕様書無しさん:2009/08/29(土) 02:14:20
コメントの使い分けとか基本中の基本だろ・・・
698仕様書無しさん:2009/08/29(土) 02:18:01
>>694が「コメントの使い分け」になってないから晒されてる訳だが...
699仕様書無しさん:2009/08/29(土) 06:09:16
素直に/* */だけで両方通るってのを忘れてる奴多すぎないかw
700仕様書無しさん:2009/08/29(土) 06:10:24
と思ったが単にソースをよく見てないのが一人いただけか
701仕様書無しさん:2009/08/29(土) 19:03:36
>>694
ワラタ
702仕様書無しさん:2009/09/03(木) 13:45:11
自信満々な感じがせつないなw
703仕様書無しさん:2009/09/03(木) 20:32:07
VBAだが変数名
a
b
c



aa
ab



初めて見たわ
704仕様書無しさん:2009/09/03(木) 20:33:47
難読化じゃね
705仕様書無しさん:2009/09/03(木) 20:40:42
エクセルの列番もそんなのだよ
706仕様書無しさん:2009/09/03(木) 23:50:59
>>703
難読化じゃなかったら、それ書いて発狂しないってのはある意味すごい
絶対に関わり合いになりたくないという意味で
707仕様書無しさん:2009/09/04(金) 00:44:18
ナイスな変数名が思いつかなかったんだろうか・・・
708仕様書無しさん:2009/09/04(金) 09:08:35
>>703
C

int i1,i2,i3,i4,*i5,i6,*i7・・・・

みたいなのを見たことがある
変数とポインタが混ぜこぜ。
自分がメンテ担当でなくて本当に良かった。
709仕様書無しさん:2009/09/04(金) 13:53:06
全部ポインタのつもりで
char* p1,p2,p3,p4…
とするやつよりマシかもね
710仕様書無しさん:2009/09/04(金) 14:14:14
それはすぐにコンパイルエラーになるから良いんじゃない?

//こうしないとコンパイル通らない
(char*)p2 = p1;

なんて事になるかもしれないけど
711仕様書無しさん:2009/09/04(金) 14:15:34
>>703
懐かしいな

昔のN88-BASICなんかからそのまま移植したのかも?
712仕様書無しさん:2009/09/04(金) 15:13:22
for(i = 0; ...){
 for(j = 0; ...){
  (なんか処理)
 }
 (なんか処理)
 for(ii = 0; ...){
  (なんか処理)
  for(ii2 = 0; ...){
  (なんか処理)
  }
 }
 (なんか処理)
 for(j = 0; ...){
  for(jj = 0; ...){
   (なんか処理)
  }
 }
}

もはや記憶も曖昧だがこんな感じのソースを見たことがある
jj とか ii2 とか出てきた日にはもうね・・・
713仕様書無しさん:2009/09/04(金) 15:31:05
ん、みやすいじゃん
714仕様書無しさん:2009/09/04(金) 15:33:34
修正してみた

for(v = 0; ...){
 for(w = 0; ...){
  (なんか処理)
 }
 (なんか処理)
 for(vv = 0; ...){
  (なんか処理)
  for(vv2 = 0; ...){
  (なんか処理)
  }
 }
 (なんか処理)
 for(w = 0; ...){
  for(ww = 0; ...){
   (なんか処理)
  }
 }
}
715仕様書無しさん:2009/09/04(金) 16:01:57
何か問題でも?
716仕様書無しさん:2009/09/04(金) 17:09:39
IQの低い人には読みづらいのかもね
717仕様書無しさん:2009/09/04(金) 19:14:24
i, ii, iii, iiii, .... じゃなくて良かったね
718仕様書無しさん:2009/09/04(金) 19:54:16
とある方々を悩ませるピリオドばっかりのメルアドみたいだな
719仕様書無しさん:2009/09/05(土) 00:13:40
ソースコードに草生やすなよ
720仕様書無しさん:2009/09/05(土) 11:30:43
ループの中に複数のループ、さらにそれぞれでネストとか、
コーディングが悪いのか、そうせざるを得ないデータ構造に
問題があるのか。
なんにしろ、こんなソースは読む気が失せるな。
721仕様書無しさん:2009/09/05(土) 12:18:27
もっとマシな書き方はありそうだよなぁ
別に理解できないほどとは言わないがどうにも汚い、ってのがある意味一番厄介
722仕様書無しさん:2009/09/05(土) 12:47:45
ループのネストが汚い、読みづらいという話がよくありますが、
ネストを避ける方法ってあるんですか?
723仕様書無しさん:2009/09/05(土) 13:07:08
>>722
1ループ毎に関数に分けると良いと思うよ!
724仕様書無しさん:2009/09/05(土) 13:07:31
処理単位に関数にするとか、クラスのメソッドにするとか、いくらでもあるだろ。
725仕様書無しさん:2009/09/05(土) 13:09:20
場合による
素直にネストした方がいい時ももちろんある、が…
関数に分けたり、コンテナを工夫したりする方がいいケースは多いだろうな
後からじゃ手の付けようがありません、ってケースもままあるけど
726仕様書無しさん:2009/09/05(土) 13:17:32
関数やメソッドで1つのループを書いて、
その中で別の関数やメソッドを呼んで、
その関数やメソッドの中でまた別のループを書くということですか?
そうすると多重ループに変わりはないですよね。
読みやすさのためにそうするということ?
727仕様書無しさん:2009/09/05(土) 13:23:25
この理由や意味が感覚的に理解できないんだったら、職業ブログラマは辞めた方がいいと思うよ。
728仕様書無しさん:2009/09/05(土) 13:30:39
1つのスコープの中でループやループのネストが多いってことは処理の局所化ができてないってことだからね。
つまり使い回しができない。同じ処理を何度も書かねばならない。大量のコピペを招く。ソースが肥大化する。人間の頭に易しくない。メンテできね。ってなるわけだ。
729仕様書無しさん:2009/09/05(土) 13:38:21
著者が嫌いな人もいると思うけど、Cプログラミング診断室でぐぐって読んでおくといいよ
古い文章だけど、かなりの部分は今でも通用する
730仕様書無しさん:2009/09/05(土) 16:38:45
なんにしたって、ケースによって書き方を変えて、読み易さが最適になるように
しろとしか言えんわな。
多重ループがダメ→じゃあ、1ループの中に1ループ程度もダメ、なんて思考停止に
はなるなってことで。
731仕様書無しさん:2009/09/05(土) 17:25:08
今週見つけた糞ソース

【その1】
iniファイルで”DEBUG=(開発者の苗字)”って入れるとデバッグモードで起動する。
その際に「(開発者の苗字)モードで起動します」とかダイアログ表示。
いやいやwwwそこは”=0”とか”=ON”とかあるでしょうがw
「デバッグモードで起動します」でいいでしょうがw
もちろん(開発者の苗字)はグローバル定数で宣言されていますw
732仕様書無しさん:2009/09/05(土) 18:00:41
それだけでは糞とはいえない
733仕様書無しさん:2009/09/05(土) 18:09:43
実は部長用モードとか御前様用モードとかあるんだろ
734仕様書無しさん:2009/09/05(土) 18:26:55
ソースのバイト数で部下の働きを評価する部長

累積の残業時間で部下の働きを評価する部長

添付資料のビジュアルインパクトで部下の働きを評価する部長
735仕様書無しさん:2009/09/05(土) 21:27:33
>>732
製作者乙
736仕様書無しさん:2009/09/05(土) 23:24:02
>>731
糞って言うよりは、頭の悪さっつか自己顕示欲が滲み出ているって感じ?
コードがきれいだったら、
あー、これ作ったやつは目立ちたかったんだね、と思いつつ、ばっさり変更するけど
737仕様書無しさん:2009/09/06(日) 00:20:08
複数の人間が触るソースの中で、
#if DEBUG_ASOH
...
#endif
...
#if DEBUG_HATOYAMA
...
というように名前が登場していたプロジェクトは経験した。
738仕様書無しさん:2009/09/06(日) 01:27:22
教科書的には「担当者が変更になった場合に整合性が崩れるから、デバッグの目的がわかるタグ名にすべき」

2〜3人くらいのチームではありがちだけど
739仕様書無しさん:2009/09/06(日) 02:08:45
とあるバカが作った関数

引数 :string型の配列
戻り値:引数の全要素を直結した文字列

ソース内容:

Private Function hoge(ByVal x() As String) As String

Select Case x.Length
Case 1
Return x(0)
Case 2
Return x(0) & x(1)
Case 3
Return x(0) & x(1) & x(2)

         (略)

Case 20
Return x(0) & x(1) & x(2) & x(3) & x(4) & x(5) & (略) & x(18) & x(19)
End Select

End Function

こんな奴が共通部品作ってたりする・・・orz
740仕様書無しさん:2009/09/06(日) 02:12:24
>>739
その中でよく見ると一個だけミスってる部分とかがあるとさらに高得点!
741仕様書無しさん:2009/09/06(日) 02:13:37
21個目はどうするんだよ馬鹿
742仕様書無しさん:2009/09/06(日) 03:01:12
仕様外ですが?
743仕様書無しさん:2009/09/06(日) 03:08:45
むかしのBSDの/usr/games/foretuneに

Arithmetic is being able to count up to twenty without taking off your shoes.
-- Mickey Mouse
算数っていうのは、靴を脱がないで20まで数えられるようになることさ。

なんてのがあったのを思い出した。
そいつ、靴を脱いでコーディングしてなかったか?
744仕様書無しさん:2009/09/06(日) 03:22:35
>>>741

Case Else
  Dim y(x.Length - 21) As String
  Array.Copy(x, 20, y, 0, x.Length - 20)
  ReDim Preserve x(19)
  Return hoge(x) & hoge(y)

を追加で。
745仕様書無しさん:2009/09/06(日) 11:15:44
>>744
x.Length = 0 だとコケるのでボツ
746739:2009/09/06(日) 12:10:09
要素数が0と21以上だったらNothingが返ってきます。

・・・これが一システムの共通部品でなく、
会社が手がけた全システムで使用されているとか悪夢です。
747仕様書無しさん:2009/09/06(日) 12:32:40
他にも神懸かった関数がありそうだな
748仕様書無しさん:2009/09/06(日) 12:37:15
assert埋めてやったらバグがぞろぞろ出てきたりしそうだな
749仕様書無しさん:2009/09/06(日) 15:12:57
そもそも単に文字列を連結するだけだったら、
関数なんか作らなくても Join 一発で済むんじゃね?
750仕様書無しさん:2009/09/06(日) 15:42:59
いや、みんな知ってるから
751仕様書無しさん:2009/09/06(日) 15:51:13
実は0個か21個以上の時は空文字列を返す機能が重要だったんだよ!
752仕様書無しさん:2009/09/06(日) 15:58:58
いやもしかしたらjoinより高速なんじゃね?
753仕様書無しさん:2009/09/06(日) 16:02:47
明らかにステップ数を稼ぐのが目的だろJK
754仕様書無しさん:2009/09/06(日) 17:29:00
だったら20如きで諦めず100ぐらいまでやれよ
755仕様書無しさん:2009/09/06(日) 17:46:43
指が100本なかったからじゃね
756仕様書無しさん:2009/09/06(日) 17:48:36
あ!なるほどぉ
757仕様書無しさん:2009/09/06(日) 18:28:48
# >>739の自動生成化

my $num_args = 20; # 引数の数

print <<__EOS__
Private Function hoge(ByVal x() As String) As String

Select Case x.Length
__EOS__

for $i ( 1 .. $num_args ) {
print "Case $i\nReturn ", join( ' & ', map "x($_)", ( 0 .. $i-1 ) ), "\n";
}

print <<__EOS__
End Select

End Function
__EOS__
758仕様書無しさん:2009/09/06(日) 18:34:57
何故にPerlで...つか、いらないし
759仕様書無しさん:2009/09/11(金) 23:38:43
>>757
joinのせいでネタが中途半端だ。
そこは、ジェネレータといいつつ同じ手法でボケるべきではないか。
760仕様書無しさん:2009/09/17(木) 06:19:30
#ifndef __IIZUKA_SHINE__  // エンベ第2のI塚は
#define __IIZUKA_SHINE__  // 仕事のできる1児のパパ
 :                 // デスマの間も
 :                 // 総務のK田S子と
 :                 // にゃん♪にゃん♪して
 :                 // いたんですねえ
 :                 // アナタに引かれた
 :                 // ピンク色の工数は
 :                 // M山様にチクっておきました♪
 :                 // こんパイるも滞りなく
 :                 // 開発したのはナニですかあ

 〜

 :                 // えらーいパパのお仕事具合
#endif               // まみちゃんにも教えてあげようかな?(^−^)

先週辞めた奴の担当ソース
どう報告しろってんだよ・・・orz
761仕様書無しさん:2009/09/17(木) 07:51:11
>>760
そのまま添付して報告すれば?何か問題あるのか?
762仕様書無しさん:2009/09/17(木) 09:35:28
>>761
760がエンベ第2のI塚さん、なんじゃない?
763仕様書無しさん:2009/09/17(木) 10:24:42
それは問題だな
764仕様書無しさん:2009/09/17(木) 12:29:58
>>760 が総務のK田S子の旦那とかなら
もうちょっと話が膨らむのに。
765仕様書無しさん:2009/09/17(木) 17:41:30
M山さんとやらにチクり済みなら、もうばれてるのでわ
766仕様書無しさん:2009/09/17(木) 18:16:55
そのままレビューやれ
767仕様書無しさん:2009/09/17(木) 18:24:47
おまえら、ソースコードの音読って知ってるか?(ry
768仕様書無しさん:2009/09/17(木) 18:43:54
>>760
どこかに
#ifndef __IIZUKA_SHINE__
   ... //何かを破壊するコード
#endif
があるかも知れない。その部分を消すとハマるぞ!w
769仕様書無しさん:2009/09/19(土) 11:00:40
どうせ呪うなら、会社のロゴとかデータ化して入れた中に
「田中氏ね」とかすかしでいれとけば?
フィルタかますとでてくるけど普通は見えないようにするとかさw
770仕様書無しさん:2009/09/20(日) 16:46:46
>>769
めんどい。
catでファイル後ろに追記するとか、付加情報領域に書く。
771仕様書無しさん:2009/09/20(日) 17:06:52
こっそりnewを入れられてたことならあったな
772仕様書無しさん:2009/09/21(月) 06:58:07
Text1(3)

VB6です
773仕様書無しさん:2009/09/21(月) 10:33:10
#include "hoge.pas"




774仕様書無しさん:2009/09/22(火) 02:43:32
I塚って石塚か?と思ったけど、よく見たら飯塚だよねw
775仕様書無しさん:2009/09/25(金) 14:22:16
load
load_2
load_new
load_backup
load_old
load_080305

もうだめぽ・・・
776仕様書無しさん:2009/09/25(金) 14:27:46
load_dai3shou とかは無かった?
777仕様書無しさん:2009/09/25(金) 14:56:19
>>775
ちゃんとバージョン管理をつかって、過去の関数は置き換えた段階で破棄するか、
一部機能では使うのなら、その旨明記して、まともな名前にして維持するか、
もしくは機能自体のあり方を見直して、引数で分岐出来る用にするか、


やってれば問題無かったんだろうけど、今更ですね、そうですねw
778仕様書無しさん:2009/09/25(金) 17:02:34
>>775
それ関数名じゃないよね
RCS等の管理ツールが無い環境(MS-DOSとか初期のWindows)だとディレクトリ名に日付を付ける
のが一般的だったから最後のは普通だよ
ディレクトリの更新日付見て他のも日付付きに直せば良いんじゃない?

リビジョンの枝分かれがあると死ねるけど
779仕様書無しさん:2009/09/25(金) 17:23:52
えっ
780仕様書無しさん:2009/09/25(金) 18:26:03
スレタイ見てそう考えたなら凄いな
781仕様書無しさん:2009/09/26(土) 01:44:55
#define if while
782仕様書無しさん:2009/09/26(土) 21:36:35
>>781
吹いたw
783仕様書無しさん:2009/09/29(火) 00:13:16
なんだその嫌がらせ…
784仕様書無しさん:2009/09/29(火) 00:17:00
if を whileにしちゃうと、実行時の挙動が明らかにおかしくなりそう
場合に依っちゃ無限ループもするだろうし

whileをifにする方が、
ループのつもりなのに、一回しか実行されない、という、
目立ちにくいバグになる希ガス
785仕様書無しさん:2009/09/29(火) 11:57:49
どっちにしろ 一瞬で気づくだろ
786仕様書無しさん:2009/09/29(火) 13:11:36
どっちにしろ全く気付かなくて、謎が解けた時は犯人を本気で絞め殺したい気分に
なると思うがw
787仕様書無しさん:2009/09/29(火) 18:54:36
>>786
つか、背任でクビにできるのでは。
788仕様書無しさん:2009/09/30(水) 12:34:43
全く気づかないはずがないだろ
真の場合 ループするIFだぞ?
789仕様書無しさん:2009/09/30(水) 17:28:19
一発で気付く方がどう考えてもおかしいと思うが
790仕様書無しさん:2009/09/30(水) 18:11:21
ステップ実行でループした時にはものすごい衝撃だろうなぁ。
791仕様書無しさん:2009/09/30(水) 21:40:17
ノーヒントなら、ステップ実行してループしてもまだ何だか分からないと思うw
792仕様書無しさん:2009/09/30(水) 23:23:23
そんな変な動きならわかるって…。
初心者だら気づかないのは当然だが
793仕様書無しさん:2009/10/01(木) 00:17:38
誰かが作為的に罠を仕掛けた可能性に至らなければ、
自分のコードのどこに問題があるのかで小一時間は悩む気がするわ
794仕様書無しさん:2009/10/01(木) 03:17:43
初心者とかいう問題じゃねーだろw
795仕様書無しさん:2009/10/01(木) 03:37:14
おそらくこうなる

   ___
  / || ̄ ̄|| ∧_∧
  |.....||__|| (     )  どうしてこうなった・・・
  | ̄ ̄\三⊂/ ̄ ̄ ̄/
  |    | ( ./     /

   ___
  / || ̄ ̄|| ∧_∧
  |.....||__|| ( ^ω^ )  どうしてこうなった!?
  | ̄ ̄\三⊂/ ̄ ̄ ̄/
  |    | ( ./     /

   ___ ♪ ∧__,∧.∩
  / || ̄ ̄|| r( ^ω^ )ノ  どうしてこうなった!
  |.....||__|| └‐、   レ´`ヽ   どうしてこうなった!
  | ̄ ̄\三  / ̄ ̄ ̄/ノ´` ♪
  |    | ( ./     /

   ___        ♪  ∩∧__,∧
  / || ̄ ̄||         _ ヽ( ^ω^ )7  どうしてこうなった!
  |.....||__||         /`ヽJ   ,‐┘   どうしてこうなった!
  | ̄ ̄\三  / ̄ ̄ ̄/  ´`ヽ、_  ノ
  |    | ( ./     /      `) ) ♪


   ___ カタカタカタ・・・
  / || ̄ ̄|| ∧_∧  ちょっ
  |.....||__|| (#    )  なにコレうぜぇ
  | ̄ ̄\三⊂/ ̄ ̄ ̄/
  |    | ( ./     /
796仕様書無しさん:2009/10/01(木) 08:13:19
でふぁいんがどんな意味がわからない奴以外で
動きみて気づけないやつはアホだろ。
自作のプリプロセッサ間にかましてるなら別だが。
797仕様書無しさん:2009/10/01(木) 08:19:41
781って何に使うの?
798仕様書無しさん:2009/10/01(木) 10:11:55
vcsでupdateしたとき、他人がどんな変更したか見ないアホばっかりなのか?
799仕様書無しさん:2009/10/01(木) 10:24:31
ソース管理ソフト使ってない前提でいいだろw
800仕様書無しさん:2009/10/01(木) 10:25:13
>798

全部見るの?
801仕様書無しさん:2009/10/01(木) 10:26:36
>>797
いたずら

WhileをLOOPにしてるソースならみたことあるな
802仕様書無しさん:2009/10/01(木) 11:44:11
>>800
もう誰も信用できない、殺伐とした職場なんだよ。
まわりは全部敵なんだよ。
殺るか殺られるかなんだよ。
803仕様書無しさん:2009/10/01(木) 13:13:27
まあ>>781やってる奴いたらまず殺るけどな
804仕様書無しさん:2009/10/01(木) 13:45:22
簡単に気付くと言ってる奴は想像力が欠如してるだろ
805仕様書無しさん:2009/10/01(木) 14:09:32
アホとか言い出すからだんだん殺伐としてきたじゃないか
806仕様書無しさん:2009/10/01(木) 14:35:31
ここは殺伐とはしてないよ?
俺、全力で >>798 を罵倒しようかと思ったけど
踏みとどまったもん。
807仕様書無しさん:2009/10/01(木) 15:12:02
俺も>>796を罵倒しようかと思ったけど踏みとどまるというか面倒だからやめた
808仕様書無しさん:2009/10/01(木) 15:37:33
>>800
updateしたせいで、自分のソールがコンパイルされる場合は、該当ヘッダーは全部見るけど?
見ないの?
809仕様書無しさん:2009/10/01(木) 16:45:02
UnitTestを用意してないのが悪い。
以上。
810仕様書無しさん:2009/10/01(木) 22:03:30
VSS って時点でダメだろ。
さっさと svn か水銀使えよ。w
811仕様書無しさん:2009/10/01(木) 22:34:12
812仕様書無しさん:2009/10/01(木) 22:55:26
ドカタの現場はVSS大好き。
eclipse使ってるのにわざわざVSSを入れたり。

ほかのバージョン管理はチェックアウトしてるときにファイルにロックがかからないのが気に食わないらしい。
でも、VSSを使っていても、俺の変更がなかったことになってたことがもう2回くらいおきてる。
813仕様書無しさん:2009/10/01(木) 23:09:50
それVSSじゃなくても起きるんだけど。VSSのせいじゃないよね。
814仕様書無しさん:2009/10/01(木) 23:12:07
ロックかかるほうが、安全とか安心とか思ってるからVSSを選んでるんだと思われるけど、
VSSでも事故おきるし、べつにロックかからなくてもいいんじゃねってこと。
815仕様書無しさん:2009/10/01(木) 23:16:38
集中型なんて使うから
816仕様書無しさん:2009/10/02(金) 06:17:52
diffやpatchを使ったことがない人は
ロックしないと不安になる
817仕様書無しさん:2009/10/02(金) 07:54:34
>>808
俺は差分だけを見る。全部読むの?そんなにヒマなの?
818仕様書無しさん:2009/10/02(金) 16:19:33
修正するソースをExcelに書いて、
ローカルにコピーして、
修正後戻してExcelにチェックする職場よりはマシさ。
819仕様書無しさん:2009/10/02(金) 21:53:25
SubversionでもLockできるんだけどね。
820仕様書無しさん:2009/10/03(土) 07:03:41
お前らロックだな
821仕様書無しさん:2009/10/03(土) 07:16:08
ハードロックです
822仕様書無しさん:2009/10/03(土) 07:48:24
俺はハーロック。自由の旗の下に生き、自由の旗の下で死ぬ。
823仕様書無しさん:2009/10/03(土) 08:46:56
俺もロックだ
824仕様書無しさん:2009/10/03(土) 09:15:57
ぽよよんろっく
825仕様書無しさん:2009/10/03(土) 12:13:21
ぼくはロック=リビングストン。
826仕様書無しさん:2009/10/03(土) 12:51:48
デッドロックだ
827仕様書無しさん:2009/10/03(土) 13:46:19
vssを使う奴はもれなく低能
828仕様書無しさん:2009/10/03(土) 13:50:56
>>817
ファイルの全行じゃなくて、変更されたすべてのファイルのdiffを見る。
つーか、見るもの同士で揚げ足とっても意味ないじゃん。
829仕様書無しさん:2009/10/03(土) 23:52:16
差分見るのにWinMergeつこうてるんだが、
もはや全体が違ってるってな感じに表示されちゃうw
意味ねー

つーかwindiffの方がちゃんと差分表示できる?
830552:2009/10/04(日) 00:01:23
>>829
細かくコミットしる
831仕様書無しさん:2009/10/04(日) 00:37:40
だなw

馬鹿はホント逆に逆に行くな。
才能としか思えんww
832仕様書無しさん:2009/10/04(日) 07:27:55
馬鹿に限って、いっぱい修正入れて、いっぱい仕事した気になってやがるw
833仕様書無しさん:2009/10/04(日) 09:32:36
IT業界、世界同時不況では製造業並みのダメージをうけ、
鳩山布教では建設業並みのダメージをうけるわけですね、わかります。
834仕様書無しさん:2009/10/04(日) 10:20:47
鳩山布教という変換ミスがあながちミスとも思えなかったりして
835仕様書無しさん:2009/10/04(日) 11:08:28
狙ってたりしてな
836仕様書無しさん:2009/10/04(日) 11:23:03
そうか?鳩山政策は結構IT業界にプラスだと思うぞ。
例えば一見無茶な省エネ目標も、IT関係にもデータセンターリプレース需要でプラス要因だろ。
837仕様書無しさん:2009/10/04(日) 11:34:14
ただでさえ利益出てないのに
銀行から金借りてまで売り上げに関係無いリプレースを推進する企業ばかりならな
838仕様書無しさん:2009/10/04(日) 15:20:29
>>837
だからこそのエコ政策だろう。

90年比で25%削減するというポーズを実行にうつすには、
省エネを名目にしたリプレースに補助金を出すとか、
エネルギー効率の悪いところには懲罰的な扱いをするとかして、
省エネ(という名のリプレース需要)を推進することになるだろ。
839仕様書無しさん:2009/10/05(月) 23:58:49
補助金?国の金は無尽蔵じゃないんだよ
840仕様書無しさん:2009/10/06(火) 00:25:24
デフレ傾向に有る限り、貨幣価値を考えれば、
要は日銀が金を印刷すれば良いわけで

ある意味、そこそこの段階までは、無尽蔵と考えて差し支えないような気も
841仕様書無しさん:2009/10/06(火) 00:29:45
価値を考えなければいけない段階で無尽蔵とは言えないだろ
842仕様書無しさん:2009/10/06(火) 06:23:58
誰が無尽蔵の補助金を要求しているんだ?
普通に、国家予算中のまとまった金が「省エネ」実現のとために投下され、
その一部がIT業界にも流れるというだけの話じゃないのか?

そういう極論する人って、口先ばっかりで実務がまるでダメな人が多いよね。
843仕様書無しさん:2009/10/06(火) 08:26:48
ウヨサヨ以前に、政治の話になると熱くなる莫迦って邪魔よね。
844仕様書無しさん:2009/10/06(火) 11:22:12
スレタイ読めない人たちに政治語られたり実務とか言われてもね
845仕様書無しさん:2009/10/06(火) 19:42:17
そーやってどんどんあぶれていくんだな
846仕様書無しさん:2009/10/07(水) 18:55:06
ん?政治語ってる奴いるか?
補助金ビジネスを語ってる奴ならいるみたいだが。
847仕様書無しさん:2009/10/07(水) 23:59:37
バシーン
ダダダッダpublic void foo()バシーン
ダダダッダ{バシーン
ダダダッダダダダッダhoge();バシーン
ダダダッダ}
バシーン


うるせえよ馬鹿
848仕様書無しさん:2009/10/08(木) 00:47:16
ソースを上の方にスクロールさせて、voidを使ってる所を探して
マウスドラッグで選択して、右クリックメニュー出してコピーする。
さっきの所までスクロールして戻って、右クリックでペーストする。
別のソース開いて、fooが出てくるところを目視で探して以下同文
そんな感じで一行のコードを完成させるのに3分かかる新人とどっちがマシか勝負だ
849仕様書無しさん:2009/10/08(木) 07:04:46
お前が何とかしてやれよ
850仕様書無しさん:2009/10/08(木) 07:27:05
>>847 ワロタ 床から立ち上がってるIBMのコンソール(「怒り狂ったゴルフボール」の奴)
俺がリターンキー叩いたらビリビリ振動して、お前壊すなよ、って言われたの思い出した。
851仕様書無しさん:2009/10/08(木) 08:27:24
>>847
>>850で理解した
インデント深くね?
852仕様書無しさん:2009/10/08(木) 08:48:34
スペースでインデントとか勘弁して。
853仕様書無しさん:2009/10/08(木) 08:49:59
>>852
普通じゃんそれ。
854仕様書無しさん:2009/10/08(木) 09:12:33
>>853
メモ帳で開発してるひとはそうでしょうね。
855仕様書無しさん:2009/10/08(木) 09:15:14
TAB,SPC混在じゃなければどっちでもいい。
856仕様書無しさん:2009/10/08(木) 09:16:56
TABだと環境依存でソースの「見え方」が変わる。
スペースを使えば固定幅フォントさえ使っていれば
ソースの「見え方」がかわることはない。

実際、Pythonなど、スペースでインデントする環境はそれほど少なくない。
857仕様書無しさん:2009/10/08(木) 09:55:41
ゆうたら空白とTAB混在もUnix系だと普通。
なんで混在が嫌なのか知らんけど。
858仕様書無しさん:2009/10/08(木) 09:59:47
タブのみまたは空白のみならば、タブ設定がかわってもインデントの関係は保たれる。
タブと空白が混在すると、タブ設定によってインデントの関係が逆転することがある。
859仕様書無しさん:2009/10/08(木) 10:13:31
保存時、タブを空白にする
統一ルールでおk
860仕様書無しさん:2009/10/08(木) 10:27:45
expand -t 4 | unexpand
861仕様書無しさん:2009/10/08(木) 10:30:12
>>851 4桁インデントならふつうでしょ。
862仕様書無しさん:2009/10/08(木) 10:53:33
「いーや!2桁にしないと横に伸びすぎて見えなくなる!」
とかだったら、まさにスレタイ通りだな。
863仕様書無しさん:2009/10/08(木) 16:51:47
Linuxカーネルって「インデントはタブでやれ」「8タブ以外は氏ね」だっけ?
864仕様書無しさん:2009/10/08(木) 18:29:07
うん、でもって、1タブ=8スペースで画面幅が足りなくなったらロジックを考え直せ、と続く。

865仕様書無しさん:2009/10/08(木) 19:14:36
ここで置換機能の出番でございます
866仕様書無しさん:2009/10/08(木) 21:13:46
ここで痴漢機能の出番でございます
867仕様書無しさん:2009/10/08(木) 21:21:56
>>852 の「スペースでインデント」って、スペースキーを
押してインデントしてるって意味だろ?
>>847からの流れで。
868仕様書無しさん:2009/10/08(木) 22:00:28
>>861
インデントは実体がスペース(0x20)にしろタブ(0x09)にしろタブキーでやるので、
4重かよ!とおもたわけでしてはい。
869仕様書無しさん:2009/10/08(木) 22:31:29
四回か八回叩いてるんだからスペースだろ
870仕様書無しさん:2009/10/09(金) 05:37:32
>>864
そういうコンベンションにしているところのソースって、
やたら関数名や変数名が短かくって読みにくい。
871仕様書無しさん:2009/10/09(金) 14:40:58
C#のコード。
やりたいことは分かるのだが……

if (param == 0)
{
  //何々
}
else if (param != 0)
{
  //何々
}
else
{
  throw new NotImplementedException();
}
872仕様書無しさん:2009/10/09(金) 17:41:51
paramがvolatileなら、と一瞬思ったが、そういうコードではなさそうだしなw
873仕様書無しさん:2009/10/09(金) 23:31:14
未定義値ならありえるのか..
874仕様書無しさん:2009/10/09(金) 23:48:18
param が double で、値がNaNなら十分ありえる。
875仕様書無しさん:2009/10/10(土) 00:04:19
NaN?だとぉ
876仕様書無しさん:2009/10/10(土) 00:37:51
大体、NotImplementedExceptionでいいのか?
877仕様書無しさん:2009/10/10(土) 00:46:24
JavaだとIllegalStateExceptionあたりかな。
C#にもきっと似たようなのaあるだろう。
878仕様書無しさん:2009/10/10(土) 03:36:17
>>871
やりたい事が分かるならスレタイ的には問題ないレベル。
879仕様書無しさん:2009/10/10(土) 08:44:09
そういやC#にはNullableが導入されてたなあと思ったが
それでもこのコードは無意味やな・・・
880仕様書無しさん:2009/10/10(土) 12:44:22
意味はないが害もないのでメンテ中にあってもそっとしておくレベル
881仕様書無しさん:2009/10/10(土) 14:51:57
>>871
のコードは、カバレージ100%試験はしてない…んだよな?
882仕様書無しさん:2009/10/10(土) 16:00:42
paramがメンバ変数ならelseもありえるんじゃないか?
883仕様書無しさん:2009/10/10(土) 16:07:44
ん?なんで?意味分らん
884仕様書無しさん:2009/10/10(土) 17:37:01
つ マルチスレッド
885>871:2009/10/10(土) 18:33:20
元々、こーだったんじゃねの?とエスパー
if (param == 0)
{
  //何々
}
else
{
  throw new NotImplementedException();
}

後で param != 0 を付け足して最後のelseがゴミとなって残ったんじゃ?
886仕様書無しさん:2009/10/10(土) 18:40:20
俺にはこうエスパーできた(電波がきた)

if(param == 0) {
 云々
} else if (param != 0 && 何かほかの条件) {
 云々
} else {
 throw new NotImplementedException();
}

後で「何かほかの条件」がなくなった
887仕様書無しさん:2009/10/10(土) 19:21:25
888仕様書無しさん:2009/10/10(土) 20:40:29
>>886細かいことだが

if(param == 0) {
 云々
} else if (param != 0 && 何かほかの条件) {
 云々
} else {
 throw new NotImplementedException();
}



if(param == 0) {
 云々
} else if (何かほかの条件) {
 云々
} else {
 throw new NotImplementedException();
}

でもいいよなぁ……
889仕様書無しさん:2009/10/10(土) 22:36:50
ギャグのようでマジな話。

typedef int NUMBER;

びっくりして二度見した。
890仕様書無しさん:2009/10/10(土) 22:49:20
別にありじゃね? 仕様とか背景が分らんからなんとも言えんが。
891仕様書無しさん:2009/10/10(土) 23:25:46
//お客様の要望です
892仕様書無しさん:2009/10/10(土) 23:36:17
お客様の要望は未知の世界
893仕様書無しさん:2009/10/10(土) 23:38:37
ソース見て要望を出すお客様なら、上手く立ち回ればチャンスにできる。
「お客様」が元請じゃなくてエンドユーザを指すならな。
894仕様書無しさん:2009/10/13(火) 10:10:12
>>889
Pro*C だとありそうだな。VARCHAR 構造体とのバランスで。
それにしたって整数固定はないだろう、とは思うけども。
895仕様書無しさん:2009/10/27(火) 00:35:22
マ暦1年未満、仕事でコードかいたのは3ヶ月未満、言語はC#のみ
ついでにいうとJava暦0年。そんなトーシロですが

int i = 0;
Hoge hoge = hage();
whire(hoge == null && i <= 0) {
 hoge = hage();
 if(hoge == null) {
  Thread.Sleep(Const.WAITE); //失敗してたらちょっとまってリトライしたいらしい
 }
 i++;
}

if(hoge == null) {
 return; //例外処理?なにそれ?食べれる!?
}

//以下本当にやりたい処理
---
うちにいるそこそこできるらしい中華コーダー産
elseでくくるの忘れたんだとしても実行する前に気づかないんだろうか…
まぁ上限ないからelseつけてインクリメント回避するようにしたら無限ループする可能性あるけど
896仕様書無しさん:2009/10/27(火) 00:47:58
whire
~~~~~

ないわー
897仕様書無しさん:2009/10/27(火) 00:54:26
ん? きれいではないが別に動きとしてはおかしくないような... iがリトライカウント(この場合は最大0回)でしょ。
898仕様書無しさん:2009/10/27(火) 01:14:29
typoくらいみのがしてやれw

>>897
1回目のループで必ずループ抜ける条件になるから
そもそもwhileで回す意味なくね
899仕様書無しさん:2009/10/27(火) 01:16:46
あ、ごめんなさい
i <= 1でした。ってか0だとそもそもループの中にすら入ってないよね

>>896
ごめんなさい
900仕様書無しさん:2009/10/27(火) 01:18:18
チャイナにしてはよくできたほう
本物はこんなもんじゃない
901仕様書無しさん:2009/10/27(火) 01:50:05
最大2回リトライするなら、i < 2 と書いて欲しいかな。
ループは <= より < の方がループ回数が分かりやすくて好きだ。
902仕様書無しさん:2009/10/27(火) 02:05:41
初期値次第だし
903仕様書無しさん:2009/10/27(火) 02:32:07
社のコーディングルールが気に入らない
904仕様書無しさん:2009/10/27(火) 21:05:04
コーディングルールがあるだけましじゃね?
905仕様書無しさん:2009/10/27(火) 21:07:11
>>899
hoge が nullでi=0ならループに入ってくじゃん?
906仕様書無しさん:2009/10/31(土) 20:42:45
隣の先輩のコードが

if (memcmp(・・・) == TRUE)

と、なってて、そりゃねーだろと思ったけど、定義をみてみたら、

#define TRUE 0
#define FALSE -1

で、まあ、気持ち悪いけど、これなら動くなと思ってたら

if (memcmp(・・・) == FALSE)

って、書いてるところもあって、やっぱこりゃだめだと思った。

何日かしたら、やっぱり「なんでこれ、こんな動きなんだ!」みたいに騒ぎだして、
わかってる人から、「そこは != 0 だよ」みたいに教えてもらってた。

「あれ、おれ、なんでこんな書き方してるんだ、ほかのソースはちゃんと書けているのに」
って言い訳をはじめたけど、たしかに、その先輩は基本的に人のソースをマネして
書く人なんで、どうしてそんなところだけ独自に書いてバグってんだって感じ。

それから memcmpを検索して、順番に
== TRUE だったら == 0 に
== FALSE だったら != 0 に
書き直していってたけど、そんな修正してたらミスらねーか? って思ってたらやっぱり何箇所か
== FALSE を == 0 って修正ミスしてた。

俺には関係ないから黙ってたけど。

907仕様書無しさん:2009/11/01(日) 04:29:27
行き当たりばったりか。
そのまま行き倒れりゃいいんだけどな。
908仕様書無しさん:2009/11/02(月) 09:49:42
「真偽値を戻す (C の場合は 0/0以外だけど) 関数が理解できない」
とか、
「if 文は必ず関係演算子を使った形でないといけないと思っている」
とか、そーゆーの多いね。
909仕様書無しさん:2009/11/02(月) 17:20:05
一般化した形で把握することができないんだろう
抽象化が苦手なタイプ
910仕様書無しさん:2009/11/02(月) 21:41:50
>>909
>抽象化が苦手なタイプ
心底プログラマなんかやめちまえって思うな
911仕様書無しさん:2009/11/02(月) 23:50:49
変なコード持ってきて、うごきません、とか言われるとイラッとくる
それを読んでる時に横からゴチャゴチャ言われるとキレそうになる
採用時の適性検査はコード書かせてレビューさせろマジで
912仕様書無しさん:2009/11/03(火) 00:12:22
動かないって言うから見てみたら、俺のソースまるパクリで
バグの原因が変数名の変更し忘れだった日にゃもう・・
913仕様書無しさん:2009/11/03(火) 01:05:44
しかも呼ばれるときのせりふが「お前の作ったプログラム動かんぞ」だろ?よくあるよな。
914仕様書無しさん:2009/11/10(火) 11:16:40
>>895
チャイナなめんな!
値保持が全部テキストボックスだった事があるんだぞ!変数の代わりに!
915仕様書無しさん:2009/11/10(火) 13:13:03
論理和使うと分かんなくなるからやめろ!って人ならいる
916仕様書無しさん:2009/11/10(火) 18:48:33
ビット演算便利じゃん
917仕様書無しさん:2009/11/13(金) 18:20:32
内容は省略して簡単なものにしてるが、

if ( n != 0 ) a = true; else
a = false;
              |
              |
        モニターはこのへんで右端

いいかげんにしろ向かいに座ってるカスw
elseまで書いたんなら改行するなw
改行しても同じカラムから続きを書くなw
918仕様書無しさん:2009/11/13(金) 19:45:43
>>917
VB脳だろ。そいつ。
if then
だから
if else
って書かないと気がすまないんだよ。
919仕様書無しさん:2009/11/14(土) 03:53:40
ずいぶん小さいモニターなんですね
920仕様書無しさん:2009/11/14(土) 06:16:49
深い階層の一部を抜き出してるんじゃね?

たまにいるだろ、やたらネストするネストオタが
921仕様書無しさん:2009/11/14(土) 09:37:07
普通はelseの前で改行するわけだが
ネストが深くなるのはプログラムを書く技術がないわけでして
922仕様書無しさん:2009/11/14(土) 11:57:05
if (n != 0)
NantokaForm.NantokaListBox.Items[i].Enabled = true;
else
NantokaForm.NantokaListBox.Items[i].Enabled = false;
みたいなのは1行でやれって話かと思ったが違うのか
923仕様書無しさん:2009/11/14(土) 12:09:06
>>922 の言語が何なのかすごく気になる。
924仕様書無しさん:2009/11/14(土) 12:10:34
>>922
そういうの普通は参照だけ抜き出さない?
925仕様書無しさん:2009/11/14(土) 12:15:42
1行でっていうとこうかな
NantokaForm.NantokaListBox.Items[i].Enabled = (n != 0) ? true : false
926仕様書無しさん:2009/11/14(土) 12:26:18
普通に
NantokaForm.NantokaListBox.Items[i].Enabled = (n != 0);
でよぐね?
927仕様書無しさん:2009/11/14(土) 12:27:40
>>926
話が脱線してる
それはEnabledにboolを突っ込む方法だ
928仕様書無しさん:2009/11/14(土) 12:37:22
え? そういう話じゃなかったの?
929仕様書無しさん:2009/11/15(日) 16:31:40
item = NantokaForm.NantokaListBox.Items[i];
if (n != 0)
item.Enabled = true;
else
item.Enabled = false;
930仕様書無しさん:2009/11/15(日) 16:38:02
オリジナルより行数増えとるがな(´・ω・`)
931仕様書無しさん:2009/11/15(日) 18:13:03
item = NantokaForm.NantokaListBox.Items[i]; if (n != 0) item.Enabled = true; else item.Enabled = false;
932仕様書無しさん:2009/11/15(日) 18:49:10
NantokaForm.NantokaListBox.Items[i].Enabled = (n != 0);
でいいじゃん。
933仕様書無しさん:2009/11/15(日) 19:17:21
>>932
>>926でいいじゃん」
でいいじゃん。
934仕様書無しさん:2009/11/16(月) 09:29:31
(n != 0)の値って、1か0を返すんじゃないの?
trueとfalseを返すんだっけ?
935仕様書無しさん:2009/11/16(月) 09:54:22
どっちにしろキャストされるから問題は出ない
違いが問題になるのはオーバーロード解決の時くらいじゃね
936仕様書無しさん:2009/11/16(月) 09:56:57
>>923
C# だろjk。
>>934
C/C++ なら 1/0 だろうが、それがどうした。
937仕様書無しさん:2009/11/16(月) 17:45:21
>>934
(n!=0) は式なんだから、bool値が返るだろ
938仕様書無しさん:2009/11/16(月) 18:14:12
939仕様書無しさん:2009/11/16(月) 18:40:43
#define TRUE 0
#define FALSE 1
940仕様書無しさん:2009/11/16(月) 21:01:50
      ,.=-''' ̄ ̄ ̄ ̄ ̄ ̄` -、
    /               \
   ./                 .\
   {                   }
   .|   / ̄""''-=,,,,_,,,,,,==-'''"\  |
   .l,  .(  ,. - ' .、     ,. - ,  .} |
   l   > ,=ニ\ ゛ | ''゛_,=ヘ、 r' {_
  /~''i //_\_..`7| l、{''″/__`>ヽ |r`i
  l .{`|./ ヽ二・ニゝチ、 ! .ゝrニ・二r  } ! i l
  { {(l {      ノ | | ヽ   ::  }| ソ/
  ヽヽ|.{    /  | |  \    i.|// 
   \|.i   /  ,,.. | l._,, . \  i !/     ______
    乂i  /    - (__,)-゛   ' {丿    /
    .l .!、.      ,. !.,  .,   / |     |  用件を
    人 \   .!''''" ̄~ ̄`''!  / 人   <
   ./ | .\ ,\  '-"" ゛-'  / / | .ヽ   |  聞こうか…
  ノ  .{  \ .ヽ,.,   .:   ,イ /  }  ヽ  \______
-'″  l    `' 、`.───″    .}    ヽ
941仕様書無しさん:2009/11/17(火) 06:35:37
>>917は if の書き方の話だろ
どうしてこうなった
942仕様書無しさん:2009/11/17(火) 23:47:02
>>939
( ゜д゜)
943仕様書無しさん:2009/11/18(水) 02:16:47
#!/bin/sh 用のスクリプトを書いていたら返却値 0 = 真 だったので困惑した。
944仕様書無しさん:2009/11/18(水) 09:05:46
大昔のcshは&&と||の評価方法が逆(=Cと同じ)なものもあった。
# http://www.nurs.or.jp/~asada/FAQ/UNIX/section2.4.html
945仕様書無しさん:2009/11/21(土) 06:42:25
かぎかっこでくくったCREATETABLE文。
30個くらいのテーブルのPKに全て同じPK名を付けてたCREATETABLE文。
マジ悪意わいた。押さえるのに必死だった。
946仕様書無しさん:2009/11/21(土) 11:29:23
殺意じゃなくて悪意なのか。
947仕様書無しさん:2009/11/21(土) 17:23:57
悪意が沸いたのでそのままにしておこうかと思ったが
ぐっとこらえて全部修正したという事ではなかろうか
948仕様書無しさん:2009/11/21(土) 17:32:03
PK名なんてわざわざつけなくても、自動でつけてくれるだろ
949仕様書無しさん:2009/11/21(土) 23:45:23
>>946
その語を使うと通報されるからでしょ
950仕様書無しさん:2009/11/22(日) 01:02:33
さすがにそれだけじゃ通報されない
951仕様書無しさん:2009/11/22(日) 10:10:48
>>947
う、その通りだ。
全部修正して全部確認したさ。一日つぶして。初期値設定もでたらめだったし。
952仕様書無しさん:2009/11/22(日) 10:16:27
>>949
確かに一応その辺は少し気にして念のためそうした。
953仕様書無しさん:2009/11/22(日) 10:48:16
NantokaForm.NantokaListBox.Items[i].Enabled = !!n;
954仕様書無しさん:2009/11/22(日) 12:32:15
!! はイディオムといえばイディオムではあるが…
わかっていても使いたくはないな。
955仕様書無しさん:2009/11/22(日) 12:36:31
n



!!n

って何か違うの?
956仕様書無しさん:2009/11/22(日) 12:58:39
boolean にキャスト
957仕様書無しさん:2009/11/22(日) 13:13:00
手元にC#の環境ないから確認できないけど、「!」ってC言語みたいに数値型にも使えるんだっけ?
MSDNには、boolに対して有効みたいに書いてあるんだけど、

C# 言語リファレンス
! 演算子 (C# リファレンス)
論理否定演算子 (!) は、オペランドを否定する単項演算子です。この演算子は bool に対して定義されており、オペランドが false の場合だけ true が返されます。
958仕様書無しさん:2009/11/22(日) 17:01:24
bool b = !!1;
C#でやったら普通にコンパイルエラーだったわけだが
959仕様書無しさん:2009/11/22(日) 18:21:46
つーか元の言語は何なのか?
960仕様書無しさん:2009/11/22(日) 18:39:45
C/C++だろ。
0とそれ以外の値を、0と1に変換するイデオム。
961仕様書無しさん:2009/11/22(日) 19:55:37
どうみても.NETなんだけど、C++だったら、
NantokaForm.NantokaListBox じゃなくて
NantokaForm->NantokaListBox じゃなかったっけ?
だからC#かと
962仕様書無しさん:2009/11/22(日) 20:32:15
C#で!!なら、辞めようと思うソースコードだな。
963仕様書無しさん:2009/11/23(月) 19:17:15
>>955
bool operator ! をオーバライドしてる状態で、
結果を反転させたいとき。
是非はともかく。
964仕様書無しさん:2009/11/24(火) 10:29:27
C++/CLI ならすべて解決!
965仕様書無しさん:2009/11/30(月) 01:06:35
int a = 0;
int b = 1;
if ( a < b ){
    //something
}



スペース区切りだと思うだろ?全部タブだったんだぜ。
966仕様書無しさん:2009/11/30(月) 19:24:02
それはタブーだな
967仕様書無しさん:2009/11/30(月) 19:44:51
タブんそうだな
968仕様書無しさん:2009/11/30(月) 19:52:05
タブ幅1か!
969仕様書無しさん:2009/11/30(月) 23:44:55
タブ幅は8以外認めん!!!
970仕様書無しさん:2009/11/30(月) 23:56:03
8はキモ過ぎる…
971仕様書無しさん:2009/12/01(火) 00:04:27
俺はタブ4推進主義派
972仕様書無しさん:2009/12/01(火) 00:27:55
俺はタブ幅に左右されない可読性を持ったコード推進主義派
973仕様書無しさん:2009/12/01(火) 00:35:54
Javaのコーディング規約ってタブ幅8でインデント幅4だったっけか
974仕様書無しさん:2009/12/01(火) 00:54:30
俺のお腹は32タブぐらいかなぁ
975仕様書無しさん:2009/12/01(火) 01:41:08
切り落とせ
976仕様書無しさん:2009/12/01(火) 06:55:36
久々にタブクリア飲みたいな。
977仕様書無しさん:2009/12/01(火) 08:21:59
タブ8、インデント4だろjk
$ cat ~/.exrc
set ht=8 sw=4 ai exrc
978仕様書無しさん:2009/12/01(火) 18:04:50
意味が分からない仕様書。
○○の場合、承認処理。
だから承認処理ってなんだよ。それするとどうなんだよ。

その先を書け馬鹿。入ったばかりの助っ人にこれで分かるわけないだろ。
最近こんなんばっかりで発狂寸前。誰か助けて。
979仕様書無しさん:2009/12/01(火) 18:16:04
>>978
とりあえず、わからねえとつっかえせば。
980仕様書無しさん:2009/12/01(火) 18:17:17
>>978
データに署名が付加されるんじゃないの?
署名の実態がどんなもんかは知らないが。

981仕様書無しさん:2009/12/01(火) 21:36:19
>>978
あるあるw

仕様書のはずなのに、肝心の実装すべき業務内容が全く定義されてない
こんなものは仕様書じゃねぇ、妄想ノートと呼ぶべきだ
982仕様書無しさん:2009/12/01(火) 22:45:27
次のスレタイは「この会社辞めようと思った仕様書」で
983BBS_SUBJECT_COUNT=48:2009/12/02(水) 02:54:49
「この会社辞めようと思ったソースコード・仕様書」もいいな
984仕様書無しさん:2009/12/02(水) 16:40:57
当面は仕様書の話もありにして、いい感じならテンプレに「仕様書の話もおk」と
書いて、スレタイにも入れないと不便だとなったらスレタイにも入れる、くらいで
いいんじゃね
今のスレタイでも同じ需要の人は見に来るだろうし
985仕様書無しさん:2009/12/03(木) 00:12:38
>>983
いや、それあるし。

この会社辞めようと思ったソースコード#1B
http://pc11.2ch.net/test/read.cgi/prog/1217149576/
986985:2009/12/03(木) 00:13:59
すまん間違えた。
ここじゃんw
987仕様書無しさん:2009/12/03(木) 02:52:59
>>985、あなた疲れてるのよ
988仕様書無しさん:2009/12/03(木) 21:03:59
変わったのりつっこみだな
989仕様書無しさん
select sum(A) from
(
select sum(B) AS A from…
union
select sum(C) AS A from…
)

みたいなコードをみつけた。
sum(B)とsum(C)が同じ値になったら、行がまとめられちゃうじゃん。