12/02/06 13:34:26.44
>>67
よくわからないなら書かなければいいのにね
76:デフォルトの名無しさん
12/02/06 16:55:11.93
ミーティングの時に「副作用完了点」とぼそっと呟いてみよう。
ピクッと反応した奴が>>50だ。見つけたら笑ってやれ。
77:デフォルトの名無しさん
12/02/06 17:46:54.75
変数の使い方についてなんですが
プログラムを作っていて、変数が新しく必要になった時に
今までの処理で使用したけどもう役目を終えて使っていない変数があればそれを再利用すべきなのか
それとも新しく宣言した方が良いのか、どっちなんでしょうか?うまく表現できなくてすみません
78:デフォルトの名無しさん
12/02/06 17:48:08.11
>>77
意味のある名前をつければおk
79:デフォルトの名無しさん
12/02/06 17:56:02.05
一時変数のtmpを使いまわすかどうかとか、
2個目のループでi j を使いまわすかどうかってレベルの気がする。
80:デフォルトの名無しさん
12/02/06 18:29:11.17
再利用か、別変数か、>>50の意見も聞いてみたい。
>>50の逆をいけばいい。w
81:77
12/02/06 18:39:41.19
>>79
たぶんそのレベルでした
82:デフォルトの名無しさん
12/02/06 19:17:46.90
オブジェクトの解体と再構築のコストが大きくて
可読性を犠牲にして再利用したくなるぐらいなら最利用する
そうでなければ普通に新しく作る
83:はちみつ餃子 ◆8X2XSCHEME
12/02/06 19:23:57.62
>>77
まともな最適化機能をもったコンパイラなら再利用は避けた方が効率的なプログラムになる可能性が高い。
最適化の前段階でのフロー解析において、どの変数がどこに利用されるか等のプログラムの流れを検出しようとするが、
関係の無いところでの使い回しがあると解析しにくくなる。
これは人間にとっても同じで、関係の無い使い回しがあると流れがわかりにくくなり易い。
コンパイラが C99 に対応しているならループ変数程度のものは
for (int i=0; i<n; i++) hoge();
というようにその場限りの使い捨てがやりやすいので積極的に使うといいと思う。
昔の C は関数の先頭でしか変数の宣言をできなかったが、今ではどこでも宣言できるので、
使うところの近くで宣言し、なるべく狭い範囲でだけ使うのが近代的なスタイルと考えられている。
とは言うものの、これらはあくまで原則。 やりすぎるとそれはそれで不都合があることもある。
読み易さや効率はケースバイケースなので盲目的に従うのではなく、
どちらが良いか個別の「意味」を自分なりに考えよう。
プロジェクトによって書き方にガイドラインを設けているものもあるので、
既存のスタイルを参考にするのもいいかもしれない。
84:77
12/02/06 19:29:34.66
参考になりました。みなさんありがとうございます!
85:デフォルトの名無しさん
12/02/06 19:33:14.81
C99以外の環境ってブロックの先頭以外で変数宣言できたっけ?
86:デフォルトの名無しさん
12/02/06 19:35:19.44
void func(void) {
int x;
hoge(x);
{
int y;
fuga(x, y);
}
}
的な感じで書けるから実質宣言場所に制限はないと見てもいいよ
87:デフォルトの名無しさん
12/02/06 19:36:31.93
できないよ
88:87
12/02/06 19:37:04.79
>>85あてね。
89:デフォルトの名無しさん
12/02/06 19:38:41.23
>>80
しばらく>>50を引き合いに出しそうな感じがするからコテつけてもらえると助かる。
90:デフォルトの名無しさん
12/02/06 19:40:58.79
> プロジェクトによって書き方にガイドラインを設けているものもあるので、
> 既存のスタイルを参考にするのもいいかもしれない。
>>50のように聞きかじりの知識を振りかざして混乱させるはた迷惑なバカが
ガイドラインを作っていることも多いので、プロジェクトのガイドラインに
は疑いの目を向けることも重要。
91:デフォルトの名無しさん
12/02/06 19:54:15.48
また変なのがでてきたなぁ…
コテ禁止にはしなかったんだっけ?
92:デフォルトの名無しさん
12/02/06 21:02:11.80
コテつけてもらったほうがありがたい
93:デフォルトの名無しさん
12/02/06 21:07:17.15
逆コンパイルでソースが復元できないC系のwindowsフォームアプリの開発言語でVSに入っているのはなんというものですか?
94:デフォルトの名無しさん
12/02/06 21:07:44.89
>>92
いや、コテつけるようなやつは出入り禁止で。
>>93
スレ違い。
95:デフォルトの名無しさん
12/02/06 21:08:04.00
>>85
C11ならできるだろ
96:デフォルトの名無しさん
12/02/06 21:16:17.39
いや。>>50はぜひコテをつけて、このスレのおもちゃになってもらいたい。
97:デフォルトの名無しさん
12/02/06 21:25:08.17
いやいや。すでに>>50って名前で定着してるだろw
98:デフォルトの名無しさん
12/02/06 22:11:33.58
float a,b,c;
a = 425;
b = 293749;
c = (float)(((double)a) * ((double)b));
printf("%f %f\n",c,a*b);
99:デフォルトの名無しさん
12/02/06 22:27:12.44
>>98
printf()にdoubleで渡してるからだろ。
何がいいたいんだ?
また>>50か?
100:デフォルトの名無しさん
12/02/06 22:28:09.03
ワクワク、>>50の新作ギャグかな。
101:デフォルトの名無しさん
12/02/06 22:32:12.29
初心者向けにC言語の暗黙のルールやバッドノウハウがまとまってるサイトとかってないかな
getsは使うなとかscanfは使うなとかそういうの
102:デフォルトの名無しさん
12/02/06 22:42:48.60
C FAQの初心者版って事?
確かにC FAQ理解できなくて>>50になってしまったら悲惨だからなあ。
2chならいいけどリアルでやったら生きていけないよなあ。w
103:デフォルトの名無しさん
12/02/06 22:43:53.39
お前ら容赦ないなwww
104:デフォルトの名無しさん
12/02/06 22:46:15.96
>>101
バッドノウハウを学ぶタイミングは難しいとおもう。
非推奨の関数に関してはコンパイラの警告で。
105:デフォルトの名無しさん
12/02/06 22:50:00.27
今Macのxcodeでc言語してるんですけど質問はここでいいですかね?
106:デフォルトの名無しさん
12/02/06 22:53:52.00
mac板にxcodeスレがあるみたいだけど。そこじゃダメなの?
107:デフォルトの名無しさん
12/02/06 23:24:50.60
新Mac板は基本objective-cや変化の多い環境環境やアプリや機器の登録とかの話題多いからcだけとかそうゆう感じじゃないんですよね。。MacでCすると窓にはないイレギュラーな事態とか起こったりするんだろうか、?
あ、すみません質問は事故解決しました
108:デフォルトの名無しさん
12/02/06 23:43:06.17
ターミナルでgcc打ってるレガシーな感じでCの勉強してるのかな?
109:デフォルトの名無しさん
12/02/06 23:55:33.61
xcodeのiPhoneアプリやMac用ソフトとかのテンプレの中にcのテンプレがありますねん
メモリ2Gくらい使うソフトでやってるからレガシーではないですな
110:デフォルトの名無しさん
12/02/06 23:58:27.67
>>54-55
馬鹿すぎて話しにならない。
>>59
副作用完了点舐めすぎ。
関数呼び出しが副作用完了点と言うのは正しいが、今回の問題は引数の評価だから、全然違う話。
例えば
int foo(int x, int y){ return x + y; }
int main(){
int a = 1;
int b = foo(a++, a++);
printf("a = %d, b = %d\n", a, b);
return 0;
}
ってやってみればわかる。
引数の評価毎に副作用完了点があるなら、評価の順序にかかわらず a = 3, b = 3 になるはず。(GCC/2.95)
ところが、コンパイラによっては a = 3, b = 2 になる奴がある。(Visual Studio 2010)
もちろん両方ともに処理系としては正しい動作。
そもそも式がダメなのに、それに含まれる関数の引数評価に副作用完了点があると思えるなんて馬鹿すぎる。
111:デフォルトの名無しさん
12/02/07 00:05:40.28
まだほざいてるのかよ。
誰も引数の評価ごとに完了点があるなんて言ってねーよ。
112:デフォルトの名無しさん
12/02/07 00:06:24.95
a++の代わりにadd1(&a)とかにしてみろよ。
113:デフォルトの名無しさん
12/02/07 00:14:26.36
やたら3項演算子使いたがるよね、自称玄人プログラマはw
114:デフォルトの名無しさん
12/02/07 00:15:30.95
まぁ普通は低レベルに合わせないといけないから禁止されてるからそのせいだろw
115:デフォルトの名無しさん
12/02/07 00:17:41.25
3項演算も禁止しなきゃならないぐらいヘボグラマしか居ない環境でまともなアプリケーションなんて作れるの?
116:デフォルトの名無しさん
12/02/07 00:18:30.88
まぁお前も含めて大抵のとこはそんなもんだよ。
117:デフォルトの名無しさん
12/02/07 00:18:37.62
>>4のソースとかニヤニヤしちゃう
118:デフォルトの名無しさん
12/02/07 00:28:39.58
int fibo(int a)
{
if(a == 0) {
return 0;
} else if(a == 1) {
return 1;
} else {
return ( fibo(a - 1) + fibo(a - 2) );
}
}
↓
int fibo(int a)
{
return a == 0 ? 0 : a == 1 ? 1 : fibo(a - 1) + fibo(a - 2);
}
おれってかっけー、いやっほぅ!
119:デフォルトの名無しさん
12/02/07 00:30:23.33
returnの後にelseとか、いつも間抜けに見えるよね。
120:デフォルトの名無しさん
12/02/07 00:36:49.58
やってることは大したことないんだけど、記述次第で凄そうにみえる3項演算子
121:デフォルトの名無しさん
12/02/07 00:39:38.48
まぁ理解してたらその逆だと思うけどなw
122:デフォルトの名無しさん
12/02/07 00:41:31.76
おすすめの本教えて質問はできません
123:デフォルトの名無しさん
12/02/07 00:41:37.31
そもそもif-elseの羅列と三項演算は使い道が違うから
比較すること自体がナンセンス
124:デフォルトの名無しさん
12/02/07 00:46:33.27
ほうほう。
>>4の例が使うべき例だとそういうことだね
125:デフォルトの名無しさん
12/02/07 00:47:20.15
そんな低レベルの話はしなくていいよ。
126: ◆QZaw55cn4c
12/02/07 00:57:09.53
>>120
三項演算子をネストに使うのが便利です。
URLリンク(codepad.org)
127:デフォルトの名無しさん
12/02/07 01:01:37.22
この作例の利点は何だ?w
128:デフォルトの名無しさん
12/02/07 01:02:51.96
三項演算ってのは条件式から値へのマッピングなんだよ
条件分岐とは意味合いが異なる
129:デフォルトの名無しさん
12/02/07 01:04:30.24
うむ、その意味合いの違いが生かせる作例とは?
130:デフォルトの名無しさん
12/02/07 01:08:07.69
Perl使う様になれば理解できると思うよ
131:デフォルトの名無しさん
12/02/07 01:18:33.29
三項演算子は1段までなら簡潔にかけていいこともあるだろうが、
それ以降のネスト化はただの技巧披露にしか見えない
仮に、最適化オプションありでコンパイルしたコードをディスアッセンブリしてみて、
ソースを三項演算子で記述したほうが命令数少ないよって話なら別だが
慣れればフツーに読めるだろ、低能には無理だろうがな
とか言い出す玄人()が出てきそうなネタだね
132:デフォルトの名無しさん
12/02/07 01:20:46.78
むしろ3項のほうがすっきりして読みやすいと思うんだけど
133:デフォルトの名無しさん
12/02/07 01:22:18.38
カンマ式混ぜると痛い事に成るしな
134:デフォルトの名無しさん
12/02/07 01:23:15.94
>>131
そう? (cond) に対応して便利と思わない?
135:デフォルトの名無しさん
12/02/07 01:39:11.04
>>134
ん?どゆこと?
136:デフォルトの名無しさん
12/02/07 01:45:03.81
で、どこに自称玄人プログラマがいるんだ?
色々禁止してやらないとダメな>>115のようなヘボグラマしかいないようだが。
137:デフォルトの名無しさん
12/02/07 02:08:06.07
>>136
そういうあなたは?
138:デフォルトの名無しさん
12/02/07 02:11:15.72
質問には質問で返す。
典型的なヘボ。
139:デフォルトの名無しさん
12/02/07 02:13:56.08
これを俗にブーメランというのだよ >>136
140:デフォルトの名無しさん
12/02/07 02:14:24.49
そして論点をずらす。
141:デフォルトの名無しさん
12/02/07 03:15:20.54
#include <stdio.h>
void func(){
printf("i am func.¥n");
}
int fibo(int a){
return a == 0 ?
(a = 1, 0)
: a == 1 ?
(a = 2, func(), 1)
:
fibo(a - 1) + fibo(a - 2);
}
int main(){
printf("%d¥n", fibo(10));
return 0;
}
142:デフォルトの名無しさん
12/02/07 03:31:12.45
fatal error RC1015: cannot open include file 'l.jpn\windows.rc'.
リソースファイルのコンパイルに失敗します
どうすれば解決しますか?
143:デフォルトの名無しさん
12/02/07 03:41:43.09
>>126
それに慣れるとPHPでびっくりするからやめたほうがいいよ
144:デフォルトの名無しさん
12/02/07 06:06:31.80
おまいら、教えてくれ
page faultの許容ってどんくらい?
process explorerで測定したら2000くらい。
バッチプログラムなんだけど、バッチで2000って多いですか?
145:デフォルトの名無しさん
12/02/07 06:30:04.04
スレ違い。
146:デフォルトの名無しさん
12/02/07 06:49:49.88
int x = 0;
printf("%d %d", ++x, ++x);
147:デフォルトの名無しさん
12/02/07 08:28:54.91
>>141
もはやあほだろ。。
148:デフォルトの名無しさん
12/02/07 09:51:11.12
>>2
#include <stdio.h>
void fibo(int *a, int *b)
{
*b += *a;
*a = *b - *a;
}
int main(void)
{
int sum, a, b;
for(sum = 0, a = 0, b = 1; a <= 4000000; fibo(&a, &b)) {
if(a % 2 == 0) {
sum += a;
printf("%d %d\n", a, sum);
} }
return 0;
}
149:デフォルトの名無しさん
12/02/07 10:10:42.09
URLリンク(codepad.org)
150:デフォルトの名無しさん
12/02/07 13:14:55.81
static unsigned long long fib(unsigned n)
{
if (n == 0) return 0;
static unsigned long long a[94] = {0, 1, };
bool inRange = n < sizeof(a) / sizeof(* a);
if (inRange && a[n] != 0) return a[n];
unsigned long long val = fib(n - 1) + fib(n - 2);
if (inRange) a[n] = val;
return val;
}
151:デフォルトの名無しさん
12/02/07 13:39:44.57
int add_fibo_evnn(int n){
int a=0,b=1,c=0,d;
while((d=b,b+=a,a=d)<=n)c+=d*(~d&1);
return c; }
152:デフォルトの名無しさん
12/02/07 15:46:57.40
C言語のプログラムレポート15個中3個提出しなかっただけで3段階評価で
Cだった...8割出してC(可)ってありえないだろ。ふつうはAだよな。
みなさんどう思う?
153:デフォルトの名無しさん
12/02/07 15:53:13.11
3段階評価ならCって不可じゃねーの?普通
3段階なら、全提出でB、内容がマトモでAだな
提出してないのはCでも文句言えないだろ
154:デフォルトの名無しさん
12/02/07 15:53:54.59
プログラムの出来がパーフェクトで8割提出なら80点
プログラムの出来が80点で8割提出なら80*0.8=64点
プログラムの出来が90点で8割提出なら90*0.8=72点
00-60 不合格
60-70 C
70-80 B
80-100 A
お前のプログラムの出来が80から90に満たない程度の出来だったと判断されたんだろ
155:デフォルトの名無しさん
12/02/07 15:55:05.69
パンデモニウムさんは可愛いけど声がイラつく
156:デフォルトの名無しさん
12/02/07 16:03:32.42
>>154
専門科目が6割以上合格ってどんだけ昔の考え?
157:デフォルトの名無しさん
12/02/07 16:08:14.75
A 優
B 良
C 可
D 不可
だろw
Aくれない教授はゴミだよ。生ゴミ以下。
158:デフォルトの名無しさん
12/02/07 16:18:57.38
それ4段階じゃね?
レポートのみなら未提出がある時点でAはあり得ないだろ
159:デフォルトの名無しさん
12/02/07 16:21:29.31
>>158
単位がくれるっていう前提で3段階っていっちゃったね。
ふつうはどの大学も合格がABCの3つだからね。
160:デフォルトの名無しさん
12/02/07 16:29:03.64
未提出がある時点でAがありえない、とまではいわないが、
未提出があるにもかかわらずAを与えうる回答をそれまでにしたかどうかが気になるな
161:デフォルトの名無しさん
12/02/07 16:30:27.44
つまり、求められた回答と同じレベル(テストで言うと100点)の回答しか出していないなら、未提出がある時点でAはない。
162:デフォルトの名無しさん
12/02/07 16:46:10.86
実は本当は8つ提出してなくてぶっちゃけAとかどうでもよくて
単位が貰えるか不安だったけど安心した俺内野手
163:デフォルトの名無しさん
12/02/07 17:01:57.43
>>159
「単位をくれる」なのか「単位が貰える」なのか
つか前提ってすごいな。最近の大学はそんなもんなのか?
>>162
教授次第だけど1/3以上未提出なら普通はDになるんじゃないかな
164:デフォルトの名無しさん
12/02/07 17:02:21.17
むしろ全部提出してる奴は少ないからな。必修なら落とされないと思う。
165:デフォルトの名無しさん
12/02/07 17:10:40.98
そういや私の通ってた大学も(頭が)足りないやつは追加提出させられてた気がするな
必修ならほぼ落とすことは無いか
166:デフォルトの名無しさん
12/02/07 17:25:23.02
選択がないので1つでも落すとアボン。
167:デフォルトの名無しさん
12/02/07 17:31:58.14
落とされない大学なんぞに意味はないな。
168:デフォルトの名無しさん
12/02/07 17:57:20.43
情報系じゃなかったけど
レポート半期で12本初回抜き打ち試験中間試験定期試験とか当たり前のようにやって
全部提出出席しても試験でしくじって落とされるやつがちらほらいて地獄絵図だった
後輩にはうちの大学には絶対に来るなと忠告したよ
169:デフォルトの名無しさん
12/02/07 18:34:08.84
何の為に大学に行ってるの?
170:デフォルトの名無しさん
12/02/07 18:35:02.15
行かないと社会が人間扱いしてくれないからとりあえず
171:デフォルトの名無しさん
12/02/07 18:43:35.47
>>168
普通だろそれ
172:デフォルトの名無しさん
12/02/07 18:53:04.52
必修だから落とされないとか、そんな世の中なの?
173:デフォルトの名無しさん
12/02/07 18:59:29.22
関数func()内で
int data[177][23]が定義されており、データが関数内で入れられるとします。
この関数の外から、2次元配列のポインタのポインタを渡し、int data[177][23]のアドレスを引数で返したいのですが、
void func( ① ){
int data[177][23];
② = data;
}
void func2(void){
174:デフォルトの名無しさん
12/02/07 19:01:40.10
失礼しました。途中で送信してしまったようで・・・
改めまして
関数func()内で
int data[177][23]が定義されており、データが関数内で入れられるとします。
この関数の外から、2次元配列のポインタのポインタを渡し、int data[177][23]のアドレスを引数で返したいのですが、
void func1(①){
int data[177][23];
② = data;
}
void func2(void){
③ // 2次元配列のポインタのポインタの宣言
func1(④);
}
①~④の記述は、どの様にしたらよろしいでしょうか?
175:174
12/02/07 19:03:24.76
int data[177][23]の実体はfunc1()が持ち、
他の関数からその中身を参照にしたいのです(グローバル変数使用不可)
宜しくお願い致します。
176:デフォルトの名無しさん
12/02/07 19:06:05.04
> 関数func()内で
177:デフォルトの名無しさん
12/02/07 19:07:47.55
mallocを使うか根本的なところから見直す
178:デフォルトの名無しさん
12/02/07 19:15:15.24
void func1( *(*pArray)[23]){
int data[177][23];
*pArray = data;
}
void func2(void){
int *pArray[177][23]; // 2次元配列のポインタのポインタの宣言
int ans;
func1(pArray);
ans = pArray[0][0] + pArray[176][22];
}
イメージとしてはこんな感じですが、もちろんこれでは上手く行きません・・・
179:174
12/02/07 19:17:27.61
int data[177][23]をグローバルに持って行ければ全然問題ないのですが、
事情があって、それが出来ないのです・・・
※私に与えられてる権限としては、func1の引数の変更、func2の製作
180:デフォルトの名無しさん
12/02/07 19:18:57.51
ゴミコード発生の瞬間である。
181:デフォルトの名無しさん
12/02/07 19:20:25.28
やりたい事がさっぱり分からん
エスパー待ち
182:デフォルトの名無しさん
12/02/07 19:25:29.62
その実装だと誤動作するよ。自動変数で調べてね。
以下のいずれかの修正をしてもらう必要がある。
①
void getData(*****) {
. static int data[N][M];
}
②ソースを分割して、
static int data[N][M];
void getData(*******);
③
malloc つかう。
183:174
12/02/07 19:29:37.65
>>182
おお!
すみません・・・static扱いでお願いします。
実際はstaticでした。懸案事案の抽象化に失敗してしまいました・・・
void func1(①){
static int data[177][23];
② = data;
}
void func2(void){
③ // 2次元配列のポインタのポインタの宣言
func1(④);
}
184:デフォルトの名無しさん
12/02/07 19:31:48.22
>>181
知りたいのは、「2次元配列のポインタのポインタ」を引数に渡してアドレスを入れてもらう
やり方です
185:デフォルトの名無しさん
12/02/07 19:43:35.47
①int*** value
②*value
③int** data
④&data
で、できると思うけど、何がやりたいのかは知らないし、あまりよくないコードな気がする。
やりたいこと書いて代案出してもらったほうがいいと思うけど、まあ、とりあえず。
186:デフォルトの名無しさん
12/02/07 19:53:39.40
ローカルstaic変数のアドレスを取るとかグローバルと大差ないわ
いや、グローバルはグローバルだって意識できるからまだいいけど
これじゃあソレもできないから最低最悪だな
187:デフォルトの名無しさん
12/02/07 20:40:54.32
静的なオブジェクト/動的なオブジェクト(free必要)
これ以上の情報を意識する必要はないし、意識しなけりゃならないのは最低最悪。
グローバル? 今時使わないよね。w
188:デフォルトの名無しさん
12/02/07 20:44:17.33
質問
関数って引数は何個までとか何バイトまでにした方が良いってのはある?
ある程度を超えるとメモリに積む作業が増えるので急激に遅くなる、とか。
大差無いのかな。
189:デフォルトの名無しさん
12/02/07 20:49:42.42
そんなことを気にするのはお前には早すぎるよ。
190:デフォルトの名無しさん
12/02/07 20:54:56.96
>>187
こいつ最高にアホ
191:デフォルトの名無しさん
12/02/07 20:59:26.69
>>189 初心者は速度を気にしちゃいけないなんて決まりがあったのか。
知らなかったわ、すまん。
192:デフォルトの名無しさん
12/02/07 21:03:19.05
>>188
変数固めて構造体にして、ポインタで渡す
俺なら
193:はちみつ餃子 ◆8X2XSCHEME
12/02/07 21:03:52.10
>>188
パフォーマンスへの影響は環境によるので実測しないとなんとも言えないけど、
計算量的によほど厳しい条件下でなければはっきりわかるような差は出ないよ。
回数が多く呼ばれる関数ならちょっとした差が全体に多きく影響することもあるけど、
どこまで許容できるかは程度問題なのでスパッと基準を決められるものではないな。
194:デフォルトの名無しさん
12/02/07 21:07:52.89
問題になるまでほっときゃいい
腐りだしたら破棄して作りなおしゃいい
ダしゃいいタマがうずくなら
195:デフォルトの名無しさん
12/02/07 21:09:28.84
>>191
決まりではないが鉄則ではある
196:デフォルトの名無しさん
12/02/07 21:10:39.31
>>188
大雑把に1KB以下なら気にしなくていい
197:はちみつ餃子 ◆8X2XSCHEME
12/02/07 21:12:29.93
>>192
Windows API はそういう感じだね。
でも、その構造体だってどこかでメモリを消費するわけだし、
構造体に値を放り込むのだってゼロコストなわけじゃない。
同じデータをある程度何度も繰り返して渡すような状況ならいいが、
そうでないならパフォーマンスの差はほとんど出ないと思う。
バイナリ互換性を維持したまま構造体に要素を追加して拡張できる点で有利ではあるので、
長期的にインターフェイスを維持したいときには考慮に値する方法と言える。
198:デフォルトの名無しさん
12/02/07 21:19:43.77
こういうくだらん話しか出てこないから初心者は気にすることはないってこと。