- C#, C♯, C#相談室 Part91 [無断転載禁止]©2ch.net
623 :デフォルトの名無しさん[sage]:2016/09/30(金) 23:00:54.25 ID:bXY+Fxkm - × > 保守性の高いだれでも理解しやすいコードを書ける奴が優秀
○ 馬鹿な俺でも読めるコードを書ける奴が優秀なことにしたい K&Rのコードが「汚い」という批判はないと思うが。あれはあれで美しい。 勘違いした馬鹿が闇雲にトリッキーなコードを書いたり、 (今まさに関数型()の奴らが同じ事をやっているが) 或いはタイプミスなのか意図的なのか分かりにくかったりするのが問題なだけ。 これらは色々warning等を出して対応されてきた。もちろん最初からSyntaxErrorならそれでよい。 そして「コードが汚い」ってのは今言っているようなせいぜい10数行の局所区画のことではなく、 もっと大きな上位区画での話だろ。意味不明なクラス構成とか。 というか、10行程度のコードなら多少汚くても読めるし、 正しく抽象化されて階層が分かれていれば、 そういうローレベルコード(何かのメソッド等)は一度読んで動くのが分かればそれでおしまいだろ。 問題はそれらを駆使するミドルレベルコードがグダグダな方だと思うし、 それを「コードが汚い」と表現するのだと思うが。
|
- C#, C♯, C#相談室 Part91 [無断転載禁止]©2ch.net
624 :デフォルトの名無しさん[sage]:2016/09/30(金) 23:01:33.75 ID:bXY+Fxkm - というか多分お前らは「自分が読めるコードが綺麗なコード」とする初心者に近い奴が多いのだと思うが、
実際の所、腕のいい奴は「書ける範囲で綺麗なコード」にしているわけで、 結果的に綺麗なだけなコードならいくらでも綺麗にかけるし、 高速化が必要なら多少汚くなっても最適化を施していく。 だから「汚い」と批判するのはそれ以上の物を自分で記述できるときだけにした方がいい。 K&Rに関しては実行速度/リソースについて最適化を施されているわけだから、 それよりも少ないリソースで速く動くソースが書けないのなら、「汚い」とは言うべきではない。 それが読めないのはお前が馬鹿だから。 少なくともそれを書いた奴はお前よりも腕前は上なわけで、 お前でも読めるようなコードを彼等が書くことは可能なわけだし。 例えばソートとか。 APIとして呼ぶ分には中身がどうであれ正しく速く動いてくれればそれでよし。 それが非常に読みにくい物でも、正しく動く限り、速い方が選ばれる。 それを読みにくいだけの理由で「汚い」とするのはナンセンスでしょ。 K&Rのトリッキーなコードは本来はこういう区画にしか現れないものだよ。 そしてそれは「ソート」として分離されるから、その中身がどんなに汚くても、開発の障害にはならない。 「コードが汚い」ってのは、つまり「これじゃあ今後手を付けられません」って意味だろ。 ソートみたいな局所区画でこれがあてはまることはない。 (実際「汚い」=「読みにくい」のと、 「コードが汚い」との批判=「開発の障害になる」との意見は別物のはず) 問題は、例えば、「ラムダを使うべき場所でラムダを使ってない」とか、逆に、 「ラムダを使うべきでない場所でラムダを使っている」とか、だろ。 要するに簡単な方を使えばいいだけなのだけど、 意識高い奴は「○○の方がいい(キリッ」とか言って無理に使うからおかしな事になる。
|
- C#, C♯, C#相談室 Part91 [無断転載禁止]©2ch.net
632 :デフォルトの名無しさん[sage]:2016/09/30(金) 23:41:02.45 ID:bXY+Fxkm - >>629
・「ソースが汚い」と批判される場合は 全体的にナンセンスか必要のない箇所で最適化をしている場合。 必要な箇所での最適化で結果的に著しく可読性が落ちたとしても 「ソースが汚い」と批判されることはない。 ・速さが必要ない箇所では最適化せずに、一番単純な記述にしろ。 ・新機能は便利だから追加されたのだから、積極的に使えばいい。 ただし使えばいいって物ではない。
|
- C#, C♯, C#相談室 Part91 [無断転載禁止]©2ch.net
634 :デフォルトの名無しさん[sage]:2016/09/30(金) 23:56:07.59 ID:bXY+Fxkm - >>633
同意。 なんか早すぎる最適化はうんたんってのがあるんだろ。 コードの9割以上は速度はどうでもいい箇所なので、可読性をとるべき。 糞どうでもいい箇所をこねくり回してワケワカメなコードにする奴はハゲろ。 (言っちゃあ悪いが関数型()な奴はこれをやっている気がものすごくする) あと言語のポリシーにもよるでしょ。 C#はC程のチューニングをする為の言語じゃない。 それこそ、C#なら全箇所で(速度は全く気にせず)可読性重視というのもありだと思うよ。 そもそもどうしても速度が必要ならCでDLL書いた方が速いし早い。
|