C言語の設計ミスった危険な関数トップ10決めようぜ (215レス)
C言語の設計ミスった危険な関数トップ10決めようぜ http://mevius.5ch.net/test/read.cgi/tech/1574306624/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
102: デフォルトの名無しさん [sage] 2019/12/16(月) 22:41:03.68 ID:LjjtFzBx 間違えたw goto http://mevius.5ch.net/test/read.cgi/tech/1574306624/102
103: デフォルトの名無しさん [sage] 2019/12/16(月) 22:42:13.32 ID:xr9KOlE0 話を戻して ・ループを抜けた後に関数の後処理が必要な場合 ・ループを抜けた後にローカル変数を使った処理をする場合 ・他、意味的に関数内で処理したい場合 はどうするの? http://mevius.5ch.net/test/read.cgi/tech/1574306624/103
104: デフォルトの名無しさん [sage] 2019/12/16(月) 22:44:03.17 ID:arH1mwfY > ・ループを抜けた後に関数の後処理が必要な場合 前処理を関数の中でするな > ・ループを抜けた後に関数の後処理が必要な場合 戻り値を返せ >・他、意味的に関数内で処理したい場合 自分で具体例が思いつかないなら出すな http://mevius.5ch.net/test/read.cgi/tech/1574306624/104
105: デフォルトの名無しさん [sage] 2019/12/16(月) 22:45:01.13 ID:arH1mwfY コピペミスったな >・ループを抜けた後にローカル変数を使った処理をする場合 戻り値を返せ http://mevius.5ch.net/test/read.cgi/tech/1574306624/105
106: デフォルトの名無しさん [sage] 2019/12/16(月) 22:48:10.00 ID:xr9KOlE0 >>104 なぜ? http://mevius.5ch.net/test/read.cgi/tech/1574306624/106
107: デフォルトの名無しさん [sage] 2019/12/16(月) 22:52:22.49 ID:arH1mwfY >>106 なにが? ってか、もう少し具体例を書けよ。 それみれば設計がおかしいという結論になる 例えて言うなら、パーサーの処理の中でネットワークにアクセスしたい時困るから ネットワークモジュールはグローバルにアクセスできるようにしておくべき みたいなことを言ってるようなもんだよ。それは設計がおかしい。 http://mevius.5ch.net/test/read.cgi/tech/1574306624/107
108: デフォルトの名無しさん [sage] 2019/12/16(月) 22:54:10.44 ID:xr9KOlE0 int func(int n){ ロック ループ アンロック return 結果; } http://mevius.5ch.net/test/read.cgi/tech/1574306624/108
109: デフォルトの名無しさん [sage] 2019/12/16(月) 22:55:55.89 ID:xr9KOlE0 int func(int n){ ループ 値を加工 return 値 } http://mevius.5ch.net/test/read.cgi/tech/1574306624/109
110: デフォルトの名無しさん [sage] 2019/12/16(月) 22:58:13.41 ID:arH1mwfY >>108 「ループ」という言い方がおかしい。 ループで「実装」しているのであって やっているのはなにかの「処理」だろう? int func(int n){ ロック 処理 アンロック return 結果; } 「処理」という名前をつけたくなるならば、 そこは独立した関数にするべきだろう http://mevius.5ch.net/test/read.cgi/tech/1574306624/110
111: デフォルトの名無しさん [sage] 2019/12/16(月) 23:02:27.04 ID:xr9KOlE0 double sigma(const double *a){ ループで総和と2乗和と数を計算 標準偏差を計算 return 標準偏差 } http://mevius.5ch.net/test/read.cgi/tech/1574306624/111
112: デフォルトの名無しさん [sage] 2019/12/16(月) 23:04:47.03 ID:xr9KOlE0 int func(int n){ int a[10] = {0}; ループ aから値を計算 return 値 } http://mevius.5ch.net/test/read.cgi/tech/1574306624/112
113: デフォルトの名無しさん [sage] 2019/12/16(月) 23:06:46.75 ID:xr9KOlE0 いくらでも思い浮かぶ http://mevius.5ch.net/test/read.cgi/tech/1574306624/113
114: デフォルトの名無しさん [sage] 2019/12/16(月) 23:07:37.81 ID:LjjtFzBx 全部関数に分けろって言われて終わりそう http://mevius.5ch.net/test/read.cgi/tech/1574306624/114
115: デフォルトの名無しさん [sage] 2019/12/16(月) 23:09:19.22 ID:xr9KOlE0 分ける理由がない http://mevius.5ch.net/test/read.cgi/tech/1574306624/115
116: デフォルトの名無しさん [sage] 2019/12/16(月) 23:10:06.65 ID:xr9KOlE0 >>112を分けてみて http://mevius.5ch.net/test/read.cgi/tech/1574306624/116
117: デフォルトの名無しさん [sage] 2019/12/16(月) 23:17:03.74 ID:xr9KOlE0 関数分けってのは意味、機能、汎用性、...で分けるべきであって 単にループを抜けるのにreturnを使いたいから分けるとかを考えるべきじゃない http://mevius.5ch.net/test/read.cgi/tech/1574306624/117
118: デフォルトの名無しさん [sage] 2019/12/16(月) 23:23:11.90 ID:xr9KOlE0 素直にgotoの使い方を覚えた方が良いよ 意地はってないで http://mevius.5ch.net/test/read.cgi/tech/1574306624/118
119: デフォルトの名無しさん [sage] 2019/12/16(月) 23:42:01.03 ID:arH1mwfY >>118 だから意味とか汎用性とかで分けると 自然にループに抜けるときにreturnを使えば良くなるんだよ http://mevius.5ch.net/test/read.cgi/tech/1574306624/119
120: デフォルトの名無しさん [sage] 2019/12/16(月) 23:45:51.39 ID:jL52ryYk gotoでもreturnでも読めれば良い 但し1関数50行以上は読めないんで宜しく http://mevius.5ch.net/test/read.cgi/tech/1574306624/120
121: デフォルトの名無しさん [sage] 2019/12/16(月) 23:48:10.14 ID:arH1mwfY >>112 だから「ループ」と書くなっちゅうねんw 関数を設計するならこんな感じやろ? int func(int n){ int a[10] = {0}; memset_random(a, sizeof(a)); // a配列をランダムな値で埋める int chksum = chksum(a, sizeof(a)); // a配列のチェックサムを計算 return 値 } 関数の中でループしてようが何して用が関係ないわ http://mevius.5ch.net/test/read.cgi/tech/1574306624/121
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 94 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.013s