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

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

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

前スレ
この会社辞めようと思ったソースコード#18
ttp://pc11.2ch.net/test/read.cgi/prog/1187102925/
2仕様書無しさん:2007/10/16(火) 15:51:48
2GET!!!!!!!!!!!!!!!!
3仕様書無しさん:2007/10/16(火) 17:09:58
goto >1;
4仕様書無しさん:2007/10/16(火) 18:13:42
/*
5仕様書無しさん:2007/10/16(火) 21:41:58
*/                                                          /*
6仕様書無しさん:2007/10/16(火) 21:46:48
*/

if(投稿者 == 今日も午前様) { /* すれ住人が今日も午前様だった場合 */

} else if (投稿者 == 今日も自宅警備員) { /* ニートの場合
7仕様書無しさん:2007/10/16(火) 21:56:09
#if 0
8仕様書無しさん:2007/10/17(水) 10:48:29
#define O 0
9仕様書無しさん:2007/10/17(水) 23:31:00
こんなコード↓言語はC

struct_very_long_name_array[data_position[i]].long_long_name_member =
struct_very_long_name_array[data_position[i]].long_long_name_member +
very_long_name_temporary_integer_variable;

ま、、まずは += 使ってみようか...
10仕様書無しさん:2007/10/17(水) 23:52:10
>9
ぽんぽん、と肩を叩きながら「少し、頭冷やそうか……」って言いたくなるコードだ

レガシVBだと+=の類がないからってんでその手のコードがわんさかorz
11仕様書無しさん:2007/10/18(木) 13:14:27
while ( 0 != hoge()) ) {
i= getHoge();
if( i< 0 ) {
setmsg();
return -1;
}
if( count> MAXCOUNT) {
setmsg();
return -1;
}
count++;
}

ううう、まじで何やってんのか、意味わからん。
if(hoge()){
setmsg();
return -1;
}
これだけで済むのに・・・。頭痛い。
12仕様書無しさん:2007/10/18(木) 13:50:48
それがわかんないなら、プログラマ辞めたほうがいいよ
13仕様書無しさん:2007/10/18(木) 14:59:33
12様が解説してくれるそうです
14仕様書無しさん:2007/10/18(木) 15:12:10
>>11=13
辞めてしまえ
15仕様書無しさん:2007/10/18(木) 15:26:28
引数があるのかないのか、わからないけど、こんな感じなんでしょ、多分。
int hoge()
{
  if (timeout_or_fatal_erroroccurred) {
    return -1;
  }
  return 0;
}
int getHoge()
{
  if (timeout_occurred) {
    return 1;
  }
  if (fatal_error_occurred) {
    return -1;
  }
  return 0;
}
void setmsg()
{
  // set error message to log or something else
}
で、そのコード自体は、
・hoge()が正常終了したら終了
・hoge()で異常終了したら、即エラー終了する
・hoge()でタイムアウト(例えば、だよ)が発生したらMAXCOUNT回までリトライする
・リトライオーバーしたらエラー終了する
16仕様書無しさん:2007/10/18(木) 15:28:45
フラグを間違えてトートロジーになってるコード見た時にみんな疲れてるんだなと思った。
1715:2007/10/18(木) 15:29:01
中身が全然違うよって反論は受け付けないよ。
違うんならそれがわかるように>>11の時点で書かなきゃ。
少なくとも「これだけで済む」はずがないのは明らか。だって、getHoge()してないじゃん。
18仕様書無しさん:2007/10/18(木) 15:38:24
いや、全然違うんだが。
>中身が全然違うよって反論は受け付けないよ。
>違うんならそれがわかるように>>11の時点で書かなきゃ。
じゃあ何もわかってない奴がやめろとか言うのもも同類だな。
何もかかれて無い時点で判断してるし。

つーかそのタイマーの使い方なんだよ。
そんなコードがsleepもなく動くと思ってるのか。
そのコードこそ辞めたくなるわwww
19仕様書無しさん:2007/10/18(木) 15:44:55
ちなみにhoge()は何も待ってない。ただメモリ内にイベントがあるかチェックしているだけで、ノンブロック。
だからイベントが無いときはカウンタがMAXになるまでフリーズ状態になり、他のスレッドが全部死んでる。
んで、ウォッチドッグリブートするバグ。客先でえらいことに。
#他部署の火消し中
20仕様書無しさん:2007/10/18(木) 15:52:21
なんか見苦しい。
読む気しないし。
やめた方がいいよ、やっぱり
2115:2007/10/18(木) 15:54:27
ということは、>>11のコード自体が悪いわけじゃないのでは?
hoge()とかgetHoge()とか、setmsg()の内容自体が悪いんじゃないの?
というか、全体的に程度低い感じもするけど、それはまた別の話。
22仕様書無しさん:2007/10/18(木) 15:58:34
ノンブロックって何さwww
23仕様書無しさん:2007/10/18(木) 16:01:27
なんのSleepもブロックもしないタイマー参照するループ処理かいといて他人の程度を云々するとはね
24仕様書無しさん:2007/10/18(木) 16:03:11
non-block の検索結果 約 161,000 件中 1 - 10 件目 (0.16 秒)
25仕様書無しさん:2007/10/18(木) 16:05:16
必死すぎて笑えるwww
26仕様書無しさん:2007/10/18(木) 16:07:08
どこからSleepの話が出たんだ?
27仕様書無しさん:2007/10/18(木) 16:09:16
"ブロックするタイマー" に一致するページは見つかりませんでした。

検索のヒント:

* キーワードに誤字・脱字がないか確認します。
* 別のキーワードを試してみます。
* もっと一般的なキーワードに変えてみます。
28仕様書無しさん:2007/10/18(木) 16:09:25
Sleepもブロックもせずにタイマー参照するループ書くようなヤツがいる会社は辞めたほうがいい、という話だな。
29仕様書無しさん:2007/10/18(木) 16:10:18
ブロックって何さwww
30仕様書無しさん:2007/10/18(木) 16:11:31
なんだブロックするタイマーって。
日本語区切るところ間違えてますよw
どう読んでも
ブロックもしない、にかかるのはループ処理ですが。
日本語もまずいのか。

つーかブロックも知らんやつがなんでここに居るの?
3115:2007/10/18(木) 16:11:36
いや、疑似コードなんですけど・・・

まあ、どうでもいいです。降参。
32仕様書無しさん:2007/10/18(木) 16:16:11
>>29

socket ブロックする の検索結果 約 10,800 件中 1 - 10 件目 (0.16 秒)
33仕様書無しさん:2007/10/18(木) 16:18:50
"ブロックしないループ" に一致するページは見つかりませんでした。

検索のヒント:

* キーワードに誤字・脱字がないか確認します。
* 別のキーワードを試してみます。
* もっと一般的なキーワードに変えてみます。
34仕様書無しさん:2007/10/18(木) 16:19:49
ブロックしないループのどこが悪いんだろう?
35仕様書無しさん:2007/10/18(木) 16:21:27
多分ビジーループのことだと思う。
ブロックする/しないのどっちがそれかわからんけど。
36仕様書無しさん:2007/10/18(木) 16:21:53
それ、googleの使い方が悪いだけだから。
つーか、ブロック/ノンブロックという用語はあっただろ。それについて釈明しろ。
37仕様書無しさん:2007/10/18(木) 16:23:12
ブロックやSleepしないループは別に悪くないだろ。
でもそんなかでタイマー参照するのはどう考えてもまずいだろ。意味が無い。
38仕様書無しさん:2007/10/18(木) 16:23:18
コンテキストスイッチが起こらないループを書くなと言いたいんだと思う。
39仕様書無しさん:2007/10/18(木) 16:25:05
>>28
> Sleepもブロックもせずにタイマー参照するループ書くようなヤツがいる会社は辞めたほうがいい、という話だな。

ブロックするの使い方間違ってますよ。
40仕様書無しさん:2007/10/18(木) 16:26:35
>39
じゃあどう間違ってるのかと正しい用法を以下に↓
41仕様書無しさん:2007/10/18(木) 16:36:13
仕事しろよ
42仕様書無しさん:2007/10/18(木) 16:39:00
ブロック・ノンブロックという用語があることがわかったら、
今度は用法についての指摘にすりかえ、
それも出来ないとなると、しまいにゃ仕事しろってか。
見事だな。
43仕様書無しさん:2007/10/18(木) 16:42:57
こいつと仕事したくないわ、マジで
44仕様書無しさん:2007/10/18(木) 16:43:32
様々なケースに備えたエラー処理の例だな
45仕様書無しさん:2007/10/18(木) 16:45:35
うーん、ブロックは動詞じゃなくて形容詞/形容動詞としてしか使ってこなかったんだけど、
そこまで言われると、俺の方が間違ってる気がしてきた。

正しい用法は示せません。ごめんなさい。
46仕様書無しさん:2007/10/18(木) 16:47:28
後付け情報でファビョるいい例
47仕様書無しさん:2007/10/18(木) 16:47:29
ビジーループ内ではイベントの参照や他スレッドによって変化する値の参照はしてはいけないね。
常識だと思ったんだがそうでもないのか。
48仕様書無しさん:2007/10/18(木) 16:48:44
>>47
いや、常識でしょう。
49仕様書無しさん:2007/10/18(木) 16:50:38
話が完全にすり替わっててワロタ
50仕様書無しさん:2007/10/18(木) 16:55:01
しっかし、うまくすりかえたな.
ヘタなコード晒したのがつけ込まれたな.
ま,最初のコードからはなんともいえんな.中身見ないと.
51仕様書無しさん:2007/10/18(木) 17:33:20
C++のクセにカウンタ専用変数ををいちいち先頭で宣言かよ。
しかもshort使うなよ。むしろおせーよ。
あと、#ifdefの嵐でどれが生きてるのか死んでるのかよくわからん・・・。
52仕様書無しさん:2007/10/18(木) 23:26:15
// XX/XX オプションの意味を変更(要件票xxx)
// XX/XX 前項取り消し
// XX/XX やっぱり0がアリで1がナシだとのこと
// XX/XX 戻った
// XX/XX 今、逆にしてます。もう変えるなよ、絶対に変えるなよ!
// XX/XX 何だかワクワクしてきた
if (!!!!!!option_installed)
53仕様書無しさん:2007/10/18(木) 23:34:03
びっくりだよ
54仕様書無しさん:2007/10/18(木) 23:36:30
option_installedという名前なのに
アリになったりナシになったり出来るのがすごいな。
55仕様書無しさん:2007/10/19(金) 10:04:42
辞めようと思ったはずなのに辞めろと言うと切れる件について
56仕様書無しさん:2007/10/19(金) 10:19:42
この手の話の場合はIDあったら面白いのになと思う。
57仕様書無しさん:2007/10/19(金) 11:51:09
>>11のコードってコンテキストスイッチは起こらないの?
global_variable++ってだけのコードでもアトミックになる保証は無いから、排他かけろって教わったんだけど・・・
58仕様書無しさん:2007/10/19(金) 13:09:47
>>56
ここはどうだ。最近このスレと見分けが付かないぞ。

【25ヵ所も】ゲーム業界人実情吐露スレ【修正β3】
http://ex23.2ch.net/test/read.cgi/ghard/1190019667/l50
59仕様書無しさん:2007/10/19(金) 13:15:56
>>11
意味わからんなら辞めろよ
60仕様書無しさん:2007/10/19(金) 13:37:09
>>57
起こらないという保証はないため、起こると困るのであれば排他制御する必要がある。
必ず起こるという保証もないのは言うまでもない。
61仕様書無しさん:2007/10/19(金) 14:01:16
きっと Windows3.1 なんだよ…
62仕様書無しさん:2007/10/19(金) 14:58:12
ビジーループ内でタイマー参照か。最近の新人はすごいな。
63仕様書無しさん:2007/10/19(金) 15:09:54
タイマーって何だ?
64仕様書無しさん:2007/10/19(金) 15:12:48
>>11
どう考えても、それだけで済むはず無いんだが
65仕様書無しさん:2007/10/19(金) 15:29:29
>11
ビジーループでどっちにしろ同じ処理を通らないと抜けられないんだから
それだけで済むじゃん
66仕様書無しさん:2007/10/19(金) 15:32:36
やべえ、俺ゲロ吐きそう、この流れで
67仕様書無しさん:2007/10/19(金) 15:34:09
遠慮なくそこらに吐けばいい
68仕様書無しさん:2007/10/19(金) 15:36:48
「それだけで済むじゃん」とかいって、勝手にロジックを変えて「りふぁくたりんぐ〜」とか勘違いして
プロジェクトを混沌に陥れる奴っているよな
69仕様書無しさん:2007/10/19(金) 15:41:22
>19
70仕様書無しさん:2007/10/19(金) 15:42:03
>>67
アセチレンランプ?
71仕様書無しさん:2007/10/19(金) 15:47:41
なんだか「俺すごいだろ」的な主張をしてるような気がするが、客先でえらいことになるような
チームにいる時点で、お前も含めてダメチームなんだからな。
72仕様書無しさん:2007/10/19(金) 15:51:56
>#他部署の火消し中
73仕様書無しさん:2007/10/19(金) 15:58:27
日本語が不自由連発ワロス
74仕様書無しさん:2007/10/19(金) 16:00:40
>>71
このスレの存在意義全否定wwwwww
75仕様書無しさん:2007/10/19(金) 16:44:42
とある関数。

Ret = FuncAbs( stDat, stDat.code, stDat.name );

二つ目と三つ目の引数は、一つ目の構造体のメンバなのに・・・・なぜ別々に宣言する('A`)
76仕様書無しさん:2007/10/19(金) 19:33:48
>>75
この時はたまたま同じ構造体のメンバになってるだけで、受け側では別にそうなっていなくてもいいんじゃないの?
77仕様書無しさん:2007/10/19(金) 20:34:43
これを見ただけでは別におかしくはないな
78仕様書無しさん:2007/10/19(金) 20:49:05
それよりもabsという名前でその引数は気になる
79仕様書無しさん:2007/10/19(金) 20:56:01
>>52
取り消すなら ! 消せばいいのに・・・
80仕様書無しさん:2007/10/19(金) 21:40:39
Absは絶対値という意味なのだろうか
それともエアバッグシステムなのだろうか
81仕様書無しさん:2007/10/19(金) 22:30:28
絶対領域
82仕様書無しさん:2007/10/19(金) 23:27:40
あべし
83仕様書無しさん:2007/10/19(金) 23:29:49
それはABC
84仕様書無しさん:2007/10/20(土) 01:29:45
他のところの呼び出すところで
Ret2=FuncAbs(stDat2, code, name)
となってるから。codeもnameもstDat2のメンバでないものが呼び出す可能性がある。
汎用的な関数にしたければそうする。
85仕様書無しさん:2007/10/20(土) 02:10:30
ここまで誰も>>11に同調する奴が出てこなくて、>>11涙目
86仕様書無しさん:2007/10/20(土) 02:37:26
>>85
もう触れてやるなw
87仕様書無しさん:2007/10/20(土) 12:08:20
>>11 のように変換できる条件って何?と考えると少し真面目な議論になるかも。

hoge(), getHoge() が副作用を持たない
hoge(), getHoge() が非局所変数を参照しない
count の生存区間が while ループの後ろに続かない

これで十分かな?
88仕様書無しさん:2007/10/20(土) 12:17:47
意味を変えないように書き直すなら、こんなところでしょか。

for ( ; hoge() == 0; count++) {
 if (getHoge() < 0 || count > MAXCOUNT) {
  setmsg();
  return -1;
 }
}

hoge() == 0 と書くか !hoge() と書くかは
hoge() の「意味」が bool なのか int なのか判断できないから保留

i は局所変数だろうと勝手に解釈して省いた。
本来は count と同様に i の生存区間についても前提が必要だね
89仕様書無しさん:2007/10/20(土) 12:19:46
っとケアレスミス。hoge() != 0 か。連投スマソ
90仕様書無しさん:2007/10/20(土) 17:29:57
投稿前に見直しもできないような
91仕様書無しさん:2007/10/20(土) 21:14:21
慣れた俺でもDirectXの名前付けはムカつく
Microsoft系のコードはどうしても好きになれない
92仕様書無しさん:2007/10/21(日) 09:20:06
>>87
十分なわけないじゃん。
つか、つかその議論意味無いと思うぞ。
93仕様書無しさん:2007/10/21(日) 18:24:54
94仕様書無しさん:2007/10/21(日) 19:29:01
if( 判定条件 ){ 
  errorflag = 1;
}
errorflag = 0;  /* エラーチェック削除 */


コメントつけるくらいなら、if文ごと消せよ・・・。
95仕様書無しさん:2007/10/21(日) 19:42:02
副作用のあるgetHoge()なんて書く奴がいるのか?
96仕様書無しさん:2007/10/21(日) 19:47:10
まだやんのかよ
97仕様書無しさん:2007/10/21(日) 19:47:26
人々がよくやるミスは、真のバカのバカさ加減を過小評価することだ。
--D. Adams


98仕様書無しさん:2007/10/21(日) 19:57:07
>>11のどこにこれだけレスが増える要素があるのか、さっぱりわからない。
99仕様書無しさん:2007/10/21(日) 20:06:57
>>94
判定条件の中は通したいとか?
100仕様書無しさん:2007/10/21(日) 20:17:11
errorflag=0の行がそこにあるのがバグかもしれんぞ。
つか「糞コード」示そうぜ
101仕様書無しさん:2007/10/21(日) 20:44:34
そうか、if 文以前のエラーチェックも無効化するんだな
102仕様書無しさん:2007/10/21(日) 23:35:57
>>95
cache
103仕様書無しさん:2007/10/22(月) 18:59:51


(i) 局所変数ハァハァ
104仕様書無しさん:2007/10/23(火) 00:55:03
局部変数と呼びたくなる
105仕様書無しさん:2007/10/23(火) 00:59:42
広辞苑で単語探してどきどきしてたころのようにほろ苦い
106仕様書無しさん:2007/10/24(水) 09:33:01
確かにセンスが一番重要。俺の見てきた限り、PGをやっている奴らのレベルは明らかに三つの山に分布している。
 −85% 糞の山製造装置。センス皆無。つき合うだけ時間の無駄。
 −10% 普通。興味はないが頭の良い奴。センスはないが教育で知識を付ければいくらでも補える。
 −5% 極めて優秀。PGに興味があり、自分で経験を積んでセンスを研いてる。放っておいても成長する金の卵。
優秀な奴が1人いれば普通の奴5人分の仕事をし、糞の山製造装置は捨てるべき糞しか作らない。

糞の山製造装置の平均レベルは「制約が増えるからカプセル化は悪!constを付けた馬鹿は誰だ!」とか、
「関数/変数の名前と中身があっていない?はーそれがどーかしましたかー?」とか
「パラメータで機能が切り替わるマジカル関数、只今参上!コード短くてう・つ・く・し・い!」とか、
「俺仕事したっすよ!コピペだらけ?何言ってんの!コード量多い=仕事したってことでしょ!!」とか、
「今日の仕事は、この関数をコンパイル通るようにしたことです!」とか。

糞の山製造装置の矯正を試みたこともあるが、チンパンジーに微分方程式を教えている気分になったのであきらめた。
107仕様書無しさん:2007/10/24(水) 09:49:44


   (゚Д゚)y一~~ で?
    |\へ
_| ̄|○ ̄l

      
108仕様書無しさん:2007/10/24(水) 10:44:51
レスする奴は明らかに三つの山に分布している
* 一瞥して読まれずにスキップされる奴
* あとはいいよね
109仕様書無しさん:2007/10/24(水) 14:06:41
>>106
>糞の山製造装置の平均レベルは「制約が増えるからカプセル化は悪!constを付けた馬鹿は誰だ!」とか、
>「関数/変数の名前と中身があっていない?はーそれがどーかしましたかー?」とか
>「パラメータで機能が切り替わるマジカル関数、只今参上!コード短くてう・つ・く・し・い!」とか、
>「俺仕事したっすよ!コピペだらけ?何言ってんの!コード量多い=仕事したってことでしょ!!」とか、
>「今日の仕事は、この関数をコンパイル通るようにしたことです!」とか。

12年間SEやってるが、こんなこと言うやつ見たこと無いぞ
1から育ててる人材が多いからかもしれないが、こんなこと言っていい空気がある時点で職場環境が悪いとしか…
110仕様書無しさん:2007/10/24(水) 14:13:28
SEだから知らないんだよ。
PMかプログラマなら知ってるはず。
111仕様書無しさん:2007/10/24(水) 15:16:33
プログラムができるからって、仕事見つかるってわけじゃない。要はアイデアとセンス
http://news23.2ch.net/test/read.cgi/news/1193124121/178-
112仕様書無しさん:2007/10/24(水) 15:19:22
>>110
いやPGもPMもたまにやるけど、こんな奴いたら浮きまくるけどな
113仕様書無しさん:2007/10/24(水) 15:27:50
浮きまくるかどうかは、職場の雰囲気やカラー次第。

いるかいないかとは別問題。
114仕様書無しさん:2007/10/24(水) 15:31:00
先日まで居た田舎の中小はそんなのばっかだったが。
115仕様書無しさん:2007/10/24(水) 16:10:42
言わせない雰囲気は重要だな
116仕様書無しさん:2007/10/24(水) 16:32:47
口に出すかどうかは別にして、心の中で思ってる奴は多そうだな
117仕様書無しさん:2007/10/24(水) 16:49:10
>>116
こんなこと考える奴は無神経だと思うから
すぐ口に出しそうだけどな
118仕様書無しさん:2007/10/25(木) 03:21:16
昔居た会社の社長がプログラマでそういう人だったよ
119仕様書無しさん:2007/10/25(木) 03:42:27
うちだとそうじゃないやつは浮いてる
120仕様書無しさん:2007/10/25(木) 03:52:51
プロとしての能力を殺してバカにあわせるのも協調性というものか
121仕様書無しさん:2007/10/25(木) 08:24:07
一昔前はさ、偉いオサーンはなんも解ってない素人だった
最近は、昔COBOLやBASICやってた技術屋あがりもいるし
そいつらが技術屋として尊敬できるレベルとは限らないよ

古い技術しかしらなくても、話せる人はいるけどね
122仕様書無しさん:2007/10/25(木) 21:22:26
過去のソースがすべて#if 0〜 #endifで残されている。
読みづらいったらありゃしない。
cvs使ってる意味が無いだろ!
せめて/**/にしてくれ!
123仕様書無しさん:2007/10/25(木) 22:15:29
>>122
いらないものは消してほしいな
124仕様書無しさん:2007/10/25(木) 22:40:08
#if 0の意味って何だろう……
最近、考えれば考えるほど分からなくなってきた。
とくに、試行錯誤の過程とかが意味なく#if0されてるとマジ訳わかんねー……
せめて、動作確認した奴だけをコメントアウトしておいてくれよ。お前の書き間違いなんか興味ないんだよ
125仕様書無しさん:2007/10/25(木) 22:58:04
/* */はネストできないけど#ifはネストできるからじゃないの?
それが良いかどうかはともかくとして。
126仕様書無しさん:2007/10/25(木) 23:05:29
>>125
というかな、コメントアウト自体よく分からんのよ。
本当に……明らかなテストコード(それも、書いた本人しか使わんような奴)がコメントアウトで残されてたりさぁ……
何でなのよ本当に……
127仕様書無しさん:2007/10/25(木) 23:12:50
ていうかcvs使ってるなら気付いたお前らがガツガツ消してけばいいとおもうお
まぁそんな奴の書いたコードは全面的に信頼できないが
128仕様書無しさん:2007/10/25(木) 23:38:19
適当に修正してみて、うまくいくかどうか試すといったやり方をする人は、
ソースのコメントアウトを多用する様です。

MISRAルールでは、ソースのコメントアウトは禁止してるけど、#ifは認めて
いたような覚えがある。理解不能。
129仕様書無しさん:2007/10/26(金) 04:08:56
消すことが不安だった連中がそのまま偉くなったから、に10000ガバス
130仕様書無しさん:2007/10/26(金) 09:29:06
改修いれるたびに前のコードコメントでのこさなあかんってひでえよなあ
変数の名前変えなきゃならなくなったときに置換使えず一行一行コメントアウト&名前変更で泣きそうになったさ
今、その名前の変更が正しくできてるか確認中
答えのない間違い探しやってるような気分
131仕様書無しさん:2007/10/26(金) 10:25:00
do{
} while(0)
ってなんだよ・・・。担当者ぬっころしたい。
132仕様書無しさん:2007/10/26(金) 10:28:59
ああ、break使いたかっただけか。マクロは無かった。
嫌なソースだ。
133仕様書無しさん:2007/10/26(金) 11:00:23
だんだん沸点が低くなっていますね
134仕様書無しさん:2007/10/26(金) 11:30:00
標高が上がってるんだろ
135仕様書無しさん:2007/10/26(金) 20:16:50
一瞬
do{
...
}while(1)
なら悪くもないんじゃないかと思ってしまった。
136仕様書無しさん:2007/10/26(金) 20:33:47
goto使用禁止とか短絡的なルールがまかり通ってるなら
breakで抜けるというのは多段ネストを避ける効果的な抜け道だな
参考にさせてもらおう
137仕様書無しさん:2007/10/26(金) 21:18:11
for{
 for{
  for{
   if{
    flg=TRUE;
    break;
   }
  }
  if(flg) break; 
 }
 if(flg) break;
}

こういうの嫌〜い
138仕様書無しさん:2007/10/26(金) 21:34:48
ああ、>>131はgotoの代わりか。納得した。
139仕様書無しさん:2007/10/26(金) 22:26:47
あ、ここはループか。ふむ。こういう処理か・・・

と思ったら最後に、ループじゃないと気付く。

なんかむかっと来る。
素直にgoto使ってくれ!
140仕様書無しさん:2007/10/26(金) 22:49:26
関数に分ければいいのにね
141仕様書無しさん:2007/10/27(土) 00:01:15
マクロでならまぁテクニックとしてアリなんだけどなぁ、一度きりのdo。
142仕様書無しさん:2007/10/27(土) 03:15:18
ソースコードじゃなくて単体試験なんだけど、

hoge = new Hoge();
のラインで hoge に Hoge のインスタンスが生成されていること

みたいなことをやってる人がいて理解に苦しむ。
(プログラム中の独自クラスのインスタンス作成部分全箇所でインスタンスの作成結果を試験として確認している)
デバッガ使ってステップ追ってダンプを見てるみたいだけど、
そもそもインスタンスが作れなきゃすぐエラーで落ちるようなロジックになっている上に、
DBアクセスしたりファイル操作したりするわけでもないから、実行→終了時の標準出力を見るだけでいいはずなんだ。

確実に試験項目を増やす目的のためだけにやってるように思えるんだけど、
ソース流し見しただけでも分かるようなロジック抜けや試験項目の抜けが多いんだよね。
インスタンス生成に限って確認する理由ってあるのかな。
143仕様書無しさん:2007/10/27(土) 04:13:55
>>142
そういうテスト項目を求められるから
新人のときそういうの以外の項目あげたら怒られた
あれから7年たったが体制は変わってない
144仕様書無しさん:2007/10/27(土) 04:40:36
>>142
Hoge の生成で例外が飛ばないことをテストしてるんじゃないの?
145仕様書無しさん:2007/10/27(土) 17:18:00
コンストラクタで例外出すようなコードって嫌だな。
146仕様書無しさん:2007/10/27(土) 18:10:51
爆弾発言
147仕様書無しさん:2007/10/27(土) 18:11:22
コンスラクタでリソースを確保するようなオブジェクトでは、
リソースが確保できなかったら例外をスローするよりほかにあるまい。
148仕様書無しさん:2007/10/27(土) 18:11:27
>>142
そいつ、TDDやってんじゃないの?
149仕様書無しさん:2007/10/27(土) 19:15:28
確かにテストファーストがどうこう言ってたな。
現場でテストケース最初に書いてる人なんていないのに。
150仕様書無しさん:2007/10/27(土) 19:29:22
アチャー
151仕様書無しさん:2007/10/27(土) 20:00:00
俺はmakefileを最初に書く
152仕様書無しさん:2007/10/27(土) 20:59:48
makefile/automake/cppunit/cvsなんかの環境設定が一番面倒だな
書き始めると気が楽になる
153仕様書無しさん:2007/10/28(日) 03:48:33
>>147
C++でそれやったらぶん殴るけどな。本気で。
154仕様書無しさん:2007/10/28(日) 06:02:47
>>153
リソースって色々意味があるからピンとこないが、固定配列とかも含む?

それならC++でも使うよな?
特にネットワーク系でヘッダやら固定byte長のデータ部なんかの構造体の属性なんかそうだし
155仕様書無しさん:2007/10/28(日) 07:25:34
>>153
std::ifstream や std::ifstream を否定する立場だね。
Exceptional C++ は読んだ?
156仕様書無しさん:2007/10/28(日) 11:20:46
>>153
なぁ、newって例外投げるって知ってる?
char* p = new char[1024];
これが例外投げるなら、
Foo* p = new Foo();
これが例外投げても、普通でしょ?
157仕様書無しさん:2007/10/28(日) 11:35:58

       例外
     彡
(,,ノ゚д゚)ノ
158仕様書無しさん:2007/10/28(日) 11:51:03
>>153はコーディング規約で例外を使用制限か全面禁止
にしてそうだな。
理由は自分が理解できないから。コボラ上がりの
エロい人が多いってほんと?
159仕様書無しさん:2007/10/28(日) 12:01:00
話わりこん悪いけどDelphiで数千行にわたってコメントなし、
関数・変数意味不明(おまけにスペル間違いだらけ)を渡されて、あとよろしくって…

UML書いて、C#で書き直す。        気力がなくなってきた。
160仕様書無しさん:2007/10/28(日) 14:47:16
>>159
そのコードがどこまで動くものなのかは知らんが、
長い間アップデートを重ねていくうちにぐちゃぐちゃになったんなら
 ソフトの挙動を見ながら仕様書を書き起こして新たに作り直す

新規プロジェクトだけどクソコードの嵐なら
 仕様書見ながら新たに作り直し

これで決まりじゃない?
言語は客指定のものか、何でもいいなら一番得意なやつでやればいいと思う
161仕様書無しさん:2007/10/28(日) 16:02:49
>>160
3社共同でやってて言語はばらばら、俺の得意はC++なんだけど…
一社はDelphi、もう一社(ドイツの会社)はC++2003+アセンブラ、うちの会社はC#で書けと。
ちと困った。ちなみに顧客はうちの会社だったりする。

>長い間アップデートを重ねていくうちにぐちゃぐちゃになったんなら
そのなかに俺のCコードがコメント消して取り込まれててワロタ。
まあ、来週なんとかするさ。
162仕様書無しさん:2007/10/28(日) 16:03:18
例外は投げていいけど例外処理入れてなかったら意味ないな
163仕様書無しさん:2007/10/28(日) 16:19:33
>>155
標準ストリームはメンバ関数 exception() でマスク指定しない限り例外投げないでしょ。
164仕様書無しさん:2007/10/28(日) 20:37:50
int hogeFlg = 3;
165仕様書無しさん:2007/10/28(日) 20:40:57
>>161
いまいち分かんないんだけど
共同でやってるうちの1社(Delphi担当)がクソコード置き逃げしたって事?
それとも自分の会社の前任者がルール無視してDelphiで書いたクソコード置き逃げしたって事?
166仕様書無しさん:2007/10/28(日) 21:39:01
>>165
半分当たり。
 ・前任者(7年以上前)が委託してそのプロジェクトはDelphiがスタンダードに。
 ・ちょこちょこ、前任者が改良という名のカオスをつくる。
 ・ドイツの会社と共同開発でVCに半分移植。しかもとスピードが必要なところをアセンブラに(x86)…
 ・前任者異動…
俺のところにツケが。

あれっ、カオスを作ったんだから、半分はうち会社の責任か…俺は関係ないけど。
まあ、そういうののおかげで、たくさん言語は覚えたから、まぁ良しとするか。
167166:2007/10/28(日) 21:43:16
>>166
あぁ、忘れてた。機密保持の関係で他社のソースのすべては見せてもらえないのですよ。
一部の開示みたい。
なんだよ、それ。
168仕様書無しさん:2007/10/28(日) 21:48:19
>>9
コーディング規約で「+=」禁止だった・・・
169仕様書無しさん:2007/10/28(日) 22:07:49
バイナリだけの提供なら、それが何言語で書かれてるかなんて関係ないのでは?
170166:2007/10/28(日) 22:32:05
>>169
たしかにそのとおり。でもちゃんとした仕様書がアレなので。(俺のせいじゃないぞ)
引数とかいまいち規則性が無いうえに、あんまり書けないけど、データフォーマット
も機密に引っかかってちゃんと教えてもらえない。
だから、推測でプログラムしてる!

まあ、元のヘッダ(ヘッダファイルは公開OK)でもこんな感じだ。
 DCT1_1024 (aa,bb,cc,dd)
 DCT2 (aa,bb,cc,dd,ee)
 DCTa1 (dd,ee,ff,time)
 DCT2a (a,b,time,freq,aa)
 ReadData512 (block,i,g,r)
 color_iro (r,g,b,n)
一見わかるようでソースみるまでわからない。でも辞めずにがんばってみる。
ドイツのは10倍まし。てか、せめてDLL版の中身くらい教えて欲しかった。
171仕様書無しさん:2007/10/29(月) 00:54:12
俺なんかデバッガで使用不可にされたDLLしか渡されなかったんだぜ・・・
172仕様書無しさん:2007/10/29(月) 01:26:26
解析の技術ばっかりあがりそうな環境だな
173仕様書無しさん:2007/10/29(月) 21:56:40
DCTって離散コサイン変換なのか。
いや、だとしてもワケワカランが。
174仕様書無しさん:2007/10/30(火) 11:28:36
高速フーリエ変換とか高速DCTのコードがそんな感じなのは
世界中どこへ行っても大差ないと思う。

というか数値計算のコードは教科書読むなどソース読む以外の
学習法をとらないと完全なる時間の無駄。
175仕様書無しさん:2007/10/30(火) 11:31:09
>というか数値計算のコードは教科書読むなどソース読む以外の
>学習法をとらないと完全なる時間の無駄。

日本語でおk、だなこれじゃ。↓のようなことを書きたかった。

数値計算のコードを解析するなら、教科書読むなどソース読む以外の
学習法をとらないとダメ。いきなりソース読んでも時間の無駄になると思う。
176仕様書無しさん:2007/10/30(火) 12:12:20
そりゃそーだ
177仕様書無しさん:2007/10/30(火) 18:10:20
状態をチェックするのに、すべて定数との比較。
if(mode==2)とか。
2がなんだか知らねえっつの。いちいち設計書見なけりゃならん。
static constや#define知らんのか。
178仕様書無しさん:2007/10/30(火) 18:12:48
すまん、即値のことか。
179仕様書無しさん:2007/10/30(火) 18:17:43
設計書に書いてあるだけまだマシ
180仕様書無しさん:2007/10/30(火) 19:17:22
ビットマスクが10進法で書いてあった。
1ヶ所だけ立ってるならまだ読めなくもないが、
複数箇所チェックのマスクを10進で書くとか狂気の沙汰としか。

何でそんな書き方したんだか。
暗算自慢か?
181仕様書無しさん:2007/10/30(火) 19:32:58
読む気が起こらなくなるようなひどいコードには、知識のない奴が下手に触って悪化させるのを防ぐ効果がある
182170:2007/10/30(火) 19:50:59
>>175
いや、FFTとかは自分でもやってたから分かるんだけど
その先の処理が魔界になってるんだよ。
if(mode==2)なんて当たり前。しかも設計書もコメントも無いんだぜ。

>>181
前にわざと分かりにくいコード書いてみたら、数ヵ月後に手を加える
事になって後悔した…
183仕様書無しさん:2007/10/30(火) 20:23:00
>if(mode==2)とか。
今まさに同じようなコードを見てるんだけど、
試験項目を見ると mode=2 のとき、なんて書き方をしてるんだよね。
ステップ実行できる言語ではあるけど、そんな試験方法普通するか?って感じだよ
184仕様書無しさん:2007/10/30(火) 20:38:31
>>183
なんかゴメン。
先月すげー忙しくって、まさに if(mode==2) まんま使ったわww
同僚におんなじ様なこと言われた。 さすがにコメントは書いといたけど。
185仕様書無しさん:2007/10/30(火) 20:47:23
GlobalAllocを使いまくってるソースコードを見た。
普通にメモリ確保するだけのときに、GlobalAlloc。
何のおまじないだろう……

GlobalAllocの利点って何かな?
186仕様書無しさん:2007/10/30(火) 21:57:48
8バイトアラインとかヒープの移動とか、古いDDEとか互換性とか考えたけど他で代用できるよな。
最近のソースなの?じゃなきゃ、その人の癖なんじゃ。
VC++4時代に他のやり方をよく知らなくて、使ってたレベルの俺だけど。
187仕様書無しさん:2007/10/31(水) 11:13:15
if (i == 0) sprintf(c_number,"0000");
if (i < 10) sprintf(c_number,"000%d",i);
if (i < 100) sprintf(c_number,"00%d",i);
if (i < 1000) sprintf(c_number,"0%d",i);
else sprintf(c_number,"%d",i);

……氏んでください。
氏にたくなければ、%04dを覚えてください。
188仕様書無しさん:2007/10/31(水) 11:22:00
ひでぇw
189仕様書無しさん:2007/10/31(水) 11:55:34
これは凄いw
190仕様書無しさん:2007/10/31(水) 11:59:07
ん?
if(i==0)の行が不要なだけだろ?
191仕様書無しさん:2007/10/31(水) 12:29:16
if( Data == 1 ) {
 Ret = DataCalc( Data );
} else if( Data == 2 ) {
 Ret = DataCalc( Data );
} else if( Data == 3 ) {
 Ret = DataCalc( Data );
     ・
     ・
     ・

} else {
 Ret = DataCalc( Data );
}


なんだろう、このわき上がる激情はw
192仕様書無しさん:2007/10/31(水) 12:32:56
ステップ数稼ぎ?
193仕様書無しさん:2007/10/31(水) 12:39:18
>>191
きっと後で個別の処理を追加するつもりだったんだよ、そうに違いない
194仕様書無しさん:2007/10/31(水) 12:55:25
ifの中に処理があるだけマシかな
と空のif文見ながら思う


わざわざand条件5つも並べて何がしたかったのだろう……
195仕様書無しさん:2007/10/31(水) 13:02:41
for(int i=0; i < reccordCount; i++){
 rec = getRecord(i);
 switch(i){
  case 0:
   var_0 = rec.hoge;
   foo_0 = rec.fuga;
   break;
  case 1:
   var_1 = rec.hoge;
   foo_1 = rec.fuga;
  case 2:
   var_2 = rec.hoge;
   foo_2 = rec.fuga;
   break;
  case 3:
   var_3 = rec.hoge;
   foo_3 = rec.fuga;
   break;
   (以下最大レコード数までつづく、20くらい)
 }
}

本当はDelphiなんだけど、Panelをグリッド上に並べて
検索結果を表示する処理。

メンテで死んだ。特に表示項目追加で。
IDE上でコンポーネント名付ける所から死んだ。
196仕様書無しさん:2007/10/31(水) 13:08:53
>>195はなぜ配列使わんのかパターンだけど
最近みたのは逆になんで配列使うのかパターン。

Hoge[] value = new Hoge[3];

if(hogeFlag){
 value[0] = foo;
}

if(fugaFlag){
 value[1] = foo;
}

if(barFlag){
 value[2] = foo;
}

その後ループでまわしたりといった処理は全くなし。

それぞれがどういう意味のvalueだかわかんねー。
意味が判りやすい名前つけて別に宣言すれ。

因みにこの人、後輩に「ソースはもっと綺麗にかけ!」とか
説教していたのを俺はしっている。
197仕様書無しさん:2007/10/31(水) 16:49:30
5つの機能が1つの関数に纏まってて、沢山のフラグで複雑にいくつも分岐してた。
非常に読みづらい。
ここまで複雑するくらいなら素直に5つ関数作れよ、と思った。
198仕様書無しさん:2007/10/31(水) 20:13:05
関数を増やしてはいけない特殊な事情があったんだよ!

タブン
199仕様書無しさん:2007/10/31(水) 20:26:40
ソースきれいに書け!って常々言いまわってる奴こそ汚いコードを書く
ifを書いたら必ずelseも書けとかワケワカランとですよ
200仕様書無しさん:2007/10/31(水) 20:28:31
きれいにかけ=おれるーるでかけ

だからな
201仕様書無しさん:2007/10/31(水) 20:32:50
変数名とかが長たらしいとウザイ
202仕様書無しさん:2007/10/31(水) 20:50:01
しかも変なローマ字な上、中途半端なハンガリアン記法だと
203仕様書無しさん:2007/10/31(水) 21:54:58
適当な空行や空コメント行を入れずに
ぎっちぎちに書く男
204仕様書無しさん:2007/10/31(水) 21:58:36
>>203
男限定www
205仕様書無しさん:2007/10/31(水) 22:08:36
100%男だから
自分は勉強してると思い込んでる
206仕様書無しさん:2007/10/31(水) 22:24:13
この業界の男女率考えたらそりゃまぁそうなるだろ
207仕様書無しさん:2007/11/01(木) 01:20:41
>>185
うちはVirtualAlloc
malloc使うと怪訝な顔される
208仕様書無しさん:2007/11/01(木) 21:45:02
詰まってる方が読みやすいんだけどなぁ
209仕様書無しさん:2007/11/01(木) 21:59:20
適度な行間は必要だけど1画面ごとに機能がまとまってると有難いね
210仕様書無しさん:2007/11/02(金) 00:04:32
for (i = 0; i < 10; i++) {
  for (j = 0; j < 10; j++) {
    for (k = 0; k < 10; k++) {
      if (x[i][j][k] != -1) {
        ……
      } if (x[i][j][k] != -1);
    } for (k = 0; k < 10; k++);
  } for (j = 0; j < 10; j++);
} for (i = 0; i < 10; i++);

これが噂に聞く、中括弧の対応をわかりやすくする
テクニックとかいうやつか……ってアレ? //はドコー?
211仕様書無しさん:2007/11/02(金) 00:05:30
こいつはすげえ
212仕様書無しさん:2007/11/02(金) 00:06:54
forはまだいいとしてもifはこえぇなw
213仕様書無しさん:2007/11/02(金) 00:08:41
つーかなんでわざわざセミコロンまで付けてんのw
214仕様書無しさん:2007/11/02(金) 00:09:16
これは酷い
215仕様書無しさん:2007/11/02(金) 00:09:46
後半すげー。まあ動くからいいけど。
まだ、辞めるほどではないな。
216仕様書無しさん:2007/11/02(金) 00:10:01
「//」の2文字よりも「;」の1文字のほうがタイプが少ないからとかいう理由だったら笑う
217仕様書無しさん:2007/11/02(金) 00:22:31
何でこれで動くんだ?って思っちゃうコードだな
まぁ動くけど
218仕様書無しさん:2007/11/02(金) 00:40:31
昔の、forループでウェイトをかける時代を思い出した
219仕様書無しさん:2007/11/02(金) 00:57:42
>>218
新参の俺に詳しく
220仕様書無しさん:2007/11/02(金) 01:01:09
>>219
単純に無駄処理をforでたくさんやってsleepみたいなことをしたってだけだ。
221仕様書無しさん:2007/11/02(金) 01:39:11
まあコンパイルすれば最適化して消えるだろうけど・・・


>>213
よく読め。このコードにセミコロンは必須だぞ。
コメントにしてくれとは思うけどな。
222仕様書無しさん:2007/11/02(金) 01:46:54
いや普通に考えると // の付け忘れだからエラーが出て気付くはずなんだけど
そこでなぜわざわざ ; を付けてエラーを回避してまでコメントでないforを入れたのかと
223仕様書無しさん:2007/11/02(金) 01:58:39
//の付け忘れ、ではないと思うなぁ。
たぶん何か根本的に勘違いしているか、妙な教育を受けてきたかのどっちかじゃないか。

224仕様書無しさん:2007/11/02(金) 02:04:52
do〜whileと混じってるんじゃね?
225仕様書無しさん:2007/11/02(金) 03:48:51
perl 使いかも…。
226仕様書無しさん:2007/11/02(金) 09:19:28
こんな変な書き方する奴を「〜使い」とは呼びたくないな。
227仕様書無しさん:2007/11/02(金) 10:18:36
void swap(int a, int b)
{
int tmp;

tmp = sort[a];
sort[a] = sort[b];
sort[b] = tmp;
}

最初見たとき、こいつは値渡しを理解してないのかと思ったが
ある意味もっとひどいかもしれんorz
228仕様書無しさん:2007/11/02(金) 11:02:22
いい加減、コンパイルすら通らないようなコードさらすのやめようぜ
229仕様書無しさん:2007/11/02(金) 21:54:20
int sort[]
はグローバル変数なんじゃない。だから一応はコンパイルできるんじゃね。
多分ひどいのはそれと、配列のためだけにスワップつくってることかなぁ。
関数名もアレだが。
230仕様書無しさん:2007/11/03(土) 06:00:08
int sort[] を sort する時に使用する swap() なんじゃね

231仕様書無しさん:2007/11/03(土) 06:37:25
せめて static
232仕様書無しさん:2007/11/03(土) 06:46:37
で、バブルソートしていそうなsortの要素数は?
233仕様書無しさん:2007/11/03(土) 08:23:13
10
234仕様書無しさん:2007/11/03(土) 12:31:27
最近、周りが変なコード多くて、もういいや的にテキトーに糞コード書いてる。デフレスパイラル。
自分一人でやるのだけは、ちゃんとやるようにした。
235仕様書無しさん:2007/11/03(土) 16:26:09
それ、自縄自縛じゃないか?
チーム内でコードを樹海みたいにしてどうする。w
236仕様書無しさん:2007/11/03(土) 17:21:18
自分だけがまとも(本人が思ってるだけかしれないが)で他の人がダメなので腐ってた。
来週からはみんなに声かけて、がんばって見るよ。

話は変わるが、リアル樹海行ってきた。服・靴とか抗鬱剤落ちてるし、深いとこ行くと
薮と木が多くて進めない。なるほど自殺の名所になるわけだ。
237仕様書無しさん:2007/11/03(土) 17:50:30
影はあるかい?
238仕様書無しさん:2007/11/03(土) 18:40:43
えっと、どの影?
239仕様書無しさん:2007/11/03(土) 18:46:15
自分の影さw
あるいは鏡に映るかい?
240仕様書無しさん:2007/11/03(土) 19:54:54
あれっ、なんか2つある。でも鏡はらき☆すたの練習したからダイジョブだった。
さあ、話をソースに戻そう。
241仕様書無しさん:2007/11/03(土) 20:11:49
そんなに思う通りに行かないのが世の中。
242仕様書無しさん:2007/11/03(土) 21:48:08
>240
「かがみ」だけにらき☆すたってか
……失礼。

自殺の名所かー。東尋坊の遊歩道で3時間ぐらい眼下の岩を見てたことがあるな……
243仕様書無しさん:2007/11/03(土) 22:44:41
東尋坊の遊歩道は静かでいいよね
でも死ぬのにはいまいち高さに不安があったからジャンプするのはやめといた

後で知った話だけど、あそこで何度も死なずに(つか自殺目的じゃないんだけど)ジャンプしている人がいるらしいね
244仕様書無しさん:2007/11/03(土) 22:55:54
ちょっとまて。>>242-243は死ぬ気だったのか?
245242:2007/11/04(日) 00:17:16
俺は一応。
まぁ死にぞこなったどころか、飛べもしなかったんで今こうやってカキコしてるわけだがorz

無理矢理スカタンなソースに話を戻すと

履歴コメントの方が実効コードの5割り増しの行数ってソース渡されたので
とりあえずSubverionに全部突っ込んでから履歴コメントごっそり消した(´・ω・`)
いやー、ロジック追うのが楽になった、つかあのままじゃ追えん。
「履歴コメントは入れ子の入れ子になったらまず復元できない」って何故分からんかな。
246仕様書無しさん:2007/11/04(日) 10:07:38
Javaで意外によく見る、こんなコード

XxxBean xxxBean = (XxxBean)xxxList.get(i);
xxxBean.setXxx(a);
xxxList.set(i,xxxBean);
247仕様書無しさん:2007/11/04(日) 16:53:29
>>246
まあそれ自体は害はなさそうだけど
参照の事わかってなくて
他の場所でやらかしてそうだなあ。
248仕様書無しさん:2007/11/04(日) 18:08:40
setXxx(a) が set)(xx(a) に見えて
Javaは奥が深いなーと2時間ぐらい思ってたww
249仕様書無しさん:2007/11/04(日) 18:27:44
>>246
JAVAよく分からんのだが、3行目がイラネってこと?
それとも、

( (XxxBean)xxxList.get(i) ).setXxx(a);

の1行でいいってこと?
250仕様書無しさん:2007/11/04(日) 18:50:49
やっぱりCは必須なのか、
参照とオブジェクトの違いを教える人間がいないのか・・・
251仕様書無しさん:2007/11/04(日) 18:51:49
>>249

3行目が、いらないってこと。
まぁ会社やめるっていうのは、大げさだけど、
こんなコードを書く奴が2,3人まじってると、
プロジェクトの前途に暗い物を感じるね。
252仕様書無しさん:2007/11/04(日) 21:36:58
>>251
つーか、Listを使い回すというのがキモイ。

3行目は、新しいListのインスタンスにBeanをセットするべき。
253仕様書無しさん:2007/11/04(日) 21:43:27
そんな釣りd
254仕様書無しさん:2007/11/04(日) 22:33:18
>252
ぷぎゃー
255仕様書無しさん:2007/11/06(火) 21:44:00
Javaのプロジェクトの終盤で、ListやMapからgetするときは必ずclone()せよという、
偉い人からのお達しが突然出たことがある。
256仕様書無しさん:2007/11/06(火) 23:09:50
>>255
多分一部のバカのミスのせいで
そうなったんだと思うけど
バカに言って聞かせるより、
バカ規約を作った方がいいって
発想が偉い人の絶望し切った心が
伺えて宜しい。
257仕様書無しさん:2007/11/06(火) 23:15:38
SWING+EJBでアプリを作っているんだけど、イベントトレース図はおろかクラス図すら作ってないんだけど。
ソースを作る前に辞めた方がいいかなw

258仕様書無しさん:2007/11/06(火) 23:41:34
一人を改善させるよりも全員のための規約を作るほうが仕事をした気分になれるから
259仕様書無しさん:2007/11/07(水) 00:20:59
>>257
本当に、その図が必要なの?
260仕様書無しさん:2007/11/07(水) 01:04:55
自分で作ればいいじゃん
261仕様書無しさん:2007/11/07(水) 01:58:09
javaの開発でクラス図が無いって信じられないんだけど。
実はそういう開発って結構あったりするのかね。
262仕様書無しさん:2007/11/07(水) 02:02:23
>>261
クラス図なんか描かないなあ。
つかUML使わない。
263仕様書無しさん:2007/11/07(水) 12:50:27
java は業務系で昔ながらのウォーターフォール開発、
ドキュメントは一通り作る、っていうイメージがあるなぁ。
何か変えるには変更管理票出してレビュー受けて、と。

リファクタリング?それ食べられますか?
って感じ。
264仕様書無しさん:2007/11/07(水) 13:55:18
>>263
そういうところに出向したことあるけど
UML使わなかったですねぇ。
全般にわたってあまりナウいこと
やりたがらない。

昔ながらの仕様書でしたよ。
265仕様書無しさん:2007/11/07(水) 14:46:28
古い皮袋に新しい酒を入れる愚行
266仕様書無しさん:2007/11/07(水) 15:57:40
ウチはウォータフォールのつもりで結果スパイラルモデルになってる。悪く言えばデスマ。
267仕様書無しさん:2007/11/07(水) 17:05:20
OOP開発なのに、関数仕様書書かされたことある。書けねえw
268仕様書無しさん:2007/11/07(水) 17:14:07
コード読めない素人は資料って言って、うるさいんだよね。
269仕様書無しさん:2007/11/07(水) 17:18:17
資料があれば素人の自分もコードを理解できると期待してるんだろうが、ねぇ。
270仕様書無しさん:2007/11/07(水) 18:03:26
バグバグでそのうち、資料と実装が合わなくなるだけなのに
271仕様書無しさん:2007/11/07(水) 18:17:19
誰も資料なんか読まないから大丈夫。
あれはただの納品物だから。
272仕様書無しさん:2007/11/07(水) 18:31:05
で、仕込まれてるのも見破れないとか?
273仕様書無しさん:2007/11/07(水) 19:03:44
詳細設計書画、全然詳細設計所になってないことが良くある。
やりたいことをどう実装するかは、結局プログラマー任せ。

設計書レビューなんてしても、指摘されるのは形式とか言葉遣いくらいだもんな。
それも人によって言うことが違ってくるし。
274仕様書無しさん:2007/11/07(水) 19:44:24
以前、詳細設計書見てて激しく萎えた。
こんなのソースにちゃんとコメント振ってたら必要なくね?って思た。

そんなボクは3流ですか?
275仕様書無しさん:2007/11/07(水) 20:20:28
そんな仕様書を書く組織で、きちんとしたコメントを付けられると思いますか?
276仕様書無しさん:2007/11/07(水) 20:21:54
結局、レビューとかもやってないのと一緒なの?
277仕様書無しさん:2007/11/07(水) 20:23:12
レビューなんてやったことねーな……マジ不安になるよ。
278仕様書無しさん:2007/11/07(水) 20:32:52
進捗管理してる人はコード見てるんだよね?
279仕様書無しさん:2007/11/07(水) 20:40:19
進捗管理している人がコードを見たとして、何が書いてあるか理解できるわけ無いだろうw
280仕様書無しさん:2007/11/07(水) 21:04:25
え、それが現実なの?
281仕様書無しさん:2007/11/07(水) 21:06:04
保証部は詳細設計までは見ないんで油断してたら、
トラブったときに他の技術部とコードレビューやって
実装と違うとエライ怒られた事は有るなぁ。
282仕様書無しさん:2007/11/08(木) 21:56:58
進捗管理している人はステップ数だけみてるから、どんな言語で書いてあろうが大丈夫。
283仕様書無しさん:2007/11/08(木) 23:51:06
進捗管理って、人を監視してさぼってるか忙しそうか見るのが仕事でしょ?
キーボードを一生懸命叩いているように見えればそれでOK。
284仕様書無しさん:2007/11/09(金) 09:06:41
そんなの見てないだろw


報告書の数字だけだよ
285仕様書無しさん:2007/11/15(木) 01:19:34
上司に言いたかった事

* どうしてそんなにソース管理ソフトを敵視するのですか?
* 進捗会議は1ヶ月に1回でなく、せめて1週間に1回にしませんか?
* int date1, date2, date3, date4, date5, date6, date7;
これを配列変数に直してはならない理由を教えてください。
* 共通関数などプログラムの土台部分に関する作業は評価ゼロですか。そうですか。
* コードレビューやテスト自動化の有効性について、何回説明したら理解してくれるのですか?
* 仕様書、作りませんか?
* 上司のとるべき行動っていうのを研修で教わったはずなのに、それと真逆の行動を
  取るのはわざとですか?
* イヤホンの音漏れが酷いので、仕事中に音楽を聴くのはやめてもらえませんか?
* 香水がきつすぎて気分が悪くなるのですが。
* エアコンの温度設定は女子限定なんですか?
* エコヒイキやめません?
286仕様書無しさん:2007/11/15(木) 01:33:32
285に言いたいこと

* スレタイをよく読んでください
287仕様書無しさん:2007/11/15(木) 01:38:01
ごめんよ
288仕様書無しさん:2007/11/15(木) 03:38:47
>>285をソースコードに書いておけば、後任の人が会社を辞めたくなるYo!
289仕様書無しさん:2007/11/15(木) 20:13:25
OracleDBでバッチ処理書くのにPro*C を使っている。
理由は速いからだそうだ。

でも、折角のインデックスに無駄な演算して効かなくしちゃったり、無駄な関数呼び出ししまくったり、速度求めてるとは到底思えない。
しかもソースはキタネエし、バグがあって数年分、誤データ蓄積しちゃってる。
たまたま使ってないカラムらしく誰も気付かなかったらしいが、来たばっかりの俺が見付けちったゃ。

察するにCとかOracle以前にプログラミング自体初めてじゃないかってレベルだった。
290仕様書無しさん:2007/11/15(木) 20:20:08
でも運用に入って何年も経ってるから修正は難しいとか言われちゃうんだよね。
公式仕様書嫁とかRFCは見たかとか言う割にそっち方面の抜けが多いとかやる気なくすよ。
291仕様書無しさん:2007/11/15(木) 20:23:04
会社だからね
292仕様書無しさん:2007/11/15(木) 20:48:54
修正で儲かるとか具体的なメリットないとね。
293仕様書無しさん:2007/11/15(木) 21:52:20
char fileName[260];

みたいな文字列をVC,WinXPの環境で見たことがある……
さて、文字列サイズはこれで足りているのだろうか?
294仕様書無しさん:2007/11/15(木) 21:55:15
そんな長い名前付けんな禿

はい、次。
295仕様書無しさん:2007/11/15(木) 22:05:24
crt/limits.h
#define PATH_MAX       512
296仕様書無しさん:2007/11/16(金) 03:09:33
windef.h @VC8
#define MAX_PATH 260
260なんて書いちゃってる時点でダメだけど

>そんな長い名前付けんな
長い名前…??
297仕様書無しさん:2007/11/16(金) 10:47:01
長いファイル名
298仕様書無しさん:2007/11/16(金) 12:37:14
平成十三年九月十一日のアメリカ合衆国において発生したテロリストによる攻撃等に対応して行われる国際連合憲章の目的達成のための諸外国の活動に対して我が国が実施する措置及び関連する国際連合決議等に基づく人道的措置に関する特別措置法の一部を改正する法律.txt
299仕様書無しさん:2007/11/16(金) 16:30:06
C言語辞典が

char filename[256];

とよく書いてるね つか256が基本だろ
300仕様書無しさん:2007/11/16(金) 16:33:32
なわけない
301仕様書無しさん:2007/11/16(金) 16:40:09
前にも書いたことがあるが

char filename[40];

とか言う半端な数字使ってるソース
MS-DOS時代ならそれでもよかったんだろうけどさあ('A`)
Windows版なんだからMAX_PATH使おうよぅ('A`)
302仕様書無しさん:2007/11/16(金) 20:26:58
MAX_PATHでもUNCパス使い出すと足りないんだよな……
303仕様書無しさん:2007/11/16(金) 20:45:14
1クラス20000ステップ越え(T△T)
304仕様書無しさん:2007/11/16(金) 22:05:36
どのくらいのコード量のことを1ステップというのかいまだに知らない俺様
305仕様書無しさん:2007/11/16(金) 22:11:09
スタートレックのクワッドと同じで常に現在の常識より大きい量のこと
306仕様書無しさん:2007/11/16(金) 22:19:18
>>304

コメントを除いたプログラムの行数という意味で書いた。
ステップの正確の意味は違うのかも知れん。
307仕様書無しさん:2007/11/16(金) 22:30:13
デバッグとかで一行進むのに「次のステップ」とか言うのが元になってるんじゃないの?
知らないけど
308仕様書無しさん:2007/11/16(金) 22:44:13
例としてよいか分からんが、
while ((c = getchar()) != EOF) { }
は1ステップ?
309仕様書無しさん:2007/11/16(金) 22:45:10
javaなら概ねセミコロンの数でいいんじゃね?
310仕様書無しさん:2007/11/16(金) 22:47:37
行数−空行−コメント行 でOK
311仕様書無しさん:2007/11/16(金) 22:50:47
main(){int i=0;for(;++i<101;){if(i%3&&i%5)printf("%d",i);printf(i%3?"":"Fizz");printf(i%5?"":"Buzz");puts("");}}

これで1ステップか。
312仕様書無しさん:2007/11/16(金) 22:52:17
>>311
それν速のだろw
313仕様書無しさん:2007/11/16(金) 22:54:42
オレいっぱい書いたよ、すげぇだろ!的な指数になってて
アホな職場では評価に影響するが当然厳密には数えないので
本来の意味よりは行数重視になってる
314仕様書無しさん:2007/11/16(金) 22:57:36
>>312
残念ながら俺が書いた。
適当に縮めただけだからもっと短くなるだろうな。
315仕様書無しさん:2007/11/17(土) 21:00:10
ステップという言葉はアセンブラ時代の名残りなのだよ。
行主体の言語を経て、文主体の言語が主流になった現在においても、
この言葉が残っていること自体が驚きだ。
316仕様書無しさん:2007/11/17(土) 21:01:57
【意味】ステップ数w【あるの?】
ttp://pc11.2ch.net/test/read.cgi/prog/1173248727/
317仕様書無しさん:2007/11/17(土) 23:07:52
「考える時間」は余りに流動的だから敢えて切り捨てるとすると
PGの「生産」とは畢竟、打鍵なわけで
その観点では生産性をステップ数、ないしlocで計ることは間違っていない

あ、そもそも「その観点」が間違ってるってのは承知で書いてるんで突っ込みカンベソw
318仕様書無しさん:2007/11/18(日) 00:10:05
>>311
main(){int i=0;for(;++i<101;){if(i%3&&i%5)printf("%d%s%s\n",i,i%3?"":"Fizz",i%5?"":"Buzz");}}
ちょっと短くしてみた。
319仕様書無しさん:2007/11/18(日) 00:19:14
>>318
動きが変わってるぞ馬鹿野郎
320仕様書無しさん:2007/11/18(日) 00:48:01
てゆーかFizzBuzzは専用スレあんだからそっちで
Fizz-Buzz問題
http://pc11.2ch.net/test/read.cgi/prog/1178626960/
321仕様書無しさん:2007/11/18(日) 07:41:12
どれだけ関数呼び出したかで考えればいいよ
(+ 3 (* 4 3))
これで2ステップ
322仕様書無しさん:2007/11/18(日) 10:58:46
>>317
観点も糞も、正しいところが一つもない
323仕様書無しさん:2007/11/18(日) 11:17:22
>>321
BASICで書いたら(ry
324仕様書無しさん:2007/11/18(日) 14:48:41
ラムダ式で書けばどんな処理も1ステップとしてカウントされるんだな
ブロックの階層も浅くなっていいことづくめだね☆
325仕様書無しさん:2007/11/20(火) 12:56:53
public String complementDate(String mmdd) {
// return "2005" + mmdd;
// return "2006" + mmdd;
return "2007" + mmdd;
}
326仕様書無しさん:2007/11/20(火) 13:26:02
ま、まあ、シンプルでいいんじゃない?
327仕様書無しさん:2007/11/20(火) 15:39:04
毎年改造が発生するのか・・・・
328仕様書無しさん:2007/11/20(火) 15:41:39
( ;´A`)
329仕様書無しさん:2007/11/20(火) 16:26:16
除夜の鐘を聞きながら改造しないとな。
330仕様書無しさん:2007/11/20(火) 17:08:14
この変更作業でちゃんと毎年お金貰えてるなら
素晴らしいコードだ。
331仕様書無しさん:2007/11/20(火) 17:58:37
いいなー
332仕様書無しさん:2007/11/20(火) 18:13:00
で、今年の大晦日に
return "20008" + mmdd;
とかやらかすわけだ。w
333仕様書無しさん:2007/11/20(火) 18:36:03
>>325
これは激速!
こんな方法があったとは気づかなかった!
思わずもっと速くしてみたくなる。

public String complementDate(String dd) {
// ・・・・・
// ・・・・・
// return "200709" + dd;
// return "200710" + dd;
return "200711" + dd;
}

う〜ん。
まだ速くできる余地が残っていそうだな・・・
334仕様書無しさん:2007/11/20(火) 19:00:49
>>333
ほれ

public String complementDate() {
// ・・・・・
// ・・・・・
// return "20071119";
// return "20071120";
return "20071121";
}
335仕様書無しさん:2007/11/20(火) 19:07:00
もう飽きた
336仕様書無しさん:2007/11/20(火) 19:19:58
アホコードが実際にあるわけないと思いつつ
ろくでもない仕様書をもとに苦労しても
どうせ他人のものになるのなら
という感情が理解できないわけでもない
337仕様書無しさん:2007/11/20(火) 19:35:53
ちゃんと動くならいいじゃない
338仕様書無しさん:2007/11/20(火) 19:38:21
アホな客がこれの更新で金出してるならいい儲けだな
339仕様書無しさん:2007/11/20(火) 20:40:21
毎年仕様書も更新してたりとか
340仕様書無しさん:2007/11/20(火) 20:42:36
予算消化的な意味でなら有り得なくはない…
341仕様書無しさん:2007/11/20(火) 20:42:49
変更履歴
05.12.31 complementDate()の返却値を2006年に変更
06.12.31 complementDate()の返却値を2007年に変更
07.12.31 complementDate()の返却値を2008年に変更

342仕様書無しさん:2007/11/20(火) 21:51:39
>>341
これはひでえwww
343仕様書無しさん:2007/11/20(火) 21:55:12
メンテナンスが楽でいいねw
344仕様書無しさん:2007/11/20(火) 21:56:58
大晦日に必ず変更かけるとかやだぷー
345仕様書無しさん:2007/11/20(火) 22:23:14
一方某社はiniファイルを使った
346仕様書無しさん:2007/11/20(火) 23:56:50
大晦日に変更かけるようにスクリプト組んどけばいいのに
347仕様書無しさん:2007/11/21(水) 00:18:24
もちろん、
マは大晦日(だけ)に変更をかけるスクリプトを組む。
現場は大晦日は休み。
だよな。
348仕様書無しさん:2007/11/21(水) 00:34:03
ソースコードを書き換えただけで完了なのか?
349仕様書無しさん:2007/11/21(水) 02:58:25
>>325
こうくると、うるう年の判定処理なんかも怪しいな。
とりあえずは334の方法に修正して運用方法を変更すれば完璧に対処できるけど。

>>348
たぶんJavaServletだから、Makeとサーバ再起動が必要そう。
まずは対象ソース更新用の専用アプリを作り、
ソース更新アプリ起動→再コンパイル→DBストップ→サーバ再起動→DBスタート
というシェルを組んで、Cloneを使って12/31 23:59:00に起動するようにすれば良いんでないの?
まあソースを直した方が手っ取り早いという意見もあろうが、敢えてこの険しい道に挑戦してみるのも、
趣向としては面白そう。
350仕様書無しさん:2007/11/21(水) 03:16:43
Cloneってなんだ?
351仕様書無しさん:2007/11/21(水) 05:19:59
>>350
スケジュール動作
352仕様書無しさん:2007/11/21(水) 06:29:13
>351
それはcron
353350:2007/11/21(水) 11:29:55
>>352
だよね。なんか別の何かかと思ってしまったw
354349:2007/11/21(水) 11:30:43
そう。
cronをcloneと打ち間違えた。
355349:2007/11/21(水) 11:40:01
ついでに、
12/31 23:59:00 ソース更新アプリ起動→コンパイル
01/01 00:00:00 サーバ停止→DB再起動→サーバスタート
と二段階に分けた方がいいな。
まあどうでもいいや。
356仕様書無しさん:2007/11/21(水) 11:54:20
こんなどうでもいいことに熱くなれるおまえらがウラヤマシス
357仕様書無しさん:2007/11/21(水) 12:43:51
>>356
同意
358仕様書無しさん:2007/11/21(水) 15:20:55
しかしこれはたぶん設計の問題なわけで、>>325の動作が
仕様ならああ書くより他に手がないと思うけど・・・

つまりコードは悪くない
359仕様書無しさん:2007/11/21(水) 16:47:04
>>358
仕様書に「2005を頭につけて戻す」って書いてあったとしてだよ、
ちょっと疑問に思って、「すんません、これって現在日付の年を
補完するってことじゃないんですか?」って仕様書書いた奴に
聞きに行くのが、素直に育った人間のやることなんじゃないっすかね。

仕様書にそう書いてあったら他に手が無いって、すげーな。
360仕様書無しさん:2007/11/21(水) 16:50:17
>>359
君は明日から来なくていいよ
361仕様書無しさん:2007/11/21(水) 18:02:50
まあそう怒るなよ
362仕様書無しさん:2007/11/21(水) 18:15:11
怒ってなんかいないよ?
ただ既に決定している仕様をひっくり返して手戻りで無駄に工数増やしちゃうようなのは不要だってだけだよ?
363仕様書無しさん:2007/11/21(水) 18:17:48
工数増えるような設計してるから、自業自得なのでは?
364仕様書無しさん:2007/11/21(水) 18:20:46
責任転嫁もコミュニケーションのうち
365仕様書無しさん:2007/11/21(水) 18:26:03
足の引っ張りあい集団?
366仕様書無しさん:2007/11/21(水) 19:00:29
>>362
えー!とことんすげーわ。
世界が違う。そこまで徹底されるともう、感服です。

まさに「この会社辞めようと思ったソースコード」に
ふさわしい。
367仕様書無しさん:2007/11/21(水) 19:04:24
「この会社辞めようと思ったソースコード」というより、
「この会社辞めようと思った仕様書」なのでは?

読み違えてる?w
368仕様書無しさん:2007/11/21(水) 20:39:29
ソウフトウェアというものは
設計・コーディング・テストの最低ラインをなぞったものの集合体
369仕様書無しさん:2007/11/21(水) 20:57:59
>>367
もっといったらこの場合、
「辞めようと思った管理者の言動」だよな。
370仕様書無しさん:2007/11/21(水) 21:02:30
ちょっと疑問に思ったくらいで仕様書書き直してたら終わるものも終わらない
一人でやってるならともかく
371仕様書無しさん:2007/11/21(水) 21:15:39
こういう場合、黙って気を利かせて現在年を返すようにしとくのが正解か?
もし後から指摘されたら仕様を読み間違えたと謝っとく。
372仕様書無しさん:2007/11/21(水) 21:19:23
仕様書の欠陥の可能性があるから報告するのが正解じゃね?
373仕様書無しさん:2007/11/21(水) 21:19:27
余計なことすんなよ
せっかく一年おきに確実に保守費用が発生するように作ってあるんだからさ
374仕様書無しさん:2007/11/21(水) 21:41:19
>>370
確かにそれは正論だけど一般論なわけで、
この場合、修正箇所が無茶苦茶小さくて
しかもその後の作業負荷軽減に
大きく貢献できる修正を提案して
何が悪いんだかさっぱりわからん。

つか、この場合仕様書修正しなきゃやばいだろ、
残しとくだけでも恥ずかしいわい。

まあ>>373がネタとしての落としどころだったよな。
375仕様書無しさん:2007/11/21(水) 22:42:06
最終改修年を返す仕様なのかもしれんぞ
376仕様書無しさん:2007/11/21(水) 22:47:36
毎年ウチに保守させれば動くが他の業者に変えたら
知らんぞ、ということかも!
377仕様書無しさん:2007/11/22(木) 05:00:12
ここにあるクソコードが生み出される
原因のひとつを見た気がする
378仕様書無しさん:2007/11/22(木) 05:09:10
人は食わねば生きられない
存在自体が罪なのさ
379仕様書無しさん:2007/11/22(木) 11:21:04
>>371
それはダメだろ。ちゃんと確認しなきゃ。

2007年1月4日に出社してきたお客さんが「さーて年末のデータをバッチで処理するかな」と
2006年用PGで処理したら、なぜか2007年のデータとして処理されました、
原因はPGの仕様取り違えによる、2006年に実施したテストでは発見されないバグでした、
てなことになる。
380仕様書無しさん:2007/11/22(木) 12:04:30
どこまでがネタかわかんね
381仕様書無しさん:2007/11/23(金) 00:00:04
コードから仕様は推測できないという有難いお話だろ
382仕様書無しさん:2007/11/23(金) 00:06:47
仕様は推測できるが仕様が意図されたものかわからないという話
383仕様書無しさん:2007/11/25(日) 00:59:43
c++で見たコード

char test[10] = "\0";

さて、どこから突っ込もうか……
384仕様書無しさん:2007/11/25(日) 01:01:14
アッー!
385仕様書無しさん:2007/11/25(日) 03:34:13
初期値に空stringってのはよくやると思うが、どこがいけないの?
386仕様書無しさん:2007/11/25(日) 06:30:57
C++なのに文字列にcharを使ってるといいたいのでは?
387仕様書無しさん:2007/11/25(日) 10:15:19
つか NULL 使おうよ・・・
388仕様書無しさん:2007/11/25(日) 10:20:16
>>387
どういう意味だか分からないんだガッ
説明をしてくれないか?
389仕様書無しさん:2007/11/25(日) 10:24:52
初期化に文字列リテラルを使うのが間違い (だと俺は考える
390仕様書無しさん:2007/11/25(日) 10:37:39
いやきっと、"\0"じゃなくて""で十分だということでは?
391仕様書無しさん:2007/11/25(日) 10:41:36
そういうことだろ
392仕様書無しさん:2007/11/25(日) 16:34:46
char test[10] = {'¥0'};
こうですか、わ(ry
393仕様書無しさん:2007/11/25(日) 19:59:04
きっと正しくはこうなんだよ
char test[10] = "\\\0";
394仕様書無しさん:2007/11/25(日) 20:00:16
素で間違えた
char test[10] = "\\0";
395仕様書無しさん:2007/11/25(日) 20:01:29
char test[10] = NULL;
これでいいじゃn
396仕様書無しさん:2007/11/25(日) 20:04:18
ここで皆さんに残念なお知らせがある



この中に、マでない者がいる
397仕様書無しさん:2007/11/25(日) 20:05:43
ざわ・・・ざわ・・・
398仕様書無しさん:2007/11/26(月) 01:29:57
testなんぞという変数名が問題だ、と受け取ったねオレは
399仕様書無しさん:2007/11/27(火) 00:50:14
きっとこうだ!
char test[10]="\0\0\0\0\0\0\0\0\0\0";
400仕様書無しさん:2007/11/27(火) 00:56:05
フフフフフフフフフフ
401仕様書無しさん:2007/11/27(火) 01:21:14
プログラマはじめたばっかちのころって
こんなことで楽しかったんあよね・・・・、あのころは楽しかったなぁ
402仕様書無しさん:2007/11/27(火) 01:27:35
フフフフフに楽しい思い出なんかないなw
403仕様書無しさん:2007/11/27(火) 02:04:54
ベーマガの投稿プログラムをひたすら打ち込んでいた頃に戻りたい
404仕様書無しさん:2007/11/27(火) 02:04:56
ドッフルギャンガフフフフフフフフ
405仕様書無しさん:2007/11/27(火) 03:33:37
ポケコンでゲーム作ってた頃が懐かしい。。。
406仕様書無しさん:2007/11/27(火) 11:48:41
プロシージャとかローカル変数の概念がないBASICで
変数表作って小さなプログラム書いてたころが懐かしい。。。

板違いすんまそ。
407仕様書無しさん:2007/11/28(水) 01:06:43
チラシの裏にメモリマップ書いたり
ハンドアセンブルした紙をホッチキスで
まとめていたころが懐かしい・・・
408仕様書無しさん:2007/11/28(水) 07:56:04
>>404
ああ、それはそういうことだったのかと、今になってようやっと気づいた。
βの頃は楽しかったなぁ。
409仕様書無しさん:2007/12/02(日) 17:30:41
private sub main
try


catch ex as exception
call log_write
end try
end sub

private sub log_write
try

'ログを書き込む処理で落ちるw

catch ex as exception
throw ex
end try
end sub
410仕様書無しさん:2007/12/02(日) 18:03:35
>>409
エラーがあったことを教えてくれるんだから見逃してやれ
411仕様書無しさん:2007/12/02(日) 18:57:37
むしろ印象コメント系だな
412仕様書無しさん:2007/12/03(月) 21:46:30
他部署からリファクタリング部隊が来てるのだが、、、

無駄な処理入れたりで複雑化させてくれやがるぜ・・・。

スタックで済む局所部でnewとかvector使うとか。
意味無く計算順序を入れ替えたりとか。
あげくに枯れてるコードに、メモリ関連で手を入れるとか。

あああ誰かなんか言ってくれよおおお。
せめてレビューしろよ!!
413仕様書無しさん:2007/12/03(月) 23:16:45
誰の言葉だったかなぁ
「アジャイルだのリファクタリングだのはそれなりにできる人間にだけ許されることで
そこらのヘタクソがサルマネすれば破綻するだけ」
……まぁ、新人をそういうチームへ放り込んで鍛えるってのはありと思うので
一概には言えんがおおむね同意
俺? もちろん「リファクタリング」しちゃいけない側orz
414仕様書無しさん:2007/12/03(月) 23:30:32
>>412
「自分らの好みで人のコードを勝手にいじり隊」と命名します
415仕様書無しさん:2007/12/03(月) 23:49:27
つーかリファクタリング部隊なんてのが存在するんだ...
416仕様書無しさん:2007/12/04(火) 00:13:13
リファクタリング部隊がいるならテスト部隊もちゃんといるのかな?
ってか、外部から来てリファクタリングって相当の技術と読解力が求められそう・・・
417仕様書無しさん:2007/12/04(火) 03:38:52
テストもなしでリファクタリングなんてあり得ないでしょ
418仕様書無しさん:2007/12/04(火) 04:06:32
そういうのは何のためにやるの? リーダビリティ? 性能? あと・・・何だろう?
419仕様書無しさん:2007/12/04(火) 06:21:42
>>418
リファクタリング部隊とやらに放り込まれた連中の稼働率うpの為。
420仕様書無しさん:2007/12/04(火) 08:26:23

どうしようもねー
421仕様書無しさん:2007/12/04(火) 10:06:37
リファクタリングっていってみたいだけ
422仕様書無しさん:2007/12/04(火) 15:15:30
救済が目的なんじゃなくてとどめをさすのが目的なのかも
423仕様書無しさん:2007/12/04(火) 22:03:30
>>418
おれのとこにいたリファクタリング厨は
言ってみればオナニストだった
424仕様書無しさん:2007/12/05(水) 00:13:51
自分しかわからない様に作り替え、継続してメンテの仕事を得る。
ってところか。タブン。
425仕様書無しさん:2007/12/09(日) 13:09:31
こないだ見たソースコードは凄かった……
C++なのに、引数が全部値渡しでわたってる。おまけにコピーコンストラクタの記述はなし……
426仕様書無しさん:2007/12/09(日) 15:16:04
ポインタの概念を知らないでポインタ渡しするよりはマシだろう。
猿に教えるほうがまだ簡単ってレベルの奴がいるから恐ろしい…。
427仕様書無しさん:2007/12/09(日) 17:00:15
>>425,>>426
おれの今の現場のソースも似たようなもん。(Cだけど)
それ以外は全部グローバル変数。
そんでもって返り血がポインタなんだけど、ローカル配列ので関数から戻った先でバグル。

「共通関数」と称して互いに関連性もない関数群がひとつのソースに詰め込まれているし、、、
ヘッダには変数の「定義」書きまくり。errnoなんか勝手に定義しちゃってる。
せめてextern, static, const位は知って欲しい...

俺が過去に経験した+αのすべての糞コードを全て集約したような感じだ。

猿どころかミジンコの方がましなくらいだ!
猿レベルの俺が言うんだから間違いない.
428仕様書無しさん:2007/12/09(日) 17:28:09
そういうところでグローバル変数禁止とすると、すべてのグローバル変数を
構造体メンバに纏めてその構造体を関数間でずっと連れ回すようになる。
429仕様書無しさん:2007/12/09(日) 17:28:20
┼"  _|,-、 ー," 土 ー," キ -,
ノ こ  ノ| し  (   し  (  ヽ o)

 ケ ケ ぃ ノ     |    ー--、,, ヽ、_
 |ヨ E|  田  ┼ 、 |    ,      /    ー," 十
 | 日 |  十 ノよ  ヽ_/ ヽ__ (__  (   ゚)
430仕様書無しさん:2007/12/09(日) 17:55:49
>>428
それやられたら、次の日には会社に行かなくなるな……
431仕様書無しさん:2007/12/09(日) 21:11:21
VBの場合だと
Variant配列にVariant配列が入ってたりする
432仕様書無しさん:2007/12/09(日) 21:48:47
VB(VBA)といえば、スマン最近まで implements や WithEvents の使い方を知らなかったのは私です。
クラスあまり自体使ってなかったけど...
むかし、Object型で無理やり作っちゃったころImplements知ってれば...


433仕様書無しさん:2007/12/09(日) 21:50:55
.NETnisiro
434仕様書無しさん:2007/12/10(月) 15:16:12
>>432
高尚な悩みだな……
さっき出くわしたソースにはこんなのが。

Private Function hoge() As String
    ....
    hoge = True
End Function

これでコンパイル通るから困るw
435仕様書無しさん:2007/12/10(月) 15:19:41
>>434
あめー、VC++6.0、MFCでこんなの見たぜ

CString CHoge::Func()
{
  // 色々
  return -1;
}

これでコンパイルが通るんだから凄い。あ、VCのバージョン違うと通らんよ。
436仕様書無しさん:2007/12/10(月) 15:39:59
流石VB。と思ったらVCでもあるのかよ!!>435
437仕様書無しさん:2007/12/10(月) 17:27:19
>>434
つまり、暗黙の型変換が駄目だということか?
それならVB辞めるしかないな。
438仕様書無しさん:2007/12/10(月) 18:53:01
このレベルのソースがゴロゴロ世の中には転がってるから困る。
439432:2007/12/10(月) 20:04:12
俺の変な日本語にだれも突っ込まない。
皆優しいな。
440仕様書無しさん:2007/12/10(月) 20:06:09
>>439
一応内容が一意に読み取れるし、2chで変な日本語というにはまだ甘いと思うぞw
441仕様書無しさん:2007/12/10(月) 20:43:39
VBのTrue って 整数の-1 になるからって、掛け算にして符号反転に使用している。
というケースを見た。これってどうなん?
442仕様書無しさん:2007/12/10(月) 20:48:19
VBは知らんけど、それって可読性で問題でないのか?
いや、質問を質問で返して申し訳ないんだが……
443仕様書無しさん:2007/12/10(月) 20:51:12
>整数の-1

これ知らないとワケワカメなコードになるな
444仕様書無しさん:2007/12/10(月) 21:40:29
アセンブラの世界だな('A`)
445仕様書無しさん:2007/12/10(月) 21:44:40
関係式って学校で習わなかったか?
BASICで(A=B)が真なら-1偽なら0と評価される
昔から当たり前に使われているコード量節約の基本
446仕様書無しさん:2007/12/10(月) 21:52:13
処理系によって真の値は違ってたはずだが
自分が知ってるのは真なら0以外ということだな
どっちにしろ仮の引き算をしてゼロフラグが
立つか立たないかというレベルの話だったはず
447仕様書無しさん:2007/12/10(月) 22:25:25
>>445
昔から使われてるってのは、あまり良くない言葉だよな。
場合によっては全く逆になる恐れがある。

コード量節約してどうするの?
448仕様書無しさん:2007/12/10(月) 22:28:13
てか、BASICでそれやって節約した時代じゃないんだから習わなかったか? とかいっちゃだめ。
Cなら関係式は0か1になる処理系が多いけどこれも絶対じゃないし、
あんまり使わなくなったテクニックで邪悪だからやめておけよと
449441:2007/12/10(月) 22:28:31
>>442
うん、俺もそう思って書いた。

>>445
BASICは習ってないけど、おれも>>446と同じように理解していた。
>>441がコード量節約が目的かどうか分からんけど、符号反転なら単項-でいいよな。
その方が「符号反転」を強調できる。

確か下の様な感じのコードだった。0掛けちゃマズいからIf文の中にある。
If x <> False Then 'この時点で x はBooleanから変換したIntegerだったかも??
a = b * x
End If

書きながら思い出したけど、上記のように <> False も目についた覚えがある。
450仕様書無しさん:2007/12/10(月) 22:28:46
可読性だけが取り得のBasicで、コード量減らしてメンテ性激減なんて馬鹿過ぎる
451仕様書無しさん:2007/12/10(月) 22:44:39
>>448
Cの比較演算子は0か1になることが仕様で決まっている。
452仕様書無しさん:2007/12/10(月) 23:02:19
Cは決まってるからいいけど、VBの場合はMSが文書化してるのかな。

The result of the logical negation operator ! is 0 if the value of its operand
compares unequal to 0, 1 if the value of its operand compares equal to 0.

Each of the operators<(less than), >(greater than), <=(less than or equal to),
and >= (greater than or equal to) shall yield 1 if the specified relation is true
and 0 if it is false.

The ==(equal to) and !=(not equal to) operators are analogous to the
relational operators except for their lower precedence.91) Each of the
operators yields 1 if the specified relation is true and 0 if it is false.

The && operator shall yield 1 if both of its operands compare unequal to 0;
otherwise, it yields 0.

The || operator shall yield 1 if either of its operands compare unequal to 0;
otherwise, it yields 0.

以上ISO/IEC 9899:TC2 [http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1124.pdf]
ドラフトじゃない仕様は有料?
453仕様書無しさん:2007/12/10(月) 23:54:19
Cから入った奴は0or1でわかると思うけど
Javaから入った奴は???てなるな
454仕様書無しさん:2007/12/10(月) 23:58:07
つか、どこから入ろうと、その言語書く前に言語仕様ぐらい調べないか?
455仕様書無しさん:2007/12/11(火) 00:09:46
にしたって隙間すぎると思う
456仕様書無しさん:2007/12/11(火) 00:14:23
0とか1とか-1とか0以外とか、言語によって紛らわしいから
Boolean型を使うように統一してほしい
457仕様書無しさん:2007/12/11(火) 00:21:08
思い出したがBASICって、
変数名長くしたり、スペースでブロック見やすくすると
速度激減だったな。
458仕様書無しさん:2007/12/11(火) 00:31:35
>>456
それ言い始めたら……言語による差異が……
459仕様書無しさん:2007/12/11(火) 00:42:15
それぞれの言語にそれなりのポリシーがあって個別の仕様にしてる訳だからね
460仕様書無しさん:2007/12/11(火) 01:22:00
まーあれだ。メインメモリが32KBしかない(しかもフルに使えるわけじゃない)環境で
BASIC走らせてると思いねぇ。
1バイトだって短くしたくなろうってもんさ……
つまりそんなオサーン、つかジサーンの時代のテクニックってことだ > Trueを-1扱い
461仕様書無しさん:2007/12/11(火) 01:28:00
DEFINT A-Zとか懐かしい脳。
462仕様書無しさん:2007/12/11(火) 01:51:45
>461
知ってるか……?
VB6の時代にはまだあったんだぜ…… > DEFINT
463仕様書無しさん:2007/12/11(火) 01:53:26
mjk!
464仕様書無しさん:2007/12/11(火) 02:14:05
そういやWindowsプログラミングとかやるとBooleanが返るとか言いながら1,0,-1の3値だったりするなぁ。
465仕様書無しさん:2007/12/11(火) 02:40:34
GetMessageだな。正直罠か嫌がらせだと思ったよ。
466仕様書無しさん:2007/12/11(火) 07:40:02
>>449 だとifが邪魔だから
a = b * (x * 2 + 1)
って書いたほうがよくない?

ますます今時やらないか。
467仕様書無しさん:2007/12/11(火) 19:38:47
だってtypedef INT BOOLなんですもの
468仕様書無しさん:2007/12/12(水) 12:09:17
BOOL = INT = int だから、C 言語的には返せるけど、
「やってはいけない」ことの例だよな

プロトタイプ宣言を INT WINAPI GetMessage(...) に
してくれるだけでだいぶ違うんだけどなぁ
469仕様書無しさん:2007/12/12(水) 13:24:31
>>468
んな事言い出したら、うちの会社のソースがほとんど読めなくなる
470仕様書無しさん:2007/12/12(水) 21:26:52
>>469のように言い出されるから変えたくても変えられなくなってしまったということだな。
最初にしっかり設計しなかったツケ。
誰が払わされてるかというと、まぁ、その、呑むかね。

471仕様書無しさん:2007/12/12(水) 21:49:05
typedef INT TRIBOOL
472仕様書無しさん:2007/12/13(木) 00:00:28
今日発見。elseが無いよ。

if(x==A)
{
 strcpy(str, "AAA〜");
}
{
 strcpy(str, "BBB〜");
}

しかも、コイツはやたらと strcpy, strcat を使いたがる。
上記のstrcpyも実は不要だった...
473仕様書無しさん:2007/12/13(木) 00:13:27
>>472

スコープを作るためのブロックってのなら普通に使うけど、
そのコードはどうみても「else忘れました」だな。
474仕様書無しさん:2007/12/13(木) 00:24:52
else を括弧の横に書くか改行するかで揉めたなぁ。。。。
475仕様書無しさん:2007/12/13(木) 00:30:00
間に挟まる行数によっても見栄えが変わってくるから、
あんまりきっちり決めたくないな。
476仕様書無しさん:2007/12/13(木) 08:06:42
strcpyを良く使うって言えば、こんなソースがあったな

int len = ???;//数字直打ち、ここだけ英語の頭
TCHAR* mojiretu = new char[len]; //ローマ字,TCHAR,charの混合
stcpy(mojiretu, "○○");//文字列直打ち、strcpy
kansuu(mojiretu);//ローマ字
delete mojiretu;//delete使用。

//kansuuの中身。
TCHAR* kansuu(LPCTSTR nyuuryoku)//ローマ字、LPCTSTR使用。
{
  int len = strlen(nyuuryoku);
  TCHAR* mojiretu = new char[len + 1];
  strcpy(mojiretu, nyuuryoku);
  //以下処理。ちなみに、nyuuryokuをそのまま使っても全く問題なし。

  return mojiretu;  //何に使うか不明。どこでも使用していない。というか、戻り値受けてる場所さえ見つからない。
}
477仕様書無しさん:2007/12/13(木) 15:13:03
>>476
俺だったら3行目の時点でそいつ殴ってる。
478仕様書無しさん:2007/12/13(木) 20:40:20
>>477
よく三行目まで我慢できるな。
479仕様書無しさん:2007/12/14(金) 00:57:36
1行目は我慢できなくもないが
2行目でアウトだろ
常考
480仕様書無しさん:2007/12/14(金) 01:33:14
LPCTSTR

LPC????????????????????????????????
意味わかって使ってんの?w
481仕様書無しさん:2007/12/14(金) 10:26:51
>>476
これ書いた奴、放置したらやばくね?
482仕様書無しさん:2007/12/14(金) 10:41:45
コメントは>>476のツッコミだよね?
483仕様書無しさん:2007/12/14(金) 14:13:35
>>480
いやその「LPC」の3文字は、
数少ない適切な部分だと思うがw
484仕様書無しさん:2007/12/14(金) 16:55:06
さて、皆に聞きたいんだがこのレベル(>>476)のプログラマーがプロジェクトに来たとき、
お前らならどうする?
485仕様書無しさん:2007/12/14(金) 17:04:35
簀巻き
486仕様書無しさん:2007/12/14(金) 18:30:27
487仕様書無しさん:2007/12/15(土) 00:10:54
プログラマー経験2年目までならコードレビューをやってあげる。
488仕様書無しさん:2007/12/15(土) 18:10:33
■俺の書いたコード
unsigned int i;

for( i=0 ; i<100 ; i++) {
 if ( checkStatus() == TRUE ) break;
 sleep( 100 );
}

if ( i == 100 ) return ERROR;

■レビュー後のコード
unsigned int i = 0;
unsigend int good_status = FALSE;

for( i=0 ; i<100 ; i++) {
 if ( checkStatus() == TRUE ) {
  good_status = TRUE;
  break;
 }
 sleep( 100 );
}

if ( good_status != TRUE ) {
 return ERROR;
}

納得いかんが・・・これが仕事(共同作業)というものか。w

489仕様書無しさん:2007/12/15(土) 18:19:18
理由もなしに、そう書き換えられたの?
490仕様書無しさん:2007/12/15(土) 18:27:51
==TRUEでどっちも駄目だ
491仕様書無しさん:2007/12/15(土) 18:54:01
>>488
ちゅーかレビューってのは理由なしに、いきなり書き換えるものなのか?
492仕様書無しさん:2007/12/15(土) 19:03:06
>>489
レビューした人が、for文抜けた後の iの値がどうなるか
よく判らなかったので。

>>490
TRUE/FALSE以外の値が入る余地があるなら、!= FALSEも
考えるけど、そうじゃないなら読みづらくなりそうで、あんまり
好きじゃないな。コーディング規約的にありそうだとは思うけれど。
493仕様書無しさん:2007/12/15(土) 19:06:20
>>492
お互いに意見を出し合ったりはしなかったのか?
iの値なんて、お前さんが説明すれば良いじゃないか。
494仕様書無しさん:2007/12/15(土) 19:09:29
>>493
説明はしたけど通らなかった。笑

レビューした人はお客さんだから、まあ、お客さんが
そういうのであれば・・ってところですよ。
495仕様書無しさん:2007/12/15(土) 19:10:46
>>492
知らない人が見たら、余地があるかどうかはcheckStatus()の仕様やソースを確認しないとわからないじゃない
だから統一して!= FALSEにしたほうがいいんじゃね?ってのが理由かな

以下、ブール比較の議論が数十レスにわたって始まりませんように
496仕様書無しさん:2007/12/15(土) 19:11:40
そういう事情なら仕方ないか……
497仕様書無しさん:2007/12/15(土) 19:18:53
>>494
馬鹿な客相手にご苦労なことです
何かと不条理なことは多々あると思いますがこれからも頑張ってください
498仕様書無しさん:2007/12/15(土) 19:56:36
まぁ、百歩ゆずって解釈すると、分かりやすくなったって事かな?
>>494の顧客みたいな人間でも、レビュー後のソースなら分かるって事で、
可読性重視なら、これも…………
499仕様書無しさん:2007/12/15(土) 20:07:17
レビュー前のソースがわからないと言うのは
可読性云々よりも知能の問題のような気がするが
500仕様書無しさん:2007/12/15(土) 21:03:06
俺はどっちかというとレビュー後のコードの方がいいと思う
理由は元のコードだと修正が入ってリトライの回数が変わったときに
2カ所変更が必要になるから
if ( i == 100 ) 部分の変更をし忘れるとバグ出しちゃうし
501仕様書無しさん:2007/12/15(土) 22:06:59
>>500
それは突っ込み待ちか? 下じゃあかんの?


■俺の書いたコード
unsigned int i;

for( i=0 ; i<100 ; i++) {
 if ( checkStatus() == TRUE ) break;
 sleep( 100 );
}

if ( i == 100 ) return ERROR;

■レビュー後のコード
unsigned int i;
const unsigned int count = 100;

for( i=0 ; i<count ; i++) {
 if ( checkStatus() == TRUE ) break;
 sleep( 100 );
}

if ( i == count ) return ERROR;
502仕様書無しさん:2007/12/15(土) 22:16:26
int checkAndRetry(int count) {
int i;
for( i=0 ; i<count ; i++) {
 if (checkStatus()) return TRUE;
 sleep( 100 );
}
return FALSE;
}

if (!checkAndRetry(100)) return ERROR;
503仕様書無しさん:2007/12/15(土) 23:03:58
>>501
iが全く別の意味を持って使いまわされてるのはなんか違和感ある

>>502
checkStatusがtrueのときreturn trueするとは書かかれてない





unsigned int i;

for( i=0 ; i<100 ; i++) {
 if (checkStatus()) break;
 sleep( 100 );
}

if (!checkStatus()) return ERROR;
504仕様書無しさん:2007/12/15(土) 23:41:31
checkStatusを2回実行しても同じ結果が返るとは限らないな
505仕様書無しさん:2007/12/15(土) 23:50:23
>>503
>>502はループ部分を関数化し、good_stuaus相当を返却するものだろ。
if (!checkAndRetry(100)) return ERROR; でTRUEが返れば継続されるじゃん。
506仕様書無しさん:2007/12/16(日) 00:00:46
つーか、unsignedには誰も突っ込まないのか?
507仕様書無しさん:2007/12/16(日) 00:06:54
>>501
100が変わりうるのであればdefineかconstを使うべきやね。

「レビュー後のコード」の方が保守性が高いという>>500
意見は一理あるとは思うが、どうも無駄な変数が増えるのが
気に入らない。

for(int i=0; i<100 ; i++)
とするなら good_statusを使うのも良いかも知れんが、
標準的なCではないな。
508仕様書無しさん:2007/12/16(日) 00:06:55
Pro*Cのソースで全テーブル削除の処理で、

EXEC SQL WHENEVER SQLERROR DO GOTO :sqlerr;

int count = 0;
EXEC SQL TRUNCATE TABLE TABLE1;
count++;

EXEC SQL TRUNCATE TABLE TABLE2
count++;

EXEC SQL TRUNCATE TABLE TABLEN;
count++;

return OK;

sqlerr:
switch(count)
{
case 0:
printf("ERROR TABLE1");
break;
case 1:
printf("ERROR TABLE2");
break;

case N-1:
printf("ERROR TABLEN");
break;
}
509仕様書無しさん:2007/12/16(日) 00:34:44
>>507
この場合が適切かどうかは別としても
保守性が上がるのならそれは「無駄」じゃないと思うよ
510仕様書無しさん:2007/12/16(日) 01:00:32
unsigned int i=100;

while( checkStatus() != TRUE ) {
if (--i == 0) return ERROR;
 sleep( 100 );
}
511仕様書無しさん:2007/12/16(日) 01:13:58
>>510
見づらい

unsigned int i=100;

while( checkStatus() != TRUE )
{
i = i - 1;
if (i == 0)
{
return ERROR;
}
sleep( 100 );
}

俺個人的にインクリメント、デクリメントはあまり使いたくないね
512仕様書無しさん:2007/12/16(日) 01:16:08
インデントなしのほうが見づらいけどね
513仕様書無しさん:2007/12/16(日) 01:18:51
ソースはともかく2chの書き込みでインデントを気にしたらダメだろw
514仕様書無しさん:2007/12/16(日) 01:21:50
i--; をわざわざ
i = i - 1; って書いたコードみたことねぇw
515仕様書無しさん:2007/12/16(日) 01:27:04
見やすさについて語るなら
2chであれ読む側への配慮ぐらいすべきじゃね
516仕様書無しさん:2007/12/16(日) 01:35:24
2chでのインデントは全角スペースで
517仕様書無しさん:2007/12/16(日) 01:56:55
インデント無しも全角も勘弁してくれ。
しかもム・マ板なら尚更だ。
518仕様書無しさん:2007/12/16(日) 01:57:30
てーかデクリメントは単独で使ってくれ。

--i=k++;

みたいなコードは論外だ!
519仕様書無しさん:2007/12/16(日) 01:58:26
==だった。
520仕様書無しさん:2007/12/16(日) 03:26:19
>>517 だって半角スペースもタブも詰まっちゃうよ?
521仕様書無しさん:2007/12/16(日) 03:36:02
&nbsp;を使いなさい
522仕様書無しさん:2007/12/16(日) 07:57:48
>>514
万人受けする見易さは圧倒的にi = i - 1;だけどな
523仕様書無しさん:2007/12/16(日) 08:51:14
H8/532シリーズ用のコンパイラで、i=i-1;だとレジスタにロード,デクリメント,ストア 
i--;だとメモリをデクリメントするコードを吐く奴に出会ったことがある。
524仕様書無しさん:2007/12/16(日) 12:33:58
単独デクリメントすら読みにくいってVBerか
525仕様書無しさん:2007/12/16(日) 13:00:33
>>522
いくらなんでも、ここでいう万人はC言語知ってる万人だと思ったんだが……
526仕様書無しさん:2007/12/16(日) 13:49:16
インクリメント・デクリメントぐらいの砂糖はかけさせてくれよ……
527仕様書無しさん:2007/12/16(日) 13:55:51
Cとか、文法似た言語は、普通インクリメント、デクリメントじゃないの?
i = i - 1とか、見たことねぇ。
528仕様書無しさん:2007/12/16(日) 13:56:44
そこで「釣りですよ」発言だ!
529仕様書無しさん:2007/12/16(日) 16:31:01
>>527
でもやってる事は同じだから好みの問題じゃない?
i--;でもi = i - 1;でもバグるわけじゃないんだから
530仕様書無しさん:2007/12/16(日) 16:38:22
「好みの問題」はさておき
「万人受けする」とか大嘘言ってるヤツへの反論でそ
531仕様書無しさん:2007/12/16(日) 16:43:05
i-1は絶対fortran時代の残党だろ
532仕様書無しさん:2007/12/16(日) 16:44:54
まるで宗教戦争w
533仕様書無しさん:2007/12/16(日) 17:16:14
物書きでも読めない漢字にふり仮名打ったり表現をより簡単なものに差し替えたりするだろ?
自分のために書くならともかく他人のために書くなら内容の知的水準を他人に合わせることに何の疑問がある?

不満があるなら馬鹿相手に商売してる自分を呪うんだな
534仕様書無しさん:2007/12/16(日) 18:13:42
まったくだな。
個人でやる分にはいくら見難いコードでも何でも使えばいいと思う
ただ、仕事として後の保守を考えて水準を他人に合わせてあげた方が
いいだろうからトリッキーな記述より冗長な記述の方がよかったりする。

後ここのスレにはいないと思うけどコメント書かない屑は死ねwwwwww
535仕様書無しさん:2007/12/16(日) 18:21:33
アルゴリズム単位ならともかく1ビット2ビットケチるのはマというよりハッカーのレベルだな
仕事で書くときは面倒でも可読性あげた方が後々面倒少ないし
536仕様書無しさん:2007/12/16(日) 18:22:21
>>535
それはハッカーではなく、バッカーではないのか。
537仕様書無しさん:2007/12/16(日) 18:24:08
バッカーwwwwwwwwwwwww
538仕様書無しさん:2007/12/16(日) 18:39:07
>>536
え?w
539仕様書無しさん:2007/12/16(日) 18:41:14
インクリメント・デクリメントが可読性低いとかいうヤツと仕事したくねぇよ
540仕様書無しさん:2007/12/16(日) 19:24:37
まったくだな。
インクリメントごときワカランヤツに後々のメンテが出来るとも思えんし。
541仕様書無しさん:2007/12/16(日) 20:04:07
とはいえ、式の中でインクリメントを前置・後置で使い分けたり、
3項演算子と組み合わせたり、果てはそれをネストさせたり、

スワップにxor使うような人のコードは読みたくないな。

542仕様書無しさん:2007/12/16(日) 20:10:39
スワップにxorを使うのは頭の進歩が止まってて情報収集能力もないアホだからな。
543仕様書無しさん:2007/12/16(日) 20:23:21
いんくりめんとがよみにくいとしゅちょうするのは、
ぜんぶひらがなでかけ、としゅちょうするくらいまぬけにみえます。
544仕様書無しさん:2007/12/16(日) 20:28:10
何このインクリメント闘争wwwwwwwwwwwwww
545仕様書無しさん:2007/12/16(日) 20:35:08
そういえば VB で見たコード

Dim i as Integer

for i = 1 to 4
  Select Case i
  Case 1:
    1の時の処理...
  Case 2:
    2の時の処理...
  (中略)
  End Select
next

各処理でも使っていない、i が何の為にあるのか分からなかった。
546仕様書無しさん:2007/12/16(日) 20:37:12
>>543
漢字を廃して全部ハングルにした国が隣に実在する事実を忘れてはいけない
547仕様書無しさん:2007/12/16(日) 20:45:33
隣は隣
548仕様書無しさん:2007/12/16(日) 21:07:19
>>545
言語を問わず、よく見かけるな。誰が書いたか分かったら、一時間ぐらい説教したいぐらいむかつくコードだ
549仕様書無しさん:2007/12/16(日) 21:16:28
ttp://members.at.infoseek.co.jp/sakura_editor/coding.html
の「よく似た処理を行うのにループを使う場合」にC版のそれが書かれてるな。ってか、これはC++か。
ま、どっちでも同じだけど。
550仕様書無しさん:2007/12/16(日) 22:25:42
しかしforループの中にswitch/case文入れて各処理を1回ずつ行うって…
どっから広まったんだ?

普通にプログラムの勉強したなら、そんな処理はあんまり思いつかないと思うんだが。
551仕様書無しさん:2007/12/16(日) 22:34:54
こういうのってプログラムの勉強が足りない馬鹿でしょ
なにかと形で覚えてるだけで中身を理解してない証拠
552仕様書無しさん:2007/12/16(日) 22:45:27
とりあえず、これを書く奴がいたら、馬鹿認定は楽に出来るからいい。
553仕様書無しさん:2007/12/17(月) 01:16:05
signal(WM_QUIT, handler);

キャッチできると思ったんだろうか…
ちなみにVS2005以降では実行時エラーになる。

他に生成したスレッドの管理放棄、メモリ・リソースリークおかまいなしorz
変なソース押し付けられてしまったわ。
554仕様書無しさん:2007/12/17(月) 01:24:24
//エラー処理1
if( エラー条件1 ) {
    //あとで
}
//エラー処理2
if( エラー条件2 ) {
    //あとで
}
//エラー処理3
if( エラー条件3 ) {
    //あとで
}

このコードを書いた人はすでにやめている。
555仕様書無しさん:2007/12/17(月) 03:07:31
>>550
俺もそう思うんだが VB.NET と Java の全く無関係なプロジェクトで1回づつそういうコードを見ている orz
だから何かどっかにネタ元があるんじゃないかと睨んでいるんだが...
556仕様書無しさん:2007/12/17(月) 10:23:57
よくわからんが起源はステップ実行関数だったのかな
関数が呼ばれるたびに順次処理を一部ずつこなしていくようなやつ
そこからstaticだか引数だかで持ってたカウンタの意味が失われたのが件のfor&caseじゃない?
557仕様書無しさん:2007/12/17(月) 12:56:38
例えば順次処理をするんだけど1の段階でエラーが出たら以降の処理も行わないってときに
使うんじゃなかったかな。gotoを使わず(例外処理は無い)、returnするでもなく、
「見やすく」実装できるとか。むかーし、そんなことを得意げに説明された記憶がかすかにある。
558仕様書無しさん:2007/12/17(月) 19:45:39
それだったらgotoのほうがいいなw
559仕様書無しさん:2007/12/17(月) 21:30:50
>>557
関数って知ってる? と言いたくなった。
間違ってたらゴメン。
560仕様書無しさん:2007/12/17(月) 21:42:52
>>559
>>557 じゃないけどたぶん、「returnするでもなく」って部分が「関数化するでもなく」って事なんだと思った。
561仕様書無しさん:2007/12/17(月) 21:48:09
あと、どっかでは「各関数にreturnは一つだけにすること」なんてコーディング規約があるという噂も・・・
562仕様書無しさん:2007/12/17(月) 21:50:39
>>560
すまん、そこを読み違えていた。
しかし、returnの何が気に入らないんだろうね。561も含めて奇異に聞こえるよ。
563仕様書無しさん:2007/12/17(月) 21:59:34
途中returnは「このケースではここから先は見なくていい」という
合図だから考えることが減ってよいと思うんだけどね。

「returnは最後に1つ」という規約を決める人は、途中で抜けるって
のにものすごく恐怖感を持ってしまうのか、単に理解できなくなるだ
けなのか。
564仕様書無しさん:2007/12/17(月) 22:05:52
こんなのあった
strHoge = Str(Right(Left(strFuga,4),2))
565仕様書無しさん:2007/12/17(月) 22:10:40
>>563
確かにそうなんだが、昔returnの後に、延々2000行ぐらいコーディングしてるのを見た事があってだな……
566仕様書無しさん:2007/12/17(月) 22:37:02
returnが最後に1つは、構造化原理主義だろ。
567仕様書無しさん:2007/12/17(月) 23:03:00
「入り口と出口は共に一つずつ」だっけ?
568仕様書無しさん:2007/12/17(月) 23:41:09
>>566
>>567
パチッ☆-(^ー'*)bナルホド
569仕様書無しさん:2007/12/17(月) 23:52:43
フローチャート(笑)の出口に向かう線が増えるのが嫌なんだろう
570仕様書無しさん:2007/12/17(月) 23:55:31
きょうびフローチャートまじめに書いてたら仕事が3倍以上になるんだが・・・・
571仕様書無しさん:2007/12/18(火) 00:07:07
method(arg){
if(arg.length == 0) return;

// sex
}
572仕様書無しさん:2007/12/18(火) 01:58:14
フツーの関数だと、入力値のチェックが入って、エラーなら処理を中断するってのが多いよな。
そういうのを実装すると、
if (エラー条件1) {
 return -1;
}
if (エラー条件2) {
 return -2;
}
if (エラー条件3) {
 return -3;
}
本来の処理

ってなると思うんだが。
こんなのをreturnは一箇所とか、変なルールで縛られると、条件がネストして発狂したくなる。
573仕様書無しさん:2007/12/18(火) 02:01:08
int func(int hoge) {
 if (hoge > 0) {
  return -1;
 }
 〜中略〜
 return 0;
}
574仕様書無しさん:2007/12/18(火) 02:18:44
出口複数OKでも、論理を反転させることを知らない奴が書いた
こういうコードを見るとウボワァーってなる。

if (正常条件1) {
 if (正常条件2) {
  if (正常条件3) {
   本来の処理
  } else {
   return -3;
  }
  return -2;
 }
} else {
 return -1;
}
575仕様書無しさん:2007/12/18(火) 02:37:52
何カ所も同様のコードがあると死ねるな。
576仕様書無しさん:2007/12/18(火) 02:47:10
つか せめてリターン値を変数に格納しようや・・・・
577仕様書無しさん:2007/12/18(火) 08:09:52
変数に格納しなければならない理由を教えてくれ
578仕様書無しさん:2007/12/18(火) 08:31:53
変数に格納しとけば最後の1行だけのリターンにできるから、アホなコーディング規約にも合う。
579仕様書無しさん:2007/12/18(火) 10:55:12
変数に格納するってこういうこと?
で、gotoも使わない?
ますますわかりにく…w

if (正常条件1) {
 if (正常条件2) {
  if (正常条件3) {
   本来の処理
  } else {
   rc = -3;
  }
 } else {
  rc = -2;
 }
} else {
 rc = -1;
}
return rc;
580仕様書無しさん:2007/12/18(火) 11:07:54
>>579
そりゃ、元からのコードの書き方が悪いせいで読み難くなってるんだと思うけどなぁ。
なんで実値を代入するんだろう?
rc = SUCCESS
rc = ERROR_WRONG_ID
みたいに参照しない?
同じエラーコードを使いまわしたり、仕様変更に対処できるようにしたいから、こうやってる。
581仕様書無しさん:2007/12/18(火) 11:44:23
そういうレベルの問題じゃないと思う
582仕様書無しさん:2007/12/18(火) 14:41:03
>>580
いまの論点はそこじゃねえw
583仕様書無しさん:2007/12/18(火) 16:26:52
「論点」って、議論してるつもりだったんだw
584仕様書無しさん:2007/12/18(火) 17:31:26
関数ポインタ使ったら「みんなの読めないコードばかり書くな」って上司に首になった人のこと思い出した。
585仕様書無しさん:2007/12/18(火) 17:36:21
「関数ポインタを使うとクビになる」 (lll゚Д゚)ヒィィィィ
586仕様書無しさん:2007/12/18(火) 18:07:08
>>561
とあるソフトのマクロだけど、言語仕様がそうなってた。
return を、関数の最後以外の場所に書くと、文法エラーでコンパイル通らない。
void 型の関数だと、return を1個でも書いたらエラー(関数の最後で抜けるだけ)。
587仕様書無しさん:2007/12/18(火) 18:18:07
ソース見て確認する人のレベルに合わせないと
確認のOKが出ないから仕方ないのかも・・・って
それこそ論点ちがうか
588仕様書無しさん:2007/12/18(火) 19:57:06
プログラマーも運転免許程度の国家資格にすればいいのに。
そうすれば、あまりに低レベルな奴は除外できる。
バグによる国家損失も少しは減るだろう。
589仕様書無しさん:2007/12/18(火) 20:11:51
C++ 二種とかw
590仕様書無しさん:2007/12/18(火) 20:55:12
返り値を受け取れ
int xx_status = xx_OK;
if(xx_func() == xx_NG){ ←ここの関数はxx_OK/xx_NGしか返さない
  xx_status = xx_NG;
}

不要なネスト
if(ww_status != ww_OK){
  if(ww_status == ww_NODATA){
    break; /* whileから抜ける */
  }
  return(NG);
}

しつこい条件
if(zz_status == zz_OK){
  (処理)
}else if(zz_status != zz_OK && zz_status != zz_ERR1){
  (処理)
}else if(zz_status == zz_ERR1){
  (処理)
}
591仕様書無しさん:2007/12/18(火) 21:06:42
不要なネスト
if(ww_status != ww_OK){
  if(ww_status == ww_NODATA){
    break; /* whileから抜ける */
  }
  return(NG);
}
これはいいいんじゃないの別に?
殆どの場合 ww_OK なんでそ?
592仕様書無しさん:2007/12/18(火) 21:13:21
if(ww_status == ww_NODATA) break;
if(ww_status != ww_OK) return NG;
593仕様書無しさん:2007/12/18(火) 21:29:50
俺はほとんどの場合 ww_OK が期待できるなら、
「不要なネスト」とされている方のコードしか書かないな。

たかだか一度しか実行されない ww_NODATA の場合の処理が僅かに非効率になる方が、
ループ中ずっと実行される ww_OK の場合の処理を非効率にするよりも好ましい(と思う)から。
594590:2007/12/18(火) 22:00:28
おぉ。言われてみればそうだな。
そういえば俺も以前、テクニックとしてのそういう書き方は本で読んだりしたことあったよ。
まあでも、このソースの他の部分みたら、そういう意図があったとはとても思えないんだけどね。
595仕様書無しさん:2007/12/18(火) 22:03:57
多重ネストはVB6でよくお目にかかる。これはしょーがない。
596仕様書無しさん:2007/12/18(火) 22:54:50
>>589
いや、俺はマジで必要だと思うよ。
「とりあえず○○言語のプログラミングはできます」的な奴が氾濫してる
おかげでどれだけ世の中にバグがあふれている事か。

例外もしっかりキャッチしてハングする事もなく、処理速度も速くて読みやすく、
再利用性が高くメンテしやすい。(矛盾するところもあるけど)
こういう事を考えた上でそれに沿ったプログラミングをするのは
もはや職人だ。当然それなりのスキルのある人間にはそれなりの報酬を与えるべき。
プログラムもろくに組めねー糞SEにゃ設計は無理。

プログラマーがただのコーディング要因としてここまで冷遇されているのって
日本くらいじゃね?
597仕様書無しさん:2007/12/18(火) 23:23:45
ちゃんとしたプログラミングの試験てむずくね?
筆記穴埋め問題みたいなのはあまり意味ないし、
暗記すれば解けるようなのも意味ない
ユニークな良問を考えなければならない
598仕様書無しさん:2007/12/18(火) 23:29:13
FizzBuzzが解ければいいよ
599仕様書無しさん:2007/12/18(火) 23:51:41
   ↑BASIC
カス|C言語(ポインタ含まない)
   |C言語
   |C++(クラス・継承含まない)
プロ|C++(継承含まない)
   ↓C++

こんな感じ?
600仕様書無しさん:2007/12/18(火) 23:55:35
ポインタ含まないC言語なんてBASICよりやばくね?
601仕様書無しさん:2007/12/19(水) 00:02:36
>>600
組み込みでたまにあるらしいぞ…
グローバルのみらしい…
602仕様書無しさん:2007/12/19(水) 00:08:48
たとえC++のクラスや継承を使っていても、

酷いコードを書く人間は大勢いる。

謎の継承。不可解な変数の上書き。不要なオーバーライド。呼ばれたらエラーを返すだけのオーバーロード(これは微妙にありかも)。


そもそもプログラマ認定資格試験なんてあっても、結局基本情報とおなじ結果になるだけでしょ。
余計悪いかな。受験料7万円とかになったりしてね。
603仕様書無しさん:2007/12/19(水) 00:12:36
>>599
C++プログラマでまともにオブジェクト指向を理解してる奴ってほとんど見ないんだが。
604仕様書無しさん:2007/12/19(水) 00:15:51
>599
委譲が理解できたらプロを超えるんだろうか
605仕様書無しさん:2007/12/19(水) 00:22:54
自分的にはクラス周りを覚えると効率の良いコードを考え易くなるから〜とおもったけど、
書き方の醜さとかは考えてなかったなぁ・・・

やっぱカスはカス以外には成れないのが世の中か
606仕様書無しさん:2007/12/19(水) 00:54:20
C++プログラマはポインタ理解して無い奴が多い
607仕様書無しさん:2007/12/19(水) 01:04:51
>>597
筆記でなくとも、プログラミングコンテストで使われるような
自動コンパイル&出力チェックシステムで良いんじゃないか?
608仕様書無しさん:2007/12/19(水) 01:06:55
プログラマーの技術なんて全てコードに現れるもんだからな。
実行時間と、メモリ使用量をある程度制限して、問題を課せば試験としては成り立つだろう。
連投スマン
609仕様書無しさん:2007/12/19(水) 01:11:55
「javaプログラマがポインタを知らなくたって大丈夫さ.言語仕様に無いんだからな.
 ちゃんとスタックとヒープの違い.メモリ上の文字列の扱い.参照とオブジェクトの違いを把握して,
 継承とインターフェイスとオーバーロードを便利に使いこなして,
 スレッドやタイマーをデッドロックを起こさず、無駄に複雑な技巧に走らず,
 すっきりした見通しの良いコードを書くプログラマなら,ポインタなんか知らなくたって構わないさ.
 C++のプログラマだってそうだろう.」

 問題はC++でポインタはかなり中心的な機能だってことくらいで・・・
610仕様書無しさん:2007/12/19(水) 01:42:33
そんなことより日本語がおかしいのが問題。
611仕様書無しさん:2007/12/19(水) 01:52:36
学校教育の問題か?
612仕様書無しさん:2007/12/19(水) 02:43:34
void Hoge(int n)
{
 switch(n)
 {
 case 1:
  Fuga(1);
  break;
 case 2:
  Fuga(2);
  break;
 case 3:
  Fuga(3);
  break;
 case 4:
  Fuga(4);
  break;
 }
}
613仕様書無しさん:2007/12/19(水) 03:11:22
たまに、
 case 6:
  Fuga(7);
  break;
とか出てくるから、始末が悪い。
そういう仕様なのか単なるバグなのか、コードだけじゃ判断できん。
614仕様書無しさん:2007/12/19(水) 03:24:49
それなら

void Hoge(int n)
{
 switch(n)
 {
case 6:
  Fuga(7);
break;
default:
  Fuga(n);
break;
 }
}

と書けば良い
615仕様書無しさん:2007/12/19(水) 04:54:58
ここで添削してどうすんの!
616仕様書無しさん:2007/12/19(水) 04:56:14
あっ反射的にマジレスしちゃった。
すごい添削だったw
617仕様書無しさん:2007/12/19(水) 20:04:19
Javaでやたら変数をnullで初期化する奴は死ね!!!
定数で置き換えられる文字列なのにいちいち
StringBuffer b = new StringBuffer();
b.append("SELECT ~ FROM");
とかやつ奴は死ね!!!そしてそれをわざわざメソッドにしやがって死ね!!!
618仕様書無しさん:2007/12/19(水) 20:21:20
>>617
こんなところに毒つく前に、黙って直せばいいだろう。




とかいうと、勝手に弄るのは云々、なんて返してきそうだな。
おかしいコードを良い方向に直せない会社は、確かに辞めた方が良いだろうね。
619仕様書無しさん:2007/12/19(水) 20:27:46
>>618
偽装請負の身に無茶を要求するな。
とりあえず死ねと言っておけば聞いた連中だけは真似しまい。
620仕様書無しさん:2007/12/19(水) 20:30:52
この会社辞めようと思ったソースコードスレで、
変なソースの内容を書いたりコード晒したりすると何故か説教される。
621仕様書無しさん:2007/12/19(水) 20:32:19
おかしいコードを判定するのに、一体どうやって判定するかだが……
うちの会社は自分を信じる以外にない。
他の連中がおかしすぎるコードを書いている中で、自分だけが正しいと言い切れる自信はない。
やはり、複数の人間で言葉を交わさないとコードがどーこー、言いづらいものがある。

ただ、それでも確実に違うと言い切れるコードだけは書かないでくれ。
CreateFileで失敗すると確実に落ちるアプリをソースなしで渡さないでくれ。
おまけに、そいつと共有メモリ使って通信するプログラムとか作らせないでくれ……
共有メモリの構造体のファイル名が
char szFileName[_MAX_PATH];
なのは仕様か? どう見てもバッファサイズ足りないだろうが……
隠しファイル開くと落ちるのは仕様か? いくらなんでも気付くだろうが……
622仕様書無しさん:2007/12/19(水) 20:37:25
>>620
Which is correct?

- 説教する奴がこのスレの住人
- 接続のログとられているか通信を傍受されてる
623仕様書無しさん:2007/12/19(水) 20:40:07
誤解招きそうだな。というか、普通に書き間違いっぽい。
>共有メモリの構造体のファイル名が

>共有メモリの構造体のメンバ変数が
に変えておく。
624仕様書無しさん:2007/12/19(水) 20:44:46
>>619
変なコードを書いた奴が、このスレを見てることを祈るしかないってことか…。
625仕様書無しさん:2007/12/19(水) 21:53:39
現場からアプリ(外注作)がフリーズした、と連絡があって、
見てみたらDBがロック掛かりっぱなしになってた。
で、原因追っかけてたら、

頼むから完了報告のメッセージダイアログ(OKボタンだけ)の応答が帰るまで
コミット保留するなよ……orz

ちなみにそのアプリ、余りに外注のレスポンスが悪いんで
ソースごとこっちに引き上げたんだが
こういう致命的な奴でないものまで含めると突っ込みどこは枚挙にいとま無く。
明日も戦いだ……
626仕様書無しさん:2007/12/19(水) 22:10:41
中で何をしてるかは見せなくて良いけど、今どういう状態なのかをユーザーに見せるのは大切な事ですよ
何も反応がないより「今処理しています」の表示を見せる事でずいぶんクレームは減る
見せすぎなのはアレだけど・・・
627仕様書無しさん:2007/12/19(水) 23:38:40
>>617
ウチもそんなのばっかりだよ。
JSPが全部String/StringBufferでつくって、out.printlnとかやってる。
628仕様書無しさん:2007/12/20(木) 10:14:02
>>621
>隠しファイル開くと落ちるのは仕様か? いくらなんでも気付くだろうが……

凡庸なプログラマは自分のコードをテストしない。
629仕様書無しさん:2007/12/20(木) 21:11:43
>>628
良心あるプログラマはまさかそんな人間がいるとは思っていない。
630仕様書無しさん:2007/12/20(木) 21:58:51
隠しファイルを開くと落ちるってのは、具体的に何が原因なんだろ……
631仕様書無しさん:2007/12/20(木) 22:32:35
存在が認識できん
632仕様書無しさん:2007/12/20(木) 23:07:26
シンボリックリンクのリンク先が無かったりすると落ちることならよくある
633仕様書無しさん:2007/12/21(金) 04:14:38
自分でテストするのはきついよね
634仕様書無しさん:2007/12/21(金) 18:26:18
if(flg){



 goto:Next;
}
else{
 Next:



}

え、gotoとelseいらなくね?
635仕様書無しさん:2007/12/21(金) 19:39:29
>>634
吹いた
636仕様書無しさん:2007/12/21(金) 19:41:04
if(flg){
 処理A
 処理B
}else{
 処理B
}

なんだろうな...
637仕様書無しさん:2007/12/21(金) 19:59:09
むしろ
if(!flg){
 B;
}else{
 B;
 A;
}
638仕様書無しさん:2007/12/21(金) 20:15:54
if(flg){
 A;
}
B;
639636:2007/12/21(金) 20:17:19
あ、それだw
640仕様書無しさん:2007/12/21(金) 20:25:18
まともでないコードに出くわすと思考が止まるなw
641仕様書無しさん:2007/12/21(金) 21:13:26
//10秒待つ
Sleep(1000);

//8の倍数にする。
x += x % 8;

義務教育って大事だと感じた。
ちなみに、Sleepの単位はミリ秒
642仕様書無しさん:2007/12/21(金) 21:40:43
sleepは言語によって_秒だったりn秒だったりするから困る
643仕様書無しさん:2007/12/21(金) 23:27:54
義務教育云々より論理的な思考を直感的にできないのが問題じゃない?
644仕様書無しさん:2007/12/22(土) 00:12:24
>>641
8の倍数ワロス

x -= x % 8;
x &= (~7) # Perl
645仕様書無しさん:2007/12/22(土) 03:06:35
8の倍数にするって始め意味がわからなかったw
下3ビットは0でマスクが単純そうだけど、2の乗数以外もでるなら>>644かな
646仕様書無しさん:2007/12/22(土) 03:32:43
x *= 8

だろ常考
647仕様書無しさん:2007/12/22(土) 06:11:49
それは8倍する(w
7で and するのは「切り捨て」型の演算だから、四捨五入で8の倍数にするなら(x+4)&7、
切り上げ型の8の倍数なら(x+7)&7 にする必要があるね。
648仕様書無しさん:2007/12/22(土) 08:58:08
>>646
たしかに8の倍数になるなw
649仕様書無しさん:2007/12/22(土) 09:44:11
x = 8
でいいだろ
650仕様書無しさん:2007/12/22(土) 10:33:53
8や8倍した数は確かに8の倍数だな。間違いないw
651仕様書無しさん:2007/12/22(土) 11:55:11
>>650
「8の倍数にする」だけだと仕様として不完全、ってことだよな。

>>642
4ミリ秒が単位な処理系があった。
sleep(250) で1秒ウェイト、引数の型は unsigned char だったw
652仕様書無しさん:2007/12/22(土) 11:55:44
0は全ての数値の倍数!
653仕様書無しさん:2007/12/22(土) 12:15:33
>>646
すばらしい。
654仕様書無しさん:2007/12/22(土) 16:31:08
>>652
そう定義されるとすべての最小公倍数は0になる罠
655仕様書無しさん:2007/12/22(土) 16:33:07
ゆとりきたーーーーー
656仕様書無しさん:2007/12/22(土) 16:57:46
>>654 インド人は偉大だなw
657仕様書無しさん:2007/12/22(土) 17:06:21
>>654
マイナス値を許せば、最小公倍数は存在しないことになる。
658仕様書無しさん:2007/12/22(土) 17:28:06
マイナスへの拡張は世界が広がる。
無限小はマイナス無限大のことになるし。
659仕様書無しさん:2007/12/22(土) 17:47:05
最小公倍数の定義が正の整数だとは考えないのか?
660仕様書無しさん:2007/12/22(土) 17:50:08
そしてここで虚数の概念を導入
661仕様書無しさん:2007/12/22(土) 18:29:54
虚数だと大小の概念が一般的には無くなる
662仕様書無しさん:2007/12/22(土) 19:44:08
大小の概念を入れようと思えば入れられるけどな。
663仕様書無しさん:2007/12/22(土) 20:15:05
そろそろネタがなくなってきたな...
664仕様書無しさん:2007/12/23(日) 03:01:50
脱線するのはこのスレではよくあること
665仕様書無しさん:2007/12/23(日) 12:17:10
とりあえず x が整数型ではないというオチで終了だな
666仕様書無しさん:2007/12/24(月) 21:23:01
去年の話だけど、派遣のアホが

try:
 1000行くらい
except:
 return 1

って感じのソースを大量に作ってくれた。
キャッチされなければバグがないと思っていたようで、お正月はこれとにらめっこするはめになった。
667仕様書無しさん:2007/12/25(火) 00:23:32
派遣としては、阿呆と言われ様が何だろうがどうせ頑張っても搾取されるだけなので
馬鹿上司の目を眩ます為に適当に書いたに過ぎません。
668仕様書無しさん:2007/12/25(火) 01:38:01
Webショップの運営スタッフ 求人/有限会社エコッテ | 求人情報 Find Job !

あーまたエコッテの使い捨て人員募集の季節だなーw
今度は誰が■介店長のおもちゃになるのかなー((( ;゚Д゚)))ガクガクブルブル
エコッテの忙しい時だけ雑巾役使い捨て人員大募集!

あなたの任務は■介ちゃんが気に入る事をすることです。
あなたの仕事はwebショップ全ての運用です。
他の人員は遊ぶ為にいるだけですからしっかり働いて下さい。
エコッテは社長よりも■介店長ちゃんが絶対です。
社長の意見は■介店長が決めています。
どんな扱いをされても言う事を聞きなさい。
プライベートでも何かを無理やり強要された時も聞きなさい。
そうしないと解雇です。

エコッテの場合社長よりも店長の■介ちゃんの機嫌で流れが変わるから大変だおー
社長の意見より■介ちゃんがエコッテでは何でも決めるんだおー
社長は宮崎県の恥だおー
柄の悪い社長だから東くんが可愛そうだおー
おばちゃん社長は金に汚いおー
親切ぶりっ子得意の演技に騙されちゃ駄目だおー

Webショップの運営スタッフ 求人/有限会社エコッテ | 求人情報 Find Job !
何時も嘘が多いー
まる投げだおー
社長は■介に任せてるから大変だおー
■介の下は最悪だおー ウー c(`Д´c)
エコッテの伝統エコッテの使い捨て人員募集の季節だなーw

Webショップの運営スタッフ 求人/有限会社エコッテ | 求人情報 Find Job
669仕様書無しさん:2007/12/25(火) 12:58:51
>>666
自分ところでException上がるといろいろ面倒だからね、派遣の立場なら俺だってそうする
670仕様書無しさん:2007/12/25(火) 13:01:09
俺も派遣されたら
そうすることにするか
671仕様書無しさん:2007/12/25(火) 20:15:32
流石にソースレビューくらいするだろう・・・
672仕様書無しさん:2007/12/25(火) 20:29:41
結構しない所、多いよ。
673仕様書無しさん:2007/12/25(火) 20:35:52
レビューもしない テストもしない 検収もしない 責任が不明瞭 方針があいまい

しかし文句や愚痴は言う。
674仕様書無しさん:2007/12/25(火) 22:06:25
ソースというかログ出力

...("Listen failed");
...("Accept failed");
の下に
...("Tusin failed");
675仕様書無しさん:2007/12/25(火) 22:49:36
何かと思ったら通信のことか
676仕様書無しさん:2007/12/26(水) 01:03:24
>>671
しないよ、結合して動かしてログに例外が出てから文句が来る
引数がおかしいとかで例外にするのが正しくても文句が来たら失点1
677仕様書無しさん:2007/12/26(水) 02:08:06
"Junsei failed."
678仕様書無しさん:2007/12/26(水) 02:08:45
Jinsei って書こうと思ったのにfailed
679仕様書無しさん:2007/12/26(水) 02:36:33
純正Windowsじゃなかった場合ですね
680仕様書無しさん:2007/12/27(木) 00:25:59
↓こんなコメントが多数あるとちょっと・・・と思う

/* 暫定。ID:xxxxの不具合対応。今回はこのままで。次期開発で何とかしてください */
681仕様書無しさん:2007/12/27(木) 00:39:42
日常茶飯事です('A`)
682仕様書無しさん:2007/12/27(木) 01:18:39
// 適当に確保
// とりあえずこれでOK

とか普通にあるんだぜ。何を言ってるのかわからn(ry
683仕様書無しさん:2007/12/27(木) 01:24:27
経緯を理解すれば意味もわかる。たぶん。おそらく。きっと。
684仕様書無しさん:2007/12/27(木) 01:34:45
グローバル変数の名がtmp1、tmp2、tmp3とか泣けてくる。
685仕様書無しさん:2007/12/27(木) 03:24:40
たぶん、温度の1,2,3なんだよ。きっと。もしかしたら。
686仕様書無しさん:2007/12/27(木) 15:01:24
意外と添付ファイルの1,2,3だったりする
687仕様書無しさん:2007/12/27(木) 18:02:30
実は684は音響系ソフトウェア開発のメンバーで、同僚の書いたtmp1とかは音楽のテンポの事だったりとかして
688仕様書無しさん:2007/12/27(木) 18:14:54
なにその妙に前向きな解釈
689仕様書無しさん:2007/12/27(木) 21:42:02
テンプレート(フォーマット的な意味の)の番号かもしれない。
690仕様書無しさん:2007/12/27(木) 23:07:42
座標系の計算してる途中のループカウントの変数 z とかカンベン。。。。
691仕様書無しさん:2007/12/27(木) 23:14:32
>>690
それ意図的に組んだトラップじゃないのかw
692仕様書無しさん:2007/12/28(金) 00:02:17
ループカウンタをi〜zまで使うほどのループだったりしてな
693仕様書無しさん:2007/12/28(金) 00:25:55
もうそれならいっそ配列で扱ってもいいね。
694仕様書無しさん:2007/12/28(金) 01:04:04
そしてそのポインタをループ内で動かしたりする謎の動きを
695仕様書無しさん:2007/12/28(金) 10:47:31
"i"はimportantの頭文字。
重要な値を格納してグローバル変数として使うには最適だよな!
696仕様書無しさん:2007/12/28(金) 11:37:47
先輩が作ったソフトで。

処理中に一時的にできる中間ファイルのフォルダを、GetTempPathで取得したフォルダに
したはいいが、用が済んだ時点で削除する処理を入れ忘れたのでtempフォルダがとんでもない
ことになり、しかもウイルスと勘違いされてアンチウイルスソフトが警告吐いて大騒ぎになったことがある。

システムに関わるフォルダを触るときは気をつけようと思った。
697仕様書無しさん:2007/12/28(金) 21:50:46
そういうのってまともな設計書とテスト用意していたら気づくよね。
698仕様書無しさん:2007/12/28(金) 22:30:15
・tempフォルダはシステムにかかわるフォルダではない
・ウィルスと勘違いされるんなら、フォルダはどこでも関係ない

で、何が言いたいんだろう?
699仕様書無しさん:2007/12/28(金) 23:02:57
デバッグコードが#ifdefで切られておらず、そのまま製品に載ってるとかあったな。
そんで改修理由にそんなこと書けず特に問題もないのでそのままってことが・・・

とある機能内でエラーが発生した場合、
かなり詳細なdumpが画面に出力されてしまうっていうヤツなんだけどな
700仕様書無しさん:2007/12/28(金) 23:04:41
沸点低いねー
701仕様書無しさん:2007/12/29(土) 00:11:44
>>699
画面に表示されず、ファイル出力とかならOK?
702仕様書無しさん:2007/12/29(土) 01:32:47
printf("これが出ちゃったらかなりヤバイよ〜\n");
703仕様書無しさん:2007/12/29(土) 03:48:57
これが出ちゃったらかなりヤバイよ〜
                       これが出ちゃったらかなりヤバイよ〜
                                              これが出ちゃったらかなりヤバイよ〜
・・・何度も出るとこうなる。
704仕様書無しさん:2007/12/29(土) 10:59:02
>>699
windows95?
705仕様書無しさん:2007/12/30(日) 08:37:54
>>561
デバッグログを仕込むときは、このコーディング規約の方が
楽でいいぞ。
706仕様書無しさん:2007/12/30(日) 08:40:49
なるほど
考えてみれば確かに
707仕様書無しさん:2007/12/30(日) 10:03:15
goto falseend;
goto trueend;

goto falseend;
return false;
goto trueend;
return true;


こんなことするよりは、returnをデバッグ用とそれ以外に置き換えたほうがいいよな。
誰かやってる?
708仕様書無しさん:2007/12/30(日) 10:24:41
なんかゲームのマルチエンディングシステムみたいだなwwwww
709仕様書無しさん:2007/12/30(日) 18:06:28
>>561
自動解析しやすいってのもあるな。
あとアセンブラレベルまでやる
必要がある分野でも楽になる。
710仕様書無しさん:2007/12/30(日) 21:21:42
.net 以前の VB の話ですが、

GoTo Continue

はだめですか?
711仕様書無しさん:2007/12/30(日) 22:56:43
>710
あんまし見てて気持ちのいいモンではないが
ループにbreak相当はあってもcontinueの無い言語だからなぁ。
100%禁止とも言いかねる
712仕様書無しさん:2007/12/30(日) 23:03:51
On Errorならしょうがない
713仕様書無しさん:2007/12/31(月) 00:33:47
>>710
resume next
よりは一億倍マシ。
714仕様書無しさん:2007/12/31(月) 00:54:51
サードパーティ製品のサンプルにresume next で書いてあるの多くて困る・・・
715仕様書無しさん:2007/12/31(月) 01:21:29
resume nextした上で全ての命令でerrの判定すると障害箇所が特定しやすくていいと思うんだが
そんなソースコードは見たこと無いな
716仕様書無しさん:2007/12/31(月) 06:24:44
unsigned int xxxxx ;
char xxxxx ;
HOGE xxxxx ;

最後のセミコロンを合わせるのはなぜなんだぜ?
717仕様書無しさん:2007/12/31(月) 06:26:16
unsigned int xxxxx ;
char xxxxx      ;
HOGE xxxxx     ;

間違ったんだぜ?
718仕様書無しさん:2007/12/31(月) 06:39:49
>>717
それはあなたのところのローカルルールだと思いますよ
メーカーのサンプルコードでもそういうのは見たことがないですから
719仕様書無しさん:2007/12/31(月) 10:05:17
>>716

>>なぜなんだぜ?

↑最近よく見るんだが、何これ? 若者言葉?
720仕様書無しさん:2007/12/31(月) 10:22:47
>>719
多分、ギャグマンガ日和のソードマスターヤマトが元ねた。
721仕様書無しさん:2007/12/31(月) 11:41:07
職業プログラマじゃないのでスレチだが、
昔VBで作ったゲームのソースを久しぶりに見てみたら、タイマーコントロールを12個
並べて処理をやってた…orz しかも全部同じインターバル…
722仕様書無しさん:2007/12/31(月) 13:14:06
昔書いたソースが恥ずかしいのは誰でも同じさ
723仕様書無しさん:2007/12/31(月) 13:26:58
青春の汚点
724仕様書無しさん:2007/12/31(月) 13:53:36
ついこの間書いたソースでさえ納期に追われてとんでもない事になっているというのに
725仕様書無しさん:2007/12/31(月) 13:59:56
中年の汚点
726仕様書無しさん:2007/12/31(月) 14:44:44
動けば金貰えるから気にしない
727仕様書無しさん:2007/12/31(月) 15:19:02
その意識でいる限り、下手なソースを繰り返し作る事になるから、毎度毎度気にすることにしている。
728仕様書無しさん:2007/12/31(月) 15:42:56
>>727
一度作ったソースには二度と手を触れない俺最強!
そんなソースから生成されたバイナリがお前らの家庭の中に満ちあふれている事実wwww
729仕様書無しさん:2007/12/31(月) 15:52:09
>>728
一度作ったソースに手を触れるかどうかではなく、一度作ったソースに対して悪いところを見つけて次に生かすかどうかという意識が問題。
人間誰だって最初は間違ったコードや、非効率なコードを書くものだ。
常にそれらを反省し、次はより良い物を作ろうという意識をどれだけ持っているかが重要になると思う。
俺は、それさえ意識していれば、既存コードに手を触れる必要なんて無い場合もあるとは思っている。
ただし、手を触れずに捨てる事はあるがな。
730仕様書無しさん:2007/12/31(月) 21:06:22
>>729
自分が書いたクソコードなんか他人に押し付ければ問題なし
他人が修正しくじっても元ソース書いたヤツの責任問われることはない
修正しくじったやつは責任問われるというか、後始末に追われて大変なことになるだろうけど
731仕様書無しさん:2007/12/31(月) 22:33:07
>>730
おまいさんの能力が生涯ゴミクズレベルだというのはよくわかる
732仕様書無しさん:2007/12/31(月) 22:43:20
>>731
弱小なPGなおいらだけど

731の意見には賛成するわ・・・。
733仕様書無しさん:2007/12/31(月) 23:16:04
>>731
禿同
その場を切り抜けりゃどうでもいいって技術者として恥ずかしくないのかね
734仕様書無しさん:2007/12/31(月) 23:32:23
禿同
735仕様書無しさん:2007/12/31(月) 23:35:16
探究心失ったら終わりだろ
736仕様書無しさん:2007/12/31(月) 23:43:22
では、キミには中途半端な再現率の
VBすらまともにかけないオッサンの書いた
おそろしく単純なバグが積み重なった
VBAのフォームのバグ原因を探求する権利を与えよう
737仕様書無しさん:2008/01/01(火) 00:13:30
>>736
thx
興味がわいたら解き明かしてみるよ
738仕様書無しさん:2008/01/01(火) 01:02:44
>>736
それを生み出したおっさんの脳みそかき回したら答えが分かる。
739735:2008/01/01(火) 01:06:37
>>736
申し訳ありませんwwwwwwwwwwwwwwwwww
740仕様書無しさん:2008/01/01(火) 01:06:55
そのおっさんの頭にパラレルでもUSBでもLANでも つけてやってプリンタでも
ダイレクトしてやれば、「なんか」でてくるだろうよ。
741仕様書無しさん:2008/01/01(火) 01:22:29
んで原因はMSのバグだったりするオチ
742仕様書無しさん:2008/01/01(火) 01:56:34
新年早々笑えねーよ...
743 【大凶】 【1061円】 :2008/01/01(火) 02:31:41
皆さん、あけおめ ことよろ
744 【大吉】 :2008/01/01(火) 04:44:06
新年早々だけど辞表を書くか・・・
745仕様書無しさん:2008/01/01(火) 10:23:58
>>744
アッー!
746仕様書無しさん:2008/01/01(火) 14:34:02
Winで開発しているとき、CreateFileとかで、
CreateFile("FileName", ……
とかやられるとムカつくのは俺だけだろうか。きちんとTCHAR使えと。
747仕様書無しさん:2008/01/01(火) 14:51:59
>>746
ありえねーw
せめてどこかに定義したファイル名変数にしろと。

LPCTSTR g_lpcHogeNameとかな
748仕様書無しさん:2008/01/01(火) 14:56:06
>>747
いや、上のはあくまで、ここに書き込むため適当に書いただけで、
ファイル名変数にしても、型がcharになっちゃうんだよ。
LPCTSTRとか言いながら、"xxxx"みたいなのを代入していたりするわけ。
要するに、TCHARをcharとして使っている。
749仕様書無しさん:2008/01/01(火) 15:24:17
>>748
LPCってコンスト宣言でしょ。
それって”文字”と同じですよね。
750仕様書無しさん:2008/01/01(火) 15:50:58
なんかハードコーディング嫌いというか
定数化変数化にやたら拘る方が最近多いみたいなんだが
文脈をちゃんと読めば論点がそこじゃないことぐらい理解できるだろ?
751仕様書無しさん:2008/01/01(火) 15:51:45
>>749
代入つーより、初期化か
LPCTSTR xxxx = "yyyyy";
とかな。こんなやつ。

だから、要するにTCHARとcharの混合が許せるかどうかと……
752仕様書無しさん:2008/01/01(火) 16:32:15
すべてただの文字列として使ってればおkだな
そして区別つかない奴はただの文字列としてだけつかうだろう
753仕様書無しさん:2008/01/01(火) 16:32:32
なんかちょっと前にも文脈と関係のないリテラル数値に一生懸命突っ込んでいる人を見た気がする
754仕様書無しさん:2008/01/01(火) 16:38:30
ただの文字列って、明らかに文脈が分かってない人の言葉だな。
TCHARって意味分かってるかな。
CreateFileの第一引数の型が何なのか分かってるのかな。
絶対分かってないだろうな。
755仕様書無しさん:2008/01/01(火) 16:40:48
うちはコーディング規約で
LPTSTR aaa="bbbb";
って書かなきゃいけないことになってる
Tの意味をわかってる人がいないから正しく書いても理解してもらえない
わかってる人がいないのにTを使わなきゃいけない理由は謎
756仕様書無しさん:2008/01/01(火) 16:49:20
unicodeに丸っきり対応する気がなくてWinAPI使うときはちゃんとAの方を明示的に使えってこと?
それともunicodeに対応する気無しなのがダメ?
意味もなくTCHAR使うのと微妙に別問題な気が
757仕様書無しさん:2008/01/01(火) 16:57:03
>>756
違う型を混ぜるなというのが一番言いたい事。
まぁ、unicodeに対応するつもりが無いんだったら、Aでも良いんじゃないかとは思う。
だが、それでな。こんなのも見た事があるんだわ
char fileName[_MAX_PATH];
って奴。もちろん、文字列のバッファサイズが足りなくなって落ちる。
これに対応しようと思うとTCHAR使って欲しいもんだ。
そうすると、少しは落ちにくくなる……
758仕様書無しさん:2008/01/01(火) 16:57:57
>>731
>>732
>>733
その考え方だと前任者のクソさにイライラしすぎて夜眠れなくなると思う
あー、転職マンドクセ
759仕様書無しさん:2008/01/01(火) 16:59:18
760仕様書無しさん:2008/01/01(火) 17:12:47
わざわざ
(LPCTSTR)"hogehoge"
って引数に渡してるの見たことある
761仕様書無しさん:2008/01/01(火) 17:41:03
unicode UTF-16 いいよぉ
762仕様書無しさん:2008/01/01(火) 18:10:39
プログラム全体がcharで書いてあるのに、Windows API を呼びだすときだけ、
TCHARを使わなければいけないなら、それはそれで萎えるぞ。
かといって、CreateFileAを使うのも、なんか違うような気がするし。
763仕様書無しさん:2008/01/01(火) 21:10:00
単純に、
CreateFile(_T("hoge.txt"),... );
にしろってことじゃないの?
764仕様書無しさん:2008/01/01(火) 21:15:11
Tの意味わかってないって・・・・。
単純に""で囲んじゃTの意味が無いよなw

765仕様書無しさん:2008/01/01(火) 21:22:27
・・・は?
766仕様書無しさん:2008/01/01(火) 21:27:12
##と、組み合わせて
_TSTR(hoge.txt)みたいにかけるようにして
767仕様書無しさん:2008/01/01(火) 21:38:56
>>763
既にコードがchar型で色々なところまで至っている場合は……
変えなきゃならないところは、別にCreateFileの引数だけじゃない。
それを変えるだけで、プログラム全体にまで変更が及ぶケースがある。
768仕様書無しさん:2008/01/01(火) 22:56:29
統一せず、APIだけTCHARに1票。
インターフェース境界なんだからしょうがないと思う。
そういうところはあえて汎用的な型にするのは普通かと。
この逆の状況が頻繁に起こるのが、Winアプリにオープンソース組み込んだ場合。
769仕様書無しさん:2008/01/02(水) 00:06:56
そこら辺は意見の分かれるところだろうな。
ただ、知らないで使ってるとか、どう考えてもTCHARとcharで手間が変わらないとか、そんな時には殺したくなるな。
特に>>760書いた奴なんて死ねば良いのにと思う。
770仕様書無しさん:2008/01/02(水) 00:11:02
(LPCSTR)でキャストなら普通にするよね
771仕様書無しさん:2008/01/02(水) 00:28:46
>>770
しない。
渡した先でLPCとして処理するから特に気にしない

俺だけかもしれないが。
772仕様書無しさん:2008/01/02(水) 00:40:09
>>771
でもワーニング出るから無能役立たず使えねーって言われるよ。
773仕様書無しさん:2008/01/02(水) 01:09:38
>772
ワーニングが出ることをそこまで気にする現場があることにびっくりだ
……いや、気にすべきだと思うけどね俺は
774仕様書無しさん:2008/01/02(水) 01:22:53
>>773
その割にはmain()が受け取る引数はメモリリークしてたけどね。
775仕様書無しさん:2008/01/02(水) 01:23:18
unicodeに対応する気ないから全部charならいいんだけど
LPTSTR hoge="hogehoge";
みたいにT使っといてunicodeに対応する気なしとかは非常にバカに見える
でもってそういうソースに修正入れるときとか元のソースの秩序を壊さないように
俺もそれに合わせてバカコード書いたり

>>768
合わせるなら型よりも型にあった中身にしなきゃいけないことのが難易度高い
となると全部ちゃんとTCHARにしたほうがかえって楽だと思う
と思うが自信ない、反論求む
776仕様書無しさん:2008/01/02(水) 01:25:21
NTFSでは自動でunicodeになるんじゃないの?
短いファイル名はASCIIとシフトJISと思うけど。
777仕様書無しさん:2008/01/02(水) 01:33:58
そんなキャストしなきゃ警告でるって警告レベルが厳しかったりするのかな
とにかく警告が出てて、かつ原因が明確ならキャストで黙らせるのが正しいと思う
たいていの人は>>770は警告黙らせるためのキャストには見えないと思う
778仕様書無しさん:2008/01/02(水) 01:59:36
warning出しちゃだめだろ。
っていうか気にしない現場なんてあるの?

だからといってとりあえずキャストってのもどうかとは思うけど
779仕様書無しさん:2008/01/02(水) 02:07:50
>>776
お前にはプログラムを組ませたくないな。
780仕様書無しさん:2008/01/02(水) 04:50:02
>>779
なぜ

ところでこれ知ってた?
>この問題を解決するには、クロスプラットフォームで作業する場合はファイル名に濁音や半濁音を使わないというルールを守るしかないでしょう。
781仕様書無しさん:2008/01/02(水) 05:14:11
誰もTマクロを理解してないと思われ
782仕様書無しさん:2008/01/02(水) 05:36:38
知らないってことは、恐ろしい・・・・
教えても理解できない(教え方も悪いかもしれないけど、こんな簡単なこと分からないはずがないと思うのだが)
いったい、どうすれば
783仕様書無しさん:2008/01/02(水) 05:36:39
http://duga.jp/prog/download?id=ap-maniappv-0028&fname=sample/sample.wmv
そんなことよりこれよくね?リアル。
784仕様書無しさん:2008/01/02(水) 06:24:24
>>779
あんたいちいちファイルシステムがNTFSなのかFATなのか判別して文字コード変換してファイル名操作してんの?
785仕様書無しさん:2008/01/02(水) 06:51:10
>>780
ファイル名にASCII文字以外の文字を使ってることに驚きなんだが・・・
今時のコンパイラなら例えば”ほげ.cpp”をちゃんと読み込んでくれるだろうとは思うが、
それでも日本語を使うのはおかしいだろ
786仕様書無しさん:2008/01/02(水) 10:02:54
>>78
オレがその質問に答えよう
アンチ ブルーユニット システム
のことだ
出典:KURAU Phantom Memory
787仕様書無しさん:2008/01/02(水) 12:01:03
>>83
それはあべせ
788仕様書無しさん:2008/01/02(水) 12:33:04
上からずらっと書け
関数を使うな(ソースを追いにくいんだそうだ)
といわれたとき決心した
789仕様書無しさん:2008/01/02(水) 12:38:36
それは決心すべきだな
790仕様書無しさん:2008/01/02(水) 14:14:42
べきだな
791仕様書無しさん:2008/01/02(水) 14:23:25
関数内クラスでクロージャもどきを書いて抵抗しろ。
792仕様書無しさん:2008/01/02(水) 14:57:58
>>785
だれが開発プロジェクトのファイル名の話してる?

おまえはヘッダ読み込むのにダブルクォーテーションでくくってるってことなのか
自作コンパイラでも使ってるってことなのか。
793仕様書無しさん:2008/01/02(水) 14:59:41
何だこの流れ
カオスすぐる
794仕様書無しさん:2008/01/02(水) 15:46:58
>>792
んじゃ、何の話をしてるのかはっきり言ってみろよ
1度だけ、後出しじゃんけんとか言って煽らないで聞いてやるからよ
795仕様書無しさん:2008/01/02(水) 15:50:11
776とは作業したくない
796仕様書無しさん:2008/01/02(水) 15:55:26
ってか、純粋に>>776の意味が分からないんだけど
NTFSだと、自動的に「何が」「どのタイミングで」「何から」unicodeに変化するんだ?
また、一々変化するってことは、unicodeに変化した後また戻るって事か。
それはいつのタイミングで、戻るんだ?
797仕様書無しさん:2008/01/02(水) 16:06:55
>>746が出てきてどうすればOKなのか書けばヨロシ
798仕様書無しさん:2008/01/02(水) 16:18:44
うん。そうだな。
CreateFile("FileName", ……

このコードでNTFSだと何がどのタイミングで何から何になりそれがどう影響するのか。
このコードでFATだと何がどのタイミングで何から何になりそれがどう影響するのか。
このコードでNASだと何がどのタイミングで何から何になりそれがどう影響するのか。

それを最初に説明してもらおうか。
799仕様書無しさん:2008/01/02(水) 16:19:28
そういえばHPFSもサポートしてるんだよな。
800仕様書無しさん:2008/01/02(水) 16:20:11
>>776は最近のWindowsがファイル名を
内部的にUnicodeで扱っているという話を
どこかで聞きかじって、8.3形式の問題と
取り違えてこんな発言をしたと思われる。
彼はまだこれからの人材だ。見逃してやってくれ。
801仕様書無しさん:2008/01/02(水) 16:24:32
つか、>>776がたとえ不完全な知識だったとしても、
普通に考えれば自動的に変化するなんてことは思いつかないだろ。
明らかに、論理思考力が欠けてるんじゃないかな。
802仕様書無しさん:2008/01/02(水) 16:26:38
でも実際NTFSでもFATでも気にしてないけどちゃんと動いてるよ。

自動で処理できないならWindowsAPIって必要ないんじゃね?
803仕様書無しさん:2008/01/02(水) 16:30:59
>>798
>CreateFile("FileName", ……
>このコードでNTFSだと何がどのタイミングで何から何になりそれがどう影響するのか。

このコードだと、実行時にCreateFileAというAPIが呼ばれ、
その内部で、文字列"FileName"が入力の文字コードからUnicodeに変換されて処理される。
どう影響するか、と言われても特にこの変換が影響する事は無い。まぁ、せいぜいオーバーヘッドがどーとか、そんな話。
804仕様書無しさん:2008/01/02(水) 16:32:57
>>803
じゃあCreateFileはFATファイルシステムには使えない危ないAPIってことですね。本当にありがとうございました。
805仕様書無しさん:2008/01/02(水) 16:34:02
日本語で250文字くらいのファイルが作れてしまう、ってのもねー。
Find*FileAがそのファイルで失敗しやがってもー。
806仕様書無しさん:2008/01/02(水) 16:35:34
なにこのテラカオス

>>776はここを読んだらしい。
ttp://www.informe.co.jp/useful/dtp/dtp23.html

「ファイル名をASCII互換文字にすること」を
「ファイル名の内部処理形式の文字コードがASCII」
と誤解。それがすべての始まり。

もうこの話はやめないか。
807葉猫 ◆Jz.SaKuRaM :2008/01/02(水) 16:40:51
vfatって組み込みで使うと著作権料とられるのがムカツクよな。

unicodeへの変換テーブル作る気は起きんからいいけど。
808仕様書無しさん:2008/01/02(水) 16:43:29
続けたいなら続けたいでかまわんが
前提をきっちり整理してからにしてくれ
論点が擦れ違いまくりの煽りあいだけのカオス状態はもう勘弁
809仕様書無しさん:2008/01/02(水) 16:44:01
空気嫁糞コテ
一度死んどけ
810仕様書無しさん:2008/01/02(水) 16:47:01
じゃあシフトJISに見えて実はシフトJIS互換UNICODEで書き込んでたのか。
811仕様書無しさん:2008/01/02(水) 17:05:41
>>808
前提だな。
NTFSロングファイル名はUNICODE
NTFSショートファイル名はシフトJIS
FAT16、VFATはシフトJIS
FAT32は不明。CP132ってなに?あ、なんかUTF8とか書いてある。


そうか。ショートファイル名は8.3だからASCIIじゃないといけないと思ったがUTF8なのかな。
でもFATはシフトJISじゃないとWindows9xで扱えないよな。
え?VFATになったときにUTF8になったって?まじですか?

ディスク上でVFATはUNICODEだけどAPIがシフトJISだから文字セットがシフトJIS・・・なるほど。
812仕様書無しさん:2008/01/02(水) 17:08:57
そういえばWindows95で使ったディスクをDOSで覗くとファイル名壊れまくりだったもんな。
文字らしきものが見えなかったのは文字コードが違ってたからか。
813仕様書無しさん:2008/01/02(水) 17:12:12
いろいろ勉強したいので>>811が参照したソース希望。
814仕様書無しさん:2008/01/02(水) 17:25:48
文字コード規格の基礎
http://itpro.nikkeibp.co.jp/article/COLUMN/20061122/254626/?P=3

Windowsパーティションにおける文字エンコーディングの問題
http://www.9203.net/pukiwiki/index.php?cmd=read&page=%CA%B8%BB%FA%A5%B3%A1%BC%A5%C9#content_1_2

OSとファイル名の関係に気をつけよう
http://www.informe.co.jp/useful/dtp/dtp23.html

プログラマから見た NTFS 2000 Part1: ストリームとハード リンク
http://www.microsoft.com/japan/msdn/windows/windows2000/ntfs5.aspx

http://gigazine.net/index.php?/news/comments/20060728_execution_teenage_girl/
http://www.erotown.com/toupara/bbs/b03_2/index.cgi

Windows領域の日本語ファイル名を扱えるようにする
http://iris.homeunix.net/yayoi/freebsd/japanese/jamount.asp
815仕様書無しさん:2008/01/02(水) 17:26:02
DWORDをdoubleに置き換える上司。
配列の添え字にその変数を入れてエラー。
同じことをしてdouble変数でビットテストしようとしてエラー。
客先での言い訳が「lccなんでコンパイラ側が対応しきってないんですよねー、てへへー」だった。
もう帰ってくるなと思った。
816仕様書無しさん:2008/01/02(水) 17:29:33
お前が対応できないんだwwwwwwwwwwww
817仕様書無しさん:2008/01/02(水) 17:30:09
818仕様書無しさん:2008/01/02(水) 17:33:38
>>814,817
ありがとう。
819仕様書無しさん:2008/01/02(水) 17:41:59
>>817
NTFSDOSってなくなったんだよな・・・
まあLinuxでいけるしNTのコマンドラインモードもあるけど。

NTFSfor98を試用するように薦めたんだけど、
期限が来て、突然見えなくなって消えてしまったんだよな。
その人が担当したすべてが消えちゃったとか。
その一週間後、その人は別のとこに異動。まあ外注だったし。
820仕様書無しさん:2008/01/02(水) 17:45:18
地図情報と観測情報を組み合わせてメッシュ表示する
アプリケーションで、
スタティックコントロールが3000個あまり貼り付けて
あったのを見たとき、目眩を覚えた。
821仕様書無しさん:2008/01/02(水) 22:58:52
//this fanction は connectingにcallするべし。

お前はコメントの書き方を勉強するべし
あと、fanctionって何?
822仕様書無しさん:2008/01/02(水) 23:13:26
fanction [f ae n k sh o n]
823仕様書無しさん:2008/01/03(木) 03:31:33
>>821
そういうキッツイコメントだと、”this fanction”の実装に期待が高まるのが人情。
とりあえず、上中下、松竹梅とかでかまわないから評価してみないか?
824仕様書無しさん:2008/01/03(木) 03:35:09
connectingにってのが形容動詞?
825仕様書無しさん:2008/01/03(木) 03:45:05
ルー大柴っぽくコメントするべし
826仕様書無しさん:2008/01/03(木) 10:21:31
ならセルフ通訳も添付w
827仕様書無しさん:2008/01/03(木) 22:31:00
ルー大柴のテンションで実装すると、全てのクラスをフレンドにしたい気持ちになる
828仕様書無しさん:2008/01/03(木) 22:43:13
ワロスwwwwww
829821:2008/01/03(木) 23:03:25
>>823
すまんが、中身についてはあまり書き込めない。
だが、多分期待通りの無いようだと思う。
一番気になったのは、必要も無いのにnewでメモリ確保してるところかなぁ……
と言っても、ソース見なきゃ分からんわな。すまん。
830821:2008/01/03(木) 23:04:10
無いよう→内容
831仕様書無しさん:2008/01/04(金) 01:44:57
内容が無いようってか
832仕様書無しさん:2008/01/04(金) 04:18:05
    _, ._
  ( ゚ Д゚)
  ( つ旦O
  と_)_)
    _, ._
  ( ゚ Д゚)
  ( つ O   ガシャ
  と_)_)  __
       (__()、;.o:。
         ゚*・:.。
833仕様書無しさん:2008/01/04(金) 06:58:51
>>830-832
おまえらのせいで噴出した鼻水が
コーヒーにはいっちまった……
834仕様書無しさん:2008/01/04(金) 11:33:31
プログラムの内容が無いよう

main(){}
835仕様書無しさん:2008/01/04(金) 23:47:11
↑NULLプログラム
836仕様書無しさん:2008/01/04(金) 23:53:39
NullProgramarException
837仕様書無しさん:2008/01/05(土) 06:53:58
この早さなら言える




ぬるぷ
838仕様書無しさん:2008/01/05(土) 10:36:04
>>837
return 0;
839仕様書無しさん:2008/01/06(日) 01:47:20
無いよう.html

<html>
<head></head>
<body></body>
</html>
840仕様書無しさん:2008/01/06(日) 02:59:41
どのHTMLバージョンか忘れたが、title要素は省略不可だったな。
841仕様書無しさん:2008/01/06(日) 04:49:04
そうだね。省略不可だ。
http://www.w3.org/TR/html401/struct/global.html#h-7.4.2
Every HTML document must have a TITLE element in the HEAD section.
842仕様書無しさん:2008/01/06(日) 06:48:19
規格に準拠してるサイト自体が少ないこんな世の中じゃ
843仕様書無しさん:2008/01/06(日) 10:15:55
ポイズン
844仕様書無しさん:2008/01/06(日) 10:22:34
例外が零以外
catch(int x){
 if(x) std::cout << "例外が零以外" << std::endl;
}
845仕様書無しさん:2008/01/06(日) 21:18:31
投げちゃえるからしょうがないとはいえ
やっぱintとか例外と関係ないもんthrow-catchされるとそれだけでイヤソ
846仕様書無しさん:2008/01/09(水) 23:37:02
hashtable.Add("0", abc)
hashtable.Add("1", def)
hashtable.Add("2", ghi)

ねーよw
847仕様書無しさん:2008/01/09(水) 23:40:09
>>846
・文字も入る可能性がある
・型はアレだが数字が連続していない可能性がある
・実はコード値だった

まあ考えるに、ディクショナリ脳に犯された奴のコードかw
848仕様書無しさん:2008/01/10(木) 00:44:00
ハッシュテーブルの何たるかを知らずに最近ハッシュテーブルの偉大さだけを知った無能上司に無理矢理書かされたんじゃね
849仕様書無しさん:2008/01/10(木) 01:10:58
>>842-843
和んだwwwwwwwwwww
850仕様書無しさん:2008/01/10(木) 16:15:49
VBでアレだけど

画面によって使用しているフォントが違うのは勘弁してホスィ・・・・・
851仕様書無しさん:2008/01/10(木) 20:41:13
いちいちフォントを変える暇人がいるとはな・・・
さすがVBだぜ
852仕様書無しさん:2008/01/10(木) 20:53:36
プロポーショナルは読みにくいとか
明朝にしてくれとかヘンな顧客も多い現実
853仕様書無しさん:2008/01/10(木) 20:59:53
CFont* pFont = new CFont();
//ほにゃらら
CButton* pButton = new CButton……
pButton->SetFont(pFont);

こんな感じで、全部のコントロールにフォントを割り振ってるのを見たことがある。
VC++、MFC
854仕様書無しさん:2008/01/10(木) 21:23:37
へぇ、ふぉんとぉ?
・・・ごめん、漏れ疲れてるんだ。
855仕様書無しさん:2008/01/10(木) 21:34:49
木枯らしに乗って去ね
856仕様書無しさん:2008/01/10(木) 23:55:16
>850
画面ごとに担当別だったんじゃね?

……それでフォーム4つにそれぞれ似て非なるプロシージャがあるなんて
スカタンなシロモノが作られたりすんだけどなorz
857葉猫 ◆Jz.SaKuRaM :2008/01/11(金) 21:45:35
漏れ画面に表示つる文字全部ファイルから読み込んでるぜ_| ̄|○
858仕様書無しさん:2008/01/11(金) 21:53:29
>>857
読み込むタイミングは?
昔、描画するごとにファイルから読んでるアプリを見たことがあってなぁ……

VC++、MFCだったんだがOnDraw(CDC* pDC)の中でファイルの入出力をガシガシやってた……
859葉猫 ◆Jz.SaKuRaM :2008/01/11(金) 21:59:50
画像を表示つる場合は画像作成時のみ。 ダイアログの場合はCreateちたときでつ。
860仕様書無しさん:2008/01/12(土) 02:52:00
。。。。。。。。。。で?
861仕様書無しさん:2008/01/12(土) 03:50:03
バランス感覚のない奴ってのはどこにでもいるんだな
862仕様書無しさん:2008/01/12(土) 04:25:21
俺、閉眼片足立ち3秒・・・
863仕様書無しさん:2008/01/12(土) 05:19:32
もうちっと足腰を鍛えませう
864仕様書無しさん:2008/01/12(土) 05:25:37
>>862
アンダーグラウンドのサービスを呼ぶ
どんな時も万全に応えられる
865仕様書無しさん:2008/01/13(日) 13:38:57
客A「フォントはMSPゴシで」弊社「了解しますた」で、MSPゴシで作成
ちょっと経過してから、客Bから
「客Aのところと似たようなのが欲しい、ただしフォントはMS-UIゴシで」弊社「まじっすかorz」
さらに数日経過して、客Cから
「客Aのと同じようなソフトだけど○○画面と○○画面はMS明朝でヨロ」弊社「勘弁してorz」

・・・・ということが続いたので、うちもフォント名は外部に出して、起動時に設定するようにしてるorz
非VBerから見たらアホみたいなことしてるんだろうなあ・・・・とは思うけど。
866仕様書無しさん:2008/01/13(日) 14:23:48
orz
orz
orz
orz
orz
867仕様書無しさん:2008/01/13(日) 19:13:52
フォントとサイズは設定ファイルだろ。
ボタン等の文字列も外だしだな。英語板とかあるし。
868仕様書無しさん:2008/01/13(日) 19:24:28
本来はテキストは全部専用ファイルにするべきだろうけど自分はやってなかったな。
めんどくさいもん。
869仕様書無しさん:2008/01/13(日) 21:41:40
ま、オレは中出しだがな。
870仕様書無しさん:2008/01/13(日) 22:01:45
>>865みたいな受託案件で英語版とか出てくる
発想がすごいな。>>867、学生さんかな?
871仕様書無しさん:2008/01/13(日) 22:20:30
フリーソフト作家かなんかじゃねぇの
872仕様書無しさん:2008/01/13(日) 22:31:07
VBでフォント変更くらいなら一括置き換えできるだろう
873仕様書無しさん:2008/01/13(日) 22:38:56
一括置き換えって何?
874仕様書無しさん:2008/01/13(日) 22:59:40
つか、普通バイナリリソース以外はテキストエディタで開いてみるだろ。
でもって必要ならsedとかperlとかつかって一括変換とか普通にやるだろ女子校
875仕様書無しさん:2008/01/13(日) 23:41:59
ごくふつーに作ってればVBのフォント指定はfrxファイルに入るはずだが。
frxのバイナリフォーマットって公開されてたっけ? 少なくともヘルプにはなかった。
876仕様書無しさん:2008/01/13(日) 23:48:44
はいはい
コントロール全選択してフォント変更でもしてろニダ
877仕様書無しさん:2008/01/14(月) 00:52:07
VBなんて(笑)
878仕様書無しさん:2008/01/14(月) 01:51:58
おまいら大丈夫ですか?

VB6迄なら、frmファイルをテキストエディタ開けば
デザイン部分のソース見れるから一括置換で終わる
実際に着手後に変更決まってやった事あるよ

VB.NETは使った事ないけどさ、
C#は2003以前、2005以降で開く所は違うけど
イベント追加する辺りに記述があるじゃん
似たようなもんじゃないの?
879仕様書無しさん:2008/01/14(月) 02:21:41
そこでスクリプトですよ。

テキスト属性のコントロールを一覧で取得して・・・・あ、画面のプロパティではコントロールとして取得できないんだっけ?
でもコントロールをダミーで貼り付けないと動作しないからなんとかなるよな?
880仕様書無しさん:2008/01/14(月) 03:59:41
.NETならめんどくさいからFormを継承してOnLoadをオーバーライドして
親のイベント呼んだあとにthis.Controlsコレクションを再帰的に追ってきつつ
フォントを変更するような処理をいれたFormクラスを作る。
そんで現状ある全画面の継承元をFormから
作ったFormクラスに変更して終了。

処理速度?しらねーよww
881仕様書無しさん:2008/01/14(月) 06:03:16
>>870-871
あやまれ!>>865みたいな受託案件で普通に英語版さらに多言語版の話も出してくる俺のとこの客にあやまれ!
いや俺も嫌ですが
882仕様書無しさん:2008/01/14(月) 07:53:58
迷ったら、直にでも管轄労働基準監督署と管轄労政事務所で
相談すること。
ハローワークhttp://www.hellowork.go.jp/
労働基準監督署http://www.tottori-rodo.go.jp/soshiki/roudou.html
労務安全情報センターhttp://www.labor.tank.jp/
労働基準関係法令へのリンク集
http://www.labor.tank.jp/hourei/hourei_link.html
法令データ提供システム/総務省 行政管理局
http://law.e-gov.go.jp/cgi-bin/idxsearch.cgi
労働基準関係法令へのリンク集
http://www.labor.tank.jp/hourei/hourei_link.html
労働判例選集
http://www.labor.tank.jp/hanrei/hanindex.html
労働相談案内
http://school7.2ch.net/test/read.cgi/shikaku/1188633308/l50
少額訴訟に関しては、裁判所HP及び、
民事訴訟法と裁判所法規則を参照すること。
労働基準関係
http://www.roudoukyoku.go.jp/seido/kijunhou/index.html
厚生労働省法令等データベースシステム
http://wwwhourei.mhlw.go.jp/hourei/index.html
下記も参考になります。
http://labor.tank.jp/toraburu/annai_index.html
日本労働弁護団
http://homepage1.nifty.com/rouben/top.htm
上記についても相談したほうがよい。
また、未払い賃金(給料、残業代)、解雇予告手当等については、
少額訴訟(仮執行宣言を含む)、労働審判、内容証明郵便等で
請求することができます。下記も参考になります。
http://labor.tank.jp/toraburu/annai_index.html
883仕様書無しさん:2008/01/15(火) 01:50:23
>>881
そらレアケースでご愁傷様、いやまじで可哀想・・・。

海外拠点のある仕事ってやったけど(日米香港上海)
そもそも業務が違うから結局使いまわしなんか
出来なかったけどなあ。商習慣全然違うもん。
884仕様書無しさん:2008/01/15(火) 02:35:54
んでもOfiiceとかでかい製品になれば当然っちゃあ当然だよな・・・
885仕様書無しさん:2008/01/15(火) 10:14:59
>>884
受託案件だから。この話。
886仕様書無しさん:2008/01/15(火) 11:37:43
>>870
海外支社(使うのは外国人)に展開するってこと、たまにあるぞ
887仕様書無しさん:2008/01/15(火) 12:27:49
Ofii(・∀・)ce
888仕様書無しさん:2008/01/15(火) 14:02:26
受託ソフトの他国語版が欲しいと言われるのは突飛な発想にもレアな話にも思えないんだが
工場なんかだと商習慣もあまり関係ないし国内と同じシステムを使う可能性大きくない?
889仕様書無しさん:2008/01/15(火) 14:33:24
うちではよくある。
ただし、デフォルトは英語で作る。
890仕様書無しさん:2008/01/15(火) 16:10:53
ないとはいえないけど
>>867のように当然でしょというほど
当然ではない

という話ではないのかな
891仕様書無しさん:2008/01/15(火) 20:27:45
多国語版って、量はなくても国際展開の工場とかだと普通に有るぞ。
半導体とか半導体とか、あと半導体とかね。
892仕様書無しさん:2008/01/15(火) 20:31:25
>>870の発想が貧困過ぎたというだけの話ではないか
893仕様書無しさん:2008/01/16(水) 20:29:41
アラビア語とか、ヘブライ語とか・・・

右から書く言語に対応って・・・

orz負けた。
894仕様書無しさん:2008/01/16(水) 21:31:27
たとえばIEを「地域と言語」コントロールパネルでアラビアあたりに
設定して起動すると面白いぞ。スクロールバーの位置とか。
895仕様書無しさん:2008/01/16(水) 22:11:19
>>892
>>891をもっとよく読めよ・・・。
半導体とか半導体とか半導体とかの話だろ。
896仕様書無しさん:2008/01/16(水) 22:52:59
レンバスかよ...
897仕様書無しさん:2008/01/16(水) 23:08:00
RightToLeftプロパティはVisualStudioではおなじみだけど使う事にはなりたくないなw
898仕様書無しさん:2008/01/17(木) 13:40:54
みんなにちょっと聞きたい。

複数の判定処理を決められた順に行って、全て正常なら正常時用後処理をしてTRUEを返し、
どれか1つでもFALSEならエラー時用後処理をしてFALSEを返す関数を作ることになったのだが

1:最後にreturnが確実に呼び出される無限ループ内で判定を行って、判定がFALSEならbreakする

2:tryブロック内で判定を行って、判定がFALSEなら空の例外をthrowする

3:判定のみを行う関数と、その結果を受け取って
  正常時用後処理orエラー時用後処理を振り分ける関数の2つを作る

上の3つでプロジェクトメンバーの意見が分かれてしまった。どれが一番いいと思う?
899仕様書無しさん:2008/01/17(木) 13:57:23
2は論外。
それに、俺なら1,3じゃないやり方をする。
900仕様書無しさん:2008/01/17(木) 16:11:37
本当に2を思いつく奴って、いるんだなあ・・・・
コードコンプリートとか、ああいう本の悪い例の
中だけに存在するんだと思ってたよ。
901898:2008/01/17(木) 16:42:22
ちなみに俺は最初1を推してたけど思い直して3に一票入れた。
2はうんこコードしか残さないド低脳な外注が提案したので眼中に無し

>>899
他にいい方法があれば是非教えてくれ
902仕様書無しさん:2008/01/17(木) 16:52:02
一瞬、コードコンプリートが2を推しているように読み取れた
903仕様書無しさん:2008/01/17(木) 18:17:06
自分なら単純に判定用のboolean変数用意するけどな。



とりあえず2の奴にはコードコンプリートを読めと言っとけ。
・・・今度はコードコンプリート厨になりそうでイヤだが。
904仕様書無しさん:2008/01/17(木) 18:25:19
catch(Exception e) で受けるのは論外だが
ちゃんとExceptionのサブクラス作ってやるんだったら2番も悪くない
エラー処理が複数になった場合も対応しやすいしfinallyに後始末も書けるし
905仕様書無しさん:2008/01/17(木) 18:56:53
いやいやいやいやいや
906仕様書無しさん:2008/01/17(木) 20:18:12
3なら通常処理とエラー用の処理を別々に試験できてお得だよ
907仕様書無しさん:2008/01/17(木) 22:41:11
みんなエラーを例外を使わずにやってるの?
その本を読まずにいってみるテスト。
空の例外投げるなんて馬鹿だが。

newしたものなんてスマートポインタに入れておけば解放してくれるし、コーディング楽だろ?
投げる例外クラスにエラー情報いれとけば、処理の振り分けやらもできるし。
908仕様書無しさん:2008/01/17(木) 22:48:03
コーディングが楽だからという理由で例外を使ってる奴は死ね
909仕様書無しさん:2008/01/18(金) 01:31:46
コーディングが楽だという理由いがいで、例外使う奴はもっと死ね。ていうか死ね。
910仕様書無しさん:2008/01/18(金) 02:05:36
>>908-909
どんな理由で使ったらいいんだ?
911仕様書無しさん:2008/01/18(金) 03:07:49
業務と関係ないフラグと分岐がいっぱい出来るくらいなら例外使ってくれって思うぜ
912仕様書無しさん:2008/01/18(金) 03:24:57
どうせ、std::bad_allocやMFCの例外クラスのcatchしてるんだろ?
まさかしてないとか(笑)
してるなら自分のも例外クラス使えばいいじゃん。まぜこぜだと一貫性がない。
913仕様書無しさん:2008/01/18(金) 09:30:00
try〜catchつーても所詮gotoよりちょっとスマートな大域脱出だろ
914仕様書無しさん:2008/01/18(金) 10:24:40
「要するに」とか「所詮」とか言って話を終わらせようとする奴は
考えるのが面倒くさくて思考停止してるだけだって
915仕様書無しさん:2008/01/18(金) 13:14:50
C++とgotoは相性が悪いから使わない。
916仕様書無しさん:2008/01/18(金) 16:25:04
それはlongjumpとどう違うの?
917仕様書無しさん:2008/01/18(金) 16:30:48
ヘタレのBUGの言い訳のための機能
918仕様書無しさん:2008/01/18(金) 17:36:39
OOP否定論者は大量の条件式を書くわけですね。
ステップ数と保守のしにくさを増すだけ。
919仕様書無しさん:2008/01/18(金) 17:42:11
わかって使ってれば、いいんだけどね?
920918:2008/01/19(土) 17:16:54
僕、例外とOOPの区別が分からないの、助けて〜!(笑)
921仕様書無しさん:2008/01/19(土) 17:24:11
(苦笑)
922仕様書無しさん:2008/01/19(土) 20:24:43
ttp://www.thinkit.co.jp/free/article/0711/5/4/
日本語のわかりやすい記事。
一番重要なのが2ページ目にあるエラー時の回復可否をクラスによって定義できること。
細かいエラー状態を新たに定義する場合に、これらクラスから派生することによって
回復可否の情報を継承することができる。
クラスであるため実行時型情報を得ることができ、基底<->派生間でのキャストも可能。

わかったかい、僕。 >>920
例外とOOPの区別というより関係を書いた。
923仕様書無しさん:2008/01/19(土) 20:35:08
918 != 920 だからな。
924仕様書無しさん:2008/01/21(月) 00:08:59
パフォーマンスの話をすれば、例外は重い。
けど、別にそんなもんは蚊ぐらいなものだから、どうでもいい。
925仕様書無しさん:2008/01/21(月) 01:17:18
.netみたく、初回の例外発生時に
エラーメッセージリソースをだーっと舐めるようなことしてると
洒落にならんだろうが……
↑は流石に改善されたんだっけ?
926仕様書無しさん:2008/01/21(月) 10:31:13
で、結局>>898の場合はどーすればいいんだ?
927仕様書無しさん:2008/01/21(月) 15:20:05
>>898の3か、>>903の方法が良いんじゃね?
928仕様書無しさん:2008/01/21(月) 17:58:16
3だよな
929仕様書無しさん:2008/01/21(月) 18:49:21
>>903の言ってる判定用のboolean変数を用意するやりかたって
↓みたいな感じでいいのか?3と比べるとあまりスマートじゃない気がするが

bool flag;

flag = false;

if(!条件A)
 flag = true

if(!flag)
 if(!条件B)
  flag = true;

if(!flag)
 if(!条件C)
  flag = true;

if(flag)
{
 //正常時処理
 return true;
}
else
{
 //エラー時処理
 return false;
}
930仕様書無しさん:2008/01/21(月) 18:50:14
あ、最後のflagの判定が間違ってた。脳内変換たのむ
931仕様書無しさん:2008/01/21(月) 19:09:06
自分ならB,C条件のときもflagの判定はしないかな。好みの問題かも。

まあスマートに見えないかもしれんがわかりやすいと思う。
後処理が長くなるなら関数で処理してもいいんだし。
932仕様書無しさん:2008/01/21(月) 19:48:01
>>903のは
bool flag;
flag = true;

flag &= 条件A;
flag &= 条件B;
flag &= 条件C;

if( flag ) {
 // 正常時処理
 return true;
}
else {
 // エラー時処理
 return false;
}

みたいな感じだと思うが、これだと途中でエラーが起きたときに処理できないな。
途中でエラーが起きたときの処理が必要なのかは知らんが。
933仕様書無しさん:2008/01/21(月) 19:57:56
引き継いだプロジェクトにこんなのが・・・

bool flag;
flag = false;

while(1)
{
 if(!条件A)
  break;

 if(!条件B)
  break;

 if(!条件B)
  break;

 flag = true;
 break;
}

if(flag)
{
 //正常時処理
 return true;
}
else
{
 //エラー時処理
 return false;
}
934仕様書無しさん:2008/01/21(月) 19:58:41
まぁ IsConditionTrue() みたいな関数にならいいんじゃね。
935仕様書無しさん:2008/01/21(月) 20:05:03
>>933
こうすればいいんだな。

// 別に関数じゃなくてもOK
_Bool condA(), condB(), condC();

if(condA() && condB() && condC()){ normal_processing; return true;}
else{abnormal_processing; return false;}
936仕様書無しさん:2008/01/21(月) 20:11:07
>>935
condA(),condB(),condC()全部実行されるって思ったけど、
最近のコンパイラなら問題ないか。
937仕様書無しさん:2008/01/21(月) 20:12:25
>>936
いや、最近とかなしにC,C++,C#,Java.Perl etcで逐次評価でしょ。
メジャーもので全部実行されるのはVBだけ。(VB7移行は知らない)
938仕様書無しさん:2008/01/21(月) 20:22:55
>>935
評価順が前からって決まってたっけ?


いや、C系は前からだと思うけど。
939仕様書無しさん:2008/01/21(月) 20:23:39
処理系依存じゃなかったっけ?
940仕様書無しさん:2008/01/21(月) 20:25:28
>>937
VB7以降は
AndAlso ってのが追加されてる

if (condA() andalso condB() andalso condC()) then
 // 正常時処理
else
 // エラー時処理
end if
941仕様書無しさん:2008/01/21(月) 20:27:01
hogea[i++] = hogeb + hogec[i];

こういうのはやめろって注意したことがある。

もっとひどいのだと↓みたいなこと平気でするから。
hogea[i++] = hogeb[++i] + hogec[--i];
942仕様書無しさん:2008/01/21(月) 20:33:14
>>938
評価順は決まってた気がする。
ただ>>935の場合、条件がfalseになった時点で評価を中断するかどうかは不定だったと思う。
943仕様書無しさん:2008/01/21(月) 20:38:33
決まってた気がする、とかって
何言語基準で話してんの?
そんなん言語によるだろ。

処理系依存とかいってる奴もいるが
そんな基本的なことも言語仕様にない
クソ言語あったらみてみたいわ。
944仕様書無しさん:2008/01/21(月) 20:41:09
>>943
C系はa && bで&&で副作用が完了し、aがfalseなら評価やめるので正しかったと思う。
インクリメントを複雑に絡ませた>>941のパターンは処理系依存。
Javaの場合、>>941でも処理系によらず一定だったと思う。
945仕様書無しさん:2008/01/21(月) 20:41:11
>>941
やめろとかひどいとか以前の問題じゃね?
946仕様書無しさん:2008/01/21(月) 20:42:24
>>944
処理系依存というより未定義だから動作するかも保障されない。
947仕様書無しさん:2008/01/21(月) 20:43:15
>>946
あ、動かない可能性もあるのか。勉強になりますた。
948仕様書無しさん:2008/01/21(月) 20:51:43
>>944
>副作用が完了し、
副作用てなんだかわかってる?
知らないなら書かないほうが
いいんじゃない?
949仕様書無しさん:2008/01/21(月) 20:52:26
そりゃモナドを伴う処理のことだろ。
950仕様書無しさん:2008/01/21(月) 20:56:32
>>948
何が問題なのか。教えてくれくれ
951仕様書無しさん:2008/01/21(月) 21:01:23
>>941の下のコードにはキレていいと思う。
952仕様書無しさん:2008/01/21(月) 21:08:05
まだインナークラスと匿名クラスをふんだんに使った
main関数一本のクソコードは来ていないなあ。
953仕様書無しさん:2008/01/21(月) 21:09:13
>>950
評価することで何かが変化するなら、・・・ってことなんだ
954仕様書無しさん:2008/01/21(月) 21:14:46
>>953
よく言っている意味が分からない。
たとえばね、
(a = 3) && (a++) なら、 aが最終的に4になるのが保証されているんだが。
ただ、 a = (a += 4) + (a += 3)、これは何になるか保証されていない。
&&や,や||を伴っていないから。そいつらが伴うことで式の間で副作用がちょん切れる。
それともアレか?>>948はaってのを見て変数一本だと勘違いしたのか?
なら、式だよ。式一般だよ。
955仕様書無しさん:2008/01/21(月) 21:29:02
>>954
>最終的に4になるのが保証されている
a ≠ 3の場合にaが何になるか教えてください。
956仕様書無しさん:2008/01/21(月) 21:38:58
>>955
Cかつ、signed a だとして、
a = 0 ならa = 0のまま。これ処理系依存なのか?
それ以外なら a = n だとして a = n + 1。これは必ず。
オーバーフローは考慮しない。
957仕様書無しさん:2008/01/21(月) 21:45:50
>>955
(a = 3) だぞ
958仕様書無しさん:2008/01/21(月) 21:57:20
>>957
最近Basic系ばっか見てたからつい比較だとおもた
959仕様書無しさん:2008/01/21(月) 22:18:59
if (p != NULL && *p != c) ....
これが処理系依存なわけがあるものか。
960仕様書無しさん:2008/01/21(月) 22:20:51
だよなあ。
961仕様書無しさん:2008/01/21(月) 22:24:40
なんか>>954が一人違う話をしてる気がするんだが。
もともとの話って>>935だろ?
副作用の話なんてしてないじゃん。
>>941とごっちゃになってない?
962仕様書無しさん:2008/01/21(月) 22:26:45
いや、>>935>>954も俺だ。
>>948のレスに答えただけだ。
963仕様書無しさん:2008/01/21(月) 22:30:42
VBで同じようなことを書こうとするとハマるぜ?
ショートサーキットじゃねーんでな
964仕様書無しさん:2008/01/21(月) 22:36:12
基本JavaでVBみたいなコーディングされたら殺意沸くけどな。
965仕様書無しさん:2008/01/21(月) 22:54:46
もうみんなごっちゃでわけわかめw

funcA( ) && funcB( );
funcAが必ず先に実行される。funcAの戻り値が真なら続いてfuncBが実行される。(短絡評価)

funcA( ) + funcB( );
funcAもfuncBも実行されるが、どちらが先に実行されるかは処理系依存=言語仕様としてきまっていない(不定)

array[ value++ ] = array[ value ];
value++による副作用が完了する以前にvalueを参照するため一切の動作が保障されない(未定義)
966仕様書無しさん:2008/01/21(月) 22:56:21
Cは型の構文がすきだけど、ほかは全部キライ。
967葉猫 ◆Jz.SaKuRaM :2008/01/21(月) 23:04:53
(a = 3)

これはAAでちょ (・∀・)
968仕様書無しさん:2008/01/21(月) 23:05:48
失せろKY屑
969仕様書無しさん:2008/01/21(月) 23:05:50
a=3 チンコ
970仕様書無しさん:2008/01/21(月) 23:07:34
C++ は型の構文も何もかも嫌い
971仕様書無しさん:2008/01/21(月) 23:23:06
>funcAが必ず先に実行される。funcAの戻り値が真なら続いてfuncBが実行される。(短絡評価)
これも処理系によるんじゃなかった?
972仕様書無しさん:2008/01/21(月) 23:24:15
>>971
ソース希望
973仕様書無しさん:2008/01/21(月) 23:24:20
(短絡評価)ってことは、短絡評価がある処理系なんだろう
974仕様書無しさん:2008/01/21(月) 23:29:22
短絡評価はC/C++言語規格で決められてるよ。
975仕様書無しさん:2008/01/22(火) 00:05:56
>>933
ダミーループならよく使ってる。

while(1)
{
:
break;
:
}

は気持ち悪いから

do {
:
break;
:
}while(0);

を使う。

976仕様書無しさん:2008/01/22(火) 00:07:20
処理系、というと「C/C++のいう、処理系(C/C++のなかの、ヴァリエーション)」とおもうけど、
ひょっとしたら「Java処理系」「Perl処理系」「VB処理系」など各言語・処理系そのものを
比較しているのかもしれない(w
977仕様書無しさん:2008/01/22(火) 00:09:24
>>975
もうそれはgotoしちゃったほうが…
978仕様書無しさん:2008/01/22(火) 00:18:52
>>977
gotoだとどこに飛ぶのか探さないといけないけど、
gotoさえ使わなければスコープの範囲内で収まる。

gotoの欠点は綴り間違いとかのエラーを検出できないこと。
スコープを抜けた場合スタックに積み残しになったりするのもやばいんだっけ。
979仕様書無しさん:2008/01/22(火) 00:19:24
ごくまれにifのブロックをbreakで抜けたくなる
980仕様書無しさん:2008/01/22(火) 00:22:57
>>979
それこそWhile使えばいいんでね?
981仕様書無しさん:2008/01/22(火) 00:24:26
単位変換のさい、いちいち cm = m * 100みたいなコードうってる、単位が明確でない
ビット演算とか飛び交いすぎて、何を意味しているかわからない
重複コードがたくさん見つかる
アサートがろくに使われていない、テスト処理がない
コミットされたコードがコンパイル通らないことが多い
「この関数使って○○作っておいて」といわれるとその関数がうまく動かない
982965:2008/01/22(火) 00:33:56
しまった、C/C++関連スレだと思って言語指定しなかった。
>>965はC/C++での話、他言語は知らんから必要なら自分で調べてくれ。
処理系定義はコンパイル環境ごとに違う。
たとえばVC/gcc/bcc、同じVCでもVC6とVS2008で違うかもしれない。
違ってても文句は言えない、言語仕様として決められていないから。
983仕様書無しさん:2008/01/22(火) 00:53:00
つーか関数化しちゃってreturnでいいよ。
ダミーループでもいいけど、ちゃんとコメント書いておけよな!
みんながみんな正常な脳みそもってるわけじゃないんだぜ・・
984仕様書無しさん:2008/01/22(火) 01:56:28
>array[ value++ ] = array[ value ];
>value++による副作用が完了する以前にvalueを参照するため一切の動作が保障されない(未定義)
すくなくともCなら
=は右から評価 かつ []のほうが優先度が高いので、
まず、array[value]が評価、次に代入、最後にvalue++
は保証されてるんじゃないの?
985仕様書無しさん:2008/01/22(火) 02:12:43
>>984
うん、おそらくほとんどのコンパイラがそう処理するだろうね。
でもそういうことと関係なくこの処理は未定義なんだ。
納得いかなくてもC言語はそういうものなんだ。
http://www.st.rim.or.jp/~phinloda/cqa/cqa7.html
986仕様書無しさん:2008/01/22(火) 02:34:18
C99でも?時間が止まってる人?
987仕様書無しさん:2008/01/22(火) 02:48:33
C99でこの部分が改善されたなんて話は聞いたことないんだが?
988986:2008/01/22(火) 02:48:33
よく見たら自分がアホだ。ちょっと吊ってくる。
989仕様書無しさん:2008/01/22(火) 06:37:48
吊ってくると言って本当に吊ってきた奴はいない
990仕様書無しさん:2008/01/22(火) 10:04:21
>>989
いまちんぽに紐結んだ
紐の先は咥えてる
991仕様書無しさん:2008/01/22(火) 10:52:16
次スレ立ててこようか?
992仕様書無しさん:2008/01/22(火) 11:06:54
立ててくる
993仕様書無しさん:2008/01/22(火) 11:08:04
994仕様書無しさん:2008/01/22(火) 11:28:53
スレ番飛びすぎ。
995仕様書無しさん:2008/01/22(火) 12:29:02
先頭に0xがついてなくても16進数と見なすのが、この板のデフォだろうw
996仕様書無しさん:2008/01/22(火) 14:38:20
基本的に副作用完了点と優先順位は関係無いんだよね?

funcA() * funcB() + funcC;
でfuncCが最後に実行されることが決まってるとかないだろうし
997仕様書無しさん:2008/01/22(火) 15:14:05
>>996
基本的にはないが、ある意味ではあるとも言える。
きちんとどうなるか理解できれば何も問題ない。
998仕様書無しさん:2008/01/22(火) 16:59:53
>>996
関数が別スレッドを動かして優先度低いことやってたら結果として遅れても不思議ではないと思う。
999仕様書無しさん:2008/01/22(火) 18:39:00
999
1000仕様書無しさん:2008/01/22(火) 18:43:23
華麗に1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。