1 :
デフォルトの名無しさん:
・低水準の処理でもないのにshortが多様されてるソース
・CでTRUE、FALSEを定義して使ってるソース
・ifの中でbool変数とtrue/falseを比較していないソース
>>前スレ996 &
>>4 if文の条件式の中身がboolであることが明確でないと読みにくいとw
そんなことも明確化しなきゃいけないなら、変数そのものもboolかどうか明確化いたいよね?
blnDoneとでもしたらww
ねたにまじれすしてるばかがいるという。。。
falseと比較するやつは論理学の本呼んだほうがいいな
!の方がプリミティブなんだから
!の最大の問題点は、見難いことだ。
#define NOT !
>>9 それいいなw
!って見落とすから == falseとかいつも書いてる
見難いのはフォントの問題だろ
!だけ太くすれば解決する
影響範囲を明確に表現したい場合はこんなのがいいかも知れない。
#define NOT(x) (!(x))
!が見にくい? スレ違いだが、プロポーショナル使ってない?
>>13 使ってない
上から流して読んでくと見落とす
>>9 ここは「ヘタだなぁ」と思うコードを晒すスレじゃねーのかよ。
>>13 プロポーショナル使ってんのは
>>11だけだ。
if (!ll_) と if (!l_)が混ざると固定でもいやなもんがある。
Cで TRUE FALSEと true falseが存在するコード
>>15 ああなるほど。そういう変数名だと分かりづらいね。確かに。
if(ll_||!l_) とか。
GetMessageの戻り値
>>if(!ll_)
ぱっと見て「ヘタだなぁ」と思うコード
>>19 ヘタかどうかは微妙だよね。スタイルの問題だと思うんだ。
Cでは変数名をあまり長くしない文化があるし。
>>9 おお、これ良いじゃん
前スレを含めて初めて有益なコードを見た気がする
str = "Timeout=%TIMEOUT_SEC%"
:
str.Replace(str, "%TIMEOUT_SEC%", timeOut)
みたいなことを、C++とか.NETとかでやってるやつ。
Javaはしゃぁないかもしれん。
boolサポートコンパイラではif内bool変数とtrue/falseを比較しないのは妥当ではないですか?
可読性もよいでしょう。
bool condition_is_true = true;
if (condition_is_true) doIfConditionIsTrue() ;
boolがないコンパイラ依存プロジェクトでcharをbool的型として扱う次のケースはいけません。
typedef char BooleanType;
#define TRUE 1
#define FALSE ~TRUE
以下のtestでNGとなります。
void doIfConditionIsTrue(const char *c) {printf(c)}
BooleanType condition_is_true = !FALSE, condition_is_false = FALSE;
if (condition_is_true == TRUE) doIfConditionIsTrue("OK.\n"); // OK?
if (condition_is_false) doIfConditionIsTrue("NG!\n"); // NGはでないはず
SQLでDISTINCTを使っているクエリー。
必要なときもあるが、
ただ単に一意にし損ねているのに対して、バグ回避でつけているのをよく見る。
今の職場では特に、よく見る。
C的には ==FALSE はいいが ==TRUE はNG。
(っつーか FALSEが~TRUEはないやろ。)
CでTRUEやらFALSEやら使うのがダメ。
> #define FALSE ~TRUE
・・・・
じゃあWindowsのAPIはダメということで
int toInt(string str){
try{
return (int)str;
}catch(BadCastException e){
return 0;
}
}
のように、正常系で例外を使っているコード。
調子に乗ってやってたけど、今思うと我ながらどうかとおもう
コード。
主に、 C++ で ! 演算子がオーバーライド ( ロード?どっちだっけ ? )
されているクラスのインスタンスの評価。
if( !!aaa )
{
// aaa が true の場合のコード
}
33 :
デフォルトの名無しさん:2006/03/19(日) 19:14:21
if( a > b ) return 1;
if( a < b ) return -1;
return 0;
スマートに書けないものか。
>>33 こうか?
return a > b ? 1 : (a < b ? -1 : 0);
これじゃ縮んだだけか・・・。
36 :
デフォルトの名無しさん:2006/03/19(日) 19:26:54
return (a > b) * 2 - (a < b);
説明が必要なコードは書かないでね。
能書き垂れるだけで実際にモノが作れない奴はカス。
39 :
デフォルトの名無しさん:2006/03/19(日) 19:30:42
>>34 これならどうだ?
return a < b ? -1 : (int)(a > b);
return a-b;
でじゅうぶんだと思う
41 :
デフォルトの名無しさん:2006/03/19(日) 19:31:58
>>33 が一番まともです。
アルゴリズムは、特定の言語の仕様
(たとえばbooleanのtrueをintにキャストすると-1になる)
に依存しないでください。
ありがとうございました。
43 :
デフォルトの名無しさん:2006/03/19(日) 19:33:40
(a>b)-(a<b)でいいじゃん。
>>36,43は比較を必ず2回しなきゃなんないし、説明も必要。
>>33のままでいいだろ。
メモリが少ないとかCPUが遅いとかそういう制限がある場合を除いて、
コードはどういう動きをするかという説明を
そのままを置き換えただけにしてください。
コードは人間が読み書きするものなんですから。
ぱっと見てへたな仕様だな
>>33で充分スマートだと思うが。
あとは精々順序くらいか?1,-1,0よりは、-1,0,1や1,0,-1という順序のほうがちょっとまし。
まぁ難癖レベルだな。
こういう:「if(a >= 0 && a <= 10)」のは、こう:「if(0 <= a && a <= 10)」しろって思うけどね。
>>33 これが一番スマートだろ。見た瞬間理解できる。
他のはぱっと見て「ヘタだなぁ」と思うコードだな。
>>48 寧ろ漏れは、
「喪前は"0がa以下"なのか?」と突っ込みたくなるが。
誰しも一度は、0 <= a <= 10 こう書けないのか?って
思ったことがあると思う。実生活ではよくある表現だし。
> if(0 <= a && a <= 10)
これは、この実生活で自然な書き方のちょっと変形版。
&&の左右で分けて読むのではなく、全体で一つの意味と見る、
いわば慣用句的な使い方だと思う。
0 <= a && a <= 10
は、
!(a < 0 || 10 < a)
とかきたくなるんです。いや一見ヘタですけど。
だって配列外参照予防として、1オリジンでなく0オリジンしますよね。
const size_t SIZE = 10;
int array[SIZE];
for(size_t i = 0; i < SIZE; ++i) do(array[i]); // ふつう0オリジン。(OK)
for(size_t i = 0; i <= SIZE - 1; ++i) do(array[i]); // 1オリジンしません。(その1)
for(size_t i = 1; i <= SIZE; ++i) do(array[i - 1]); // 1オリジンしません。(その2)
好みの問題です。
私見、1オリジンはコードがちょっと長いし、添字の調整とか間違えやすいのでダメでしょう。
>>53 じゃあこれはどうする?
'0' <= ch && ch <='9'
57 :
デフォルトの名無しさん:2006/03/21(火) 08:17:14
>>53 「だって」以降の文が繋がってない。
ぱっとみてヘタと分かる文章の好例ですな。
60 :
デフォルトの名無しさん:2006/03/22(水) 18:10:01
だってだってだって、だってだってなんだもん
/ l⌒l O | ̄| O ヽ  ̄ ̄/  ̄ ̄/ ‐┼‐ ─‐ _|_ ‐┼─ /
| | | / | | lノ ー lノ ー ‐┼‐ / / __| ヽ | \
ヽ、. | | ├ー┤ ノ ノ ノ (___ (___ / し / (丿\ し
あんた、あたしのこと「あんたあんた」ゆうけど、あたしもあんたのこと「あんたあんた」って
ゆわへんから、あんたもあたしのこと「あんたあんた」ゆわんといてなーあんた!
>>62 [゚д゚] デフラグガカンリョウシマシタ
/[_]ヽ
| |
、、、「「「」」」あああああああああああああいうかけこここしししたたたたたたたた
たたたたたっててととととどなのののへももゆゆゆらわわんんんんんんんんんんんんー!
>>52 > 誰しも一度は、0 <= a <= 10 こう書けないのか?って
> 思ったことがあると思う。
実際そう書いてはまった事がある…。
まあ、遠い昔だが。
>>64 [ #゚д]y-~~~
/[へへ
36>>いかそでなのははれソトー?w
>>65 Cでそれが期待通りにならないのは(言語仕様のシンプルさが失われるので)分かるが
Javaならそういう表記も可でもよかった気もする
>>67 Java は C と C++ のプログラマを引っ張り込むためにわざとそっくりな
状態にしたんだろう。
a >= 0 && a <= 10 の代わりに a in [0, 10]とか、
a >= 0 && a < 10 の代わりに a in [0, 10)とかできたらいいのにね。
>>69 つboost::numeric::interval
最近boostを挙げるやつが多いけどboostってSTLほど使ってる人口多くないよな?
>>69 PASCAL に似たようなのなかったっけ? a in 10..20 のような書き方。
>>72 C系以外はほとんど出来ると思うぞ
特にスクリプトで出来ないのは無い
>>73 え? でも Perl にはないのでは? あったっけ? (Perl は C 系?)
ほとんどの言語にはないだろ。
おれは、SQL (Between 演算子) しか知らん。
(1..10).include? x
Rubyならこんな感じで 誰か他の言語お願い
Haskellならこんな感じかな?
elem x [1..10]
Perl にも範囲演算子はあったはず。
文法の問題であって書き方の問題じゃないんだけど、
switch (sh 系なら case) 構文はもう少しどうにかならんかったものか。
・C/C++
break がないとフォールスルーを行うが、
それを意図するケースは殆どなく、バグの温床。
・Java
愚直に構文を引き継いだが何の利点もない。
・C#
フォールスルーを許さない仕様は評価できるが、
だったら break; とか書かせるな。
・sh
;; で締めなくても、次の ラベル) で判別出来なかったものか。
>79
>・C/C++
> break がないとフォールスルーを行うが、
> それを意図するケースは殆どなく、バグの温床。
case A:
case B:
//A 又は B の時
>>81 そんなケースがほとんど無いっつってんだろ!
池沼かお前は!
いや、普通にあると思うのだが。
82の方が池沼に見えるけどなぁ
普通に使わんか?
授業でしかプログラミングしたことのない
>>82には
実務の世界はわからんよw
86 :
82:2006/03/24(金) 10:45:41
釣れた釣れたw今日は大漁ww
「釣れた釣れた」が「お前の母ちゃんデベソ〜」と言うガキの捨てぜりふに聞こえるw
聞こえるし、実際その通り
>>82 あまりお目にかかれないのは、case ラベル間に処理が入るパターン
case A:
func_A();
// fall-through
case B:
func_A_or_B();
だろう。
>>79 つかそもそも「case 〜」って goto のラベルと同等だし、
{ } ブロック内に突入できるって時点で腐ってると思うんだが。
(そんなコード書く奴もアレだが、そう書ける必要なんてあるか?)
// 技巧に走って、オナニーに昇華した例
i = 6;
switch (asoko) {
case A:
for (i=0; i<8; i++) {
func_A();
case B:
func_B();
}
func_A_and_B();
break;
default:
func_C();
}
91 :
デフォルトの名無しさん:2006/03/24(金) 14:38:31
>>89 >(そんなコード書く奴もアレだが、そう書ける必要なんてあるか?)
書ける必要はないが、書けなくする必要もない。
書きたきゃ書けばいい。
92 :
デフォルトの名無しさん:2006/03/24(金) 15:16:03
>>33 a,bがそんなに大きくないなら
c = (b-a)
>>31; // b<a なら-1
d = (a-b)
>>31; // a<b なら-1
return c-d;
a,bを全範囲でとなると 符号無ならCF 符号付なら OVF が必要でアセンブラで書く事になるな
if(0 <= a && a <= 10)
↓
if( ((unsigned) a) <= 10 )
95 :
デフォルトの名無しさん:2006/03/24(金) 16:21:29
解説しよう。
整数型は 1回の定数との比較では実は範囲の比較をしてる
たとえば 10<a という比較は、 11から aに入れられる最大値の範囲にあるかどうかの比較をしている
たとえば aが charであれば 11〜127であるかを比較しているのだ
したがって if(0 <= a && a <= 10) は aがcharであれば
−−−−−−−−−− キリトリ −−−−−−−−−−−
俺は普段は
>>33みたいな書き方をするが、
return (a < b ? -1 :
a > b ? 1 :
0);
みたいな書き方の方がいいんじゃないかと思うこともある。
やりたいことをより明確に表せているから。
だからって読みやすくはならないのが難点。
>>78 Perl の .. は範囲演算子ではなくてリストを作成する演算子だ。
10..15 と書いた場合 (10, 11, 12, 13, 14, 15) というリストを
作る。それだけ。んで、 in のような演算子はない。なのでC言語
風に 10 <= $a && $a <= 15 のような書き方をする必要がある。
>>92 それは言語がCかC++で型が32ビット符号付き整数の時しか使えないのでは?
あるいは Java の int か。
>>82 あるよ。
====== 終わり ======
101 :
デフォルトの名無しさん:2006/03/24(金) 17:27:32
>>33 int r;
(r= a-b) && (r=((a>b)*2-1)) ;
return r;
>>101 a=b の時、-1が返りそうなんだけど…。気のせい?
103 :
101:2006/03/24(金) 17:36:56
ああ、そうか。
&&の演算の時、falseが表われた時点で以降の式が評価されない事を期待してるのね。
失礼。
スレタイ通りのプログラムだw
104 :
102:2006/03/24(金) 17:37:46
↑102でした。重ねて失礼。
105 :
デフォルトの名無しさん:2006/03/24(金) 17:38:35
106 :
102:2006/03/24(金) 17:43:08
(a>b)って、真の時、-1にならない?
true...-1 false...0 が普通だと思ってたけど違うのかな?
107 :
デフォルトの名無しさん:2006/03/24(金) 17:46:00
>>106 言語による。 Basicなんかはそうだね。
C言語系では 整数型へ暗黙の変換がされる時は 0か1
皆がお互いに周りに合わせる事が大事
パズルじゃないんだから
見せびらかしちゃ駄目。
109 :
102:2006/03/24(金) 18:01:20
>>107 そうなんだ。知らなかった。
trueを-1にしとけばnot演算がビット演算と同じになるから、
「なんて賢いんだ」と感動したんだけどな、昔。
trueを1にするのって何かメリットあるの?
110 :
デフォルトの名無しさん:2006/03/24(金) 18:08:15
>>109 単なる設計ミスでしょ。
char や int をデフォルトで符号付にするなら
論理型を1bit値であるとみて符号拡張と考えたら -1 になるべきと思えるよね
といっても c には論理型は無くて、int で代用するのだと見れば、0,1でいいんじゃないの?
111 :
デフォルトの名無しさん:2006/03/24(金) 18:13:54
>>94 if( ((unsigned) a) <= 10u )
>>94 if( (unsigned) a <= 10u )
>>33 true=1 , false = 0と仮定すると、
return (a>b) - (a<b) * (a!=b);
...可読性なさすぎ。。。
>>81 そういうケースは、
case A, B:
// A 又は B の時
みたいにできなかったのかなぁ...。
>>105 短絡評価をサポートしてて左から評価されない環境なんてないでしょ。
>>109 > trueを-1にしとけばnot演算がビット演算と同じになるから、
C言語 (に限らないが) は、≠ 0 を真とみなさないといけないから
どっちにしろ論理否定とビット反転は一緒にはできないよ。
115 :
デフォルトの名無しさん:2006/03/24(金) 19:06:11
>>94 時々、そういうコードを見るよね。 でもコメントでも書いてくれないと勘違いする
どう勘違いするのかわからん
>>101 俺はそういうコードを「ヘタ」と認識する。
if(abs(a) <= 10) とでも思うんじゃね?
>>114 case A or Bとか書ける言語があったような。
自分はそれよりも、caseに正規表現を使いたい。
なんつーか…
ここ、すっかり頭の悪い発言スレになってるな。
>>119 > case A or Bとか書ける言語があったような。
VBA なら、
Select Case N
Case 1, 3, 5 to 6, is > 100
' N = 1, 3, 5, 6, 100以上の時の処理
〜
End Select
とか書ける。
> 自分はそれよりも、caseに正規表現を使いたい。
switch/select 等の多方向へ分岐する命令で文字列の
比較ができる言語なら大抵 Case の所に「式」が書ける
んじゃないか? (そうじゃない言語があったらすまん。)
だったら、
Select Case True
Case S Like "[0-9][0-9a-f]*"
〜
End Select
みたいな感じでいいと思うが。
まあこのあたりになると、最適化が云々以前に、
if〜elseif〜else のシンタックスシュガーだな。
>113
true=1/false=0 なら、最後の *(a!=b) は不要では。
return (a>b) - (a<b);
a>b の時 … 1 - 0 = 1
a<b の時 … 0 - 1 = -1
a=b の時 … 0 - 0 = 0
>>62 うわっ!それ大昔のベーマガのOFに載ってたネタじゃんか!
>>126を書いてから冷静になったが、コピペで出回ってるのかな・・・
昔ついでに、昔のBASICは真が-1なのを利用して
「2468で上下左右に移動、ただし画面からはみ出さない」を
I$=INKEY$
X=X-(I$="4")*(X>0)+(I$="6")*(X<39)
Y=Y-(I$="8")*(Y>0)+(I$="2")*(Y<24)
ってまとめて書いたっけ。機種によってIFより速かったり遅かったり。
今こんなの書いたら褒められるか殴られるかどっちだろう。
むかし、実際に外注にVBで書かせて発見したコード。変数名も原文ママでどうぞ。
If A = "1" Or "2" Then
ツッコミどころはいろいろあると思うが、とりあえずバグってると思った。
129 :
デフォルトの名無しさん:2006/03/25(土) 21:43:50
邪悪なVBコードコンテストでつかwww
バグならヘタ以前だが、Aがフラグ変数で動き自体は意図どおりだったらヘタだな。
N88からのBASIC使いかもしれんw
趣味プログラマでつが自分で書いててふと不安になった
鑑定を依頼してみる
用件:変数dwWidthより大きい2の累乗の最小値を求めてdwPwXに。
for(DWORD dwPwX = 1;dwPwX < dwWidth;dwPwX *= 2);
>>132 ×用件 ○要件
その dwPwX は for が終わるとスコープアウトするわけだが。
VC だとしても dwWidth が 1 だと dwPwX が 1 になって要件を満たさない。
ハンガ(以下略
dwWidthが2の累乗なら より大きい にはならんな
>>132 それだとループの回数がlog(N)に比例するから大きい数のときに遅いのが少し気になる。
自分なら関数化してこう書くかな。
//n より大きい最小の 2の累乗-1 を求める
DWORD ceil2pm1(DWORD n){
for(int i=1;i != sizeof(n)*8;i+=i)n |= n >> i;
return n;
}
//n 以上の最小の 2の累乗 を求める
DWORD ceil2p(DWORD n){
return ceil2pm1(n-1) + 1;
}
ついでに関係ないけど。
//n 以下の最大の 2の累乗 を求める
DWORD floor2p(DWORD n){
n = ceil2pm1(n);
return n - (n
>>1);
}
i*=2でもi+=iでもどっちゃでもええんとちゃう?
>>135 i != sizeof(n)*8 は != より < の方がよくない?
sizeof(DWORD)は4だからいいといえばいいんだろうけど。
それから、そこを直接数値で書くんでなくsizeof(n)とするなら、
もう一歩踏み込んで、8でなく1バイトのビット長の定数を定義した方が
可搬性がさらに高まるのでは。
DWORDって時点で可搬性とかどうでもいいと思うが。そもそもsizeof(n)とかせんと素直に32にしとけ。
>>139 C#っつー可能性もあるんとちゃうかなぁ。
141 :
132:2006/03/26(日) 23:22:01
結構反響があってビクーリだ
>133
ちょっと嘘書きました。
ああ書いたけど本当は定義はforの外です…
あと説明が悪かったのですが、このコードD3Dのテクスチャロードに使う部分で、
>dwWidth が 1 だと dwPwX が 1 になって要件を満たさない。
>dwWidthが2の累乗なら より大きい にはならんな
↑これは実用途としては要件を満たしてたりします。スンマソン(dwWidthが1なら1、2の累乗ならその値を使う)
>135
成程と理屈は判るんですが、何となく邪悪さを感じる…
>>135 スピードが気になるなら二分検索にすればいいんじゃないの?
32ビットなら最悪5回のループで済む。
143 :
135:2006/03/27(月) 00:13:28
>>138 あー、確かに < のほうが良いですね。
それに
>>139 のCHAR_BITも組み合わせると無駄に可搬性が高いコードになりそうw
Java の案件なのに nTotal とか strName とかって変数が出てくると
「こいつのソース、もう読みたくねえなあ。。。」と思ってしまう。
Writing Solid Code で思いっきりハンガリアンマンセーされてて萎えた。
買う前にもう少し確認してからにすべきだった。
Code Complete は面白かったから、こっちもガチだと思ったのに。
ここは逆ハンガリアンで対抗だ。
ttlIntegerとかnmStringとか。
別にハンガリアンでもいいんだけどさぁ
ローカル変数をmintCountとかするのは止めて欲しいな
もちろんインスタンス変数にもmがついてる
その m は何の m だろうなあ。。
大文字の変数(HOGE_MAXとか)なのに
const じゃなかった時にはかなり脱力したなあ。
理由尋ねたら「最初は定数で良いと思ったんだけど、
後から変更が必要になっちゃったから。」だとさ。
だったら camel に書き換えてくれよ。
150 :
138:2006/03/27(月) 01:07:02
>>140 用途があるかどうか分からんけど、DWORD以外への使い回しを考えたから。
使いまわすならテンプレートで書くが。
なんか
>>148は勘違いしとる気がするなぁ。
多分コイツにはi=i+1もヘタ以前なんだろうな。
キチガイは相手すんな
153 :
デフォルトの名無しさん:2006/03/27(月) 07:03:48
>>132 dwPwX = dwWidth-1; //1小さい値を代入して
dwPwX |= (dwPw
>>1) ; // 1/2したものと or
dwPwX |= (dwPw
>>2);
dwPwX |= (dwPw
>>4);
dwPwX |= (dwPw
>>8);
dwPwX |= (dwPw
>>16); //これで dwPwX に必ず全てが1の値が作れる
dwPwX ++;
154 :
デフォルトの名無しさん:2006/03/27(月) 08:09:39
最近switch文やめてif { ...} else if {...}...にしてる。
switchはIDの羅列のみに限定中
>>154 なぜわざわざ遅くなるようなプログラムにすんのか理解できね
156 :
デフォルトの名無しさん:2006/03/27(月) 08:44:04
>>155 switchって時代遅れな感じするし、インテル臭がぷんぷんするから
Java だと条件によっては if-else-if より switch の方が遅くなる。
パフォーマンスを語るなら神話や経験に基づいた憶測は止めて
実測値で語れとえらい人が言ってた。
列挙が絡む場合は switch 使った方が分かりやすいと思うので俺は使う。
159 :
デフォルトの名無しさん:2006/03/27(月) 08:59:29
switchってたぶん昔のCPUのインデックステーブルの高速処理を利用するための名残だと思う。
速かったけどね。
DECか何かのアセンブラ命令を置き換えたやつ。
ペンティアムやアスロンは高速化の次元が違うから、単純な比較は難しいね
>if と switch
俺は、取り敢えず書いてみて、読みやすい方を使う。
とりあえずswitchにしといてコンパイラの最適化にまかせればいいと思うお。
>switchって時代遅れな感じするし、インテル臭がぷんぷんするから
読んでる方が情けなくなってきた
switchちゅうなら、中こんなじゃあるまいか。
アセンブラでゴリゴリする時は、まだまだ良く使うよ
switch( hoge )
↓
mov er hoge
add pcl hoge
jsr@ subHoge1
jsr@ subHoge2
…
jsr@ subHogeN
オレはdo〜whileが嫌い。
↓このdoが寂しそうだから。
do
{
:
}
while(...);
中括弧は次行派なんで、「do{」と詰めて書くとそこだけ雰囲気変わるし。
doにとっては一人で居るのが最高にいいんだよ。
鬱なのかな。がんばって欲しいもんだ。
>164
doにとって唯一活躍できる場なのに…
dodemoii
>>164の酔うな書き方はまずいんじゃねーの?
やっぱり
do {
} while (...);
とかいたほうがiizo
ちと不安になったのでレス。
すべて大文字⇒定数
∴定数⇒すべて大文字?
定数でもすべて大文字にしていないのだけど、
みんなはどう?
定数=大文字にしてる。
PRINT_LINE_MAX
変数は
nPrintLineMax
微妙にハンガリアンでごめんね・・(´・ω・`)
定数は全く同じ
PRINT_LINE_MAX
変数(ローカル/パラメータ)は
printLineMax
オブジェクト指向限定になっちゃうけど,フィールド変数ってどうしてる?
_printLineMax
printLineMax_
前後どっちにつけるか,いつも悩んでる
value objectなときはつけなかったり一貫性なくてごめんね..(´・ω・`)
>>173 フィールド変数って言われるとJavaの話のように思ってしまう。
ので、自分は“_”はつけません。getter/setterの名前と合わないと気持ち悪いから。
_なんかに頼らず常にthisをつける。これ最強
176 :
173:2006/03/29(水) 06:25:14
>>175 そこまで強く言ってくれたので,統一するってことで今日からthisにします.
とんくす.
基底クラスにあるメソッドなりフィールドなりを「基底クラスにあるから」という理由だけで
superなりMyBaseなりつけて参照しているのを見ると「ヘタだなぁ」と思う。
>>173 フィールド変数って呼び方が新鮮だった。
なるべく別の名前を考えてふってる。どうしても思いつかないときだけ _ を付ける感じ。
最近、クラス継承を禁じ手にしてる。古いソースを使うときのみ、そういうものが残ってる感じ。
>>177 super はともかく、適切に typedef された "MyBase" 風のものは
後で基底クラスを変えられるような template クラス化する際に役に
立つことがあるよ。
ヘタだなぁという言語仕様
setNumber(getNumber()+1)
getter/setterなんて糞
プロパティがいい!
プロパティの実体のフィールド変数ってどうしてる?
たとえば、
obj.value (valueはプロパティ) の値をそのまま保持している変数。
value_
_value
m_value
どうするかいつも悩んでる。
>>175 内部クラスから呼び出すときはどうすんの?
ヘタだなぁと思うコード
obj.Number = obj.Number + 1
直接プロパティをいじらせるのではなく
論理的意味のある名称のメソッドを定義しろよ
直接いじるからプロパティなんだろう。
コードの中身を読まなくてもわかるヘタポイント
・識別子名がローマ字
・識別子名の(英)単語のスペルが間違っている
・識別子名に使っている(英)単語の意味をおそらく誤解している
プログラミング能力以前の、「テキストファイルにアルファベットを打ち込む」
能力が欠如している可能性大。
ローマ字は別にいいと思うよ。無理に英語にしなくても。
メソッド等で一番よくみるヘタな英単語は「regist」。
そんな単語ねぇよ。
クラス名とソールのファイル名がバラバラだと、センス悪いなと思う。
class MyClass なら"MuClass.h","MuClass.cpp"ってしていると好感もてる。
飲みに行きたいくらいに。
>>187 スペルみすった。俺にセンスがない・・・・・・・・・・・・・・・ モウダメポ・・○| ̄|_
>>187-188 class stdio
{
public:
static int printf(const char *, ...);
static int sprintf(char*, const char *, ...);
// 以下略
};
?が抜けちゃった
本人?
晒せ
>>186 ローマ字で統一されているならまだポリシーとして認められるが、
それと同じ意味で使っていると思われる英単語の識別子が別にあって、
しかもそのスペルが間違ってたらどう思う?
ex.
ゲームのコードで、敗北に関わる何らかの処理をするらしい関数hogehogeMake()
(もうこの時点で"make(マケ)"と"make(メイク)"が混乱する)。
そして別の箇所に、敗北の状態を意味するらしいHOGEHOGE_LUSEなる定数。
>>194 >・識別子名がローマ字
これ単体で問題ないなら、組み合わせてるほかのことに問題がある。
同じ意味なのに複数の用語を用いるとか、スペルミスとか、意味の誤解とか、
そういうのはローマ字でも英語でもイタリア語でも同じように問題。
日本語の場合は音が同じでも意味が違う単語は多いぶん
他の言語と同じよような問題だとは言いがたい。
某官系の仕事の場合CYUKEIとCHUUKEIの両方の用語が定義されているので、
勢いプログラムの方もCyukeiSakuseiとかBuildChuukeiとかMakeRelayとかが入り混じる。
>>194 そんなLUUSEなソースは見たことないなぁ、さすがに。
識別子に漢字を使える言語って結構あるよな。ローマ字にこだわらんでもよかろうもん。
コメント以外に2バイト文字が散見されるコード
UTF-16に変換したらヘタになるわけだな
UTF-16にしなきゃならないようなソースならヘタと言えるかもな
Javaは常にヘタとなるな。
昔のJavaはASCIIでも問題なかったが、
いつから常にUTF-16にしなきゃならなくなったんだ?
2年くらい前から
for( int i=0; i < 10 ; i++ )
{
...
}
こんなソース見ると、とてもなごむ。 (;´Д`)ハァハァ
>>208 俺もわからん。10の前後にスペース入ってることくらい?
ところで最近見たヘタな名前。POST_NOという名の郵便番号。
気づいた頃にはPostNoとかが散乱してて手に負えず(´・ω・`)
漏れも
>>207 はナゴム。
教科書とか入門書とか読んでるみたいで。
実戦だとこうならない?
for (int i = 0; i < BLOCK_SIZE; i++) ... とか、
for (T:iterator it = v.begin(); it != v.end(); ++it) ... とか。
C++erなオレは
>>207のi++を見ると++iに直したくなるんでちょっとストレス
>>211 intでソレをしたくなるのは、単なる低脳
でも i には i++ が似合うかも
>>212 せっかくイテレーターで一般化されてるのに区別するほうがおかしい。
昔のコンパイラは、i++より++iの方が速かったからな…
昔話や「最近の○○は…」とか口に出たら老けかなと思ってる。
いや〜1年追いかけなかっただけでも「最近のHDは…」って思うなぁ。
その前は「最近のメモリーは…」だったし。
1年のブランクを短いものと感じる辺り、やっぱ老けてんのか。
最近そんなハードウェア進化してねーだろ。
ここ数年、それまでと比べ、ハードウェアは明らかに進化曲線ががた落ちしてる。
218の内容自体が昔話なわけか……
老けっつーより、老化してんな……
ヘタだなぁと思うレベルと
やってはいけないレベルって
それなりに差があるんだろうか、このスレとしては。
やってはならないレベルのコードは「ヘタだなぁ」と思う前に
目が読むことを拒否し、脳は理解することから回避しようとするが、
そういうコードは大抵仕事絡みでやってくるので逃避することができない。
やってはならないレベルの話はマ板でやってるっしょ。ネタスレだけど。
ここはあくまでも動くけどなんだかなーと思っちゃうコードでいいんじゃね?
>>219 劇的な進化はないけども、例えば
去年の今頃には 2.5 インチ 120GB なんて
売ってなかったわけで。
だから?
何がだから?
>動くけどなんだかなーと思っちゃうコード
やってはいけない領域に片足突っ込んでる場面しか思い出せない。
なんだかなーと思うテストデータは結構あるんだけど。
やってはいけないコードは直さないといけないが、
ヘタなコードは直さなくてもいい。場所によっちゃあ直すと怒られる。
そこの君。これを見ても修正の誘惑に勝てるのか?
char buf[10];
sprintf(buf, "0");
別にいいんじゃないの? strncpy とか無理に使う事もないだろ
変更連絡票書いて、影響範囲書いて(ってこれは「無し」で良いか)、
修正理由書いて、修正理由の分類書いて、テストの必要無しの理由書いて、
バージョン管理システムに上げて、ビルド担当者に連絡して、
とか考えたらそんなバグってもいないし効率もさほど悪くないもの
ほうっておくよ。
ナガーイ文字列をstrcatでゴリゴリ連結してるのとかだと迷うけど・・・
if(A){
if(B){
if(C){
}else{
}else{
}
}else{
}
if文がネストするとスパゲティな感じがするんだけど、
>>232 そうだなあ。深いネストでしかもブロックの中が長いと読み辛いな。
更にインデントがガタガタになっているとぱっと見て分からない。
C言語の場合はものによっては goto 使うべきだよね。複数のファイルを
オープンしたりメモリ確保したりして、途中でエラーが出た時の処理とか、
ifをネストさせてないと復帰処理が下に行くほど大きくなるが、しかし
ifをネストさせると読み辛くなる、という場合。(C は try catch が
ないからその代わりに、ということでもある)。
いやだから、そういう目的で例外を使うコード自体がこのスレの対象なわけだが。
>>233 エラー処理に例外を使うのは普通じゃないの?
I/O処理なんかでtry〜finallyするのは常套句だと思うけど。
この場合は例外はそこで捕捉して閉じてるし。
「変更連絡票」だの「ビルド担当者」だの、ってのは
「ぱっと見て『ヘタだなぁ』と思うシステム開発手法」だな。
>>235-236 普通のコードはこのスレの対象外。
>>237 でもそれを変えるのは結構大変。
大規模開発案件だとか、小規模開発なのに
クライアントが大手電器企業だと特に。
>>238 漏れ、某芝相手でそんなもん見たことも聞いたこともましては食ったこともないよ。
「ちょっと手直しして欲しいんだけど。概略コード送るからよろしく」
「判りました、やっときます」
「できました。差分送るからパッチ当ててください」
「ありがと、普通にビルドしていいの?」
「あー、一応make cleanしてからmakeしてください」
「了解、今度来るときにリポジトリ持ってきてね」
>>235 まあ、そういうふつーの言語をいつも使える人は幸せですね、というお話。
243 :
デフォルトの名無しさん:2006/04/19(水) 22:14:01
今日初めてJavaのプロジェクトに入ったんだけど
クラス名がみんなID(XXXXX_9999)だった。。。
うーん
規模がデカいと結構こんなもんなんですかね
(名前考えるのは確かに大変そうだけど)
>>243 パッケージというものがわかってないアホが
リーダーだと苦労しますな。
246 :
デフォルトの名無しさん:2006/04/19(水) 23:08:05
>>243 そういうの、Cのプロジェクトでも書かされたことがある。
とりあえず、フツーに書いて、あとからエディタで、関数名をIDに置換した。
COBOLあたりの文化なのかねー?
ケースツールから自動生成したとか。
だとしても、それをそのまま使うってのは最低だと思われ。
そもそもFQCNで全てユニークに判別可能なのに、なんでIDなんざ振る必要があんのかね?
余計面倒を増やすだけで、何のメリットも無いのに。
>>248 業務系だとしばしばそういう目に遭う。
画面の設計書と同じ番号で関数書く規約なんて邪魔でしかないんだけどねぇ。
#しかもabc1234_init()とかabc1234_stop()とかって、クラスってなんですか? な規約だったり。
そういう規約は中途半端なローマ字とかの名前を使う馬鹿がいるせいでは。
その馬鹿のために別の馬鹿が規則を作っちゃったとか。
業務プログラマってのは奴隷でしかないんだから
ゴチャゴチャ言わず、手足となってコーデングしろってことさ
252 :
デフォルトの名無しさん:2006/04/20(木) 07:35:35
番号に比べたら、ローマ字綴りのほうがマシなんじゃない?
>>251 「脳」がまともに考えて設計してくれりゃそれでもいいんだけどね。
なんで手足が悩まにゃならんのだ。
>>253 だから、成果にお金を払ってるんじゃない。人月に金を払ってるんだから、
作業性が悪いのは有難い事と受け止めろ。
>>254 そうそう、何で残業時間が長いだけの業務系コーダーが
客先信用度No.1の制御系SEより年間売上高くなるか考えれば自明だよな。
前提が間違っているとあらゆるものが飛び出てくる
これが論理学というか宇宙の真理というものだ
番号関数はその規約を作成する過程でバグがある
>>254 値段は見積もりでついてるから、作業性が悪くても収入は増えんなぁ。
>>232 if文のネスト自体はせざるを得ない状況もあるが、
その中にそれぞれの場合のロジックが埋め込まれているとヘタと感じるね。
259 :
デフォルトの名無しさん:2006/04/20(木) 21:23:51
80桁に収まってない行が大量にあるコードは、ぱっとみてヘタそうに見えるね。
ムリヤリ80桁にするのは?
もっとヘタに見える。
>>259 >80桁に収まってない行が大量にあるコードは、ぱっとみてヘタそうに見えるね。
一般に
>>243 みたいなところは、やたらと80桁に拘る傾向にある。
こだわるなら132桁だろ、とか思う。
三画面スクロールしてもブロックが着陸しないコードは、思わず寒気がする。
>>262 linuxのカーネルとか、だいたい80桁に収まるように書かれてるようだよ。
だいたいおさまってるのと
無理やりおさめようとしてるのには
雲泥の差がある
だから
>>259で「収まってない行が大量にある」と書いた。
80桁ってのはCOBOLか。
うちの規約じゃ115桁でコードウィザードが設定されている。
115桁は長いな。
行末にいっぱいコメントつけるスタイルなのかね?
80桁とかそういう問題ではなくて、最初から8タブのことしか
考えずにスペース混ざりで書かれて4タブで表示したらガタガタ
というのは嫌だなあ。
まあ、C言語ならindentで変えられるからいいが。
インデントは2や4。
タブは8桁。
インデントが8を超えたらタブを使用。
それ以外はスペース。
って流儀は、Unix系ではよくあるね。
>>271 vi で shiftwidth (インデント) ≠ tabstop (タブ幅) にしてると
自然とそうなるしな。
emacsでもそうだね。
75 :GiantLeaves ◆6fN.Sojv5w :2006/04/20(木) 18:05:30
#include<stdio.h>
int myadd(int i,int j);
/* Calculating 16+16 */
int main(){
printf("%d\n",myadd(16,16));return 0;
}
int myadd(int i,int j){
int k;
if(i==0){
if(j==0){k=0;}
else{k=myadd(0,k-1);}
}
else{k=myadd(i-1,k);}
return k;
}
/* 大して遅くない。 */
275 :
デフォルトの名無しさん:2006/04/21(金) 21:13:31
>>269 GUIを扱うと、80行は辛いと思うけど。
277 :
デフォルトの名無しさん:2006/04/21(金) 21:27:26
再帰使わずにわざわざループ処理させている
こんど勇気をもって再帰をつかってみよう。
>>278 そのほうが早くてメモリも食わないからそうしてるなんて多々あること。
再帰除去って知らんのか?
コンパイラが出来る最適化を手動でやってる人を見てると悲しくなってくる。
簡単な最適化なら手動でするなぁ。
実測せんと実際に最適化してるかどうか分からんし、ちょっとした変更で最適化されなくなることもあるしな。
実測しなくても見ればわかるよ。
再帰の場合はどういうときに最適化されるかも、はっきりしてるし。
>>283 「最適化されるはずですが」とか言ってるクチだね。
使えねぇ。
末尾再帰の最適化が処理系に義務付けられてる言語もあるんだが。
そういう言語ではループのほうがへたなコードだなあ。
ループを使う奴は低学歴。これは間違いない。
>>286 ループが最適な処理なんていくらでもあるでしょうが。
話題がループしていますね。
>>284 コンパイラの挙動くらい把握しましょうよ。
再帰関連の最適化は、わかりやすい部類だからさ。
「規格が保証してくれている」と
「(俺の使っている)コンパイラならやってくれる」の
違いを明確に意識しない人って、結構多いよね。
いまどきのコンパイラなら、たいていやってくれる最適化だよね。
再帰の深さが数十程度で、コードが分かりやすくなるなら、最適化の有無も考えないで再帰。
掲示板とかで初心者に、いまだに、rand()の返す値は、上位ビットを使えとか
言ってるやつと、同じかおりがするな。 > 再帰絶対反対派
>>293 何処にも「再帰絶対反対」などというレスは
見当たらないのだが・・・
規格が保証してないと使わないって人は、一部の言語以外は、絶対反対なのでは?
>>295 何処にも「規格が保証してないと使わない」などというレスは
見当たらないのだが・・・
じゃあ、適切なときには使う。
使ってないやつはヘタクソってことで、意見は一致か。
>>298 「ほぼ」って書いてあるのが読めないお前痛杉。
やねうらお召喚成功
やねが痛いのは常識
「あからさまなバグがないか調べる」ことをデバッグと呼んでいいなら、
漏れもデバッグは目視でできるよ。
まさか如何に某氏が痛くても、「目視だけでバグがないことを100%保証できる」とは思っちゃいないだろ。
「ほぼ100%」と書いた以上、
「完璧に100%」と受け取られても仕方ないと思うが、どうよ?
だって、「ほぼ100%」と「完璧に100%」の違いが
それほどまでに大きいのならば、
そんなの「ほぼ100%」とは言わねーんじゃねーの?
>>304 ここでやるな。気になるんなら本人に聞け。
往々にして「ほぼ100%」とか書くときは逆に「100%ではない」ということを暗に
言い訳したいときだから、話半分に聞くようにしているのであまり気にならんかった。
大体、まず「小さなクラスならば」という前提があり、「(そのクラスのなかから変な……」
なる予防線まで張ってるし。
世の中にあるバグ臭いコードは「無駄に長く」「変なAPIや外部関数を使っていて」
「難しいアルゴリズムをよくわからずに使っている、あるいは、簡単に出来ることを
わざわざ難しくして書いてる」のが多数なのだがな。
30%の確立でAの意味 70%の確立でBの意味
というときに何故かAだと確信するやつがいる
両方の意味を推測するところまでいかなくても、せめて70%の方を選んで欲しい
ヘタとかじゃなくて根本的に仕様と違うコードになりやすい……
「ほぼ女」と「100%女」では0と100くらい違うと思うよ
つーかコメント欄あるんだからコメント欄に直接書けよ。
大体どこがスレタイに沿った話なのか。
まあまあ、センセ。
そう熱くならずに。
目視のみでほぼ100%デバッグできるクラスを小さいクラスとするならば、
オレも小さなクラスならば、目視のみでほぼ100%デバッグできるよ。
>>311 それは俗に言う「トトロ爺」というやつですか?
まあ2chからのトラックバックなんてスパムと変わらんからな
2chからのトラックバックってどうやんの?
消されてもいいやん
やねの話題は他のスレでいいんじゃね?
トラックバックもう消してるw
ハテナが気になって気になってしょうがないのかねw
なんか意外と度量小さいよなw
>>316 ちょっと読んでみたけど、世間では机上デバッグとか言われてるものじゃないだろうか。 > 目視なんとか
漏れもそう思う。
やねより319のほうが何倍も痛々しい件について
324 :
デフォルトの名無しさん:2006/04/23(日) 11:37:32
>>320 逆に最近の若いのは机上デバック出来無いんだぁー
ってことに恐怖を感じるね。
他人のソース読んでると、色々感じるし。
騎乗ファックなら俺でもできるんだが
#define local static
cec32.cなんだが、なんか吐きそうになった。
おっとタイポ。crc32.cね。
331 :
デフォルトの名無しさん:2006/04/27(木) 22:06:21
エクセルのマクロでは2バイト文字「混じり」の変数や関数を書く奴がたくさんいるんだが
世間ってもうそうなっちゃったのかな・・・
>>331 VBの時代からだっていただろそういうやつ。
別に日本国内だけで使うなら、多バイト使ってもよかろうな時代
古くはDB3の時代からそういう香具師はいた。
入力が面倒だが、判りやすいというメリットがあるしな。
業務独特の用語なんかは、対訳表みたいのを作ってないプロジェクトだと、
勝手に英訳しても意味分からなくなるし、ローマ字つづりにするくらいなら、
そのまま漢字でって思うな。
あと、外来語のカタカナ表記をそのままローマ字綴りにするドアホとか、
いっそ、そのまま全角カタカナで書けって思うな。
「コメント」をcomentとか「カルテ」をcaruteとか。
(KOMENTOとかKARUTEとかになってないってことは、本人は英語綴りの
つもりで書いてるのかもしれんけど)
殆ど全ての } に、どの { と対応しているかをコメントしている
int hoge( … )
{
……
if( … ){
……
} // end if
……
switch( … ){
……
} // end switch
……
} // end hoge
インデント見たらわかるだろとか、コメントしておかないと分からなくなるくらい
でかいブロックを書く前に気付けとか、色々言いたくなったがきりがないのでやめといた。
プログラマの全員が自学意欲のあるやつではないので、最初に接した規約がクソだとそうなるよね。
言わんと治らんと思う。
338 :
デフォルトの名無しさん:2006/04/28(金) 04:23:40
@rank[sort {$x[$a] cmp $x[$b]} 0.. $#x] = 0..$#x;
コメント自体よりもendが邪魔だな
俺は最近、少し長く深くなってしまったブロックはこう書いてる。
int hoge( … )
{
/**/ ……
/**/
/**/ if( … ){
/**/ /**/……
/**/ }
/**/ ……
/**/ switch( … ){
/**/ /**/
/**/ /**/……
/**/ /**/
/**/ }
/**/
/**/ ……
}
だから、長くならないように気をつけるようになった。
342 :
デフォルトの名無しさん:2006/04/28(金) 16:44:08
>>340 じゃあなんで
int hoge(…){…if(…){}}
って書かないの?
一行でかけるべ?
[゚д゚] デフラグガカンリョウシマシタ
/[_]ヽ
| |
(())034>>efghiinot{{}}??………あいかかけじってででななのべゃるん一行書
>>331 Java だと漢字の識別子とか使えるぞ。
ソース読む時に一回 char 配列に入るわけだが、そこでシステム
デフォルトまたは指定のエンコードから Unicode に変換していて、
それから解釈するので全く問題なくコンパイルできる。
元が utf8 だったりしたらもう2バイトどころかサロゲートペア
入れたら1文字で最大6バイトになる。日本語はだいたいは1文字
3バイト。
つまり米国人は自国の文化を他国におしつける、なんとも傲慢な連中だという、ありがたいお話です。
いつもながら、
http://d.hatena.ne.jp/yaneurao/20060428 は良いネタを提供してくれる。
>まして、腕試しとして最初に与えられる仕事というのは、どうでもいい仕事、
>あまり会社にとって重要ではない仕事です。コードが書き殴ってあったり、
>書いた人がどうしようもない人で既に会社をクビになっていたり。
>すなわち、自分の実力の30%〜40%でこなせることすらとても出来ない人が
>書いているコードなわけです。酷いコードで当たり前ではないですか?
>そんな仕事しかもらえないうちはまだまだ自分も信頼されてないんだなぁ、
>と認識することです。もっともっとスキルを磨くことです。
いやー、言いたいことは分かるんだけどさ。
でも、世の中には、普通に1から書けば30%〜40%でこなせるのに、
無理やりそんなレベルのソースコードを与えられて
「設計は元のままで、修正は極力少なくして」なんて
注文を与えられた結果、130%〜140% の力を発揮しなくては
いけなくなる事も結構あってさ。
そこら辺、発注している方の人間って、全然気づいていないんだよね。
「普通にやれば30%〜40%でこなせる上、もう既に半分ぐらいモノが
出来上がってるんだから、楽勝だろ」なんて思っていたりする。
348 :
デフォルトの名無しさん:2006/04/28(金) 23:12:34
>>347 だよね。前回の机上デバックは理解できる部分もあったけど、
今回のは、相手のイラツキがまるで理解できてないだけに、
ちょっとびっくりした。
大学院出と仕事してるとか、文系みたいなこと言ってるし。
我流で育った地雷みたいな人って思た。
>>347 なにこの人?
一見するとただの勘違いに思えるんだけど
また、そういう仕事は、謂わば「チキンラン」みたいなもので、
如何に「発注者のスキルでぎりぎり理解できるレベル」の
モノを上げるか、っていうところに気を使うんだよな。
基本的に発注者が理解できるレベルを超えてはいけない。
でも逆に、あまりレベルが低すぎてもいけない。
その上勿論、正しく動作しなくてはいけない。
主役の側にいる人間をうらやましがっている脇役がいっぱいいるようにしか見えん
これは俺の物語だ
#define repeat(n) for(int lnum = 0; lnum < n; lnum++)
ちょっと便利かもと思った。これじゃ多重ループできないけど
多重ループできるお
できれば副作用にも安全なほうが嬉しいな。
#define repeat(n) for(int lnum = 0,lend = (n); lnum < lend; lnum++)
#ま、こんな詰まらん事でマクロ使われると鬱陶しくてかなわんけど
PICマイコン のC コンパイラでは for( i =N ; i ; i--) しか最適化されないのがあって
だからわざわざ #define REPEAT( N,REG) みたいに 定義してたり
>>344 Javaは16bit以上の文字は認識しない。
内部で使われているのは厳密なUnicodeではない。
> #define repeat(n) for(int lnum = 0; lnum < n; lnum++)
こういうキーワードを置き換えたりするようなマクロをつかってるのって、へただなぁと思うね。
bool,true,falseあたりも、独自に定義したりするのって、MSあたりならまあいいけど、
個人とか、会社の部署とかで独自にやるのはカンベンして欲しいと思う。
>>358 へただなぁと思うからこのスレに書いたんだろ。
何を言ってるんだ。
上で書いた人のカキコを見る限り下手コードのつもりで書いてない希ガス
俺の友達には、通常の演算ごときに括弧をネストしまくる人がいます。
コードが見難くてしょうがない。
俺がそのコードに携わる訳じゃないから別にいいけど。
あいつ極度の心配性なのかな・・・。
算数が苦手で足し算と掛け算どっちが先か分からないから全部括弧付けてんだろ
括弧付けるぐらいでカッコつけてる気になってるんじゃないの?
/i()()_/ミ| o ←
>>363 /ヾ/ <ゝ.\_ __ //
iヾ/ ___ソ ⌒ヾ .ミ.\ ガッ / /
|=| ヽ┬ ´ _))))))) / /
ヾ| !、 /_≡三./ / /
| \___/ ̄ ̄\ ☆ /
| / 、 \ |\/|_
ヽ ( /\_└-i┐ / ☆
\__| |ノ__,,/ ̄'─' ヽ--'┘ \
| | `| | ☆ |/\| ̄
ヽ | '| .| ///
┌'┤┌'┤
インタプリタ系だと乗除と加減の優先度が同じことがたまにあるから、もしかしたら趣味で書いてるヤツがウンコみたいなヤツで、変な習慣が付いてしまったのかな?
366 :
デフォルトの名無しさん:2006/04/29(土) 19:17:23
納品チェック用の静的解析ツールの中にはしょぼい演算でも括弧がないと
「問題あり」
としてレポートしてくるツールがあるな
どことは言わんが30万もするソフトなのにそんなレポートを出すなと
367 :
361:2006/04/29(土) 21:14:36
なんか「係数を新しくつったときの為」なんだってさ。
なんて目に優しくないんだろう。
>>361 Lisper に喧嘩を売るつもりならば止めておけ。
相手は手ごわいぞ。
>>367 お前なぁ、仕事中に2chかよ。
お前のコードだって目くそ鼻くそだろうが。
何えらそうに…はぁーあ
土曜日の 21:00 に、見ず知らずの人間をとっ捕まえて
「お前、仕事中だろ。」と言い切る人間だけには
なりたくないものだな。
つーか、今日は休日だろ。
練習でdosプログラミングしてみましたが、データを出力するときに枠線を付けた方が見やすいだろうと思い
散々推敲したあげくできたのが
「○〜〜〜〜〜〜〜○」
どう見ても精子です。本当にありがとうございました。
>>370 はぁ?
361 名前:デフォルトの名無しさん[sage] 投稿日:2006/04/29(土) 14:10:18
俺の友達には、通常の演算ごときに括弧をネストしまくる人がいます。
コードが見難くてしょうがない。
俺がそのコードに携わる訳じゃないから別にいいけど。
あいつ極度の心配性なのかな・・・。
>>373 はぁ?
367 名前: 361 [sage] 投稿日: 2006/04/29(土) 21:14:36
なんか「係数を新しくつったときの為」なんだってさ。
なんて目に優しくないんだろう。
369 名前: デフォルトの名無しさん [sage] 投稿日: 2006/04/29(土) 21:37:01
>>367 お前なぁ、仕事中に2chかよ。
まぁ見ず知らずの人間とっつかまえて、暴言を
吐く(カキコする)ぐらい、2ちゃんでは日常茶飯事
なのだがw
>>375 [゚д゚] デフラグガカンリョウシマシタ
/[_]ヽ
| |
、、ぁいえかがくぐすずずだちっつてでとなののはままゃららるをん
カキコ事人吐常日暴知茶見言間飯()2w
「暴言」と「見当外れ」は
似て非なるもの。
ところで、本題って何だっけ?w
精子です。
ごめん、>369が何を見て仕事中であると断言できたのか、
誰か教えてくれ。
382 :
361:2006/04/30(日) 20:04:01
きっと俺の初書き込みの時間が14時だったからだと思お。
383 :
370:2006/04/30(日) 20:09:35
しかし、そもそも「土曜」だったのでは?
土曜どころか、祝日。
385 :
370:2006/04/30(日) 20:22:14
というか、俺は
>>361 は学生だと思っていたのだが、
そこら辺、どうよ?
386 :
361:2006/04/30(日) 20:26:44
御名答
ネタ師か。暇人だな。
しかし黄金厨にしてはよくやったぞ。
でかしたぞ。誉めて遣わす。
友人という2文字を見逃してたね
御名答
インデントを、スペースとタブで混在しているのをみると下手だなと思う。
タブで統一してあれば、タブ幅を変えるだけでインデントの幅を
変更できるから便利なのに。
どっかからコードをコピペした結果
タブとスペースが混ざることがある。
全部スペースにすればいいのに、と思う。
タブなんてなくなればいいのに、と思う
タブって固定幅フォントでテキストがりがり書いてた頃の名残って気がする。
HTMLとかなら伝送量が減るというメリットはあるが、微々たる物。
今のメリットは、やっぱり1keyでインデントできるあたり?autoindentしてりゃ不要だけど。
スペースでインデントるとちょっちコメント化ってときにずれるのがちょっちいや
/**/
なんかのコード
/**/
↓
/*
なんかのコード
/**/
無駄な行が入るって時点でずれてんだがだが
インデントってデータに含める必要なくね?
エディタが構文解析してインデント表示すればいいじゃん。
IDEで、それを通じてしかいじんないならな。
VBぐらいか。
IDEの中には勝手に構文解析してインデント変えるのもあるね。迷惑なんだが。
EclipseのXML関係プラグインにその手のがあったはず。
こんなの。
#if A
...
#if B
{
#if C || D || F
...
#endif
}
...
#endif
#else
...
#endif
なにその
#if B
{
を改行とって
#if B {
にしたらエラーになりそうな文
>401
今は環境がへっぽいから迷惑なことも多いけど
将来的にはそれくらい環境側でやってくれよって方向が理想かな。俺は。
IDEなりエディタなりが賢くなってくれれば
人間はコード書くことに専念できるし、
つまらん宗教戦争に時間費やすこともなくなる。
宗教論争なんかに参加しなきゃいい。
巻き込まれたときどうする?
「タブにしろよ」
「スペースがいいんだよ。」
「お前、どっちがいいと思う。」
「えーと・・」
参加しないで済ませるもんならそうしたい。
>>407はまだいいほうだな。自分の意見が言えるんだから。
もっと困るのは、勝手に宗教論争始めた奴らのせいで、本当にしたい議論ができないこと。
スレが宗教論争で埋まるってのがいい例。
>>407 仕事なら権限をもってるやつがきめるだろうし、ネットならスルーすればいい。
410 :
デフォルトの名無しさん:2006/05/03(水) 00:48:49
よくみかける
int a;
int *p = &a;
*a = 1;
ってなにがしたいん?
>>410 *p = 1;
の間違い?
よく見るって、どういう文脈でだろう。
はじめて見た
>410
ロシアンルーレット
タブとかスペースとか気にしたことないなぁ
eclipseやemacsで作業するようになって
自動整形に頼るようになってから
そのへんまったく気にしなくなりました。
コマンド一つで自分の見慣れた見栄え?になるから
他の人間のソースがアレだとしても、どうでもいい。
タブだのスペースだのを気にする人は
一体何を使って作業してるんですかね。
どうも作業環境自体に改善すべき事項が隠れてる気がするんですが。
エディタにすらできることを、人間様が気遣いしてやってる時点で、
タブ・スペースの量どころではなく、何かが狂ってるのでは…
外注に数値計算系のコンソールアプリをC++で依頼したら、VCのクラスウィザード
使いまくりのソースが届いたのだが。
世の中そんなもんか?
>>418 こういうのって、趣味プログラマか脳内プログラマだな。
前スレでも、よくわかってないやつが一人、ツールで整形するから、
コーディングルールなんていらないって言ってたやつがいたな。
その後、そこらへんを分かってる人が、さりげなくフォローする
カキコをしてたけど、やっぱ意味がわかってなったか。
CVS(SVN)入れる時に困るので
やっぱ統一せざるをえないのが実情なんだろうか。
タブ・スペース論争はIDEで緩衝できる話になったからな。
>>420 …やっぱりわかりますか。
>>421 「コーディングルールまでいらない」とは言ってませんが…
変数・関数名のルールなどは、共同で開発するにあたって必要では。
でも、タブやスペースまで決めておく必要があるかどうかは疑問を感じるのです。
そこまでキッチリ決めておかないといけない環境に興味があります。
>>422 さんの上げた CVS で困る、といった事例が一例なのでしょうか。
でも、入れるときに自動化で整形できそうだけど…
…ああ。その整形に必要なルールを決めるときに、
タブやスペースの量をどうするか、という話なんですかね?
(スレを眺めていた限りでは、
「俺の好みの可読性」にこだわってるだけの話のように見えましたが)
DFとかはスペース・タブは無視して比較できるね
いろいろあるから、統一したほうがシンプルに解決できるね。
Eclipseにもタブスペース無視ってオプションがあると思ったが
ソース管理ツールに登録前に整形ツールに通すってルールのところは
ともかく、統一しなくても、比較時にツールで何とかしよう方法だと、いろいろ
問題でそう。
430 :
デフォルトの名無しさん:2006/05/03(水) 18:23:46
ソース整形で
って言ってるやつは一人でコーディングしてて複数人での開発経験なさそう
またはソース管理ツール使わずに担当ごとに担当ソースが決まってそう
431 :
デフォルトの名無しさん:2006/05/03(水) 18:36:20
>>430 >って言ってるやつは一人でコーディングしてて複数人での開発経験なさそう
別にどっちでもいい派なんだけど、この根拠はなに?
>またはソース管理ツール使わずに担当ごとに担当ソースが決まってそう
改造ならしょうがないかもしれないが、新規開発で同じソースを複数担当でいじるようにする理由がわからない。
共通部分にしても、共通の担当者を決めてやるのが効率的で間違いが起こりにくい開発方法。
はいはい、お前はもういいからね
ミスった
>>430 はいはい、お前はもういいからね
>>431 ほんとうに小規模開発しか経験なさそう。
>>434 大規模開発だと、同じソースを複数担当でいじることがあり得るんでしょうか?
例えば、
担当者が辞めてor変わって引き継ぎする…といった感じですか?
それとも開発言語からくる制約?
そのへん私に教えてください。お願いします、先輩。
メガネっ娘アニメ声の新人プログラマーから
ウルウルした目でお願いされてるとでも思って…
どうかよろしくご教授のほどを
そんなことよりなんで
>>410はスルーされてるの?
入門書のポインタの解説のときかなりの確率ででるんだけど。
あの変な文脈
いまはワープロがふつうにあるんだし
テキスト整形にハードタブ使うのなんてナンセンス。
使うとしてもTSVやMakefileなんかの区切り記号として。
まてまて。入門書のポインタの解説のときかなりの確率で、って、
それつまり単純にポインタの解説したいだけじゃないか?
>>435 マジレス
>大規模開発だと、同じソースを複数担当でいじることがあり得るんでしょうか?
死ぬほどあり得る
>>436 せめてコンパイル通るようにしてから言ってね坊や
>>436 本質とは関係ないけど
int a;
int *p = &a;
*a = 1;
だとint *p = &a;が意味ない。p使ってないし。
それに*a = 1;はどこに入れてるのっ思わね?
*a = 1;
の部分は
*p = 1;
の間違いだろ?
444 :
デフォルトの名無しさん:2006/05/03(水) 23:45:31
>>431 >>435 複数で開発する場合、ソース編集が競合するので排他制御が必要になる。ソース管理ツールを使えば問題ないが使わない場合は他人の変更で自分の変更が消されるのでソースごとに担当を決めて競合を防ぐわけ
cvsなり使って入れば誰が何を変えたか判るから複数で同じファイル触っても全然問題なし
445 :
デフォルトの名無しさん:2006/05/04(木) 00:00:27
>>437意味不明
ワープロでプログラミングしてるのか?
//int a;
int *p;// = &a;
//*p = 1;
ダミーが要る理由はこれやってみりゃ分かるよ。
//int a;
int *p;// = &a;
*p = 1;
こうね
449 :
447:2006/05/04(木) 01:18:17
>>448 危ないな。
OS使用の論理アドレス(80000000〜FFFFFFFF)に書き込もうとしちゃーいけないな。
>>449 OSがそこを使用するという保証はないし、そもそも初期化されないpがその辺を指す保証もない。
つまり、そのコードが全く問題なく動作する可能性も多々ある。
>450
OSのレベル管理(メモリ保護、特権命令)はそんなにザルなのか?
いちいち煽んないで説明してやりゃいいのに。
ホントに低脳ばっかw
そもそも論理アドレスという概念がない環境もあるし、アドレスのビット数も環境によって全然違う。
>>449が勝手に環境を限定してる上にどの環境のことかも謳ってないのが一番の問題。
まぁ、照れ隠しに知ったかぶりたかったんだろうけど。
>>391 激しく同意
rubyのソースコード見たとき、おいおい大丈夫かよ、と思った
はい、一番の馬鹿出ましたー
453 名前:デフォルトの名無しさん[sage] 投稿日:2006/05/04(木) 12:39:06
いちいち煽んないで説明してやりゃいいのに。
ホントに低脳ばっかw
453 名前:デフォルトの名無しさん[sage] 投稿日:2006/05/04(木) 12:39:06
いちいち煽んないで説明してやりゃいいのに。
ホントに低脳ばっかw
453 名前:デフォルトの名無しさん[sage] 投稿日:2006/05/04(木) 12:39:06
いちいち煽んないで説明してやりゃいいのに。
ホントに低脳ばっかw
a = &a;
初期化なし
0xcccccccc
-858993460
だが、環境にもよるな
コンパイラにもよるし、そもそも32bitアドレス指定じゃないCPUもある
OSが違えば、80000000〜FFFFFFFFがOSが使ってるとはいえない
リアルモードで動こうが(物理アドレスを指示)、プロテクトモードで動こうが(論理アドレスを指示)、
値はコンパイラが同じなら変わらないとは思うけど。
ちなみにマイナスの意は、
32bitの最上位はキャリービットだ
あっ、知ったかゴメソw
Cつかう上でCPUの動作やアドレス空間を意識できるのは大変好ましいけど、
特定のアーキテクチャに毒されすぎるのもよくないなと思った。
>あっ、知ったかゴメソw
いや、本当にしったかだと思う。
変数初期化してなかったらなにが入ってるか分からないなんて、そんな、
実際に中身をみて確かめるようなことか?
マイナスの意はキャリービットってなんだよ。
キャリービット知らない?
CPUが分かる条件分岐は2つある。
=と><大小(実際ソースでも比較はこう。文字は文字コード大小比較)
CPUの中でやることは一緒、引き算して、0になればゼロフラグ(Z)が立ち、
負になればキャリーフラグ(C)が立つ。
そして、マシン語の条件分岐命令には尻尾にもし「ビンゴの時の飛ばし先アドレスが書いてある」
プログラムカウンタは通常、clockの逓倍で、逓倍ずつカウントアップしてゆく(アクセスするアドレスは逓倍カウントアップするんだから当然か)、
だがしかし、条件分岐命令のときは、フラグが立っていなかったら、通常のカウントアップ、
フラグが立っていたら、外部からレジスタに取り込んである飛ばし先アドレスをプログラムカウンタに入れる布線論理回路を組んである。
当然、プログラムカウンタの値はアドレスバスに乗り、メモリに届く。
ごっめ〜ん、また知ったかしちゃったw
ちなみにプログラムカウンタの値はデバッガでも見れる、x86系ならEIPレジスタというのがそれだよ。
ステップイン実行すると通常は、逓倍カウントアップされるのが見て取れる。
ジャンプやCallや条件分岐の命令が来ると、命令の尻尾についてるアドレスに飛んだりするのが見て取れる。
長文ゴメンネ〜、でも知っといて損ないよ
public static string GetSpace(int Count)
{
string text1 = "";
for (int num1 = 0; num1 < Count; num1++)
{
text1 = text1 + " ";
}
return text1;
}
>プログラムカウンタは通常、clockの逓倍で、逓倍ずつカウントアップしてゆく
へ〜
>>465 >負になればキャリーフラグ(C)が立つ。
帰れ莫迦。
>>471 74HC283の規格表をあたるか、“4bit full adder” でググれ。
出力が 5bit あるのに気付けばよし。
それと、“2の補数表現” についても学習せよ。
clockの逓倍がどうのこうの、という知能の低い理解については
“バイトマシン 命令長” あたりか。
しかし、ここまで「知ったか」と言う言葉を自身満々に使う香具師も初めて見たな。
そもそもスレ違いだということに気づいてとっとと消えて欲しいものだが。
本当にいるんだな。こういう奴。
>465は「釣れたw」とか書き捨てて消える前に何かコードを残していってよ。
多分スレ違いにはならないだろうからさ。
>>465 もうこのスレ見てないかもしれんが、そのなんちゃって知識を本物にしたければ
Write Great Code でも嫁。この本はマジでオススメ。
476 :
デフォルトの名無しさん:2006/05/05(金) 10:16:13
>>465 キャリーフラグが存在するのはCPUのregisterの中だ。お前が言いたいのは符合ビットだろw
477 :
デフォルトの名無しさん:2006/05/05(金) 10:24:15
Write Great Codeみたいな糞本薦めてる時点で475の能力が知れたな。
このスレはどうしてこんなにぬるいんですか?
煽りレベルがイマイチだからさ。
いきなり正解ぶつけて煽り文句入れたって踊らない。
相手の技術レベルに合わせてバカ話を引き伸ばし、抜き差しならないところまで追い込んでから
「ネタでした」発言を引き出すくらいからがスタートらいんだな
>正解ぶつけて煽り文句入れたって踊らない。
根性無いな。
他スレで暴れてるGW厨は正論のひとつやふたつでは潰れなかったんだが。
481 :
デフォルトの名無しさん:2006/05/05(金) 11:47:55
条件分岐がいっぱいあるコード
>476
Zフラグだって、レジスタの中だぞw
そもそも計算に出し入れする入れ物もレジスタだ。
CPUの中でやってることは、入れ物の入り口と出口をトリガしてやっている、これらのトリガ信号は、フェッチサイクルで取り込んだ命令をデコードしてばらして、ばら撒かれたものだ、
そして実際トリガされるときトリガ信号たちは、トリガ信号群自身あるいはデコードを使ってタイミングをずらしてトリガ行われる。
トリガされる部分はトライステートゲートという回路を使う。レジスタはただのRatch、FFの塊だ。
>バイトマシン
命令長が違ったり、実行サイクル長が違っていれば、プログラムカウンタがマスターclockの「定倍」で動作するはずはない。
俺は逓倍と言ったはずだ。逓倍と分周。逆の言葉だ、意味分かるか?逓倍は整数倍だ。
話を戻して、プログラムカウンターの入り口は2つあって、実行サイクルでとりこんだアドレスを取り込む入り口と、通常のカウンタ動作でカウントアップ値を取り込む入り口だ。
その入り口に実行サイクルの最後のほうでトリガが掛かる。そこでプログラムカウンターの中の値がリニューアルされる、そしてアドレスレジスタを経てCPU外に放出だ。
じゃあ、ご希望に答えて
釣れたw?
かなりすれ違いという声も聞こえそうな内容だが。
というわけで、このように見事釣り宣言出ましたので、
馬鹿は482だというのが確定しました。
皆さんお疲れ様でした。
>>475 >Write Great Code
本屋で探してみます。
長い割には今一面白くなかったな。
ID無いから面白くないね
IDがあれば、全部482の自演だと分かって面白いのにな
まあ、キャリーフラグと符合ビットが別レジスタにあるということなら、
俺もキャリーフラグとキャリービットはしっかり使い分けて書いたんだがなw
489 :
デフォルトの名無しさん:2006/05/05(金) 14:01:59
>>482やめてくれ。腹がよじれる。どこの高校生か知らんがこっちはプロの組み込み系プログラマだ。
490 :
デフォルトの名無しさん:2006/05/05(金) 14:04:48
ほう、組み込み系プログラマがμコードを知っている・・・
そんなアフォなw
まあ、ハードウェア割り込みの時のベクタ飛びと、
PUSH-CALL-RET-POPは知っとく必要あるな
なんか、昔のSF小説でプログラミングの事が語られてるシーンみたいだ
>>489 じゃあ M16あたりでコンテキスト切り替えのコードでも書いてみて
最近まで担当させられた業務は悲惨だった
担当したシステム全体的な思想が、継承して機能拡張するというものだったので
本来、superの特定のメソッドをオーバーライドすれば最小限の変更ですむはずが
そのsuperの作りが悲惨で、
・変更したかったメソッドがprivate:メソッドA
・メソッドAを呼んでいるのがprivateメソッド:メソッドB
・メソッドBを呼んでいるprotectedメソッドが400行近くある:メソッドC
・メソッドCは他のprivateメソッドを呼んでいる:メソッドD
・メソッドA, B, C, D何れもアクセッサメソッドがないプロパティにアクセスしている
・プロパティへのインスタンス代入を宣言部で行っている
・マップやリストへの初期値設定はコンストラクタで行っている
・コンストラクタでは上記初期化以外にもう少し重要な処理を記述している
メソッドAに2行記述するだけでよかったはずが、コンストラクタ含めほぼ丸写し状態w
495 :
493:2006/05/05(金) 15:11:00
ごめんなさい。知ってる言葉並べてみただけです。
496 :
デフォルトの名無しさん:2006/05/05(金) 15:16:37
>>493 M16てM16Cのことか。ルネサスでSHに喰われるかと思いきや最近初心者用のマイコンボードで良く使われてるねえ。勉強中なのかい?一つ前の16bitCPUの8bit 16bit切り替えフラグは悪魔的な設計だったな
ここでエスパーの俺が>482の心を読んでやるぜ。
『済みません、俺(482)本当は>465とかじゃないんです。
皆が>465にレス返してもらっていたのに嫉妬してついやっちゃいました。
俺(482)デブオタヒッキーで誰から相手してもらえません。
お願いです。どんなレスでもいいんで相手して下さい。』
OK、皆やさしい人ばかりだから沢山レスしてもらえるさ。だから自殺は止めような。
>>496 M16CはH8と比べてレジスタが少ない構成で割り込みを多用するなら逆に使い易いね。
それにc言語でも使い易いから、いい感じ。
SHはクロック高めでいいんだけどC言語使わないと性能発揮出来ないし
レジスタ多いから割り込み頻繁にかけるには今ひとつパフォーマンス出ない
内蔵DSP命令も、精度的にゲームにでも使わなきゃ意味ないだろのれベルだしな
>>499 スマンな。 巧い煽りを入れられなくて。
ただ、演技入れるならもうちょっとソレらしくやってくれよ
透けすぎ
日本語でおk
>>500 いや、俺は自分でウソと思ったことは書いてないよ。
抽象的に書いたから、とりようによっては誤りかもしれないし、
実際誤りもあるかもしれない。
ただ、どのCPUでも当てはまるであろうということを主眼には書いた。
割り込みに関しては、アーキテクチャによってかなり違いがあるし、CPU内各所にストップ掛けるところが多くて難しい・・自分にとっては
>>502 なんだよ。 まだ演技続けるのかよ。
>>461なんて噴飯モノで、こんな勘違いしてる奴が実在するなんて信じられないぞ
504 :
デフォルトの名無しさん:2006/05/05(金) 17:37:54
>>498最近M16C/80て16ビットなのにアドレス空間は32ビットと同じ石を使ったよ。DSP命令は確かにあったけどuITRON使ったから最適化されたコードが吐かれてたかどうかは不明。
>>460で書いてる事も間違い。
【値はコンパイラが同じなら変わらない】のではなく
VCでDebugでコンパイルした時に この値にワザワザ初期化するコードが追加されるだけ
VCでDebugを外せば追加されず、結果は不定となる。
さらに、マイナスで表現してるのは意味がない。
32bitの最上位をマイナスとするかどうかは人の頭の中にしかない
また・・・まだやるのかよ
>>504 最適化するのはHEWでuITRONじゃないだろ。
507 :
デフォルトの名無しさん:2006/05/05(金) 17:49:17
元々キャリーは桁上がりを意味する。マシン語で引き算するときはボローが発生する。
ボローの設計はCPU依存でキャリーフラグが立つのもあれば、キャリーフラグを立てておいてボローが発生するとキャリーがクリアされるとか色々だ。
>>503 フラグとは書いちゃ居ないよ。
ハードウェア割り込みに関しては、IR(命令レジスタ)に取り込むことなく
割り込み来たら、マスクビットと演算させて、多少のレジスタのローテートはあるかもしれないが、
割り込みピンから受けた割り込み番号をほぼ同じ形でプログラムカウンタに取り込み、次に、
該当アドレスすなはちベクタテーブル上の割り込み処理アドレスを再びプログラムカウンタに取り込み、
割り込みルーチンに飛ぶという形、いわゆる割り込みベクタ方式が一般的だと思う。
デバッガで割り込みはINT命令(ソフトウェア割り込み)で確認できる程度なのが残念だ。
まあ、当然か、デバッグ処理中のマウス・キーボード操作のデバッガなんか・・・
ん、作ろうと思えばできるのか・・・、デバッガは難しすぎる、自分にとっては。
ここは何のスレだよ
ときどき、スレタイのことも思い出してあげてください
511 :
デフォルトの名無しさん:2006/05/05(金) 17:59:08
>>506HEWはコンパイラでなく統合環境だろ。
最近はコンパイラの吐くアセンブラまで読んでないから積和命令が使われてるか気にしてないよ。昔はBIT命令があるのにAND OR使われてたらうんざりさたが最近は気にしない。
あ、なんかもう終わりっぽい雰囲気だな。みんな明日仕事なのか?
>499
マテ。>410は違うのか?
お前らいたいコードについて勝たれよ
>32bitの最上位をマイナスとするかどうかは人の頭の中にしかない
計算結果を元にレジスタにフラグ操作に行くのはALUだぞ、一般的に。
ALUがやるんだから、アドレス演算でもデータ演算でも関係なく。
CPU依存といわれればそれまでだけど。
515 :
デフォルトの名無しさん:2006/05/05(金) 18:04:17
>>512 書き間違いで
int a;
int *p = &a;
a = 1;//もしくは*p=1;
でしょ
>514
マテ。釣りはもういい。
>>515 リアルモードのIDTR受けやらプロテクトモードで更にGDTR受けやらは省いたよ。
>>514 サインフラグと同時に使うのはオーバフローフラグであって
キャリーフラグと サインフラグは同時には使わない。
つまり、数として表現するとしても、符号無しと符号付きの二つの形式がある。
さらにポインタの中身は数ですらなく、アドレスであり数として認識してるわけではない。
計算であふれが発生すると、ALUはサイン、キャリー、オーバフローのどのフラグも操作しに行くが、
マスクが掛かっていた場合、それぞれ、
・桁上がりの場合
キャリーとオーバフローが操作される
・引き算など正負ゼロ判定の場合
サイン、ゼロが操作される
・アドレスの場合
どれも操作されれない
でOKですか?CPUは計算前にそれが、アドレスなのかデータなのか(桁上がりアリなのか負アリなのか)は分からないと思うのですが、マスクフラグ立て下げしてやらないと。
スレ違いだ。
>>521 もしかして、天然って思ってほしいわけ? 天然でもそこまでの奴はいないよ。
だいたい、マスクってネタがもうアレだよ。 透けてるよ。
CPUの例えば加算命令が発行されたら Z , N , C , OV を備えていれば、4つとも変更されるのが普通なんだからさ。
まあネタはともかく、
プログラミングってのは、いかに0,1で抽象化するかって所からのスタートだからね
ヘタなコードは基本的にソレが出来ていない。
計算機は数字を扱うものだと言わんばかりに、即値をアチコチばら撒いたりさ
はいはい
>>507 キャリーとボローの両方を備えてるCPUなんてあるのか?
何てCPU?
と突っ込み入れとくか・・・・・・
526 :
デフォルトの名無しさん:2006/05/05(金) 19:13:35
おまえらネタは止めろよ
マスクビット知らない筈が無いだろ?
これなしで、どうやって符号無しと符号付きの区別付くんだ?
ボロー備えてなけりゃ、どうやって引算するんだ?
いい加減にしとけ
えー。逓倍とか言ってる奴の相手しておいて今更それは無いんじゃないか。
それとも明日仕事か?
いや、今日も仕事中
そうかそれじゃ仕方無いな。お疲れさん。
定倍と逓倍間違えるようじゃな、日本語もすたれたな
前々から言われてたが実感するよ
てか、オシレータの逓倍と分周知らずに、CPUが早いだの遅いだの言われても、
2ch語で言えばpgrだな
うん、間違いなく早いよね。
いい加減にスレ違いヤメレ
日本語が通じないよ
お前ら「コンパイラ・スクリプトエンジン」スレに負けてるぞ。
>446が80スレ2日かかったのに、向こうは数時間だぞ。
『ぱっと見て「ヘタだなぁ」と思う日本語』のスレはここですか?
>>530 >定倍と逓倍間違えるようじゃな、日本語もすたれたな
>前々から言われてたが実感するよ
逓信省が民営化される今、
逓倍などという用語も消え去るのが世の流れ。
「言語学は規範的であるよりもむしろ記述的なのです」
そんな話ばっかしてても面白くないだろうに。
よし、流れを変えてやる。
有名なんで挙げるのは正直怖いんだが…、
jumanって下手じゃないかと思う。
>>536 違います。
『ぱっと見て「ヘタレだなぁ」と思う知ったかちゃん』のスレです
>>539 お前のレスが『ぱっと見て「ヘタだなぁ」と思う日本語』なので、
やはりこのスレは『ぱっと見て「ヘタだなぁ」と思う日本語』のスレです。
いい加減他所でやってくれんかのう...。
ほんとここは知ったかばかりだなぁ
なら、知ったかじゃない知識とやらを見せてみろよ
ここのレベル低すぎ
なんだと?そんなことしか言えんお前の方がレベルが低いわ
なんだとはなんだ。レベルが低いと思うのならスルーしろよ。
自分がレベル低いと自覚してるから反応しちゃうのかなwww
自作自演(・A ・)イクナイ!
なんだとはなんだとはなんだ!お前みたいな奴が無意味な糞レスを増やしてるんだろうね
マジuze-さっさと消えてね☆
>>1-548 結局、
「ぱっと見て「ヘタだなぁ」と思うコード 」
なんてスレに書き込んでいる奴は
こういう奴等しかいない、という事で・・・
とは言っても、ここの大半は自演自作です。
これソース公開してんの?
バイナリしか見つからんかった。
いい加減他所でやってくれんかのう...。
554 :
デフォルトの名無しさん:2006/05/06(土) 13:06:37
switch文がえらい長いコード
C#で作られてるから
ttp://www.aisto.com/roeder/dotnet/ のReflector for .NET使ったらソースが丸見え。
GetMessageType(string)のところに
switch (num1)
{
case 0:
return 1;
case 1:
return 2;
case 2:
return 3;
case 3:
return 4;
case 4:
return 5;
case 5:
return 6;
case 6:
return 7;
case 7:
return 8;
}
とかあるwww
えらい長いswitch文を嫌ってメッセージループを分割するコード
『ぱっと見て「ヘタだなぁ」と思う議論』のスレはここですか?
どこがどう下手なのかを議論できれば有益だよね。
559 :
デフォルトの名無しさん:2006/05/06(土) 14:12:24
条件分岐が多いコードは下手だと言えるだろう。
>>555 それ、なんか複雑な変換をかませようとした残骸なんじゃねーの?
>560は>555と全然違う件について
>>555 C♯コンパイラが吐き出した結果だから、ソースがそのまま見えているわけではないだろ。
こんなのもあった。
if (num1 < numArray1[0])
{
return 1;
}
if (num1 < numArray1[1])
{
return 2;
}
if (num1 < numArray1[2])
{
return 3;
}
if (num1 < numArray1[3])
{
return 4;
}
if (num1 < numArray1[4])
{
return 5;
}
if (num1 < numArray1[5])
{
return 6;
}
if (num1 < numArray1[6])
{
return 7;
}
return 8;
もしC#コンパイラがループ展開してるとかだったらどうすんだ?
こんなところじゃないのか?
>555
{
if(num1<0 || num1>7) retrun;
else {return ++num1;}
}
>568
{
int i;
for(i=0;i<=6;i++){
if(num1 < numArray1[i]) {return ++i;}
}
return 8;
}
やっぱ元ソースコードで判断しないとな。
逆アセしたソースを晒されてもねぇ…
exeをReflectorで逆アセして元ソースと同じになっていると思っているんだろうか。
コンパイラが最適化した名残にしか見えないよな。
576 :
555:2006/05/06(土) 15:59:39
馬鹿丸出しでした。本当に申し訳ありませんでした。
マクロが数字に変わっただけならともかく、最適化されてこれなら
元のソースコードワロス
どっちにしてもC#の自動最適化ってしょぼいな。
>>555なんてswitch文はありえないだろ。
元ソースコードとアセンブリを見比べなきゃ判断できない
元ソースがおかしい可能性もあるし
最適化がかかってない可能性もあるし
逆アセの段階で変なことになっている可能性もある
元のソースも見ずにあーだこーだ言ってもしょうがないってマダわかんないのかコイツ
ソース見なくても最適化がかかってるかどうかは分かるぞ
その内、obfuscator通した.NET, Javaコードをリバースして
「何これテラワロス」とか抜かすお馬鹿さんが現れそう。
584 :
568:2006/05/06(土) 16:49:22
馬鹿丸出しでした。かさねがさね申し訳ありませんでした。
585 :
568:2006/05/06(土) 16:59:26
バーカ!!!
ソース云々よりもreadmeを見たら作者のあれさ加減がわかるな。
「なんちゃってPOP3偽装」とか「暗号について」とかの部分。
>>586 おいおい、ここはそのソースを云々するスレじゃないのかい?
話を作者叩きにスリ替えるなよな。
588 :
586:2006/05/06(土) 17:33:35
馬鹿丸出しでした。かさねがさね申し訳ありませんでした。
うむ、素直で宜しい。これに懲りたらもうするんじゃないぞ。
>>587なんで過剰反応してんの?作者降臨ですか?www
591 :
568:2006/05/06(土) 17:42:56
>>589 調子乗ってんじゃねーよ!バーカ!!!!!
トラックバックで作者来てるかもなwwww
>>590 脳味噌カラッポか?
どうみても正論だろうが。
そういう流れはもうよそでやってくれんかのう。
ちょwwwこれ、まじ作者来てるwwwww
作者必死だな(笑)
作者が顔を真っ赤にしてこのスレを見ているようです
.
このスレってこんなノリだったっけ?
あの板から厨が流入したか、それとも元々?
リバースで出た555や568をヘタだと思うのは青春の証し
wwwwwwwwwwwwwwwwwwwwwww
バーカ
例の知ったか君が粘着しているに一票。
向こうのスレからID:ShHjijxN0が1人流入してきて必死になってんだろ。
おい、ID:ShHjijxN0、何でニューラルネットワークが出てくるんだよ。
馬鹿すぎだろ。
353 名前:[名無し]さん(bin+cue).rar[] 投稿日:2006/05/06(土) 18:02:22 ID:ShHjijxN0
protectとかつまらん機能つけるから悪いんだよな
どうせなら、他人のPCのキャッシュをprotectをできるようにすればいい
てか、そうなると、結局削除も保守もできるようになって、結局何もかわらないと思うけどねw
キャッシュやノードに対する評価価値が単純な条件式だけでなりたってるなんてww
だから、-6000だのわけのわからない状況になるんだよww
単純な四則演算だけで相互ネットワークを処理できると思ってるのかねww
てか、学歴っつうか、数学についてもうすこし勉強しろよw
if(ノード.アップ状況==アップしてない)
{
ノード.信頼度-=100;
}
とかwwほんとしょぼすぎなんだよwww
ニューラルネットワークについてもう少し勉強しろチンカス野郎
>>444 亀レスですが非常に勉強になりました。ありがとうございます。
cvs等の管理ツールの導入で、一つのソースを複数の人間が弄ることも可能になる、
と、それはそれで新たな問題が発生する、という展開が興味深いですね…
とても勉強になります。
>>555なんかを叩いてる時点でコンパイラの最適化すら知らん奴ってことが確定なわけで
叩く方が恥ずかしいことに早く気付いたほうがいい
スレ違いのことを書き込んでる人と一緒で
恥ずかしいとは思ってないと思うよw
'w'が少なくなったな。
疲れたのか?
608 :
デフォルトの名無しさん:2006/05/06(土) 19:22:47
DirectInputで見つけてしまったんだが…
SetProperty(REFGUID rguidProp, DIPROPHEADER *pdiph)
というメソッドの第二引数に渡す構造体がコレ↓へのポインタ
struct DIPROPDWORD // え…?名前違う?
{
struct DIPROPHEADER // ???
{
DWORD dwSize; // DIPROPDWORDのサイズを入れる
DWORD dwHeaderSize; //DIPROPHEADERのサイズを入れる…
DWORD dwObj;
DWORD dwHow;
} diph;
DWORD dwData; //本当に渡したいデータはここに入る
}
さすがM$
で、(DWORD *)で受けると・・
わしも明け方にはよく使う手じゃ。
>>608 MSDNを見てみたらDIPROPナンタラという構造体がいくつもあり、
そのDIPROPナンタラは全て先頭にDIPROPHEADER型のdiphというメンバを持っている。
メンバのdiphを渡すことでDIPROPナンタラならなんでも渡せるようにと言うことらしい。
>>608 残念ながら、お前の思慮が足りないということで・・・
お引き取りください
例のp2pソフトはみんな叩くから開発中止になったらしいなw
>608-611
可変長や不連続な次データの在り処を示すやりかたに似てるが・・
ヘタなコードと断言は出来ないが、褒められたコードでもないと思う。
>612
俺の記憶が正しければ、叩いていたのは一人だけだ。
>>614 アレが誉められないコードだとして、自分ならどういうコードにするの?
ここは上手いコードを書くスレでは無いから教えられない。
どんなコード書いても叩かれるから
ここはぱっと見て「ヘタだなぁ」と思うコードを晒すスレだ。
よくよく考えたらヘタでもないコードも、
ぱっと見て「ヘタだなぁ」と思えばその要件を満たしていると言えるのではないか?
378 名前: ◆CKhLky1OX2 [sage] 投稿日:2006/05/06(土) 19:10:48 ID:YOnguUS10
作者です。
開発を中止します。モチベーションを維持できなくなりました。
1 ◆f/MpZJf1/I みたいな基地外に何を言われても何とも思わないのですが、
それ以外の方の発言で結構利いたのがあって。
やはり多くの人にいわれた通りまだまだ未熟だったようです。
出直してきます。
テストに参加してくださった方や、スレたてさんや
>>12さん
本当にありがとうございました。
はいはいワロスワロスw
'w'使いが一斉に出現しては、しばらく居なくなる件について。
ずっと気にしてるのねw
自演ってバレバレだな。この馬鹿。
バーカ!!!!!!!!!!
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
脳味噌が退化してるな。同じレスようなレスしか出来ないようだこの馬鹿は。
STLのヘッダのインデントって下手っつーか見辛いんだけど、
向こうじゃあんな感じのがデフォなの?
627 :
デフォルトの名無しさん:2006/05/07(日) 09:26:29
人って自分の価値観が標準だと思いたがるもんだよね。
>604
たとえあなた一人しかプログラミングしてない場合でも
ソース管理ツールは使った方がいい。
それも今日で終わりか。
630 :
デフォルトの名無しさん:2006/05/07(日) 15:56:44
if(a){
b = a
}else{
b = !a
}
昔、俺が書いてしまった。。
鬱病気味で注意力が落ちて痛んだよ(((涙
>>608 >>610 >>614 X11 Toolkit も使ってる手法。
C++ だと、DIPROPHEADER または
その派生クラスへのポインタを渡すようなもん。
>>626 STLにもいろいろベンダがあったと思うが、どこのSTL?
マシン語になったときに無駄多し!のコード
ヒント:630はJava
>630
日本人ならちゃんと日本語で話せ。
"aが正ならbはaだが、aが誤ならbはびっくり。"
真偽と正誤は違います。
637 :
デフォルトの名無しさん:2006/05/07(日) 23:45:23
>>635 bは必ず真だから、そもそも代入する必要がないということなんじゃないの?
>>637 代入する必要があるかないかに関してはコンテキストによるだろ。
640 :
637:2006/05/07(日) 23:59:34
>>638 そうなんかな?オイラJava使ったことないんで良く分かんないが…。
しかし、613 にあるC#製のP2Pソフト、Reflectorでコード丸見えで解析されて可哀想だな…。
正味な話、テスト全部通ったんなら内部のコードが少々ヘタレでもまぁいいじゃんと思う。
まぁメンテする人間にとっちゃ、たまったもんじゃないんだろうけど。
>>640 いや、Javaとかそんなん関係ないって。
例えば件のコードがまるまる別の if 文の中にあったらどうなる?
642 :
640:2006/05/08(月) 00:32:45
>>641 その場合でも、そのif文の中に、b = true; の一文を記述するだけで
良いような気が…。間違ってる?
>>642 それであってるよ。で、「b = true;」は代入なんじゃないのか?
644 :
642:2006/05/08(月) 00:42:57
>>643 ご指摘スマソ、寝ぼけてた…orz。
× 637 bは必ず真だから、そもそも代入する必要がないということなんじゃないの?
○ bにtrueを代入するだけでいいということなんじゃないの?
10も20もレス重ねるほど分かりにくい例だとも思わなかったが。
ヘタだなぁと思うコードじゃなくて、寝ぼけてるなぁと思うコードだ。
bool a,b;
だったのか
実は a はメソッド(or関数)で、呼び出しに () を省略可能な言語だと仮定してみる。
ため息の出そうな言語仕様だな。
#!/bin/sh
#
>>647 #shがまさにそういう仕様だよ。
# こんな風に関数を定義して
func()
{
/bin/rm -f $1
}
if [ "$1" = "core" ]
then
# こんな風に使えてしまう
func $1
fi
#要はコマンド呼び出しなので、上記の'['の代わりに使うこともできる
if func $1
then
echo "Killed."
fi
>648
スクリプト系は仕方ないのかな。
Perl もそんな仕様だった。
最初は &sub_name みたいな呼び出し形式だったのに
後に & なしでも OK になってしまった。
Ruby もこのスタイル。
メリットに乏しい上に変数と区別付かないデメリットが大きい。
Pascal系やVB系でも、引数のないサブルーチンはカッコを省略できるね。
あと、逆に、Perlでリストとスカラーの区別が付くけど、Cではつかないとか、
Rubyでは、変数のスコープの区別がつくけどCではつかないとか。
if (a < b) for (int i = 0;i < c;i ++) if (d < e) for (int i = 0;i < f;i ++) else ...
VBの場合、Subは括弧不要、Functionは括弧要。ただしCallを使った場合にはどちらも括弧要。
Sub A(ByVal i as Integer)
End Sub
Function B(ByVal i as Integer) As Boolean
End Function
Sub C
Dim i as Integer
i = 0
A i
B(i)
Call A(i)
End Sub
CallのないSubで括弧をつけると、式の優先順位を示す括弧だと認識される。
VB.NETでは改善されたようだが。つーか"Call"いらん。
653 :
デフォルトの名無しさん:2006/05/08(月) 13:38:15
C++ の方が簡単に見える。何故だろう。
654 :
デフォルトの名無しさん:2006/05/08(月) 14:11:45
VB6は組む分には楽だけど、後から見たら、読み辛くてさっぱり分からん。
C++でコーディング規約に則った記述の方が、読み易いし保守が楽。
うん Pascalに似せたんだろうけど、
配列定義していないのに Dim って 小さいとか暗いとかでも意味通らないし
var を採用すりゃいいのに・・・・
とか、思っちゃうと、全体がそういう「もうそれでやっちゃったから」の思想で覆われてるように見えてきちゃうよな
>>655 いやまて、流れとしては Fortran → Basic → Visual Basic だし
Dim は Dimension の略だ。
>>656 >配列定義していないのに Dim って 小さいとか暗いとかでも意味通らないし
からDimentionだと意味が通らないんじゃないってことじゃね?
Pascal 由来ではない、ということを言いたかったんじゃないかな。
配列定義用のステートメントであるDIMを配列じゃない変数にまで適用したのが失敗だな。
Callがあるのは一部Basicにあった外部モジュール呼び出しステートメントの流用だし、
ifステートメントのthenキーワードの場所による意味の違いもあったりで、もうなんだかね。
と書いてから、ここはぱっと見て「ヘタだなぁ」と思う言語スレじゃないことに気づいた漏れガイル。
うは、DimentionじゃなくてDimensionだ
661 :
656:2006/05/08(月) 15:37:40
>>657 あ、「配列定義してないのに」ってそういう事か。スマヌ。
確かに Dim は変だ。
>>649 > メリットに乏しい上に変数と区別付かないデメリットが大きい。
C#のプロパティなんか、わざわざ、メソッドのコールを
変数のアクセスに見せかけてるよ。
>メリットに乏しい上に変数と区別付かないデメリットが大きい。
フィールドアクセスか、メドッドコールかの
区別がつかないというか、区別をつけないでいいことが大きいメリットなんだが。
てか区別つかないことによるデメリットってなに?
C# みたいに IDE にクラスブラウザみたいなものがあれば良いけど、
IDEのサポートも無くドキュメントも貧弱になりがちなスクリプト言語のコードで
それやられると「この変数ナニよ?」ってことに・・・
Perl野郎は引継ぎもちゃんとしないしさ(うちだけか、これは)。
.NETついでに、プロパティに括弧がついているとヘタと思うね。
If IsPostBack() Then
みたいな。
> デメリットってなに?
状態の変化を伴うメソッド呼び出しが()つけないことで
変数への参照のように見えて、そのせいで泣いたりとか。
とは言えC#のように
getter/setterみたいな頻出パターンについてのみ
例外的に構文糖を用意するってのはアリだと思う。
俺Ruby厨だがメソッドか変数かなんて迷わないなー
Rubyの場合、レシーバ無しで代入してれば全て変数
レシーバ付いてたら全てメソッド
強いて言えば引数無しのメソッド呼び出しと区別付き辛いが
同じメソッド内見て代入してれば変数だし
そうでなければメソッド呼び出しだろう
ま、1メソッドが何十画面にも及ぶコードなら話は別だがなw
メドッドコール
リードオンリーな変数(const付いたような)と、引数無しの関数・メソッドは区別する必要があるのだろうか?
>>669 何を言いたいのかわからんぞ。引数の有無は大きな違いだろうが。
>>669 区別したくないから「プロパティ」なんてものがあるんじゃね?
個人的には、「プロパティ」の存在そのものが要らんと思ってるが。
>>670 >引数の有無は大きな違い
そんな話はしていないようだが。
プロパティはどっちかいうとIDEとの連携を楽にする都合の方が大きいかもね。
get/setメソッド方式だと 実行時型情報を持つメソッドという指令が必要になり
複数の引数持つメソッドにその指令をかけたら、どうするのかとか考えないといけないから
単純な代入と引用に見えるというのを導入したのだと思える
まあ、変数へのアクセスかサブルーチンのコールかへの
区別がつくことはそんなに重要じゃないってことだな。
= で値を入れたとき、それがsetterで思ってたのと違う結果になってたら困らない?
そういうのはドキュメントに残してもらう、ってことかな
例えばどういう事?
範囲型を採用してる言語なら 範囲外はハジケルけど
そうじゃない言語だと範囲外を代入されたら困るだろうという事?
でもget/set時に範囲外は例外を出すのが普通だと思うのだが?
「違う結果」っつうんだから「値が加工される」とかじゃね?
文字列のプロパティにマルチバイト突っ込んだらワイド文字列になったりとか。
そんな仕様なら、それがsetterであろうと、プロパティであろうと、うざいことに代わりはない。
あとは、setter名のメンバ以外の明らかに変な副作用をもたらすものとかか?
>>677 まあそうだわな。
679 :
デフォルトの名無しさん:2006/05/10(水) 12:49:58
>679
引数NULL監視でおk
>>679 こりゃやべーな。
目次ページに
> 全国的デバッグ作業に御協力下さるよう、お願い致します。
って書いてあるから、知らせてあげるのがいいんだろうね。
なんじゃこりゃよ
additional &= ( ( ( brand >>= 6 ) &= 0x3f ) ? 0x3f : 0x0 );
違うだろ。
というかそれほど難解でもないだろ。
強いて言えば、brand>>=6だけは前の行あたりでやっといた方がいいとは思うが。
バカ基準でうまいへたを決められたらカワイソス
Cなら未定義じゃね?
未定義と言うかCでは文法エラーだろう。
環境依存の糞コード。
C++ なら、いちおう規格の範囲内。
>>692 元ネタと逆にやってるから、反論っていうか、皮肉かね?
PHPは世間知らずの学生ベンチャーのアルバイト言語
Perlはゲージツカ言語
だなぁ。
宣伝厨乙。
697 :
デフォルトの名無しさん:2006/05/13(土) 18:30:59
「商品コード・商品名・受注数」の組み合わせを配列で管理したいのを
二元配列で管理してるVB.NETのソースを見た。
もちろん指数は0,1,2みたいに数字を直接コーディング。
いやまぁ確かにエラーとかならずに動いてるんですけどね。
>>697 構造体にするべきところを二次元配列でって意味?
あれだろ。
勝手に構造体を定義しちゃダメってな規約でもあるんだろ。
まさに今、俺も似たような事をやってるよ。
さすがに添え字は static final int で名前をつけてるけどな。
部署で使ってるライブラリの、システム日付を取得するやつが、
**_getsysdate(short* d);
日付が、こう帰ってる。
d[0] 年
d[1] 月
d[2] 日
なんかビミョーな感じ。
>>700 それだけだと状況によるっしょ。だからビミョーなのかもしれんけど。
フツーの感覚だと日付は構造体じゃない?
Delphi標準なんて浮動小数点だぜ(TDateTime)
日時の内部表現がスカラーなのは普通じゃん。
>>700 あと、このライブラリの文字列操作の関数は、一文字目の位置が0じゃなくて
1になってたりするし。
>>700 悪かった。 次から
d[0] 年
d[1] 月*32+ 日
と2ワードで済むように修正しとくよ ( ^ ^ )
いや
d[0] 年
d[1] 月*100+ 日
の方が使い易い? まあ、どっちかにしとくよ。
どっちにしても同じ名前で動くようにしておくから 楽しみにしててね
月はゼロから始まるんだよな
なんで struct tm つかわないんだろ?
ISO C の時刻関係一切サポートされてないシステムってのもあるんだよ。
つか、実際あった。
>>712 それならそれで、struct tmに準拠しないか?
つーか、実際BTRONではtime.h系を粗方実装する羽目になった。
getsysdate(long int * d);
32bitで 16進表示した時に YYYYMMDD と返す事と決定しました
715 :
712:2006/05/16(火) 11:38:35
>>713 まあ、俺も結局足りないの全部実装したんだけどね。
そんときは他機種からの移植だったからそうしたんだけど
新規だったら互換性なしで作り込んじゃうのもアリかな、と。
717 :
デフォルトの名無しさん:2006/05/17(水) 20:25:09
VC++付属のSTLのコード読んでるんだけどゲロ吐きそう(´Д`l|l)
臭ッ
オリジナルコードを見たことがないからなんとも言えんなぁ……
>>720 それは問題だな。3万年間潜在的なバグが残るってことか。
32768年問題じゃね?
>>722 そうか。そうだな。32767年にみんな大騒ぎになって32768年に全システムがダウン
及び安いシステムを使っている後進国の弾道ミサイルが発射される。
年は double にしろって事ですね。
本当にありがとうございました。
やあ。Live long and prosper.
gmtime
>>724 年は malloc() した char * へのポインタで文字列で表現するのが良い。
Int64で持てば、地球が生存する間は大丈夫だろ。
つ[RFC2550]
>>729 それだと9223372036854775808年問題になる。
>>732 いやwだからw地球が生存する間は大丈夫だろ?ってば
2007-2100年問題でなければ大丈夫
>>733 人類があとどれぐらい生き延びるかは分からない。
あと2日で彗星の破片が降って来て終わりかも知れないが。
自転周期が乱れて1日が32768時間になったらどうしよう?
そうしたら生きる時間が長くなるかもしれないな
みんな寝られなくなる。
そして夜は寝過ぎになる。
みんな体調崩して人類滅亡。
利息つきまくりで(゚д゚)ウマーor( ゚Д゚)マズー
>>733 おまえ、そういう安易な考えが2000年問題をうんだんだろ。まだ懲りてないのか
そうそう。性に男女しかないという偏狭な固定観念を持っているようでは
これからのシステム設計は任せられない。
性別が2件固定だと思ってるバカなシステムあるからな。
>>741 な、なんだってー。
確かに異星人で中性種ってのもあるかもしれんな。
トップビットが立ってたら男でいいよもう面倒くせぇ
>>744 立たなくなったら男じゃないってことか?
女でも立つところあるだろ!馬鹿にすんなあ!
ちち
くり
性別は2個あたりまえだろ
TS/TGの流行っている昨今、これからは元男・元女という情報も必要だな
ぱっと見て「マ板化した」と思うスレ
「男」「女」「内緒」かもしらん。
ぱっと見て「マルチだな」と思う書き込み
>>748 いや、性別の項目の状態を表すには2つだけでは足りない。
「不明」も必要。もっと厳密に表したい場合は可変長の
文字列の入力も受け付けられるようにしておかないと駄目。
おまいらスレ違い
いや、
>>754 はぱっと見てヘタな設計だと解るのでスレ違いではない。
でもここは設計じゃなくてコードでしょ?
無理矢理コードの話にすると、性別の項目はif〜else〜じゃなくて、switchでやれってのが結論でしょうか。
いいえ
性別はバイトでフラグ
そういえば明日で世界滅亡だったな。
>>760 あ。それ忘れてた。郵便局まだ開いてるかな
そりゃ困る。明日発売のゲームを心待ちにしてるのに。
エロゲじゃねえよ変態
そうだよな.たいていは金曜発売だし
詳しいんだな
767 :
762:2006/05/25(木) 02:10:31
>>763 惜しい。EンターBレインのギャルゲ。
>>767 お前がエロゲしてることみんなにばらしておいた
けどみんな既に知っていたことが誤算だった
>>736 H:M:SのHを2バイト取ってあるところが、ぱっと見て「ぺタだなぁ」と思うコード。
エロゲとかギャルゲってなんですか?
今は GMT でだいたい朝の7時。
イギリスとかフランスの辺りでは大騒ぎになってそうだな。
へえ〜
GMTよりUTCと呼びましょう
ドウ違うの?
, イ)ィ -─ ──- 、ミヽ
ノ /,.-‐'"´ `ヾj ii / Λ
,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
ノ/,/ミ三ニヲ´ ゙、ノi!
{V /ミ三二,イ , /, ,\ Yソ
レ'/三二彡イ .:ィこラ ;:こラ j{
V;;;::. ;ヲヾ!V ー '′ i ー ' ソ
Vニミ( 入 、 r j ,′ <仲良くなってくれ
ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ
ヽ ヽ -''ニニ‐ /
| `、 ⌒ ,/
| >┻━┻'r‐'´
ヽ_ |
ヽ _ _ 」
ググレカス [ Gugurecus ]
( 2006 〜 没年不明 )
, イ)ィ -─ ──- 、ミヽ
ノ /,.-‐'"´ `ヾj ii / Λ
,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
ノ/,/ミ三ニヲ´ ゙、ノi!
{V /ミ三二,イ , /, ,\ Yソ
レ'/三二彡イ .:ィこラ ;:こラ j{
V;;;::. ;ヲヾ!V ー '′ i ー ' ソ
Vニミ( 入 、 r j ,′
ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ
ヽ ヽ -''ニニ‐ /
| `、 ⌒ ,/
| >┻━┻'r‐'´
ヽ_ |
ヽ _ _ 」
ググレカス [ Gugurecus ]
AC1頃〜没年不明
ローマ帝国宰相 アプレカスの乱の中、
「キャピ リンキック デ ググレ」(無知こそが最大の敵である) という言葉を残した。
ネタにマジレスだけど生年AC1頃でローマ帝国宰相ねえ…歴史知らないのまるわかりで恥かくよ。
ちょうどアウグストゥスがプリンケプスとして共和政から帝政に移行しようとしてた頃。
帝政って言っても中華皇帝とか今イメージする皇帝とは全然違うしさ。
はいはい,よくご存知ですね
>>781 ネタにマジレスだけど、乗りというものを知らないと恥かくよ。
ローマ帝国の年代がどうだとかこうだとか、そういう問題じゃないんだから。
ネタにマジレスだけど新スク水ねえ…歴史知らないのまるわかりで恥かくよ。
ちょうど旧スク水から新スク水に移行しようとしてた頃。
スク水って言っても今イメージする競泳タイプとかとは全然違うしさ。
皇帝はんアメこぉてぇー
>>785 そのキモさをノリで片付けてしまうのはいかがなものか?
おまいら、スク水のお腹の下に穴空いてるって知ってたか?
その下に、更に穴あいてんよ
>>788 旧いタイプで、ドテの上あたりに折り返しが付いてるやつか?
あそこから手入れると内部にアクセスできるんだよな。
>>788 泳ぐときに水の抵抗をなくすためだよな。
確か、胸から入った水を排出する
買って実際に穴開いてるか確かめたが、確かにあいていた
勉強になるスレですね。
穴開いてないとしたら泳いでるときに水着が水圧で体から浮いてぶよぶよになるんだろうか
( ´_ゝ`)つ〃∩ フーンフーンフーン
水の透過性のよくない素材で穴がないとすると、胸元から入った水の抜けるところがないので
おなかの処で水が溜まったり下手すると勢いで脱げそうになったりすることになります。
改良される前の水着は脱げる事故が頻発したんだろうか
スクール水着の穴一つにもプロジェクトXみたいな裏話があるんだよ。きっと…
そうだ!穴あけよう!
と閃いた瞬間に立ち会ってみたかったな
むしろ水着脱げた瞬間に立ち会ってみたかった
なんのスレだよ!!w
もちろんスク水の進化について議論するスレ。
これからのスク水はどうなるか、またどうあるべきかが重要課題。
試行錯誤してるところに立ち会いたかった。
おっさんが実験台になってたりしてな。
その穴縫い合わせてみて実際に脱げるかどうか試したらいいんじゃね?
うちの娘がちょうど中学一年だ。
しかし実際に試したりしたら、何かを失う気がする。例えば家族とか。
うp
うp!!
806 :
804:2006/06/01(木) 20:26:30
うpなんてしたら、さらに何かを失う気がする…
それ以前に、シーズンじゃないから、スク水は無理っすよ
シーズンはもう目前ですよお父さん
お父さんはデータ収集と、その解析しなくちゃいけなくて手が離せないから、
しかたがないので実験は娘さんにお願いしよう。
水の流れるルートとか流体解析は大変だし、お父さん泳いでる場合じゃないしな。
うんうん、仕方なくだよ、仕方なく。
だから何のスレだよw
ワッフルワッフル
今のスクール水着は穴なんか空いちゃいねーよ。
813 :
795:2006/06/02(金) 00:47:24
だから、今の水透過性のいい素材なら穴の必要がないのよ。
しかし、俺が小中だったのは、ほんの十数年前で、
その頃は旧スクール水着だったんだよなぁ。
この十年で何があったんだ。
日進月歩なのはコンピュータの世界だけじゃないのか。
水透過性のいい素材よりも
光透過性のいい素材使って欲しい漏れ
スク水の話じゃないけど、
>>815を見て、少し前まで白い水着が存在しなかったこと思い出した。
毛の色が見えてしまう素材しかなかったからだけど、当時は光透過性が良かったのかもね。
白い水着が流行った時、赤外線で撮影すると透けて見えるって話題があったな。
しゅーりょー
スクール水着って男子用も含めてその前の時代の競泳用水着を採用するパターンだしな。
前畑がんばれの頃かその直後ぐらいの競泳用水着だよな。あれは。
ので、そのうち今時のワンピース型が男子用にも(ねぇか、さすがに
ワンピースどころか体全部を覆うウェットスーツになるかも。男は暑苦しいね
アホ共に餌を与えた785は死ねばいいと思うよ
ス ケ 水
に見えた
というか、このスレしばらく見てて、821の発言みてスレタイ見て、
「あ、そういえばコーディングの話ね」とか思ったのは秘密だ。
,. -一……ー- 、
/::::{:/::::‐-:、:::丶:\
/:::::/´ ̄ ̄__\、::::l,. -―、
/::::// /:: ̄、:\::::ヽヽ≦、ス=、、
/::::/::|,.イ:l::丶::::::::\:X:::',:::ヽ、 ヽハ ',ヽ
f´ ̄!:::::l:_|_|\::\--/,r=ミ|::::::lヾく:l::', | |
ヒア_|:l::::|::N,≧ミ、トゝ ハ心}!::::::K:ヾニ二ヽ あんた達死刑ッ!
,r=ヽレ|:|::::l::|{ ト心 `'" !::::::|::!',::|ハ::! `
// |:|:::::ハ!、::ヾゝゞ'′ _'_,.ヘ /::::/:::|_!:l リ
// !ハ//|:|::ヽ::::丶、__丶 _ノ/|:::/イ::ハヘ!ヽ_
L! /ヘ |:|ミニ='⌒ (⌒ヽ´ _ !イノl/ |:! ! !L_
〈_{ ヾ.,!/ , ´ \ ∨,.‐、| l:| |ノ !
__!\ / __ム V⌒! !:! ! ハ
/__レ-〈 / f´ ヽ. '. __! //./-‐ '´ /
ヽ! |r' \l__ V/ /-‐ /
「 ! { `\_f_ノ∠ミヽ! /
/ ヽ`ヽ.二ニァ'V∠二ハ }},!-'
/ ヽ---/´/レ!ト--'/‐'
/ / ̄ヽ二ノ´l:ヽノ_
r‐! / l:/ `ヾ==、ー-- 、
/ ̄| ヽ./ 〃 /人 `ト、::::\
', / ,!\ |l \ / \:〈
| ′ / | ` |:! / `
L.__ / ! !:ヽ / !
` iー---一'Tー-∨-r‐''´ |
>>824 スク水を着てから出直してこい。
話はそれからだ。
826 :
デフォルトの名無しさん:2006/06/05(月) 03:38:10
自分の書いたコード……
cm.get_map( CPU_Vendor::Intel )->sub_map.find( ID )->second->get_type_string();
もう何がなにやら
>>824 スケ水を着てから出直してこい。
話はそれからだ。
828 :
デフォルトの名無しさん:2006/06/05(月) 06:44:14
全ヘッダーファイルがまとめてあるヘッダーファイルが存在するプログラム(死にたくなるw)
全グローバル変数がまとめてあるヘッダーファイルが存在するプログラム(殺してやりたくなるw)
>>826 mapのfindの戻り値がendかちゃんとチェックしろよ
>>824 スク水を着てから出直してこい。
話はそれからだ。
832 :
デフォルトの名無しさん:2006/06/05(月) 22:33:05
>>全ヘッダーファイルがまとめてあるヘッダーファイルが存在するプログラム
何がダメなの?
>>833 そうなってると、全部のソースがそのヘッダをインクルードすることになるだろ?
そうじゃなきゃ作る意味が無い。で、そうなると、ひとつでもヘッダを変更したら
全部のソースをコンパイルする必要があることになる。その結果、ソースが増えると
ものすごいスピードでコンパイル時間が延びることになる。
普段は個別にインクルードして
大量にインクルードするときに便利に使えばいいんじゃないか
>>828 グローバル変数がそこら中にちりばめられている方が極悪だろう
.c の中で static スコープで定義した 「グローバル」変数は
あくまでモジュール内のみでグローバルに使えるローカル変数であって
君の言うグローバル変数とは意味が違うんだよ
プリコンパイルも知らんクズか
何の言語かわからんのによく叩けるな
>>835 ダメ。一度でもなんでもヘッダを使ってしまうと、余計な依存関係が
膨らみ続ける。10個のヘッダを便利にインクルードするために使ったはずが、
最終的には100個のヘッダに依存している状況を作る。
ヘッダ全部インクルードしてたら、そのうち名前がバッティングすると思う。
話は変わるが、
char hoge[128], *hogePtr;
hogePtr = &hoge[0];
こういうのをたまに見かけるのだが、hogePtr = hoge でもいい……んだよね?
>>841 >ヘッダ全部インクルードしてたら、そのうち名前がバッティングすると思う。
コンフリクトはエラーになるからすぐわかるw
>hogePtr = hoge でもいい……んだよね?
もちろん。しかし
hogePtr = &(hoge[0]);
という書き方も冗長だが読み手に意図を正しく伝え様としている必死さに好感w
自分はやらないけど
>>838は無視か?
stdafx.hに全部のヘッダを詰め込んだりするだろ
でも、それを使わないときには全部のヘッダを詰め込んだりはしないし、
stdafx.h内もあくまで<>形式のインクルードしか書かないし。
>>841 Delphiで、ポインタ使わずに組み込みの動的配列使うときにやったりするw
あ、でも&hoge[0]はねーかw
>>847 漏れはやることあるよ。
char buf[some], *rPtr, *gPtr, *bPtr;
rPtr = &buf[0];
gPtr = &buf[1];
bPtr = &buf[2];
てなとき。
構造体じゃなくて?
>>850 例えば
union {
char buf[3];
struct {
char r;
char g;
char b;
} rgb;
};
ってことじゃないのかな。
852 :
デフォルトの名無しさん:2006/06/09(金) 00:28:05
処理系に依存しそう
いいえ。
char r;
と
char g;
の間にコンパイラがパディング入れちゃったりする心配はない?
そんなへぼなコンパイラがあるんですか?
856 :
デフォルトの名無しさん:2006/06/09(金) 00:54:50
C/C++の話題が多いのは、やっぱりC/C++が糞コードを生みやすいからなんだろうか?
OSやらドライバまで書けるが罠も多いからなぁ
特にC++
諸刃の剣どころじゃない
858 :
デフォルトの名無しさん:2006/06/09(金) 01:19:35
かみがチェーンソー持ってるようなもんだな
ドライバや組み込み系のプログラミングって、
結局メモリの動的確保がないことと、最適化重視ってだけだろ?
main関数に、低レベルな制御関数や制御APIが出てくるソースも読みにくいよな。
#define ZERO 0
をみた時
おまえな、ZEROが0以外になる可能性でもあるのかと
まだ
#define INIT_VALUE 0
とかの方がマシだよ
1段インデントはスペース2個なのに、2段インデントはタブになるソース。
#define NULL 0
をみた時
おまえな、NULLが0以外になる可能性でもあるのかと
まだ
#define NULLPO !GA
とかの方がマシだよ
>NULLが0以外になる
処理系によっては0でない場合があるそうな。俺は見たことないが。
>>863 ある害虫が、0〜10くらいまで同じようにdefineしているコードを見たときクラクラきた。
確かに数字を直接コード内に書いてはいけないというコーディング規約があったが、
そういうことではないだろうと突っ込みたくなった。
害虫1匹だけかと思ったら、その会社のやつらは全員そうだった。
>>864 言語上は、NULLは必ず0だと決まってなかったっけ?
そもそもNULLは(void*)0だろ
まぁソースレベルで0と等価なのは保障されてるが
(void*)0じゃなくて型のない0だな。(void*)0だとC++ではコンパイルエラーになる。
>>864 中途半端な知識厨乙。ちゃんとC FAQ全部よめ
869 :
デフォルトの名無しさん:2006/06/09(金) 08:42:14
>>861 「0とOが見分けられるフォント使えよ」が正しいツッコミ
C FAQ読んだ。成程、NULLとヌルポインタは違うのな。
>>861 #define HOGE_YEAR1975 1975
とか、名前に値を反映させてしまってるとかありがちだな。
>>859 >ドライバや組み込み系のプログラミングって、
モダンなOS用のドライバなら、動的確保は普通に行うよ。
>>862 そういうソース、自分で造ってたような気がする。
emacs でちゃんと設定せずにインデントを2にすると、そうなったような・・・
python書くようになってインデントをタブにすることを止めたので、最近はそうなってないはずだが。
最近パッと見て下手だなぁと思うのは、-> やら . やらつきまくってる変数をそのままずっとあちこちに書いてあるソースかな。
874 :
デフォルトの名無しさん:2006/06/10(土) 01:40:44
>>836 わかってないな。
変数や関数の影響範囲はヘッダーファイルのインクルードの仕方で絞れるだろ?
それを放棄して必ずソースの全域で使えるようにしてしまうような奴は
いつまでたってもプログラマレベル1のまんまだ。
グローバル変数や関数を使っちゃ駄目だってのはgotoと同じぐらい駄目だって言われてるのに
何故かこれに関してだけ耳をふさぐ奴が多いんだよな。
一度、どうして駄目だと言われるのか?代わりにどうやって組めばいいのか?って頭使ってよく考えろといいたい。
多分、人から実装方法だけ聞いたんではなんでそんな面倒なことをするのか全く理解できないと思う。
さすがに10年近くもやってるのにこんなのわからないなんてアホ過ぎるにもほどがある。
グローバル変数や関数を使う奴とマスターヘッダーを作る奴ってのは
俺の経験ではほとんどの場合一致している。
で、そいつはオブジェクト指向も理解できないことになる。
delegatedのソースってこのスレ的に推奨(w
877 :
デフォルトの名無しさん:2006/06/10(土) 02:31:15
>>876 この板も理由無しでお前を支持するほど馬鹿ぞろいなわけじゃないでしょw
悪いけどグローバル変数の問題と正面から向き合って考えたことがないプログラマってのは
他のどんな知識を手に入れても、レベルは1のまま。
まぁまぁ、そこまで自分は低脳ですよってアピールをいつまでも続けなくていいよ。
879 :
デフォルトの名無しさん:2006/06/10(土) 02:39:38
低脳というか、ちょっと論点外してるよな。
>>874は。
880 :
デフォルトの名無しさん:2006/06/10(土) 03:14:31
グローバル変数がダメだというやつは変数の管理もできないヘタレ
>>882 いや、その管理ができてないから、グローバル変数になるっちゅーねんw
>>881 男のスク水なんて短パンじゃねぇか・・・見たいのか・・・orz
いや、ブリーフタイプかもしれんよ
>>874 Knuth先生に鼻で笑われそうな意見だ
>>874 >グローバル変数や関数
これの関数って何?
printfとかです
889 :
デフォルトの名無しさん:2006/06/10(土) 09:38:21
>全グローバル変数がまとめてあるヘッダーファイル
C歴半年しかも独学のオレから質問だ。
これは、あったほうがいいよな?
グローバルなんだからどっかに隠しとく必要がないし、
プログラム内でとうとつに出てきた変数の実体を探すのに便利ジャマイカ。
グローバル変数の出番は限られてる。
configファイルを読み取ってグローバル変数に格納し、
各地で参照するとかそういう使い方なら問題ないのだが、
グローバル変数で、データのやりとりをしようと考えているのなら
考え直した方がいい。
>>891 >configファイルを読み取ってグローバル変数に格納し、
>各地で参照するとかそういう使い方なら問題ないのだが、
それだって駄目だよ。
configファイルで受け取るデータの保持の仕方に仕様変更がかかったらどうするんだ?
変更箇所の影響範囲が全く絞れないぞ。
普通にconfigファイルからデータを読み込んで取得できるクラスを作れよ。
で、使うところでのみヘッダーファイルをインクルードしろ。
プログラムでただ1つなら頭で読み込んで末端のクラスには引数で渡していけ。
>>893 じゃあ、どうするのがいいって言ってるの?
こんな極東の場末の掲示板に集まった素人に毛の生えたような連中が
議論して結論が出るような簡単な問題じゃないだろうが・・・。
グローバル変数が本当にダメなら言語仕様からはずせばいいのにね。
>>895 何?結局グローバル変数がどうして駄目なのかわからないわけ?
それってオブジェクト指向を理解できないっていってるのと同じことなんだぞ。
>>891 は恐らく、
「変数の寿命に関して言えば、その期間がプロセスの存命期間に等しければ
constant と同様の扱いが可能」
という話をしていると思われるが、
>>892 のアサッテ方向からの指摘は
一体なんなんだろう。
>>896 のトンチキなレスからも同じ臭いがする。
子コンロトールのハンドルとかはグローバル変数にしても大丈夫ですか?
コボラーの集まるインターネッツはここですか?
readonlyかそれに近いものならグローバルでもいいよ。
901 :
デフォルトの名無しさん:2006/06/10(土) 15:57:41
>>897 どこがアサッテなの?
>>891が問題無いとかいってるのは勝手に自分の脳内でそこだけをみて
問題無いとかいってるレベルでしょ?
正直、非常に視野が狭くてとてもプログラマとは思えない。
素質無いし、この先続けててもみんなに迷惑かけるだけだから辞めちゃったほうがいいと思うよ。
人間様の負担にならなければなんだってOKだよ。
せっかく言語側で名前空間や寿命を扱えるんだから使わないと損ってだけ。
>>901 んじゃ何処が問題なのか指摘しろよ。
俺様とは考えが違うお前は間違ってるってレベルでしょ?
正直、非常に視野が狭くてとてもプログラマとは思えない。
素質無いし、この先続けててもみんなに迷惑かけるだけだから辞めちゃったほうがいいと思うよ。
オブジェクト指向わかんないけど
構造化プログラミングがわかるから
グローバル変数がうんこってことはわかる。
グローバル変数がダメっていうやつは関数型言語でも使っとけと
シングルトン使えばええやん
>>891 みたいに、起動時に初期化して、その後は参照のみって使い方なら、
グローバルでも問題ないんじゃないの?
変数じゃなくて、グローバルな「定数」に文句言う人ってあんまりいないよね。
>>891って、「変数」と言っても、事実上定数と同じ扱いだし。
で?
それがどうした
>>907 いくら定数だからって影響範囲を全域にすると他のライブラリとしなくてもいいような
バッティングに苦しめられることになる。
>>910 定数も駄目だと思うよ。
使うところだけの最小範囲に絞りこめればそれに越した事は無い。
>>909 たとえば、MAX_PATH のような変数があって、これが、
const int MAX_PATH = 1024; とあるか、
extern int MAX_APTH; とあって、実行時に初期化されるかで、
なにがどうちがってくるのだろうって話。
(extern int MAX_APTH は、初期化以外でも変更可能って話があるけど、
それはスコープとは別のこと)
boostとかでもグローバルな定数使いまくってると思うんだけど
それもダメって言ってんの?
>>913 定数だと問題はそっちじゃなくて影響範囲の方になるかな。
関係ないところまでMAX_PATHの影響を受けるような組み方だとまずい。
>>913 どちらにもそれぞれ別の問題がある。
前者はソースローカルにconst int MAX_PATH = 512;とでもされると困るし、
後者は定数を要求する場所で使えない。
>>914 組み方としては駄目じゃないのかな?
機能がどうのこうのっていうのはいうつもりはないけど。
完成しちまってるもんに関してだと、「もっといい組み方がある」としかいいようがないけどね。
namespace config_for_xxx
{
const int MAX_PATH=512;
}
>>919 でも、
>>916の
>ローカルにconst int MAX_PATH = 512;とでもされると困るし
っていうのは影響範囲の問題じゃない?
ちゃんと定義したMAX_PATHの影響範囲を頭に入れてないといつでもバグる可能性をもってるじゃん。
>>920 じゃ、
getMaxPath(); みたいので取得するってこと?
影響範囲うんぬんなら、同じ問題抱えてると思うよ。
設定ヘッダはこんな感じにして、
namespace MAX_PATH
{
const int MAX_PATH=512;
}
namespace MAX_DIR
{
const int MAX_DIR=256;
}
各cppで利用する定数をusing namespaceする。
>>922 だからそれじゃMAX_PATHが二カ所にあったら意味が無いんだから、
やるんだったら
namespace config_for_xxx
{
namespace MAX_PATH
{
const int MAX_PATH=512;
}
namespace MAX_DIR
{
const int MAX_DIR=256;
}
}
>>921 それのほうがなんぼかましになるんじゃない?
ただ、それでもクラスを定義したヘッダをマスターヘッダにインクルードしてたら全く意味無いけど。
問題は実装するとかじゃなくてキチンと影響範囲を限定できる仕組みになっているかどうかだから。
ヘッダを使うところだけにインクルードするって大事だと思うんだけどなぁ。
ネームスペースで区切っても、
hoge::hage って、どこからでもアクセスできるなら、グローバルと同じだよね。
やっぱり大事なのはヘッダを必要な箇所以外にインクルードしないってことだね。
マスターヘッダなんて作ってる奴はやっぱりヘタレ。
getMaxPath()ってインスタンスとメソッドが
publicならグローバルと同じだよね。
max_path.h
const int MAX_PATH=1024;
max_dir.h
const int MAX_DIR=512;
…
>>927 だから大事なのはインクルードで影響する範囲を最小減に絞ることってさっきから言ってるじゃん。
わからないのか?死ねよw
>>928 getMaxPath()ならおこらないっしょ?
>>892 取り敢えず
>データの保持の仕方
だの
>取得できる
だの、曖昧な言葉で誤魔化さずに
実例挙げるかどうにかした上で
前段落の問題がどう解決するのか説明してくれ。
windef.hより抜粋(・∀・)
#define MAX_PATH 260
933 :
デフォルトの名無しさん:2006/06/10(土) 17:14:06
>>931 だから、根本的な解決策は直接的なコードなんかにはなくて
ヘッダのインクルードによる影響範囲を最小限にしろっていってるんだよ。馬鹿。
わからないのか?あたまわるいなぁおまえw
>>932 つ 現実 #define MAX_PATH 512
そんな文句言うことでもないでしょ 状況次第
ライブラリとして使われるようなプログラムならまとめたヘッダーがあってもいいだろうし
あってもいいと思われるパターンが限られてるとは思うけど
ヘッダーファイルでうんぬんって話なら
>>891 だって、問題ないね。
>>933 ふむふむ。すると、グローバルかどうかはどうでもよくて、
>普通にconfigファイルからデータを読み込んで取得できるクラスを作れよ。
これも適当にクラスとか言ってみたかっただけで、
真意はその後ろの
>使うところでのみヘッダーファイルをインクルードしろ。
という部分にあるわけですね?
であれば同意します。
>>937 そりゃたまたま定数だっただけで、
変数や関数の場合は両方やらないと影響範囲を限定できないっしょ。
>>937 だからシングルトン使えってアレほど(ry
>>940 バカヤローそんなもんグローバルとかわらねーだろ。
grepすれば影響部分とかすぐ分かると思うんだが
>>942 無理っしょ。
そりゃ文字列がヒットしたところだけだ。
それで、どんなときならグローバル変数使っていいの?
処理速度が必要なところだとグローバル変数は必須
実質グローバル変数の弊害って全ては開発側のリスクであって、ユーザはそんなことどうでもいいよねぇ。
(´-`).。oO(何を当たり前のことを言ってるのだろう・・・)
つまりユーザからしてみれば処理速度遅くなるくらいならグローバルでも何でも使ってくれよってことか。
つまりグローバル変数減らす代わりに処理速度遅いプログラムは本末転倒の真のヘタレプログラムってことですね。
処がだ。
int func() {
static int rtn;
rtn = 0;
for (;;) {
...; // 適当な処理
}
return rtn;
}
こんな関数があったとする。
今のコンパイラだとrtnはstaticにしない方が大抵速いんだな。
何故なら、staticじゃなければrtnをレジスタ変数にできるからだ。
尤も、最適化の優れたコンパイラならループ脱出まではレジスタ変数として、
ループ脱出後にstaticにコピーするだろうけれど。
#勿論、それでも何もしないよりはコストが掛かるわけだ。
従って、高速化を目的としたstatic化、グローバル化はしばしば下手の考えとなるってこった。
>>952 現在の話題と全然合ってない例出されても、お前がバカだっつーことしかわからんよ。
次から気をつけろよ。
ていうか、こんな話題で処理速度出されてもなw
957 :
デフォルトの名無しさん:2006/06/10(土) 22:01:38
結局、グローバル変数が何故駄目なのか理解できなかったのか?
レベル低いな。
話題出した奴のレベルが低かったからなぁ
>>946 >処理速度が必要なところだとグローバル変数は必須
>>947 >static でなんとか踏ん張れ。
>>950 >つまりユーザからしてみれば処理速度遅くなるくらいならグローバルでも何でも使ってくれよってことか。
>>951 >つまりグローバル変数減らす代わりに処理速度遅いプログラムは本末転倒の真のヘタレプログラムってことですね。
>>952 >従って、高速化を目的としたstatic化、グローバル化はしばしば下手の考えとなるってこった。
>>954 斯くの如く卑近な話題に乗っていると思うが。
>>956 同意。
点で的外れ、
線で場違い。
俺様がそう思うから違う考えの奴は尽く馬鹿ということですか
>>962 例えば>828とかか。
てか、このスレで愚痴言ってる奴全員そうか。
結局グローバル変数は使わないけど処理速度は落とさないって自信もって言える奴はいねーのかよw
そもそも
>>952こんな例だされてもデータ1個なんてどうでもいいんですよ。
10個20個だった場合引数を10個20個にしろっていうのか?
はじめっからグローバル用途でスタティックするくらいなら素直にグローバル使えばいいのに。
グローバル変数使うとエラーや変更すべき個所を特定しにくいしバグの原因にもなる。
だからあんまり使いたくないんだけど、処理速度の話されたらやっぱ使っちゃうんだよね…。
969 :
デフォルトの名無しさん:2006/06/10(土) 22:58:20
そんなに悩むのならば、辞めちゃえばいいのに、プログラマー。
970 :
デフォルトの名無しさん:2006/06/10(土) 22:59:12
>>965 ぷw
処理速度なんて持ち出していいわけしてはずかしくないの?(大笑)
>>968 自分が馬鹿ないいわけにはちょっとはずかしいかなw
>>956 逆に処理速度の話されると何か困るのかなぁ?
973 :
デフォルトの名無しさん:2006/06/10(土) 23:06:15
>>972 ループが重なる処理でもないしグローバル変数と処理速度を結びつけること自体プログラマとしては失格。
落ち着けよお前らw
↑オマエモナー
ユーザーはプログラマのことなんてどうでもいい、
プログラマの気苦労もどうでもいいし、しったこっちゃない。
プログラムがちゃんと動いて尚早ければもっといい。
ただそれだけ。
>>973 関数何回も呼ぶ必要がでてくるし、それだけ処理増えるじゃん。
何いってんだか。
なんだ今日はやけに書き込みが多いな。
979 :
デフォルトの名無しさん:2006/06/10(土) 23:15:48
>>977 それは処理速度にかかわる量なの何万回とかそういう話になるけど
そんな処理する前にローカル変数に1回移せば済む話だよね。
君は本当に馬鹿だね。
まともなプログラマならグローバル変数と処理速度なんて絶対に結びつけて話なんかしない。
君、会社でもおかしな発言して嫌われてるでしょ?
980 :
デフォルトの名無しさん:2006/06/10(土) 23:17:22
こんなとこに必死に書き込んでる日本人プログラマなんてたかが知れてる
おまいらがしている議論は太古からされていて、
しかも結論がでてる事に気づいている奴がたくさんいそうだな
C初心者ですが、RPG作ってるときにモンスターデータとかは構造体グローバル変数にしてもいいでしょうか?
>>983 そんなコード、まさにこのスレにお似合いだ。
このスレもーイラネーだろ
ただの愚痴スレと化してるな
>>903 そうだね。少なくとも
>>901はプログラマ向きじゃない。
今システム構築とかの現場でデスマーチが多いのはたいてい
>>901のような馬鹿や、
それ以外の馬鹿がたくさん居るせいだよ。
989 :
デフォルトの名無しさん:2006/06/11(日) 01:05:56
>>988 君ねw
グローバル変数なんてつかっちゃうほど頭が悪いのになんでそんなに自分の腕に自信もってるの?w
「gotoは使わない」「グローバル変数は使わない」とか聞いたことないの?ん?
俺がプログラム組み始めた頃はどこでも聞いたけどね。
それこそうるさいぐらいにこれを使ってる奴=馬鹿ってほど叫ばれてたよ。
たとえそれが正しい事でも教条主義的に語っては反発を招くよ
991 :
デフォルトの名無しさん:2006/06/11(日) 01:13:38
Msgbox("3")
Msgbox("2")
Msgbox("1")
Msgbox("0")
>>989 何故、言語仕様として用意されているのか?
なんて事すら考えられないなんて、逆に不敏になってくるな…。
要は使いようなだけで。gotoだって使いようによっては使わない場合よりシンプルになる場合だってある。
むしろ、なぜ、グローバル変数を使うことが嫌悪されるのかをよく考えて欲しいと思う。
ていうか、この理解無しにオブジェクト指向は理解できないだろ。いやマジで。
たぶんアレだよ
g_
の部分がキモイとかだよ
998 :
992:2006/06/11(日) 01:26:10
>>994 使うべき所では使う。
まあ、普通に書いてたらそうそう使う場面はないが。
何のルールもなく気楽にグローバルで宣言するのは確かにお利口さんじゃないわな。
1000 :
デフォルトの名無しさん:2006/06/11(日) 01:30:05
グローバル変数を使う奴は極上の馬鹿。
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。