この会社辞めようと思 ..
2:仕様書無しさん
07/04/02 12:45:43
前スレが4月を待たずに落ちたので建てました
3:仕様書無しさん
07/04/02 19:09:11
int i = 1++;
4:仕様書無しさん
07/04/04 16:50:18
>>3
何がしたいんだ?
5:仕様書無しさん
07/04/04 21:50:35
int CoreFunction(const int *a, ...引数がしばらく続く ){? return 0;?//?//?// コメントが2000行ほど続く?//?//?}
6:仕様書無しさん
07/04/05 03:12:51
気付かんかったorz
>>1
乙です
>>5
修正前のコードはコメントアウトして残す規約のプロジェクトに参加したとき
気付けば全体の95%くらいがコメントになっていて目眩がしたことならある
ねぇcvsくらい導入しようよ・・・
7:仕様書無しさん
07/04/05 06:32:40
>>6
CVSを導入しつつもそういうルールのあるプロジェクトやったこと多々ある・・・
8:仕様書無しさん
07/04/05 17:42:27
switch(iCnt){
case 10:
〜処理1〜
break;
case 20:
〜処理2〜
break;
case 30:
〜処理3〜
break;
(中略)
case 100:
〜処理100〜
break;
default:
break;
}
というのがあって、処理1、処理2・・・処理100の実質的な内容は全て同じ。
違うのはループカウンタがそれぞれiCntになっているだけ。
作者を殺したいと初めて思いました
9:仕様書無しさん
07/04/05 17:58:37
switch case といえば、こういうコードが冗長に見えてしまう時期が俺にもありました・・・
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
/* Windows DLL callback entry point */
BOOL r;
switch (fdwReason) {
case DLL_PROCESS_ATTACH:
r = DllProcessAttach(hinstDLL, lpvReserved);
break;
(途中省略)
default:
r = DllMainError(hinstDLL, lpvReserved);
}
return r;
}
static BOOL DllProcessAttach(HINSTANCE hinstDLL, LPVOID lpvReserved) { return TRUE; }
static BOOL DllThreadAttach(HINSTANCE hinstDLL, LPVOID lpvReserved) { return TRUE; }
static BOOL DllThreadDetach(HINSTANCE hinstDLL, LPVOID lpvReserved) { return TRUE; }
static BOOL DllProcessDetach(HINSTANCE hinstDLL, LPVOID lpvReserved) { return TRUE; }
static BOOL DllMainError(HINSTANCE hinstDLL, LPVOID lpvReserved) { return FALSE; }
10:仕様書無しさん
07/04/05 18:53:53
1.VB.NETでOn Error Goto HOGE を連発 TryーCatchがいっこもない
2.クラスが殆どない モジュールうじゃうじゃ グローバルマンセー
11:仕様書無しさん
07/04/06 02:08:34
>>9
関数テーブル作っちゃいかんの?
12:仕様書無しさん
07/04/06 12:05:59
>>7
ウチの会社のことか
13:仕様書無しさん
07/04/06 12:58:37
>>7それなんてT芝?
一部だとは思うけどさ
14:7
07/04/06 13:09:26
いや、みいそ系
15:仕様書無しさん
07/04/06 13:15:25
>>14
( ´゚д゚`)アチャー
やっぱ大手の名前あっても上がだめな所はまだそんなのやってるんだな・・・
16:仕様書無しさん
07/04/06 13:36:36
メーカー系はまず碌なものじゃない、と疑ってかからないと。
そういやF通には、C/C++ の「const」の存在を知ってる奴が
どれくらいいるんだろう。
17:仕様書無しさん
07/04/06 17:55:09
>>16
そ・・・そんなに勉強不足なのか?
君と一緒に仕事したその会社の連中は・・・・
まぁ、俺もにたような経験はあるが・・・
18:仕様書無しさん
07/04/06 18:01:02
if (GetServer()->GetConnection() == GetConnection() &&
GetConnection()->BackendMinimumVersion(8,0) &&
!GetConnection()->HasFeature(FEATURE_FILEREAD))
hints.Add(HINT_INSTRUMENTATION);
頼むから省略するなと。
19:仕様書無しさん
07/04/06 23:01:16
constとstaticを理解するのは
20:仕様書無しさん
07/04/07 12:25:22
CVSやVSS使ってても、元のコードはコメントアウトして残すプロジェクトしかみたことねえよ。
みかかとでーたとあいびーむがそうだったんだが。
削除させてくれるプロジェクトってあるのか?
21:仕様書無しさん
07/04/07 14:42:35
リリースまでならソース上で履歴残さずともOKで、
リリース後の修正はソースに履歴を残す、というのならあった
22:仕様書無しさん
07/04/07 16:20:05
>>20
オレが目にできるようなプロジェクトは残してるのがないので、残さないのが当たり前だとばかり思ってたが。
23:仕様書無しさん
07/04/07 16:25:38
本来、履歴を残す必要なんてまったく無いのに、
誰か一人のボンクラが履歴を残してしまい、
その後は皆「右へならえ」で
ずるずる履歴を書き込んでしまうんだよ。
「グレシャムの法則」という奴だな。
24:仕様書無しさん
07/04/07 23:19:42
修正履歴を必ず残させるコーディングルールと
サブルーチン使えば1行で済む処理が延々とコピペされたコード
リファクタリングという言葉に何か恨みでもあるんだろうか。
25:仕様書無しさん
07/04/10 20:20:00
>>24
あぁ、コボルと富士通の話はきりがないのでどっか他所でやってくれな。
26:仕様書無しさん
07/04/19 23:35:59
4 8 15 16 23 42
27:仕様書無しさん
07/04/19 23:38:06
そーいう変な会社がうようようようよ
28:仕様書無しさん
07/04/19 23:39:59
元のソースは残すようにしてるけど、絶対残すルールは嫌だなあ
絶対消せルールよりはいいけど
29:仕様書無しさん
07/04/19 23:43:16
いや「ぜったい消せ」のほうがマシだよ。
30:仕様書無しさん
07/04/20 00:52:17
まったくだ
31:仕様書無しさん
07/04/20 07:23:59
if(条件) {
b = true;
a.set1(true);
a.set2(true);
} else {
b = false;
a.set1(false);
a.set2(false);
}
if文にする意味がわかんね...
32:仕様書無しさん
07/04/20 13:04:25
>>31
ソースコードにその処理の意味合いを持たせる為だと思う
33:仕様書無しさん
07/04/20 13:53:20
>>31は
b = 条件;
a.set1(b);
a.set2(b);
のように記述しないのは何故? っていってるんだよな?
そして>>32の言ってることが分からん。
34:仕様書無しさん
07/04/20 14:11:21
>>33
あれかな、
elseをelse ifにして拡張可能とか。
35:仕様書無しさん
07/04/20 14:35:35
>>31
そりゃ、「条件」が「式」だと知らずに
if (ここには条件しか書けない)
b = ここには真偽値のリテラルしか書けない
と思い込んでる典型的な阿呆が書いたからだろう。
そして俺も >>32 の言ってることがわからん。
36:仕様書無しさん
07/04/20 15:31:47
知らないだけで阿呆にされちゃカナワンなー
37:仕様書無しさん
07/04/20 23:07:56
Option Explicitなし
if 謎の宣言なし変数>0 and hoge_index=1 Then
こんなんばっか
38:仕様書無しさん
07/04/20 23:47:42
option explicit って入門書にも必ず出てるのにね
39:仕様書無しさん
07/04/21 03:49:33
>>36
>>35のいう通りだったとして、
”冗長な(冗長すぎる)記述を、なんとかしようという気構えの無い奴”
である可能性が95%以上とみる。
そういうやつは、すごく無知なのに知っている知識だけでソース記述しようとするんだよね。。
つまり阿呆で十分だと思うんだ。
40:32
07/04/21 05:52:50
例えば、こう書いた場合
if (IsFileExist(path) == ture) {
このブロックはファイルが存在した時の処理
} else {
このブロックはファイルが存在しない時の処理
}
と、ソースコードからブロックの前提条件を明示でき、
IsFileExist()の結果により処理が変わる事を強調できます。
また、同じ関数の呼び出しパスででありながらブロックを
分けている事から、「同じ関数を呼んでいるが、行う処理は
IsFileExist()によって違うものになるよ。将来、処理の内容が
変わるかもよ。」と示唆することが出来ます。
これは社内で取り決めなどが無くても、ある程度経験のある人なら
読み取れる事だと私は考えております。
また、以下のように書かない理由は、
b = IsFileExist(path);
a.set1(b);
a.set2(b);
bはファイルの有無を意味しているが、
set1(),set2()の引数は"ファイルの有無を指定する"という
仕様ではない場合に、bの示すものと引数の意味合いが
異なってしまう為です。
これが悪い書き方とは言いませんが、値が同じだからといって、
意味合いの違うものを無闇に使いまわすのは、
そのコードの意図を汲み取り難くすると考えます。
41:仕様書無しさん
07/04/21 08:31:50
>>37
VBって、Option Explicitがあっても、
dim s as string
・・・
if s = 0 then ・・・
みたいなコードがコンパイルできるんだよな。
今、VB4からVB6にコンバートする仕事をやってて、エラーが起きたらその場で止まるオプションに変更して、
動作確認してるけど、けっこう頻繁にとまってる。
大昔に作られて、けっこう保守が入ってるのに、なんでこんなバグが残ってるんだよって感じ。
42:仕様書無しさん
07/04/21 10:09:30
>>40
わりと同意かな・・・
つか、俺自身はブール型の引数というものが嫌いで不要だと思ってる。
43:仕様書無しさん
07/04/21 10:17:07
視点の高さがまるで違うんだな。
短いコードを書けばいいと思ってるような奴はCOBOLでもやってろって話
44:仕様書無しさん
07/04/21 10:18:26
>>40
変数名がbというのは反対だが(ファイルの使用目的とそれの存在を示す意味のある名前にするべき)、俺は変数に入れてあるほうが読みやすいと感じるな。
無駄なブロックやネストはできるかぎり無いほうが読みやすいと思う。
45:仕様書無しさん
07/04/21 10:19:21
沖縄県の方へ(命に関わる注意事項です)
沖縄県での選挙ですが、どうか民主党だけは避けてください。県民の生命に関わる可能性があります。
民主党の最大の公約は一国二制度(※)ですが、一度「一国二制度 沖縄 三千万」等で検索をお願いします。
この際、民主党のHPで調べても良いです。以下の注釈↓と矛盾することは書いてないはずですから…
※一国二制度
簡単に言えば沖縄を中国と日本の共有物にし、そこに3000万人の中国人を入植させます。
(つまり沖縄人口の 96% を中国人にして、実質、沖縄を中国人の居住地とします。)
さらに「自主」の名の下、沖縄で有事が起きても自衛隊は干渉できません。
3000万人の中国人が、少数派となった130万人の日本人に何をしても、です。
そして反日教育を受けた中国人の反日感情の強さは、ほとんどの日本人の理解を超えるものです。
今回の選挙で民主党が勝った場合、「自主」「発展」を連呼しつつ段階的に進めていくことになります。
自主と言っても、自主を認めるのが「住人の96%が中国人となった」後だということに気をつけてください。
発展と言っても、新沖縄の少数派となった「少数民族日本人」の発展ではないことに気をつけてください。
46:仕様書無しさん
07/04/21 15:37:30
>>40
そりゃあ>40みたいな前提条件を勝手に組み込めばそういう解釈も可能だが
シンプルな>31だけを見せられたら>33のような反応してしまうのが普通だろ。
ここで>40とは正反対の前提条件があったとして、>31のような書き方をされたら
ありもしないニュアンスを醸しだしてかえって迷惑。
47:仕様書無しさん
07/04/21 17:54:27
>>41
VBって暗黙の型変換が意味も無く強力過ぎ
たしかVB5のときに型変換のルールが微妙に変わった様な飢餓するが
今となってはどうでもいい事だ
48:仕様書無しさん
07/04/21 19:08:06
char* buf = new char[sizeof(Hoge)];
Hoge* hoge = (Hoge) buf;
.
.
.
delete[] buf;
わかってねぇ〜〜〜〜〜。
49:仕様書無しさん
07/04/21 19:27:18
なんかまずいの?
馬鹿にしたかったら馬鹿にしていいけど、その後でちゃんと何が分かってないのか説明してね。
50:仕様書無しさん
07/04/21 19:32:28
キャストがおかしいってことか。
仮に typedef void *Hoge; だとしたらこれでOKって、いや違うC++だとアウトだ。
あれ?
51:31
07/04/21 19:37:43
>>40
>>31は、実際に見たものをココに書くために行った
抽象化の過程が悪かったと思います。
>>32及び>>40も、ごもっともだと思いますよ。
実際自分が見たコードは>>31で書いた風なものより"もっと"酷く、
貴方がされたような弁明の余地なんて無いだろう
ってな感じのものでした。
実際の処理をfileの有無に替えて書くと、
if( [条件] ) {
existFile = true;
a.setExsitFile(true);
b.setExistFile(true);
} else {
existFile = false;
a.setExistFile(false);
b.setExistFile(false);
}
こんな感じでした。
意味的にも書き分けるような部分ではないんです。
つまり、正に>>35の言う通りな感じかなーと思ってます。
52:仕様書無しさん
07/04/21 20:34:41
パケットのデータを取り出すのによく>>48みたいなキャストするけどいかんのかね?
ま、確保したばかりの変数をキャストするのは珍しいと思うけどさ
53:仕様書無しさん
07/04/21 21:27:33
>>52
普通は
Hoge* hoge = new Hoge;
だわな。
よくCから中途半端にC++へ移行した人がやってるのを見かける。
どうせnew=malloc程度に理解してんだろうね。
54:仕様書無しさん
07/04/21 23:49:33
>>49
説明するまでもないだろ。
55:仕様書無しさん
07/04/22 01:05:47
キャストは基本DQNでございます。
memcpyとか大好きなDQNがごろごろ。
大人しくCでもいじってろ。
56:仕様書無しさん
07/04/22 01:30:29
先日見たJavaコード
long hoge = 1;
:
Long page = Long.valueOf(String.toString(hoge));
文字列にする意味ねぇ・・・
57:仕様書無しさん
07/04/22 14:58:11
>>56
"valueOfがイイ、使え"
とか言われた人間がそこで思考停止するとそうなるな...
58:仕様書無しさん
07/04/22 16:21:19
>>56-57
もっと深刻な「コボラ上がり」だったんじゃないかな。
やつらは、数値="0"〜"9"の並び(=ゾーン形式)っていう観念から
離れらんないから。
59:仕様書無しさん
07/04/22 23:10:42
>>48も基本がなってない。
(Hoge)じゃなく(Hoge *)だろ。
60:仕様書無しさん
07/04/23 13:19:44
主旨は違うんだけど、ここの
URLリンク(d.hatena.ne.jp)
// null => 0, not null => 1
int p = Boolean.toString(data == null).length() - 4;
ってのが好き。やられた。
61:仕様書無しさん
07/04/23 15:03:51
ソースコードじゃないんだけど。
DBのDDLをバージョン管理システムに入れてまして。
外注さんが直接DBをいじっちゃったので、
リポジトリのDDLに変更を反映してくれって頼んだら。
hoge.sql(手付かず)
hoge_日付.sql(新規)
ってファイルがリポジトリにあって
面白かったです。
62:仕様書無しさん
07/04/23 21:40:52
最初、DLLと読んでしまったので、理解するのに時間がかかってしまった。
バージョン管理システムを、読み書きに手順が必要なファイルサーバだと
思ってる人、確かにいますね。
63:仕様書無しさん
07/04/23 21:58:34
>バージョン管理システムを、読み書きに手順が必要なファイルサーバだと
>思ってる人、確かにいますね。
今のPRJリーダのことかーーーー
CVSなのになぜか
hoge
hoge_2
hoge_3
とディレクトリを切っている。
旧ソースを全てコメントとして残したり、
日付と変更者をコメントに書いて変更箇所をサンドイッチしたり。
ストレージとしてしか使っていないよ・・・orz
64:仕様書無しさん
07/04/29 14:33:46
変更者が変質者に見えた・・・俺相当疲れてるな・・・
65:仕様書無しさん
07/04/30 01:15:17
IF IsNumeric(Cint(value)) Then
End If
orz ...
66:仕様書無しさん
07/05/01 18:01:28
元気出せ。
67:仕様書無しさん
07/05/05 15:38:53
VBの類は、暗黙の型変換を禁止するオプションがほしいよぬ
68:仕様書無しさん
07/05/05 16:36:40
>>67
vb.net にはあるぞ
69:仕様書無しさん
07/05/06 14:05:22
俺の会社ポインタ型は全部void *って全社共通で決まってるから
VBのキャストぐらいでは混乱しないよ。
70:仕様書無しさん
07/05/06 14:14:37
常に参照先の型について意識させることで社員の意識を高めようということか!
ごめん無理
71:仕様書無しさん
07/05/06 15:12:53
関数ポインタも?
72:仕様書無しさん
07/05/06 15:33:12
全部void *
型の意味がよくわからない使いかたしまくってるよ
void hoge(int *val);
こんな関数とか平気作るし
73:仕様書無しさん
07/05/06 15:49:17
C++では関数ポインタはvoid *だとまずいんだよな
オーバーロードが解決できなくなるから
こういうことやるならまだしも(できるんか?)
int func(int) { ... }
double func(double) { ... }
void *p = reinterpret_cast<int (*)(int)> (func);
74:仕様書無しさん
07/05/06 15:51:08
呼び出し側書くの忘れてた
reinterpret_cast<int (*)(int)> (p)(10);
75:仕様書無しさん
07/05/06 15:52:53
C++には、メンバ関数ポインタ、という鬼子もいるからね
76:仕様書無しさん
07/05/07 11:14:57
reinterpret_cast
↑
なんでこれ導入したんだろうね。。。
77:仕様書無しさん
07/05/07 11:58:25
いや、わりと低水準なことをするときには必要だろ。
static_castだと型変換がかかって値(メモリ上のビット列)が変化することがある。
reinterpret_castは型だけを変化させてビット列そのものは変化しない。
78:仕様書無しさん
07/05/07 12:13:08
そんな場面あるか?
79:仕様書無しさん
07/05/07 21:37:54
組み込みとか
80:仕様書無しさん
07/05/08 10:05:32
kwsk
81:仕様書無しさん
07/05/08 14:28:58
ソースじゃないんだけど
あるSEがUML書きましたと言って提出してきた設計書が、
単なるフローチャートだったとき
しかもパーツの意味を間違えまくっているとき
82:仕様書無しさん
07/05/08 18:15:31
いいじゃんか。
全部アクティビティ図だと脳内で変換するんだ。
変換して現実から目をそむけると。
はっぴ?
83:仕様書無しさん
07/05/08 18:54:42
フローチャートって実戦で使わないだろw
84:仕様書無しさん
07/05/08 19:09:35
>>81
フローチャート通りに実装していいんじゃね?
85:仕様書無しさん
07/05/08 22:07:33
様式に神経質なぐらいこだわる奴はたいていろくでもない
要はしっかり設計できてりゃいいってのがわかってないんだよな・・・
86:仕様書無しさん
07/05/08 22:24:16
UMLキチガイのことか
87:仕様書無しさん
07/05/08 23:39:21
そうおもってさ。おぷそのつーるでグラフ化してみたわけよ、糞ソフト。
花火が見られた。
とりあえず生成結果を消した。
88:仕様書無しさん
07/05/09 09:23:11
Happy99とは懐かしいな。
89:仕様書無しさん
07/05/09 10:07:23
しあわせ99?
90:仕様書無しさん
07/05/09 10:14:18
ウイルスだったよな?確か
91:仕様書無しさん
07/05/09 19:20:16
昔流行ったよな。確か花火が上がるやつだと記憶している。
92:仕様書無しさん
07/05/09 21:54:00
>>80
たとえばnewとかで取得した領域のアライメント調整で使う
#define AREASIZE 80
#define ALIGNSIZE 4
char* p; void* q;
p = new char[AREASIZE+ALIGNSIZE-1];
q = reinterpret_cast<void*>((reinterpret_cast<int>(p)+ALIGNSIZE-1)&~(ALIGNSIZE-1))
// ...
delete p;
93:仕様書無しさん
07/05/09 22:19:23
Dim flgUmu As String = "nasi"
For Each ws In objBook.Worksheets
If ws.Name = strName Then
flgUmu = "ari"
End If
Next
もうどこからツッコめばいいのかorz
94:仕様書無しさん
07/05/09 22:58:11
時々居るなぁ、Boolean使わない奴。
95:仕様書無しさん
07/05/09 23:15:01
ポインタをintにキャストする香具師は、
LP64,LLP64環境で死亡で御座います
96:仕様書無しさん
07/05/09 23:26:18
uintptr_tかchar*でないとマズいね。
ところで~(ALIGNSIZE-1)ってそのままで大丈夫?
97:仕様書無しさん
07/05/09 23:36:30
ごめん、大丈夫そう。
98:仕様書無しさん
07/05/09 23:57:03
>>96
ALIGNSIZEが2の冪乗値という条件付きだけどな
文末のセミコロンが抜けてるのは痛い>92
99:仕様書無しさん
07/05/10 01:43:21
#define private public
#define protected public
本当にこれが書かれたコードがあった。
しかも俺のすぐ上の上司が書いたっぽい。
陰謀めいたものを感じて冷や汗が出たよ
100:仕様書無しさん
07/05/10 09:36:17
private宣言してもリアルタイムデバッグではアクセス可能だろ?
意味なくね?
101:仕様書無しさん
07/05/10 11:00:05
>>100
はあ?
102:仕様書無しさん
07/05/10 11:49:46
全然privateじゃないってこと
103:仕様書無しさん
07/05/10 12:24:19
カプセル化の意味も判らないんなら口挟まない方がいいんじゃね?
104:仕様書無しさん
07/05/10 12:31:25
そこで防御策として
#ifdef private
#undef private
#endif
#ifdef protected
#undef protected
#endif
と自分のヘッダの先頭に書く必要が出てくる。
もはや冷戦だな。
105:仕様書無しさん
07/05/10 17:55:41
>>104
勘弁してください……
106:仕様書無しさん
07/05/10 18:57:15
>>104
その後にインクルードされるヘッダファイルの中で
#ifndef private
#define private public
#endif
#ifndef protected
#define protected public
#endif
と書かれてないか調べたか?
w
107:仕様書無しさん
07/05/10 19:19:40
嫌な職場だなぁ
108:仕様書無しさん
07/05/10 22:26:52
まさに冷戦。 誰が核のボタンを押すのか、押せるのか。 いやまて核は何なのか。
109:仕様書無しさん
07/05/10 23:18:03
#define FIRE FILE なんての見て鬱になってたところだが、
ここ見てたらなんだか元気が出てきた。ウチはまだ大丈夫だ!
110:仕様書無しさん
07/05/10 23:48:01
>>106
オワットルwww
111:仕様書無しさん
07/05/11 00:48:52
>>109
知らぬ間に
#define FILE FIRE
になっているかもしれんぞ。
112:仕様書無しさん
07/05/11 01:38:14
大丈夫。
展開コードを参照すればw
113:仕様書無しさん
07/05/11 10:34:47
1つのプロジェクト内にファイルが1800個あったから、一体何かと思ったら
履歴を全部別ファイルにして残していて、わざわざコンパイルしない設定対象に1780個ぐらい加えているという・・・
バージョン管理ソフト使っていてこれかよ。出向先なので辞めるわけにはいかない、
明日から通勤時間に3年程かけようかとか本気で思った
114:仕様書無しさん
07/05/12 01:22:44
>>111
sonyのバッテリーが発火した原因はそれか。
115:仕様書無しさん
07/05/13 07:16:31
やめよう思うほどじゃないが
よく見るキモチワルイコード
if (a == 1) {
} else {
なんかのしょり
なんかのしょり
}
116:仕様書無しさん
07/05/13 08:38:20
>>115
俺、よくこういうコード書きかけてしまう…
具体的にはこんなんですが。
if (a == 1) {
/* 〜ということやりたいけど後で考える */
} else {
なんかのしょり
なんかのしょり
}
(a == 1) の時の処理考えなくてよければ、こんなんかな。
if (a != 1) {
なんかのしょり
なんかのしょり
}
117:仕様書無しさん
07/05/13 14:21:06
>>116
コーディング中には俺もよくやる。
問題は納品後のソースにそれが残ってることだと思います。
//TODO:この機能いらなくね??
とか
//TODO:うんこしたい
とか
//TODO:仕様はやくきめろやぼけ!!殺すぞ!!
とか
他人にはとても見せられないようなコメント
入れといて実装漏れ、修正漏れは絶対起こさないようにすべき
このコメントを納品した後のソースで、見たらその人は
この会社やめようって思うんだろうなー
でも、顧客の悪口は洒落にならないから書かないぜ!
118:仕様書無しさん
07/05/13 14:26:10
んなコメント入れんなよ
119:仕様書無しさん
07/05/13 17:13:43
普通、if(a)って書かね?
120:仕様書無しさん
07/05/13 17:20:56
>119
出た〜〜〜っ!
121:仕様書無しさん
07/05/13 17:41:28
>>119
それキモい。
aはあくまでデータであり、真偽をあらわす値ではない。
122:仕様書無しさん
07/05/13 17:44:10
ところでいつ a が boolean になったんだ?
123:仕様書無しさん
07/05/13 17:44:34
C#とかだとコンパイルも出来ない。
124:仕様書無しさん
07/05/13 17:47:02
ifは0かそうじゃないかだけしか見ないんだから>>119で何の問題もないだろ
C#はシラネ
125:仕様書無しさん
07/05/13 17:51:42
ifは0かそうじゃないかだけしか見ないんだから
ifは0かそうじゃないかだけしか見ないんだから
ifは0かそうじゃないかだけしか見ないんだから
ifは0かそうじゃないかだけしか見ないんだから
ifは0かそうじゃないかだけしか見ないんだから〜
お前とは組みたくない。
126:仕様書無しさん
07/05/13 17:56:10
組込みマイコンのコンパイラでは常識的手法。
if(a)なら JNZ命令一行ですむ。
127:仕様書無しさん
07/05/13 17:59:30
>>121
まじすか。
ただ、適切な変数名をつけて問題領域で考えれば分かりやすいと思うんだけどなぁ
int型でも俺はそうやってる
128:仕様書無しさん
07/05/13 18:07:33
if (a) って書いたら a == 1 以外のケースでも真と判定されることに気づかないかね。
>>126
if (a != 0) を if (a) に最適化するのはコンパイラの仕事ですよ。
より効率の良く等価な記述に変換する最適化はコンパイラにさせて
人間は正しい意味論に則った保守しやすいコードの記述に努めるべき。
129:仕様書無しさん
07/05/13 18:17:16
で、aの型は・・・?
130:仕様書無しさん
07/05/13 18:19:03
お前ら、if (isdigit(c) == 1)って書くの?
131:仕様書無しさん
07/05/13 18:23:03
>>121
何か変なことになった場合に
if(a)の時点でa=0になっていると保証されてるなら
それでいいと思うが。
132:仕様書無しさん
07/05/13 18:25:26
>>130
isdigit関数の戻り値の意味は真偽値だとわかっているから if (isdigit(c)) で無問題。
ちなみに 真==1 とは限らないので、敢えて書くなら if (isdigit(c) != 0) が正解。
133:仕様書無しさん
07/05/13 18:27:44
>>128
int型でもブール変数として使う場合は
むしろ、a == 1 以外のケースでも真と判定されなきゃまずいと思うけど
134:仕様書無しさん
07/05/13 18:32:31
if(a)って書くとバグの温床になるからやめろ
等号式書いても、今のコンパイラなら80年代と違って等価のコード出す。
今、最適化意識して各のはアルゴリズムの性能と無駄なシーケンス省くことだけ。
きもいくて古い書き方は捨てろ。恥だ
135:仕様書無しさん
07/05/13 18:38:06
>>134
>if(a)って書くとバグの温床になるからやめろ
まぁif((hFile = CreateFile()))とかやってハマってた奴とかいたし、気持ちはわかるw
136:仕様書無しさん
07/05/13 18:38:38
isdigit
www
137:仕様書無しさん
07/05/13 18:38:42
だーかーらー前提としてaの型を明らかにして話を進めろ
138:仕様書無しさん
07/05/13 18:47:19
>135
じつはhFileの実体がスマートハンドルで、
operator boolみたいなのが定義されているとか
139:仕様書無しさん
07/05/13 18:51:44
>137
新人はだまってROMしてなさい!
140:仕様書無しさん
07/05/13 18:55:15
>>137
・aがブールを意味する値なら if (a) でおk
・そうでなければ比較の意図を明示的に表明すべし
でFA
141:仕様書無しさん
07/05/13 19:04:34
>140
上の連中それをごっちゃにして噛み合わない議論してねぇ?
142:仕様書無しさん
07/05/13 19:08:37
>>134
むしろ、バグの温床になるのは
if (a==0)
とかの方なんだがな・・・
typo で
if (a=0)
になってしまうから。
143:仕様書無しさん
07/05/13 19:12:33
はいはいif(0==a)
144:仕様書無しさん
07/05/13 19:28:00
つか
if( a == b )を間違えないように定数比較したいなら
if( NULL == a)って書けばいいだろ。定数は必ず初項として記述すればいいだろ
仮にif( NULL = a)ってやればコンパイルエラー出る。
つうか2000年ぐらいまでのコーディング規約でいいものだけ取り入れて
かけよ。一般人ができる最低限度のコーディングの礼節だと思うがな。
145:仕様書無しさん
07/05/13 19:34:08
>>144 読んで
ふと思ったんだが、
fj って今でもあるの?
146:仕様書無しさん
07/05/13 19:35:09
確かにその書き方なら間違いが防げるけど、何故か普及してないな。
147:仕様書無しさん
07/05/13 19:36:49
if( NULL == a)
と書くのはお断りだ
148:仕様書無しさん
07/05/13 19:38:54
>>146
昔から議論はあるけど、警告が出るからそんなヘンな書き方をすることは無いってことで落ち着いてる。
149:仕様書無しさん
07/05/13 19:40:09
>>144
きもいくて古い書き方は捨てろ。恥だ
150:仕様書無しさん
07/05/13 20:18:41
if(a)
が一番美しい。
151:仕様書無しさん
07/05/13 20:25:30
>>150
>>121
152:仕様書無しさん
07/05/13 20:31:36
>151
>127
153:仕様書無しさん
07/05/13 20:36:17
プログラムってのはデータと命令しかないわけよ。
そのデータが真偽値であるとか整数であるとかあるいは文字列であるとかの意味付けは
言語処理系上でのみ行われている文脈上のものでしかないの。
文法的に許されているなら>>150を支持する。実際、美しい。
キモイとか許せないと思うなら
if(a)
という記述を許さない言語を使えば良いでしょ。
154:仕様書無しさん
07/05/13 20:37:43
無限ループって怖くね?w
155:仕様書無しさん
07/05/13 20:38:51
最初の書き込みで、aに入ってるのがbool値(0かそれ以外)か、ただの数値(たとえば0〜100とか)とか何も
書いてないのに、いきなり
「if (a) と書く」とか言うのは変だって言ってるんだろ。
156:仕様書無しさん
07/05/13 20:45:37
個人的に
if(a)
で書ける状況でもこういう書き方はしないなぁ。
たまたま文法的に成立するってだけだから。
古い書き方だと思う。
今はベタに、ちゃんと==使わないとダメだと思う。
157:仕様書無しさん
07/05/13 20:45:46
ねえ、今は False =0, True = 1 であたりまえなの?
昔はそれぞれ 0, 0xff って実装もありだったと思うんで、
True のつもりで a == 1 なんて怖くて書けない。
せめて a == True とするのが、他人が読む時も精神衛生的にいいんジャマイカ?
158:仕様書無しさん
07/05/13 20:46:32
>>155
>「if (a) と書く」とか言うのは変だって言ってるんだろ。
別に。
また、プログラムの読み手にとっても、
aに入ってるのがbool値か、ただの数値か
なんて考える必要はない。
a の評価値が 0 かそれ以外かさえ分かればよい。
こんな単純な話はない。
159:仕様書無しさん
07/05/13 20:49:42
>>158
でも, bool値以外のデータだったら、
if (a == 1) を
if (a) にしたら、動作が違ってくるだろ?
160:仕様書無しさん
07/05/13 20:50:14
a == 1 の比較だろ
a = 0 or 1 ならともかく
a = 2 のときは?
a = 100 のときは?
161:仕様書無しさん
07/05/13 20:50:16
>>158
その場合、if(a) は発端>>115 の if (a==1) と同一ではない。
発端の if (a==1) はあなたの「単純な話」にあてはまらない。
元の話わかってる?
162:仕様書無しさん
07/05/13 20:52:26
aには、0か1が入ってるとか、
1,2,3のどれかが入ってるとか、なんら前提が示されてないのに、
if (a == 1) を if(a) と書き直したらダメだろ。
163:仕様書無しさん
07/05/13 20:53:39
凡庸なプログラマってこうした思い込みしてコーディングしてんのかな…
164:仕様書無しさん
07/05/13 20:54:14
なんかトンデモねぇ馬鹿が一匹迷い込んでないか
俺コイツと一緒に仕事すんのはマジで嫌
想定外の修正されてぶち壊されそう
165:仕様書無しさん
07/05/13 20:54:56
初心者の俺にはよく分からんのだが
aの型について触れずに論議が進められるのは何故なの?
166:仕様書無しさん
07/05/13 20:55:46
>165
何度か指摘してるんだが何故かまともに取り合ってくれないんだ(´・ω・`)
167:仕様書無しさん
07/05/13 20:56:02
aには、0か1が入ってるとか、
1,2,3のどれかが入ってるとか、なんら前提が示されてないのに、
if(a)をif (a == 1) と書き直したらダメだろ。
168:仕様書無しさん
07/05/13 20:57:42
>>167
>if(a)をif (a == 1) と書き直したらダメだろ。
それは誰もしてない。
169:仕様書無しさん
07/05/13 20:59:43
>>165
少なくともCにおいては、if()の中身は式であって、その型は無関係だから。
170:仕様書無しさん
07/05/13 21:01:13
>165
>166
>139
171:仕様書無しさん
07/05/13 21:02:10
>>157
>せめて a == True とするのが、他人が読む時も精神衛生的にいいんジャマイカ?
bool値のある言語でそれをやったら、ちょっとヘタクソっぽい。
Cだと、
#define TRUE 0
#define FALSE -1
とか、ありえるので、わからなくもない。
172:仕様書無しさん
07/05/13 21:04:05
キモイとか言える次元かよw
感覚上身についているかどうかのレベルの問題じゃね?
(センスというにはあまりに次元が低すぎる)
#include <stdio.h>
char* a;
int main(){
if (!a){
printf("a");
}
}
とかどうすんだよ。aが初期化されて無い判定は。
まさかbool型とか、コンパイラがうまくやってくれるからとか言っちゃって0で、==するのか?www
ショッペーーー
173:仕様書無しさん
07/05/13 21:05:31
今日はとくに変だな
このスレw
174:仕様書無しさん
07/05/13 21:05:35
この人なんで火病ってんの?
175:仕様書無しさん
07/05/13 21:06:28
でさー 115 がいつ C って決まったの?
176:仕様書無しさん
07/05/13 21:08:32
>>175
暗黙の前提。ああいう構文の言語は全部がCから派生しているからね。
177:仕様書無しさん
07/05/13 21:09:17
まあ細かいことはプログラム書く人の自由ということで、115の場合はひとつの例として、
if aが1のとき{何もしない} else {何かの処理}がキモチワルイコードと言っているだけだ。
178:仕様書無しさん
07/05/13 21:14:59
じゃあここは間とって三項演算子で書こうぜ
179:仕様書無しさん
07/05/13 21:15:01
>>115 の主張は
if (a == 1) {
/* 〜ということやりたいけど後で考える */
} else {
で、「/* 〜ということやりたいけど後で考える */ を書くのが嫌だ」って話であって、
今の話題は >>119 が言う所の、
「if 文の括弧の中では、明示的に論理式を書く必要がない」か否か
って話だろ?
180:仕様書無しさん
07/05/13 21:16:07
>暗黙の前提。
こういう自分勝手な解釈をするヤツが一番手におえない
181:仕様書無しさん
07/05/13 21:19:37
>>180
>>115 ≠ >>176 というのも、暗黙の前提だな。
182:仕様書無しさん
07/05/13 21:23:04
それも勝手な解釈だな
その場合は前提を提示していないという意味で自分勝手な以下同文
183:仕様書無しさん
07/05/13 21:23:42
>>179
俺が
> /* 〜ということやりたいけど後で考える */
を追加した >>116 だけど、>>115 はそんなこと主張してないぞ。
>>115 の if (a == 1) {} else { ... } の解釈はいろいろありえるが、俺は
「if (a == 1) の時何もやらない」だと解釈した。
俺は別なつもりで同じようなコードを書いてしまうとコメントしたつもりだったんだが、
俺が余計なこと書いて議論を混乱させたのか? すまんかった。
184:119
07/05/13 21:28:36
正直すまんかった。
俺が勝手に>>115のaをブール値を表現する変数だと勘違いして>>119を書いた。
でも、よく考えたら>>115は明示的にa == 1って書いてるんでブール値ではないわな。
ブール値なら少なくともa == TRUEとか書かなきゃいかんはずだし。
まぁ、俺が言うのもなんだが>>140->>141でFAで
185:けーつえーき
07/05/13 21:58:00
>>184
その辺って熟練のPGでも考え方に違いが出てくるので
PLの考えに合わせるのが無難と思う。
そういえば、MSの環境でBOOLって型があって
#define TRUE (1)
#define FALSE (0)
と定義されてるんだけど
APIで返す値に1以外の0じゃない値が返るものがあったりするねw
186:仕様書無しさん
07/05/13 22:10:58
>>185
Windows APIのBOOL型の戻り値は、だいたい「成功すると0以外の値を返す」と
ドキュメントに記されているわけで、特定の定数TRUEを返すとは書かれていないんで
if (HogeHoge() == TRUE)
は間違い。普通はこういう書き方しないだろうけど。
ところでその#defineの括弧は不要なんじゃ...
187:仕様書無しさん
07/05/13 22:18:46
どころか、GetMessageみたいな3値を返すBOOLもある
188:仕様書無しさん
07/05/13 22:21:39
> ところでその#defineの括弧は不要なんじゃ...
まあ括弧でくくるクセをつけてあるのは良いことだと思う。
189:仕様書無しさん
07/05/13 22:26:24
おう。そういう例があるから だいたい とさりげなく断っておいた。
俺はそれに嵌ったクチだし。
(ウィンドウの生成に失敗しているのにGetMessageして-1が返って無限ループorz)
190:仕様書無しさん
07/05/13 23:17:00
>>186
APIリファレンスにも普通に-1を返すと記述されてたりするw
>>189
他にも罠wがいろいろあるのがMS仕様という印象
191:仕様書無しさん
07/05/14 05:41:07
スレタイが「この会社辞めようと思ったソースコード」なのになんで素人が混じってんだ?
192:仕様書無しさん
07/05/14 08:03:15
>>191
プロはこんな板見てないからじゃないか?
193:仕様書無しさん
07/05/14 08:26:50
>>191
素人とプロの違いは技量の違いではない。
「それが生活基盤であるか否か」だけである。
だからいくら素人に見えても実態はプロである事は多い。
194:仕様書無しさん
07/05/14 08:58:01
>>193
てことは>>191もプロになるんだろうな。
195:仕様書無しさん
07/05/14 11:30:47
とりあえず最悪の事態を考えてaはValiant型を想定しておくか
196:仕様書無しさん
07/05/14 11:44:27
>>195
ちょっwwwww
SUGEEEEEEEEE
そんな先のことまで想定してコーディングするとはwww
俺絶対入社するわ
全部Variantで書いとくんで保守たのんますwww
197:仕様書無しさん
07/05/14 12:29:41
なんかスレが延びているとおもったら、またよくわからん話題で盛り上がってるのか
えーっと
ぬるぽ
198:仕様書無しさん
07/05/14 12:35:31
がっ
199:仕様書無しさん
07/05/14 16:51:48
// ここからそこまで何をしているのか不明
そこって何処よ…('A`)
200:仕様書無しさん
07/05/14 17:52:51
' SOKOってラベルふってあんだろ
201:仕様書無しさん
07/05/14 17:56:16
底でしょ
202:仕様書無しさん
07/05/14 17:58:54
プロシージャ内と予測してみる
203:仕様書無しさん
07/05/14 19:31:37
ここってCの人が多いみたいね。
じゃあ、vb系を代表して:
Dim a, b As Integer
Cとは違います。多分正しくありませんよ〜
204:仕様書無しさん
07/05/14 19:34:04
>>203
普通にそう書いてる奴多いな
俺はメンテの時に困るから書いてないけど
205:仕様書無しさん
07/05/14 19:37:00
>>203 aはIntegerと見せかけて、バリバリのバリアントだな。
そういう紛らわしい書き方ができてしまうVBの言語仕様はどうみても糞だな。
206:仕様書無しさん
07/05/14 19:37:30
上の方でtrue=1, false=0とかあってけど、VBAではTrue=-1ね
多分VBも
207:仕様書無しさん
07/05/14 19:44:45
>>203
そーいや専門学校で教師がそのソース書いてたな。
208:仕様書無しさん
07/05/14 19:45:10
やめて〜(実話)
For i=1 To 10000
Cells(i,1) = "なんたらかんたら"
Next
ExcelVBA だが、行は何行あるか分からないらしい。動けばいいのかな?
上級SEさんのコードでした。
209:仕様書無しさん
07/05/14 19:51:16
>>205
更に、.NET 以降はあれで「どっちも Integer」という軽い罠。
>>208
まあSヨなら普通。
210:仕様書無しさん
07/05/14 19:52:34
>>209
そうなの?違うんじゃない?
211:仕様書無しさん
07/05/14 20:01:01
ソースじゃないけど聞いていい?
PL/SQLとTransact-SQLって同義なの?
前者はOracleで後者はSQLServerに使うものだと思っていたんだけど。
今日、面談で言われたよ〜
212:仕様書無しさん
07/05/14 20:01:03
>>209
セル1つ1つに値を入れる奴はヘタレ。
213:仕様書無しさん
07/05/14 20:33:28
>>210
…あのさ、君が前段と後段のどっちに疑問を呈しているのか解るのって君だけなんだが。
(7:3 で前段と踏んだ)
>>211
ここが質問スレじゃないことくらい理解してほしいところなんだが。
>PL/SQLとTransact-SQLって同義なの?
「ストアドプロシージャの記述に使用できる」という一点のみが共通項。
214:仕様書無しさん
07/05/14 20:39:13
>>213
>>210 どす。
前段どす。
Dim a, b As Integer
って.netでもaはVariantじゃないの?
215:仕様書無しさん
07/05/14 20:41:35
「VB.NET 変数宣言」でぐぐれかす
216:仕様書無しさん
07/05/14 21:03:36
ホントだ。知らんかった。
217:仕様書無しさん
07/05/14 21:21:01
Dimってさ、もともとDimensionの略で、配列の次元を宣言するための
ものだったのにどーしてVBは一般の変数宣言に使うようになっちゃった
んだろう。
218:仕様書無しさん
07/05/14 21:30:23
RubyとかLispとか動的型付けの言語でもコードが書かれてるんだから、
Variantでもいいじゃないか。
219:仕様書無しさん
07/05/14 21:31:21
>>218
底辺乙
220:仕様書無しさん
07/05/14 21:55:27
そもそもoption explicitにしない奴もいるわな。
いいんじゃない?最近のPCは性能がいいから。
221:仕様書無しさん
07/05/14 22:00:50
>195
Variant
222:仕様書無しさん
07/05/14 23:14:36
>220
ハードウェアの進化には楽天的であれ
ソフトウェアの進化には悲観的であれ
エンジニアの技術力の進化には絶望的であれ
# 上の2つは201の鉄則より
223:仕様書無しさん
07/05/14 23:59:36
スレリンク(prog板:711番)
224:仕様書無しさん
07/05/15 10:31:23
昨日を
today-1
と書くか
dateadd("d",-1,today)
と書くか
225:仕様書無しさん
07/05/15 10:56:39
普通下だと思ってた俺はどうなのよ?
226:仕様書無しさん
07/05/15 10:59:04
反省しろ
227:仕様書無しさん
07/05/15 11:36:02
ボリューム(D:)
↑
このへんがやる気ナイ・・
228:仕様書無しさん
07/05/15 11:43:17
>>225
すまん。Date-1だった。最近、VBやってないから忘れてた。
229:仕様書無しさん
07/05/15 12:07:08
>>203
あれ? 確かVB4か5までは a = variant, b = integerになるが、
VB5か6からは両方ともintegerになるような解釈になってなかったっけ
ま、毎回1つ1つきっちり書いている俺には関係ないが
230:仕様書無しさん
07/05/15 12:17:15
ならん
231:仕様書無しさん
07/05/15 12:23:57
今確認したけど
dim a,b as integer
ってVB6SP6でやると
a=Empty
b=0
になってたからaの型はVariantになってるね
232:仕様書無しさん
07/05/15 12:27:45
バージョンで仕様が変わったら、やってられないだろ〜
.netはいいチャンスだと思ったんじゃない?
233:仕様書無しさん
07/05/15 13:35:50
>206
その解釈は微妙。(VB(A)でもCでも)
どちらも、0が偽でそれ以外が真。
ただし、比較式などが返す値が、Cでは1、VB系は-1てこと。
>206自身はわかってるならそれはいいんだけど、
わかってない人が>206みたいな記述を読むと勘違いしたりする('A`)
234:229
07/05/15 16:09:20
>>231
ああ、.NETからの間違いだったかも
すまそ、ちょっとunicode変換されてくるは
235:仕様書無しさん
07/05/15 22:23:41
>>228
そんなの書けたか?
236:仕様書無しさん
07/05/15 22:37:00
>>235
今ちょっと試してみたけど、Excel VBA で Date 型だと書けてしまうな。気持ち悪い。
整数が日付、小数点以下が時刻ってことか…
俺はDateAddの方がどんな変数を操作してるかわかりやすいので安心できる。
237:仕様書無しさん
07/05/16 00:22:54
真値を数値として扱うと-1になることを利用した演算式が
昔のBASICにゃたんまりあってのう……
a = a + (h > 3) * 1
とか
238:仕様書無しさん
07/05/16 00:44:08
Oracle とかもDate型は数値扱いだろ
よくあるよくある
239:仕様書無しさん
07/05/16 07:10:34
>>237
むしろ条件式を使うことがコード量を節約する手法の一つだったのさ。
240:仕様書無しさん
07/05/16 09:46:11
>>237
の動作ってどうなるんだ?
こんな書き方しらねぇ・・・・
(h > 3)
この部分の解釈
241:仕様書無しさん
07/05/16 10:15:20
>>240
真なら -1 で偽なら 0 になる。
つまり C で書きなおせば
if (h > 3) a += 1;
ってこと。
この例だとコード量節約にもならないような。
242:仕様書無しさん
07/05/16 10:35:26
BASICならIF文使うと遅いからじゃね?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5202日前に更新/95 KB
担当:undef