C言語の設計ミスった危険な関数トップ10決めようぜ (215レス)
上下前次1-新
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 値
}
113: 2019/12/16(月)23:06 ID:xr9KOlE0(12/17) AAS
いくらでも思い浮かぶ
114: 2019/12/16(月)23:07 ID:LjjtFzBx(4/4) AAS
全部関数に分けろって言われて終わりそう
115: 2019/12/16(月)23:09 ID:xr9KOlE0(13/17) AAS
分ける理由がない
116: 2019/12/16(月)23:10 ID:xr9KOlE0(14/17) AAS
>>112を分けてみて
117: 2019/12/16(月)23:17 ID:xr9KOlE0(15/17) AAS
関数分けってのは意味、機能、汎用性、...で分けるべきであって
単にループを抜けるのにreturnを使いたいから分けるとかを考えるべきじゃない
118(1): 2019/12/16(月)23:23 ID:xr9KOlE0(16/17) AAS
素直にgotoの使い方を覚えた方が良いよ
意地はってないで
上下前次1-新書関写板覧索設栞歴
あと 97 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.013s