C言語の設計ミスった危険な関数トップ10決めようぜ (215レス)
1-

93: 2019/12/16(月)21:45 ID:jhycq5nX(1) AAS
そんな野蛮なことはしません
94: 2019/12/16(月)22:12 ID:arH1mwfY(4/13) AAS
>>87
returnで抜けるためというか、

1. gotoで抜けたい
2. 関数にするか
3. あ、そもそもコードが複雑なんだな
4. 関数にして正解だった

こんな感じかな。

gotoで抜けたいと思う=コードが複雑になってるという警鐘だと思ってる。
95: 2019/12/16(月)22:22 ID:xr9KOlE0(3/17) AAS
で>>82みたいな意味不明な関数の分け方をすると
>>57は、より複雑な記述をしたいっていう主張だし

gotoに親を殺された人の言うことは支離滅裂
理由が後付けだからそうなる
96: 2019/12/16(月)22:27 ID:arH1mwfY(5/13) AAS
> で>>82みたいな意味不明な関数の分け方をすると

なんで意味不明?
そもそもその処理に意味をもたせてから言おうよw
処理に意味をもたせると、関数にしたほうが良いと思うからさ
97: 2019/12/16(月)22:32 ID:arH1mwfY(6/13) AAS
> 理由が後付けだからそうなる

質問の方が先なのに、理由を先に言えるわけがないw

Q. 多重ループから抜けるのに、gotoは必要ですか?
A. 必要ありません。多重ループが必要になるぐらい複雑なら関数にしますから

これが普通だから、後付にはならないよね。
98: 2019/12/16(月)22:37 ID:xr9KOlE0(4/17) AAS
じゃ>>57も当然不要ですね
99: 2019/12/16(月)22:38 ID:arH1mwfY(7/13) AAS
そんなにくり返し言わなくても、最初から不要だしw
100: 2019/12/16(月)22:39 ID:xr9KOlE0(5/17) AAS
じゃあ>>57はどういうつもりで書いたんでしょうかね?
101: 2019/12/16(月)22:40 ID:LjjtFzBx(2/4) AAS
gogoサイコーっす
102: 2019/12/16(月)22:41 ID:LjjtFzBx(3/4) AAS
間違えたw goto
103: 2019/12/16(月)22:42 ID:xr9KOlE0(6/17) AAS
話を戻して

・ループを抜けた後に関数の後処理が必要な場合
・ループを抜けた後にローカル変数を使った処理をする場合
・他、意味的に関数内で処理したい場合

はどうするの?
104
(1): 2019/12/16(月)22:44 ID:arH1mwfY(8/13) AAS
> ・ループを抜けた後に関数の後処理が必要な場合
前処理を関数の中でするな

> ・ループを抜けた後に関数の後処理が必要な場合
戻り値を返せ

>・他、意味的に関数内で処理したい場合
自分で具体例が思いつかないなら出すな
105: 2019/12/16(月)22:45 ID:arH1mwfY(9/13) AAS
コピペミスったな

>・ループを抜けた後にローカル変数を使った処理をする場合
戻り値を返せ
106
(1): 2019/12/16(月)22:48 ID:xr9KOlE0(7/17) AAS
>>104
なぜ?
107: 2019/12/16(月)22:52 ID:arH1mwfY(10/13) AAS
>>106
なにが?

ってか、もう少し具体例を書けよ。
それみれば設計がおかしいという結論になる

例えて言うなら、パーサーの処理の中でネットワークにアクセスしたい時困るから
ネットワークモジュールはグローバルにアクセスできるようにしておくべき
みたいなことを言ってるようなもんだよ。それは設計がおかしい。
108
(1): 2019/12/16(月)22:54 ID:xr9KOlE0(8/17) AAS
int func(int n){
ロック
ループ
アンロック
return 結果;
}
109: 2019/12/16(月)22:55 ID:xr9KOlE0(9/17) AAS
int func(int n){
ループ
値を加工
return 値
}
110: 2019/12/16(月)22:58 ID:arH1mwfY(11/13) AAS
>>108
「ループ」という言い方がおかしい。
ループで「実装」しているのであって
やっているのはなにかの「処理」だろう?

int func(int n){
ロック
処理
アンロック
return 結果;
}

「処理」という名前をつけたくなるならば、
そこは独立した関数にするべきだろう
111: 2019/12/16(月)23:02 ID:xr9KOlE0(10/17) AAS
double sigma(const double *a){
ループで総和と2乗和と数を計算
標準偏差を計算
return 標準偏差
}
112
(2): 2019/12/16(月)23:04 ID:xr9KOlE0(11/17) AAS
int func(int n){
int a[10] = {0};
ループ
aから値を計算
return 値
}
1-
あと 103 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.017s