もしくはやって欲しくないこと
先輩方のアドバイスをください
前スレ
これからコードを書く人に絶対やって欲しいこと★2
http://kohada.2ch.net/test/read.cgi/prog/1365269189/
探検
これからコードを書く人に絶対やって欲しいこと★3
■ このスレッドは過去ログ倉庫に格納されています
1仕様書無しさん
2013/06/04(火) 22:43:46.92182仕様書無しさん
2013/06/11(火) 01:01:55.93 循環的複雑度を否定している人が、何ひとつ根拠を示ていない件について
183仕様書無しさん
2013/06/11(火) 01:40:15.49 誰がいつから否定したんだよw
184仕様書無しさん
2013/06/11(火) 04:36:33.17 >>182
循環的複雑度を誤解してる奴と誤解を否定してる奴しか居ないな。
誤解が正しいと思ってる奴が誤解の否定を循環的複雑度自体への
否定として受け取りだすと話がこじれるから一遍否定している人のレスを読みなおしてみ。
循環的複雑度を誤解してる奴と誤解を否定してる奴しか居ないな。
誤解が正しいと思ってる奴が誤解の否定を循環的複雑度自体への
否定として受け取りだすと話がこじれるから一遍否定している人のレスを読みなおしてみ。
185仕様書無しさん
2013/06/11(火) 06:10:44.14 否定のレスのおかげで弁証論的に循環的複雑度の理解は深まった
そんでレビューのネタ探す程度には使えるってのはわかった
ついでに循環的複雑度が使えるって言ってる奴がとことん使えない奴ってのもわかった
そんでレビューのネタ探す程度には使えるってのはわかった
ついでに循環的複雑度が使えるって言ってる奴がとことん使えない奴ってのもわかった
186仕様書無しさん
2013/06/11(火) 07:51:10.63 今気付いたが、循環的複雑度ってオイラーの多面体定理の公式にそっくりだね
187仕様書無しさん
2013/06/11(火) 08:44:01.08 循環的複雑度がソフトウェアメトリクスにおける銀の弾だと思っちゃったんだろうね。
188仕様書無しさん
2013/06/11(火) 10:04:22.68 品質評価の手法だから、コードを書く時に使おうとしてもあまり意味がない物だけど
普段理論武装してる奴が過剰な拒否反応を示すのは痛々しいな。
普段理論武装してる奴が過剰な拒否反応を示すのは痛々しいな。
189仕様書無しさん
2013/06/11(火) 10:26:32.45 過剰な拒否反応?どのレス?
みんな、頓珍漢な俺理論を見逃せなかっただけ。
みんな、頓珍漢な俺理論を見逃せなかっただけ。
190仕様書無しさん
2013/06/11(火) 10:33:49.76 おかしな持論を曲げない奴が頑張るとスレが無駄にのびる。
おじゃばとか。
おじゃばとか。
192仕様書無しさん
2013/06/11(火) 21:19:29.46 だいたいいつもこんな流れ
ある手法が登場
↓
馬鹿:その手法は完璧じゃない!と否定する
↓
そもそも「ある手法」は完璧なんて誰も言っていない。
↓
馬鹿:完璧じゃないから、全く使えないと極論言い出す
↓
この手法がどういう時に使えて、どういう時に使えないのか説明する
↓
馬鹿:聞く耳持たない。
ある手法が登場
↓
馬鹿:その手法は完璧じゃない!と否定する
↓
そもそも「ある手法」は完璧なんて誰も言っていない。
↓
馬鹿:完璧じゃないから、全く使えないと極論言い出す
↓
この手法がどういう時に使えて、どういう時に使えないのか説明する
↓
馬鹿:聞く耳持たない。
193仕様書無しさん
2013/06/11(火) 21:31:51.86 今回は逆パターンだけどね
馬鹿:ある手法をゴリ押し
↓
皆が間違ってるところを指摘。
↓
馬鹿:俺の理論は絶対なんだよ!指標にすべし!とゴリ押し継続
↓
誰も完全に否定してるわけじゃない。だがおかしなところもある。
といって説明する。
↓
馬鹿:否定する根拠を示せと言って人の説明をガン無視、聞く耳を持たない
馬鹿:ある手法をゴリ押し
↓
皆が間違ってるところを指摘。
↓
馬鹿:俺の理論は絶対なんだよ!指標にすべし!とゴリ押し継続
↓
誰も完全に否定してるわけじゃない。だがおかしなところもある。
といって説明する。
↓
馬鹿:否定する根拠を示せと言って人の説明をガン無視、聞く耳を持たない
195仕様書無しさん
2013/06/11(火) 22:03:49.90 ↓
分析する馬鹿が現れる
↓
それを煽る俺が現れる
分析する馬鹿が現れる
↓
それを煽る俺が現れる
197仕様書無しさん
2013/06/11(火) 22:26:01.86 もうその話題飽きたお
198仕様書無しさん
2013/06/11(火) 22:36:27.95 スレタイに相応しいことでも書くか。
シングルトンクラスのgetInstanceメソッドに引数をつけない。
シングルトンクラスのgetInstanceメソッドに引数をつけない。
199仕様書無しさん
2013/06/11(火) 22:47:53.12 職場でBGMはいいが歌は流すな
200仕様書無しさん
2013/06/11(火) 22:53:47.51 循環的複雑度を計測せよ
201仕様書無しさん
2013/06/11(火) 23:10:00.17 省力可能な引数作るな
関数名みたら使い方がわかる様に作れ
関数名みたら使い方がわかる様に作れ
202仕様書無しさん
2013/06/11(火) 23:20:46.96 平均値馬鹿はいい加減あきらめろ
203仕様書無しさん
2013/06/11(火) 23:21:16.05 >>192-194
複合だろ。
1,有用性を認める奴
2,疑問視をしてる奴
3,全肯定してる馬鹿
4,全否定してる馬鹿
1や2だけなら多少野暮なツッコミや誤解もあるが概ね妥当な所に話が落ち着くのに、
3と4が発言すると全員に袋叩きにされ叩いてる3や4が次のネタ提供して無限ループになってる。
この手の議論こそIDがあれば1と3や2と4を混同した馬鹿な流れや3や4を無視して話ができるんだが…まぁ導入は無理なんだろうなぁ…
複合だろ。
1,有用性を認める奴
2,疑問視をしてる奴
3,全肯定してる馬鹿
4,全否定してる馬鹿
1や2だけなら多少野暮なツッコミや誤解もあるが概ね妥当な所に話が落ち着くのに、
3と4が発言すると全員に袋叩きにされ叩いてる3や4が次のネタ提供して無限ループになってる。
この手の議論こそIDがあれば1と3や2と4を混同した馬鹿な流れや3や4を無視して話ができるんだが…まぁ導入は無理なんだろうなぁ…
204仕様書無しさん
2013/06/11(火) 23:26:24.53 おじゃばの話題が終わった後は、全否定で突っ張る奴なんかいないだろ。
全否定されたと勘違いでもしてるのか?
全否定されたと勘違いでもしてるのか?
205仕様書無しさん
2013/06/11(火) 23:29:11.44 循環的複雑度はもちろん効果はあるけど、
平均値をとっても意味は無い。
平均値をとっても意味は無い。
206仕様書無しさん
2013/06/11(火) 23:32:59.24 おかしな俺理論で誤りを認めない、そこそこアクティブな奴が全ての原因。
何日にも渡って表現を微妙に変えつつ同じことを何度も言う。
何日にも渡って表現を微妙に変えつつ同じことを何度も言う。
207仕様書無しさん
2013/06/11(火) 23:33:29.77 初めて来たんだけど、おじゃばって何?
聞くのやめといた方がいい話なら聞かないけど。
聞くのやめといた方がいい話なら聞かないけど。
208仕様書無しさん
2013/06/12(水) 00:09:31.90 >>207
糞コテ。このスレ的には、スレでオナニーJava講義をおっぱじめてた馬鹿。
やってほしいことは俺の講義でを学ぶこと→ここに書くべきは俺のJava講義。
講義内容は…偉そうな勘違いJava土方の自慰行為と言った感じ。
講義の全部が全部間違ってるわけではないが、まじめに聞く価値はないだろうな。
糞コテ。このスレ的には、スレでオナニーJava講義をおっぱじめてた馬鹿。
やってほしいことは俺の講義でを学ぶこと→ここに書くべきは俺のJava講義。
講義内容は…偉そうな勘違いJava土方の自慰行為と言った感じ。
講義の全部が全部間違ってるわけではないが、まじめに聞く価値はないだろうな。
210おじゃばさま ◆mpgYduuqtA
2013/06/12(水) 01:15:28.87 オブジェクト指向の基礎も理解していないのに、
DIコンテナだのデザインパターンだの
言っている人がいたから、
ソースコード付きで基礎を教えて
あげたんだよ。
DIコンテナだのデザインパターンだの
言っている人がいたから、
ソースコード付きで基礎を教えて
あげたんだよ。
211おじゃばさま ◆mpgYduuqtA
2013/06/12(水) 01:43:41.91 循環的複雑度をリファクタリングの
目安にすると言っているのか?
素人考えだな。
行が増えたから関数分割すると
いうのと変わらない。
初心者のうちは仕方ないが、
オブジェクト指向なら、複数の機能
(オブジェクト要素)が混じって
いないかで判断するべきだ。
目安にすると言っているのか?
素人考えだな。
行が増えたから関数分割すると
いうのと変わらない。
初心者のうちは仕方ないが、
オブジェクト指向なら、複数の機能
(オブジェクト要素)が混じって
いないかで判断するべきだ。
212仕様書無しさん
2013/06/12(水) 01:52:42.10 久しぶりだなハゲ!
基礎できてないのに応用を覚えろって言うのはバカだけど、あの時はお前も結構会話かみ合ってなくて酷かったぞwww
複雑度高いと多機能な関数になってること多いから、あながい間違いでもないと思うんだが。
数値下げるために分割したら目的見失ってるけどな。
基礎できてないのに応用を覚えろって言うのはバカだけど、あの時はお前も結構会話かみ合ってなくて酷かったぞwww
複雑度高いと多機能な関数になってること多いから、あながい間違いでもないと思うんだが。
数値下げるために分割したら目的見失ってるけどな。
214仕様書無しさん
2013/06/12(水) 02:01:01.59 あ気付かなかった、この人かw
オナニーJavaであだ名がおじゃばかと思ったらそのものコテなのか。
ホント悪い、聞くのやめといた方が良かったみたいだ。
オナニーJavaであだ名がおじゃばかと思ったらそのものコテなのか。
ホント悪い、聞くのやめといた方が良かったみたいだ。
215仕様書無しさん
2013/06/12(水) 02:47:14.88 どうせ遅かれ早かれ湧いたんじゃねぇかな
ここまでレスしてなかった(コテつけ忘れてた)事が不思議な位
ここまでレスしてなかった(コテつけ忘れてた)事が不思議な位
216仕様書無しさん
2013/06/12(水) 03:19:16.48 NG推奨
217仕様書無しさん
2013/06/12(水) 08:32:24.63 オナニーJavawww
218仕様書無しさん
2013/06/12(水) 10:26:59.50 呼んでないのに来ちゃったー
他のスレ散々荒らしてんだからそこで満足してくれよorz
他のスレ散々荒らしてんだからそこで満足してくれよorz
219仕様書無しさん
2013/06/12(水) 10:29:22.66 おじゃばの話は何故か最後まで読んでしまう
1行目にトンチンカンなことが書いてなかったりするから
ただ最後まで読むと「で!?」ってなる
1行目にトンチンカンなことが書いてなかったりするから
ただ最後まで読むと「で!?」ってなる
220仕様書無しさん
2013/06/12(水) 10:34:28.90 コード打つ時はオーケストラを流す
221仕様書無しさん
2013/06/12(水) 11:08:10.77 循環的複雑度を計測するソフトの導入が現実的ではない
循環的複雑度が低くなるように処理が分割された詳細設計書は
これじゃ全体的な動きがよくわからんで却下されるし
当然コーダーの裁量で仕様書にない関数を作るのもありえない
循環的複雑度が低くなるように処理が分割された詳細設計書は
これじゃ全体的な動きがよくわからんで却下されるし
当然コーダーの裁量で仕様書にない関数を作るのもありえない
222仕様書無しさん
2013/06/12(水) 12:02:22.50 >>221
そういう環境にいる人は人間コードジェネレータなんだから
品質とか余計なことは考えなくていいんだよ
だから循環的複雑度の導入を検討する必要はないし、興味をもつ必要もない
プログラマじゃないんだからマ板に書き込むのも板違い
そういう環境にいる人は人間コードジェネレータなんだから
品質とか余計なことは考えなくていいんだよ
だから循環的複雑度の導入を検討する必要はないし、興味をもつ必要もない
プログラマじゃないんだからマ板に書き込むのも板違い
223仕様書無しさん
2013/06/12(水) 13:52:52.23 そういう完全にコーディングだけ!って人は黙って社畜になれよ
自分で設計してコーディングする開発者も増えてるんだから
自分で設計してコーディングする開発者も増えてるんだから
224仕様書無しさん
2013/06/12(水) 14:45:24.16 くだらない数値測って悦に浸ってないで
最初から疎結合にしてドキュメントに書け糞コーダ―
最初から疎結合にしてドキュメントに書け糞コーダ―
226仕様書無しさん
2013/06/12(水) 21:23:49.34 >>221
> 循環的複雑度を計測するソフトの導入が現実的ではない
なんで? Perl、Ruby、JavaScriptは
それぞれその言語用のパッケージシステムから
普通にインストールするだけ。perlだったらcpan。
それだけでコマンドが使えるようになる。
Javaの場合はEclipseのプラグインを入れるだけ。
NetBeansを使ってるなら知らないが。
> 循環的複雑度を計測するソフトの導入が現実的ではない
なんで? Perl、Ruby、JavaScriptは
それぞれその言語用のパッケージシステムから
普通にインストールするだけ。perlだったらcpan。
それだけでコマンドが使えるようになる。
Javaの場合はEclipseのプラグインを入れるだけ。
NetBeansを使ってるなら知らないが。
227仕様書無しさん
2013/06/12(水) 21:26:23.09 やっぱりどうあっても、循環的複雑度の計測に
反対する人がいるんだね。
循環的複雑度を計測することは、メリットになっても
デメリットになることは何一つ無いのに。
反対する人がいるんだね。
循環的複雑度を計測することは、メリットになっても
デメリットになることは何一つ無いのに。
228仕様書無しさん
2013/06/12(水) 21:40:33.25 計られると困るんだろ?
229仕様書無しさん
2013/06/12(水) 22:14:08.92 プロジェクト全体において、循環的複雑度が高い関数が
多数存在するが、そのすべてが綺麗なコードだった場合に、
やらなくてもいい修正が発生するデメリットが有る。
んなことはまず有り得ねーよw
多数存在するが、そのすべてが綺麗なコードだった場合に、
やらなくてもいい修正が発生するデメリットが有る。
んなことはまず有り得ねーよw
230仕様書無しさん
2013/06/12(水) 23:43:47.26231仕様書無しさん
2013/06/13(木) 00:15:18.62 まぁ、ぱっと見でゴチャゴチャしてる関数はバグるから、小綺麗になおせってだけの話なんだけどな。
その指数に名前をつけると拒絶反応起こす奴がいると言う。
その指数に名前をつけると拒絶反応起こす奴がいると言う。
233仕様書無しさん
2013/06/13(木) 00:41:30.51 229と同じく反対理由が合理的なケースを考えてみただけで、これは片っ端から全部糞ってケースの話。
比較的良質なコードの中の不味そうな部分を探すとか、そういう用途を否定する気はないよ。
複雑度を計ったらゴミばっかりで、複雑度が低い関数もゴミだらけ、ときたら計るだけ無駄と言う他無い。
比較的良質なコードの中の不味そうな部分を探すとか、そういう用途を否定する気はないよ。
複雑度を計ったらゴミばっかりで、複雑度が低い関数もゴミだらけ、ときたら計るだけ無駄と言う他無い。
234仕様書無しさん
2013/06/13(木) 01:21:16.44 同じ処理で循環的複雑度の高いソースと低いソースがあれば一目瞭然かもな。
まず関数分割とか論外な方法を使ってないこと前提。
当然一方はif連続、一方は正規表現みたいなわざとらしいのも論外。
動的関数名も言語依存があるので、あまり好ましくない。
なるべくプレーンなソースで。
循環的複雑度の人、頼む。
まず関数分割とか論外な方法を使ってないこと前提。
当然一方はif連続、一方は正規表現みたいなわざとらしいのも論外。
動的関数名も言語依存があるので、あまり好ましくない。
なるべくプレーンなソースで。
循環的複雑度の人、頼む。
236仕様書無しさん
2013/06/13(木) 02:29:54.53 このなんというかおじゃばくさい流れはやめよう
これ以上循環的複雑度について(このスレ的な意味で)語るべきことってないよ
循環的複雑度の流れってことで、リファクタリングのポイントとか、そういうのはどうだろう
過去にも結構出てると思うけど
これ以上循環的複雑度について(このスレ的な意味で)語るべきことってないよ
循環的複雑度の流れってことで、リファクタリングのポイントとか、そういうのはどうだろう
過去にも結構出てると思うけど
237仕様書無しさん
2013/06/13(木) 02:31:41.31 >>234
> 当然一方はif連続、一方は正規表現みたいなわざとらしいのも論外。
そうはいうがな。実際にそういうコードが有るのだよ。
if ($v eq 'aaa' or $v eq 'bbb' or $v eq 'ccc’ or $v eq 'ddd') {}
こういうのとかな。
if ($v =~ /^(aaa|bbb|ccc|ddd)$/) {}
> 当然一方はif連続、一方は正規表現みたいなわざとらしいのも論外。
そうはいうがな。実際にそういうコードが有るのだよ。
if ($v eq 'aaa' or $v eq 'bbb' or $v eq 'ccc’ or $v eq 'ddd') {}
こういうのとかな。
if ($v =~ /^(aaa|bbb|ccc|ddd)$/) {}
238仕様書無しさん
2013/06/13(木) 02:38:18.95 >>234
> まず関数分割とか論外な方法を使ってないこと前提。
関数分割が何を言ってるのかしら無いが、
まず、長い関数を前後二つに分割するなんてことは当然しない。
だけど、中にある一部の処理に名前をつけて関数にするということはよくやる。
というか循環的複雑度を下げる一番重要な方法。
コードの簡単な書き換えでも減ることはあるけど、
それは減らすというか削るみたいなもの。
一番重要なのは、関数に分けることだよ。
なぜならそれがコードを正しく修正する方法でしょ?
※循環的複雑度を下げるのが目的ではない
コードを正しく修正することで、結果循環的複雑度が下がる。
> まず関数分割とか論外な方法を使ってないこと前提。
関数分割が何を言ってるのかしら無いが、
まず、長い関数を前後二つに分割するなんてことは当然しない。
だけど、中にある一部の処理に名前をつけて関数にするということはよくやる。
というか循環的複雑度を下げる一番重要な方法。
コードの簡単な書き換えでも減ることはあるけど、
それは減らすというか削るみたいなもの。
一番重要なのは、関数に分けることだよ。
なぜならそれがコードを正しく修正する方法でしょ?
※循環的複雑度を下げるのが目的ではない
コードを正しく修正することで、結果循環的複雑度が下がる。
239仕様書無しさん
2013/06/13(木) 02:47:22.59 おいおい、IDが出ないのをいいことに連投するのはやめようぜ
240仕様書無しさん
2013/06/13(木) 02:49:05.83 複雑すぎるコードというのは
処理が多いだけではなく、コードの書き方も冗長なことが多い。
基本的に技術力が低いから、複雑なコードを生み出すので
そういう人が書いたコードが冗長になるのは当たり前といえよう。
その結果複雑で長くなったコードは
>>238のいう「削る」ことで循環的複雑度を下げていくことで
見通しを良くしていくということもよくある。
処理が多いだけではなく、コードの書き方も冗長なことが多い。
基本的に技術力が低いから、複雑なコードを生み出すので
そういう人が書いたコードが冗長になるのは当たり前といえよう。
その結果複雑で長くなったコードは
>>238のいう「削る」ことで循環的複雑度を下げていくことで
見通しを良くしていくということもよくある。
242仕様書無しさん
2013/06/13(木) 04:24:17.01 循環的複雑度を計測することには意味がないという仮想敵を作って、
長々と意味のないレスを繰り返す。
長々と意味のないレスを繰り返す。
243仕様書無しさん
2013/06/13(木) 08:12:12.82245仕様書無しさん
2013/06/13(木) 08:37:00.80 >>238
関数を真っ二つにするという発想が飛び出てくるのがまずおかしい。コメディアンすぎるw
処理の関数化は有用だしマなら皆当たり前にやってることだが、
何事もやりすぎればただ追いにくくなるだけで本末転倒、てことも皆知っている。
ということで、循環的複雑度君のいう綺麗なソースと汚いソースがどんなものなのかよく見えないから
実際のソースを見比べて確かめたいんだ。サンプルならいっぱい持ってるでしょ?
関数を真っ二つにするという発想が飛び出てくるのがまずおかしい。コメディアンすぎるw
処理の関数化は有用だしマなら皆当たり前にやってることだが、
何事もやりすぎればただ追いにくくなるだけで本末転倒、てことも皆知っている。
ということで、循環的複雑度君のいう綺麗なソースと汚いソースがどんなものなのかよく見えないから
実際のソースを見比べて確かめたいんだ。サンプルならいっぱい持ってるでしょ?
246仕様書無しさん
2013/06/13(木) 08:43:18.87 手段が目的化してるってこういうのを言うのか。
247仕様書無しさん
2013/06/13(木) 09:40:30.69 お前らまだこの話続けてんのかよ。
だから、そもそも使い方が間違ってるんだって。
開発段階で複雑度を出すのはいいけどな、そこで複雑度が高いメソッドだけに
注目して複雑度を下げようとか、高くても綺麗なコードだとか言っても無意味だって。
第一、そんなもの数値で出すまでもなく、開発担当者にとっては一目瞭然だからな。
本来は、あくまでも全体の傾向を見るための道具。
PDCAサイクルでいうCheckの段階で使うものな。そのためにはまず平均値だ。
道具としての使い方を間違った上で、まぬけな議論をかわしてるから
アホが「複雑度が低くてもクソなコードはある」とか言いだすんだよ。
だから、そもそも使い方が間違ってるんだって。
開発段階で複雑度を出すのはいいけどな、そこで複雑度が高いメソッドだけに
注目して複雑度を下げようとか、高くても綺麗なコードだとか言っても無意味だって。
第一、そんなもの数値で出すまでもなく、開発担当者にとっては一目瞭然だからな。
本来は、あくまでも全体の傾向を見るための道具。
PDCAサイクルでいうCheckの段階で使うものな。そのためにはまず平均値だ。
道具としての使い方を間違った上で、まぬけな議論をかわしてるから
アホが「複雑度が低くてもクソなコードはある」とか言いだすんだよ。
248仕様書無しさん
2013/06/13(木) 10:20:45.29 逃げたw
別人のふりをするのが下手ックソな多重人格君は嫌いじゃない
別人のふりをするのが下手ックソな多重人格君は嫌いじゃない
249仕様書無しさん
2013/06/13(木) 10:38:09.06250仕様書無しさん
2013/06/13(木) 10:57:13.00251仕様書無しさん
2013/06/13(木) 11:08:19.44 >>247
> PDCAサイクルでいうCheckの段階で使うものな。そのためにはまず平均値だ。
まだ言ってるの?
循環的複雑度が100のメソッドが10個、5のメソッドが1000個ある場合と、
6のメソッドが1000個ある場合では平均値は同じ。
よって平均値に意味は無い。
はい、論破。
> PDCAサイクルでいうCheckの段階で使うものな。そのためにはまず平均値だ。
まだ言ってるの?
循環的複雑度が100のメソッドが10個、5のメソッドが1000個ある場合と、
6のメソッドが1000個ある場合では平均値は同じ。
よって平均値に意味は無い。
はい、論破。
252仕様書無しさん
2013/06/13(木) 11:25:40.18 平均値馬鹿はほんとあきらめないな
253仕様書無しさん
2013/06/13(木) 13:50:12.20 また循環的複雑度だけで、何百レスも消費するつもり?
254仕様書無しさん
2013/06/13(木) 14:24:33.04 おい、複雑度スレ立ててそっちでやれ
スレタイ読めないのか頭が致命的に悪いのかどっちなんだ
スレタイ読めないのか頭が致命的に悪いのかどっちなんだ
255仕様書無しさん
2013/06/13(木) 14:37:31.04 ツールや指標があってもそれが何を意味するのか分かっていないと何の役にも立たない。
それどころか狂った方針を立ててプロジェクトを引っ掻き回す。
だから数学は必要。
それどころか狂った方針を立ててプロジェクトを引っ掻き回す。
だから数学は必要。
256仕様書無しさん
2013/06/13(木) 16:30:09.88 コード書く前に中学校卒業しろってこと?
257仕様書無しさん
2013/06/13(木) 19:34:38.97 おまえらNG登録しやすいようにちゃんと「循環的複雑度」って書いてからレスしろよ。
258仕様書無しさん
2013/06/13(木) 21:16:55.81260仕様書無しさん
2013/06/13(木) 21:33:17.11261仕様書無しさん
2013/06/13(木) 21:37:47.21 ttp://d13n9ry8xcpemi.cloudfront.net/photo/odai/400/debb710822534507b5695c886af49184_400.jpg
263仕様書無しさん
2013/06/13(木) 21:50:53.08 看板じゃなくて標識な
264循環的複雑度
2013/06/13(木) 22:10:21.08 void hukuzatudohikui(){doya();}
265仕様書無しさん
2013/06/13(木) 22:44:16.20 コードが複雑になるのって、コードの分け方を知らないからだよ。
関数の分割で処理が追いにくくなるのも同じ。分け方を知らないからそうなる。
まず最初のアプローチとしては、関数の中を追わなくてわかる関数を作ること。
いい例が各言語についている標準ライブラリ。
あれは関数の中を追わなくてもコードが追えるでしょ?
まずそういうのを作る。
まあたいていは標準・非標準のライブラリで事足りるのだが、それでも足りないものはある。
それを汎用関数にして、関数の中を追わなくてもわかるようにする。
循環的複雑度で良いとされる10以下のコードってほとんどはすごく短いコードなんだよ。
ほんの数個ifやforがあるだけで10なんて簡単に超えるからね。本質的なコード行数で言えば十数行程度だろう。
そんな短いコードで関数にしてもいいんだってことに気づくことが重要。
よくあるのが、この程度だから関数の中にそのまま書いちゃえってやつ。
長いコードというのは、これの積み重ねでどんどん長くなる。
10行のコードでも10回埋め込めば100行だからね。
次第にこれが複雑に絡み合ってくる。
関数の分割で処理が追いにくくなるのも同じ。分け方を知らないからそうなる。
まず最初のアプローチとしては、関数の中を追わなくてわかる関数を作ること。
いい例が各言語についている標準ライブラリ。
あれは関数の中を追わなくてもコードが追えるでしょ?
まずそういうのを作る。
まあたいていは標準・非標準のライブラリで事足りるのだが、それでも足りないものはある。
それを汎用関数にして、関数の中を追わなくてもわかるようにする。
循環的複雑度で良いとされる10以下のコードってほとんどはすごく短いコードなんだよ。
ほんの数個ifやforがあるだけで10なんて簡単に超えるからね。本質的なコード行数で言えば十数行程度だろう。
そんな短いコードで関数にしてもいいんだってことに気づくことが重要。
よくあるのが、この程度だから関数の中にそのまま書いちゃえってやつ。
長いコードというのは、これの積み重ねでどんどん長くなる。
10行のコードでも10回埋め込めば100行だからね。
次第にこれが複雑に絡み合ってくる。
266仕様書無しさん
2013/06/13(木) 22:45:36.30 次にやるべきなのがコードを各層にわけるということ。
データベースを扱う層や、UIを扱う層みたいに
そして各層では決められたことしかしない。
コードが複雑になってるのは、全ての処理を一つの層でやろうとしているから。
一つの関数でやってる仕事の種類が多くなってしまうから複雑になる。
まとめると一つの関数で複数の仕事を関数を使わないで処理するから複雑になる。
凝集度が低いとか、結合度が高いというのは言い換えると関数の分け方を知らないわけで、
つまりは関数を分けずに長ったらしく書くので必然的に循環的複雑度はあがる。
意図的に変なコードを書かない限り、凝集度が低い・結合度が高い(クソコード)なのに
循環的複雑度が低いというのは矛盾するんだよ。
データベースを扱う層や、UIを扱う層みたいに
そして各層では決められたことしかしない。
コードが複雑になってるのは、全ての処理を一つの層でやろうとしているから。
一つの関数でやってる仕事の種類が多くなってしまうから複雑になる。
まとめると一つの関数で複数の仕事を関数を使わないで処理するから複雑になる。
凝集度が低いとか、結合度が高いというのは言い換えると関数の分け方を知らないわけで、
つまりは関数を分けずに長ったらしく書くので必然的に循環的複雑度はあがる。
意図的に変なコードを書かない限り、凝集度が低い・結合度が高い(クソコード)なのに
循環的複雑度が低いというのは矛盾するんだよ。
267仕様書無しさん
2013/06/13(木) 23:27:59.62 >>266
凝集度が低いか結合度が高いコードは、循環的複雑度が高いと?
ご冗談を。
ム板に嬉々として数十行くらいのコードを貼る奴のコードは、
大抵、凝集度が低いか結合度が高いか、あるいは別の原因で糞コードに
なってる場合が多いが、循環的複雑度は大抵低い。
凝集度が低いか結合度が高いコードは、循環的複雑度が高いと?
ご冗談を。
ム板に嬉々として数十行くらいのコードを貼る奴のコードは、
大抵、凝集度が低いか結合度が高いか、あるいは別の原因で糞コードに
なってる場合が多いが、循環的複雑度は大抵低い。
268仕様書無しさん
2013/06/13(木) 23:30:47.04 前スレのおじゃばのコードは、メソッド内の行数も少なく、循環的複雑度も低いが糞コードだった。
はい、論破。
はい、論破。
269仕様書無しさん
2013/06/13(木) 23:34:18.99 >>267
> 凝集度が低いか結合度が高いコードは、循環的複雑度が高いと?
はい、そうです。
なぜならば結合度が高いコードは、多くのコードが結合しているわけで、
コードが多いならば循環的複雑度も高くなる傾向にあります。
凝集度が低い場合も、凝集度が低い=コードがあちこちに分散している。=処理を行うには
あちこちのコードを結合しないといけない。結果多くのコードが必要なります。
コードの行数が増えれば必然的に循環的複雑度も高くなります。
> 凝集度が低いか結合度が高いコードは、循環的複雑度が高いと?
はい、そうです。
なぜならば結合度が高いコードは、多くのコードが結合しているわけで、
コードが多いならば循環的複雑度も高くなる傾向にあります。
凝集度が低い場合も、凝集度が低い=コードがあちこちに分散している。=処理を行うには
あちこちのコードを結合しないといけない。結果多くのコードが必要なります。
コードの行数が増えれば必然的に循環的複雑度も高くなります。
270仕様書無しさん
2013/06/13(木) 23:38:09.98 えっと、循環的複雑度ってメソッド単位なんだが・・・
271仕様書無しさん
2013/06/13(木) 23:41:04.19 そのメソッドで他の関数呼び出すでしょ?
273仕様書無しさん
2013/06/13(木) 23:44:40.99 結合度が低ければ、ある関数から呼び出す、他のモジュールも少なくなる(結合してないから)
よってモジュールを組合わせるコードも減る=循環的複雑度も下がる。
凝集度が低ければ、ある関数で処理を行うために、いくつものモジュールを
組み合わせなくてはいけなくなる。その分のコードが増える=循環的複雑度は高くなる。
よってモジュールを組合わせるコードも減る=循環的複雑度も下がる。
凝集度が低ければ、ある関数で処理を行うために、いくつものモジュールを
組み合わせなくてはいけなくなる。その分のコードが増える=循環的複雑度は高くなる。
274仕様書無しさん
2013/06/13(木) 23:46:19.60 >>272
結合度が高いってことは、ある処理でAとBとCとDとEに依存しているわけですよ。
AとBとCとDとEに依存しているってことは、AとBとCとDとEを組み合わせて使ってるってこと。
組み合わせるにはコードが必要。結果コード量が多くなる。循環的複雑度も高くなる。
結合度が高いってことは、ある処理でAとBとCとDとEに依存しているわけですよ。
AとBとCとDとEに依存しているってことは、AとBとCとDとEを組み合わせて使ってるってこと。
組み合わせるにはコードが必要。結果コード量が多くなる。循環的複雑度も高くなる。
275仕様書無しさん
2013/06/13(木) 23:51:51.82279仕様書無しさん
2013/06/13(木) 23:58:32.29 >>258
複雑度が低くても糞なコードの作り方
1、適当な関数を1個持ってくる
2、細切れにして関数を分割し続ける
「int main(){std::cout<<"Hello, world!"<<std::endl;return 0;}」の変換例
std::ostream& getOutputStream(){return std::cout;}
char* getHelloWorldString(){return "Hello, world!";}
std::ostream& getHelloWorldStringOutputStream(){return getOutputStream();}
std::ostream& getEndLineOutputStream(){return getOutputStream();}
void putHelloWorldStringToOutputStream(std::ostream& stream){stream<<getHelloWorldString();}
void putEndLineToOutputStream(std::ostream& stream){stream<<std::endl;}
void putHelloWorldString(){putHelloWorldStringToOutputStream(getHelloWorldStringOutputStream());}
void putEndLine(){putEndLineToOutputStream(getEndLineOutputStream());}
void putHelloWorldLine(){putHelloWorldString();putEndLine();}
int main(){putHelloWorldLine();return 0;}
複雑度が低くても糞なコードの作り方
1、適当な関数を1個持ってくる
2、細切れにして関数を分割し続ける
「int main(){std::cout<<"Hello, world!"<<std::endl;return 0;}」の変換例
std::ostream& getOutputStream(){return std::cout;}
char* getHelloWorldString(){return "Hello, world!";}
std::ostream& getHelloWorldStringOutputStream(){return getOutputStream();}
std::ostream& getEndLineOutputStream(){return getOutputStream();}
void putHelloWorldStringToOutputStream(std::ostream& stream){stream<<getHelloWorldString();}
void putEndLineToOutputStream(std::ostream& stream){stream<<std::endl;}
void putHelloWorldString(){putHelloWorldStringToOutputStream(getHelloWorldStringOutputStream());}
void putEndLine(){putEndLineToOutputStream(getEndLineOutputStream());}
void putHelloWorldLine(){putHelloWorldString();putEndLine();}
int main(){putHelloWorldLine();return 0;}
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】山上徹也被告に無期懲役を求刑 ★6 [Hitzeschleier★]
- 官邸幹部「日本は核兵器保有すべき」 政権内の議論は「ない」と説明 [どどん★]
- 年収の壁で総理と玉木代表が合意 178万円まで引き上げ 年収665万円以下が対象 ★2 [どどん★]
- 中国外務省「日本への渡航を控えて」→高市内閣の支持率はとくに下がらず…なぜ日本国民がこれほど「高市内閣」を応援するのか★4 [♪♪♪★]
- 胸を強調した女性アニメキャラをファミレスがコラボ企画で起用。「この表現はどうなのか」SNSで疑問の声 ★2 [少考さん★]
- 【赤坂“サウナ火災”30代夫婦死亡】サウナストーンでドア割ろうとした可能性 非常ボタン作動しなかったか ★5 [ぐれ★]
- 【超特大悲報】中国さん完全孤立決定…米両院が日本支持を明言🏡
- 北海道新幹線の延伸、建設費1.2兆円増、最大3兆5千億円に、札幌への延伸、30年度末から38年度末に遅れる、建設資材や人件費が高騰 [943688309]
- 現役JKのお茶会スレ( ¨̮ )︎︎𖠚ᐝ185
- 有名だけど生で見たことないもの
- 【俳優】すでに亡くなった人で、演技が上手かった日本の俳優👈誰を思いつく?? [839143615]
- 高市早苗「中国製ソーラーパネル頼みはやめろ」日本発ペロブスカイト推進へ [834922174]
