コーディングの定石ってありますか?
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
NGNG許す…とか、C++でこういう場合は継承しておくとか、主にC++に
絞って、コーディングの際のみなさんが培った定石のようなものを
いろいろ教えていただきたいです。おねがいします。
0002名無しさん@お腹いっぱい。
NGNG0003名無しさん@お腹いっぱい。
NGNG> 許す…とか、C++でこういう場合は継承しておくとか
それは設計の定石
0004名無しさん@お腹いっぱい。
NGNG0005あなたのうしろに名無しさんが・・・
NGNG(1)sizeofには変数名を指定する
今やってる仕事の既存のソースに
memset(buf@`NULL@`sizeof(char)*BUFSIZE);
なんていう表記が出てきた。
bufの宣言が char buf[BUFSIZE]; なんだけど、宣言を変えたら、処理を変えないといかん。
僕は
memset( buf@` 0@` sizeof(buf) );
と、宣言を変えても大丈夫なようにしてる。
経験上、ポインタを memset() に指定する事って少ないし。
(2)配列の個数だけループする場合はsizeof()を使ってループ回数を決める
int status[40];
for(i=0;i<sizeof(status)/sizeof(status[0]);i++){
hoge(&status[i]);
}
普通はマクロ使う
(3)==の左辺には代入不可のものを使う
a=1
a==1
のタイプミス防止。1=aならエラーだから。
・・・こんな事が聞きたかったの?>1
0006名無しさん@お腹いっぱい。
NGNGそういうわけで、過去ログしらべてごらん。
それから、調べた結果をこのスレッドで発表して世の中に還元すること!
期待してるよ。
0007名無しさん@お腹いっぱい。
NGNGそれは人に質問する際の定石
0008名無しさん@お腹いっぱい。
NGNGはなく、自分でプログラムを書きまくって自ずと体得する物。
例えば「グローバル変数は極力使うな」なんてのは、自分でグローバル
変数が百個くらいあるプログラムを書いて、デバッグで苦しんでみれば、
次からはもうちょっとプログラムの構造を見直そう、と思うだろう?
などと、元々趣味からプログラムに入った者(今は仕事)としては、こ
う思うのだが、仕事の人、特にチーム開発なんてしてる人の場合は、
「そんな悠長なこと言ってられるか!」何だろうなあ。特に新人教育係
の人。
0009名無しさん@お腹いっぱい。
NGNGつっても、難しいけど<どんなんが良いソースなのか。
0010名無しさん@お腹いっぱい。
NGNG@`)_
/ 'つ
∧∧ / / ̄ ̄ ̄ ̄ ̄ ̄ ̄
(゚Д゚ )' < 検索などせず、俺に聞け!
∪ ∪ \_______
0011名無しさん@お腹いっぱい。
NGNG言いたいことは分かるけれど、苦難を体験しないと進歩しないかなぁ。
それじゃたたき上げの職人になっちゃうよ。
言葉は悪いけれど、ある一定の品質のコーダーを大量生産するためには、
8さんの方法はあまりよくない。職人やハッカーは計画して作れないし、
資質にも大きく依存する。
僕も趣味(ベーマガ)から入ったから言いたいことはよくわかるよん。
0012名無しさん@お腹いっぱい。
NGNG礼儀ですね。でも、ボクだって、プロの人にはかないませんけど、
技術本も買うし、試行錯誤もしました。それでも「なにかがちがう」と
いう気持ちが、ボクを質問に踏み切らせたのです。過去ログも読んで
ます。でも、なかなか、C++ならC++でまとまったような体系的に
なったものってないじゃないですか。デザインパターンじゃなくて、
なんか、これやっとくと便利だよ〜的な豆知識みたいのを期待して
ました。でも、それが「ずうずうしい」根性なんですね。
でも、ボクもプログラミングは好きですから、みなさんと同じ苦労を
ボクも続けていきます。そして、何か見つけたら、惜しまず書き込む
ようにします。
0013名無しさん@お腹いっぱい。
NGNGhttp://www.possibility.com/Cpp/CppCodingStandard.html
和訳してくれ
0014じじい>1
NGNG「こうだからこうやれ」なんて言ったら逆にその悪い面が浮き出るような
コードわざわざ書いて無言の抗議なんて状態だった。
たとえばgoto使うななんて言われたら、goto使った方が絶対いいような
スタイルで全部通して、でも言われた通りgoto使わないなんてね。
定石なんてものには縛られたくない。
あえて定石というならそれは自分で作るって感じだったなあ。
0015名無しさん@お腹いっぱい。
NGNGそういう要望ならEffective C++やMore Effective C++で十分な気がするけど。
0016名無しさん@お腹いっぱい。
NGNGwhile((c = fgetc(fp)) != NULL){
/* hogehoge */
}
0017>14
NGNG昔もそんな奴は使えないプログラマとしてたらい回し
0018名無しさん@お腹いっぱい。
NGNGそれでは思った通りには動かないよ。
0019名無しさん@お腹いっぱい。
NGNG・同じことは2度書かない。
0020>14
NGNG0021名無しさん@お腹いっぱい。
NGNGはこういうのが書きたかったんだね
while((c = fgetc(fp)) != EOF){
/* hogehoge */
}
定石
char LineBuffer[256];
while(fgets(LineBuffer@` 256@` fp) != NULL){
/* hogehoge */
}
0022>21
NGNG0023名無しさん@お腹いっぱい。
NGNG0024名無しさん@お腹いっぱい。
NGNG0025名無しさん@お腹いっぱい。
NGNG002621
NGNGって意味で別にこれが定石だといっている訳ではありません
(定石って言うほどご立派な部分でもないですし)
こぴぺした時の"定石"が入っちゃってるんでアレなんですけど・・・
なんかこう、みんなが感動するような定石求む(1じゃないけど)
002721 = 26
NGNGchar *pString@` *hoge = "もなー";
if((pString = malloc(strlen(hoge) + 1)) == NULL){
return false;
}
こんなんでも定石になっちゃうし・・・
ていうか自分定石の意味間違ってる? 鬱だ死脳
0028名無しさん@お腹いっぱい。
NGNG0029名無しさん@お腹いっぱい。
NGNG>主にC++に
>絞って、コーディングの際のみなさんが培った定石
>27
C++でmallocを使用するのは悪手
0030名無しさん@お腹いっぱい。
NGNG0031名無しさん@お腹いっぱい。
NGNG> もちろん「悪手でなくては解決しない問題もある」ことも定石
C++でmallocを使用しないと解決しない問題をおもいつかない
具体例を挙げて欲しい
# 「C++でmallocを使用するのは悪手であることが多い」
# には同意します
0032名無しさん@お腹いっぱい。
NGNG別のライブラリとリンクする必要があって
その関数がmalloc()されたメモリを要求している場合
0033!30
NGNG::LocalAlloc等でもいいけど・・・。
003429@` 31
NGNGC++をかたるのは10年早かったようです
勉強し直してきます
0035名無しさん@お腹いっぱい。
NGNG言った奴は酷く叩かれてたけど、
実際 && を使うべき所を || に間違ってしまう事多いからねえ
0036名無しさん@お腹いっぱい。
NGNGoperation1;
if (cond1) break;
operation2;
if (cond2) break;
operation3;
}
というのは悪手ですか?
0037>36
NGNGoperation2でcond2を作る
繰り返したいのはoperation3って感じですよね?
判りやすくていいと思います
0038名無しさん@お腹いっぱい。
NGNGwhile(funcop1()&&funcop2()){
operation3;
}
と書くほうがすっきりする
こういうときに関数内関数が欲しい‥>C
■ このスレッドは過去ログ倉庫に格納されています