もしくはやって欲しくないこと
先輩方のアドバイスをください
前スレ
これからコードを書く人に絶対やって欲しいこと★2
http://kohada.2ch.net/test/read.cgi/prog/1365269189/
これからコードを書く人に絶対やって欲しいこと★3
■ このスレッドは過去ログ倉庫に格納されています
1仕様書無しさん
2013/06/04(火) 22:43:46.92228仕様書無しさん
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;}
282仕様書無しさん
2013/06/14(金) 00:06:01.98 循環的複雑度の低いメソッド同士が内容結合してると、それは糞コード。
はい、論破。
はい、論破。
284仕様書無しさん
2013/06/14(金) 00:08:56.89 ひょっとしてあれか、循環的複雑度の定義も理解しないまま平均平均言ってたのか?
286仕様書無しさん
2013/06/14(金) 00:16:25.05 ム板の宿題スレとVBAスレで、外部コード共有サービス使ってコード貼ってる奴の
コードを見れば、循環的複雑度が低いのに糞コードな例を思う存分堪能できます。
コードを見れば、循環的複雑度が低いのに糞コードな例を思う存分堪能できます。
290仕様書無しさん
2013/06/14(金) 00:20:53.60 ああ、自分が読めないコードが糞コードの人か
292仕様書無しさん
2013/06/14(金) 00:22:34.55 承認要求が強すぎる困ったちゃん
293仕様書無しさん
2013/06/14(金) 00:25:12.69 循環的複雑度に凝集度と結合度が加わって、この話題で500までは行くかな。
スレ全部食い尽くすかもしれん。
スレ全部食い尽くすかもしれん。
294仕様書無しさん
2013/06/14(金) 00:28:23.50 ほらな。
結局、コード出せといっても
だせない。
あ、わざとらしいコードはいらんよ。
結局、コード出せといっても
だせない。
あ、わざとらしいコードはいらんよ。
295仕様書無しさん
2013/06/14(金) 00:32:16.63 なにがほらなだよ。
まず結合度をググってこい、アホ。
まず結合度をググってこい、アホ。
296仕様書無しさん
2013/06/14(金) 00:35:39.54 論破されまくってるのに気づかない馬鹿
297仕様書無しさん
2013/06/14(金) 00:38:03.29 凝集度の話が出てるようなので、
今度は循環的複雑度ではなく、LCOM、計測してますか?w
http://www.itmedia.co.jp/im/articles/0510/07/news106.html
LCOMってのは言語によって計測しづらいんだよな。
参照しているメソッドやフィールドの数で計算するから
動的型付け言語だと、何を参照しているか(実行時に決まるので)わからない。
Javaだったらこの記事のようにプラグインがあるんだが。
今度は循環的複雑度ではなく、LCOM、計測してますか?w
http://www.itmedia.co.jp/im/articles/0510/07/news106.html
LCOMってのは言語によって計測しづらいんだよな。
参照しているメソッドやフィールドの数で計算するから
動的型付け言語だと、何を参照しているか(実行時に決まるので)わからない。
Javaだったらこの記事のようにプラグインがあるんだが。
298仕様書無しさん
2013/06/14(金) 00:39:55.94 >>281
わざとらしかろうがクソには違いあるまい。
実際には良かれと思って分割されたり抽象化されたりした関数やクラスが山と連なる、とかだろうけど。
で、細切れにされた関数をインライン展開とかで復元できるフォーマッタってあんの?
レス行数考慮して改行は潰したが、そこは本題じゃないし。
これの健全化は自動処理できたとしてもフォーマッタの仕事じゃないだろ。
リファクタリングツールの仕事で、つまり糞コードの改修という仕事。
わざとらしかろうがクソには違いあるまい。
実際には良かれと思って分割されたり抽象化されたりした関数やクラスが山と連なる、とかだろうけど。
で、細切れにされた関数をインライン展開とかで復元できるフォーマッタってあんの?
レス行数考慮して改行は潰したが、そこは本題じゃないし。
これの健全化は自動処理できたとしてもフォーマッタの仕事じゃないだろ。
リファクタリングツールの仕事で、つまり糞コードの改修という仕事。
299仕様書無しさん
2013/06/14(金) 00:43:13.04300仕様書無しさん
2013/06/14(金) 00:47:03.73 >>299
> ウェブ系でよく使われる言語ののツールって無いんだろうか?
しらない。ぶっちゃけウェブ系の言語(だいたいが動的型付け言語)では
厳密な計測は不可能だと思ってるけどね。
こういうメトリクス計測ってのはソースコードを静的に解析する。
つまり静的に情報がわかれば計測できるが
そうでなければ計測できない。
だから、動的型付け言語の発展に将来はないと思っているが
それはまた別の話だな。
> ウェブ系でよく使われる言語ののツールって無いんだろうか?
しらない。ぶっちゃけウェブ系の言語(だいたいが動的型付け言語)では
厳密な計測は不可能だと思ってるけどね。
こういうメトリクス計測ってのはソースコードを静的に解析する。
つまり静的に情報がわかれば計測できるが
そうでなければ計測できない。
だから、動的型付け言語の発展に将来はないと思っているが
それはまた別の話だな。
301仕様書無しさん
2013/06/14(金) 00:48:51.67 どんなメトリクスでも共通して言えることは、あるコードがそのメトリクスで良い数値を
出しているからといって、必ずしも良いコードではないということ。
メトリクスを収集する目的は、悪い数値を出す悪いコードを検出するのと、そのコードを
改善したときの進行具合を測るのに止めるのが良い。
出しているからといって、必ずしも良いコードではないということ。
メトリクスを収集する目的は、悪い数値を出す悪いコードを検出するのと、そのコードを
改善したときの進行具合を測るのに止めるのが良い。
303仕様書無しさん
2013/06/14(金) 00:56:38.69 >>301
> どんなメトリクスでも共通して言えることは、あるコードがそのメトリクスで良い数値を
> 出しているからといって、必ずしも良いコードではないということ。
誰も違うとは言ってないのに、なぜかここだけゴリ押しする馬鹿
言わなきゃ困る理由でもあるのかね?
> どんなメトリクスでも共通して言えることは、あるコードがそのメトリクスで良い数値を
> 出しているからといって、必ずしも良いコードではないということ。
誰も違うとは言ってないのに、なぜかここだけゴリ押しする馬鹿
言わなきゃ困る理由でもあるのかね?
304仕様書無しさん
2013/06/14(金) 00:59:29.44 >>302
出来るできないの二元論ではなく
どれだけできるかという話。
どれだけ静的解析できるかの話をすれば
動的型付け言語は、静的型付け言語に比べて
圧倒的に少ないと言わざるをえない。
LCOMの計算式を見ればわかるが、
・着目しているクラスのj番目のメンバ変数
・着目しているクラスのメンバ変数の個数
・着目しているクラスのメソッドの個数
・メンバ変数Ajにアクセスしているメソッドの個数
こういう値を変数として利用する。
だが動的型付け言語では、着目しているクラスが
動的に決定されるので、着目しているクラスの情報が得られない。
出来るできないの二元論ではなく
どれだけできるかという話。
どれだけ静的解析できるかの話をすれば
動的型付け言語は、静的型付け言語に比べて
圧倒的に少ないと言わざるをえない。
LCOMの計算式を見ればわかるが、
・着目しているクラスのj番目のメンバ変数
・着目しているクラスのメンバ変数の個数
・着目しているクラスのメソッドの個数
・メンバ変数Ajにアクセスしているメソッドの個数
こういう値を変数として利用する。
だが動的型付け言語では、着目しているクラスが
動的に決定されるので、着目しているクラスの情報が得られない。
306仕様書無しさん
2013/06/14(金) 01:04:35.91 >>290
これは言えてると思う
英語に拒絶反応示す人だと、簡単なメソッド名すら理解できなくて
実装のほうにジャンプして中確認しないといけないことに文句言ったりする
メソッド名見るだけで意味はわかるのに、それができないってやつ
実際の職場とかだと糞いメソッド名な事もあるけど、このスレで出てるのって、そういうレベルの話ではないしな
これは言えてると思う
英語に拒絶反応示す人だと、簡単なメソッド名すら理解できなくて
実装のほうにジャンプして中確認しないといけないことに文句言ったりする
メソッド名見るだけで意味はわかるのに、それができないってやつ
実際の職場とかだと糞いメソッド名な事もあるけど、このスレで出てるのって、そういうレベルの話ではないしな
307仕様書無しさん
2013/06/14(金) 01:05:17.99 このコード出せうんたらの流れ、前スレでも見たな
その時はコテついてたけど
その時はコテついてたけど
309仕様書無しさん
2013/06/14(金) 01:09:22.07310仕様書無しさん
2013/06/14(金) 01:11:44.45311仕様書無しさん
2013/06/14(金) 01:16:15.69 動的型付け言語が何なのか知らないバカも登場し、ますますスレは混沌となっていくのであった
312仕様書無しさん
2013/06/14(金) 01:19:52.64 静的解析の静的がわからないんじゃなかろうか
313仕様書無しさん
2013/06/14(金) 01:21:16.55 >>303>>308
> 誰も違うとは言ってないのに
247「アホが「複雑度が低くてもクソなコードはある」とか言いだすんだよ。」
すなわち「複雑度の低いクソなコードはない」と言っている
258「あるというのなら、出せばいい」「複雑度が低くても糞なコード。」「さあどうぞ。証明してくれ。」
すなわち「複雑度が低くても糞なコードは出てこない」という前提でレスしている
> 言わなきゃ困る理由
以上のようにバカは何処にでもいるので、蛇足だろうと過信すべきでないという警告は必要である
必要とする者が要る以上、俺はいらないから不要ってだけの理論は通用しないんだよ
既にあるものを不要としたいなら、必要を上回る欠点なりなんなりが無いとね
> 誰も違うとは言ってないのに
247「アホが「複雑度が低くてもクソなコードはある」とか言いだすんだよ。」
すなわち「複雑度の低いクソなコードはない」と言っている
258「あるというのなら、出せばいい」「複雑度が低くても糞なコード。」「さあどうぞ。証明してくれ。」
すなわち「複雑度が低くても糞なコードは出てこない」という前提でレスしている
> 言わなきゃ困る理由
以上のようにバカは何処にでもいるので、蛇足だろうと過信すべきでないという警告は必要である
必要とする者が要る以上、俺はいらないから不要ってだけの理論は通用しないんだよ
既にあるものを不要としたいなら、必要を上回る欠点なりなんなりが無いとね
314仕様書無しさん
2013/06/14(金) 01:24:20.73315おじゃばさま ◆mpgYduuqtA
2013/06/14(金) 01:24:40.63 君達、基本が出来てないな。
循環的複雑度が低い糞コードは
基本の逆をやればいい。
つまりオブジェクト指向で、
処理で分割したり、
構造化で変数のスコープを無視して、
グローバル変数を使いまくったり
すればいい。
循環的複雑度が高くても問題ない
コードは、分岐が多くても
基本に外れてない物ならいい。
つまり、項目数の多い入力チェック
などだ。
誰かも書いていたが、結局モジュール
分割の基本を知らずに循環的複雑度
がどうとか言っているのが問題
なのだろう。
循環的複雑度が低い糞コードは
基本の逆をやればいい。
つまりオブジェクト指向で、
処理で分割したり、
構造化で変数のスコープを無視して、
グローバル変数を使いまくったり
すればいい。
循環的複雑度が高くても問題ない
コードは、分岐が多くても
基本に外れてない物ならいい。
つまり、項目数の多い入力チェック
などだ。
誰かも書いていたが、結局モジュール
分割の基本を知らずに循環的複雑度
がどうとか言っているのが問題
なのだろう。
316仕様書無しさん
2013/06/14(金) 01:24:58.45 あら、また馬鹿がw
317仕様書無しさん
2013/06/14(金) 01:29:17.36318仕様書無しさん
2013/06/14(金) 01:29:43.41319仕様書無しさん
2013/06/14(金) 01:32:37.70 おっと、二人称まで同じ似たような発言が・・・。
まあ、俺はまた暫く黙るから安心してくれ。
まあ、俺はまた暫く黙るから安心してくれ。
321仕様書無しさん
2013/06/14(金) 01:52:25.97 循環的複雑度の人が言う循環的複雑度の低いソースと高いソースを
俺らにサンプルとして出すよう言ってから24時間経ってるのに出てないのね。
なんか書き込みはすごいことになってるけど。
俺らにサンプルとして出すよう言ってから24時間経ってるのに出てないのね。
なんか書き込みはすごいことになってるけど。
323仕様書無しさん
2013/06/14(金) 02:27:07.14 レスする価値があるような相手、内容であるか見極めてからスレに投稿する、ということを、
これからコードを書く人には絶対にやって欲しいな。
これからコードを書く人には絶対にやって欲しいな。
324仕様書無しさん
2013/06/14(金) 03:54:22.34 途中全く読んでないけど、レスが50も増えたと思ったらまだやってたのか
たぶん名無しで書いてるけど中身はおじゃばだな…
このスレも終わったな
たぶん名無しで書いてるけど中身はおじゃばだな…
このスレも終わったな
325仕様書無しさん
2013/06/14(金) 04:33:31.11 読めば判るが、おじゃばはさらに斜め上に飛んでるから多分別口だ。
326仕様書無しさん
2013/06/14(金) 09:27:56.97 ここに書かれてるのは量産型おじゃばか
327仕様書無しさん
2013/06/14(金) 13:14:40.54 絶対やって欲しいこと
スルー能力を鍛えて欲しい。
スルー能力を鍛えて欲しい。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市政権の核兵器保有発言「事実なら非常に深刻な事態。国際社会は警戒すべき」中国 ★3 [お断り★]
- マクドナルド、チキンマックナゲット30ピース(ソース6個付き)通常1480円が、950円に [お断り★]
- 【野球】メジャー挑戦・村上宗隆 22日に期限迫るも市場沈黙… 三振率や変化球対応を懸念 「日本Uターン」悪夢が現実味 米報道 [冬月記者★]
- 松村沙友理「いい女っていっぱいおるけどいい男あんまおらんくない?30オーバーでいい男性ってみんな結婚してる」★2 [muffin★]
- 高市首相、円安・物価高で利上げ容認 昨年「あほ」と批判も…就任後は財政拡張批判も意識 ★2 [蚤の市★]
- 【赤坂サウナ火災】「通風口」叩き助け求めたか…夫には広範囲“やけど”の痕あり妻を熱からかばおうと覆い被さった可能性 ★2 [ぐれ★]
- 【実況】博衣こよりのえちえちスーパーダンガンロンパ7🧪
- 36歳ママ、自宅で16歳の長男と11歳の二男と9歳の三男を斧などで殺した後に子殺し自殺 夕方帰宅したパパが家に入れず110番して発覚 東京 [597533159]
- 射精管理されてるような曲が好きなんだが
- ネトウヨ、台湾人留学生の部屋前に暴言張り紙やゴミをばら撒く嫌がらせ [377482965]
- 【実況】博衣こよりのえちえちスーパーダンガンロンパ8🧪
- 【悲報】ジャップランド、ガチのマジで貧困化...「クリスマスケーキを買えない家庭」が7割超...炊き出しにも長蛇の列 [856698234]
