クソコードとは何か

■ このスレッドは過去ログ倉庫に格納されています
2021/01/30(土) 17:33:05.78ID:BjNTZWUI
このスレはクソコードとは何かを考えるスレです。

・親クラスが子クラスに依存する処理を持つコード
例...社員クラスを継承した正社員クラスと派遣社員クラスがあり、社員クラスが正社員クラスの知識を持つ状況

・staticにするべきではないモデルにまでstaticにする人
例...社員クラスのメソッドを全てstaticにしたり、社員クラスにシングルトンパターンに相応するものを適用する人

等、クソコードを見た時に「あっ、これクソコードだ」って認識する根拠を挙げていきましょう。
2021/02/27(土) 10:14:34.77ID:OfxFNKjU
>>751
それただの人格攻撃ですね
はあ、論理的に議論できない人プログラマーにもいるんですね
2021/02/27(土) 10:15:32.69ID:OfxFNKjU
>>753
1000回やる根拠がないので質問の意味がない、ナンセンスの塊
2021/02/27(土) 10:16:31.76ID:hpJz9JUm
>>755
自分で実食を重ねると言っておきながら
実食の回数を否定するのか?w
2021/02/27(土) 10:18:22.80ID:OfxFNKjU
>>756
よく読んでください、1000回という数字に根拠がないと言ってます、また手段と目的を見誤ってますね
2021/02/27(土) 10:19:07.52ID:OfxFNKjU
数字を増やすことが目的になっておられる
2021/02/27(土) 10:19:40.92ID:hpJz9JUm
>>757
1000回という回数にこだわってるのはお前
試行錯誤の回数は多いほうが良いと言っている
より多く試行錯誤をするにはどうすればいいか
実食を重ねて試行錯誤していくに決まってる(笑)
2021/02/27(土) 10:19:59.65ID:OfxFNKjU
こんなんだから日本はまともなソフトウェアを作れないんでしょうね
2021/02/27(土) 10:21:58.68ID:OfxFNKjU
>>759
おやおやそれは無理がありすぎでしょうw
1000回という数字を出してそれを達成するにはどうすればよいかを聞いたのはあなたでしょう、他人のせいにしないでください
2021/02/27(土) 10:22:42.60ID:OfxFNKjU
>>753であなたが言ってますよ
2021/02/27(土) 10:24:17.05ID:b2AUxonB
反論できなくなったらこれだから日本は〜ってださすぎるだろ
そもそもIT先進国の方がテスト文化進んでるだろうに
2021/02/27(土) 10:24:31.17ID:OfxFNKjU
日本からユーチューブやツイッターが生まれないのはユーザを見ずにコードを見てるからです
2021/02/27(土) 10:25:42.78ID:ZW3ZqwOa
>>761
単体テストってビルドする度に実行するものだけど、理解できてます?
まさか、そんなことも理解せずに単体テスト批判してたの?
あと、クソコードスレなんで、是非、クソコード事例書いてみて
生産性のないお前の愚痴とか相手を挑発するだけで中身のない批判とかどうでもいいから
2021/02/27(土) 10:26:12.15ID:ZW3ZqwOa
あと、クソコードの話と絡めることができないのなら、隔離スレ行ってくれませんか?
2021/02/27(土) 10:28:16.32ID:OfxFNKjU
>>765
いつ実行するかをあなたは話してますね、ふーんって思いました、なんでそんな話をしてくるんだろう
2021/02/27(土) 10:28:52.51ID:OfxFNKjU
>>766
テストコード=クソコード
なのです
2021/02/27(土) 10:30:34.90ID:ZW3ZqwOa
>>768
理由は?
あと、俺が最初に挙げたテスト対象コードの依存の話は?
2021/02/27(土) 10:30:45.78ID:OfxFNKjU
あれを知ってるかこれを知ってるか、そんなことも知らないのか、民主党の国会質疑みたいですね
2021/02/27(土) 10:32:30.36ID:OfxFNKjU
>>769
テストコードを書くとテストコードを実行することやテストコードをきれいに書くことが目的なってしまうからです、このスレの議論を見ればよくわかりますね
2021/02/27(土) 10:32:39.93ID:ZW3ZqwOa
はあ、論理的に議論できない人プログラマーにもいるんですね(皮肉)
2021/02/27(土) 10:35:35.35ID:OfxFNKjU
言うに事欠いて僕の真似をするとは、良いでしょう、あなたがその言葉を発言することを許諾します
2021/02/27(土) 10:36:03.25ID:OfxFNKjU
許しました、僕は心が広いので
775デフォルトの名無しさん
垢版 |
2021/02/27(土) 10:54:25.52ID:Yt5NHAzi
NG推奨:テスト
776デフォルトの名無しさん
垢版 |
2021/02/27(土) 13:00:30.28ID:NhoBp4qK
>>742
クソコーダーはクソスレ建てるのがお上手ですね!
2021/02/27(土) 14:21:58.44ID:o6FTnlQR
まずこのスレがクソスレじゃん
どんなジャンルで悪いお手本をあげつらって技術磨くってのが成り立つんだよ
状況によって対応が細かく変わりうるプログラムってジャンルだと尚更ねーよ
2021/02/27(土) 14:31:49.87ID:EOMk/snY
>>777
は?アンチパターン知らないのなら
2021/02/27(土) 14:32:21.56ID:EOMk/snY
は?アンチパターンも知らないのなら引っ込んでろ底辺プログラマー。
2021/02/27(土) 14:41:04.16ID:OfxFNKjU
アンパンチなら知ってるけど
2021/02/27(土) 14:42:05.95ID:OfxFNKjU
僕はバイキンマンがおしゃれだと思うし好きですけど
2021/02/27(土) 14:43:15.22ID:OfxFNKjU
ドキンちゃん、メロンパンナちゃんは可愛いです
2021/02/27(土) 14:45:08.51ID:OfxFNKjU
天どんマンとカバオくんは渋くて好きです
2021/02/27(土) 14:46:27.65ID:OfxFNKjU
愛と勇気だけが友だちという歌詞も深いですよね、大人の心にも響きます
2021/02/27(土) 14:50:27.61ID:Rkj+zBYu
>>777
スレ主がコンテキストを理解しない底辺プログラマーだから許してあげてね
2021/02/27(土) 15:25:16.36ID:srgcqAD7
コンテキスト?
Device Contextとか、Android Activityとかのコンテキスト?
2021/02/27(土) 15:47:29.01ID:qhUfxMpi
多分コンテキストって言いたかっただけなんだろうと思う…
2021/02/27(土) 16:37:52.70ID:OfxFNKjU
>>786
文脈って意味ですよ
789デフォルトの名無しさん
垢版 |
2021/02/27(土) 16:55:56.55ID:lzDnqtNz
俺は、あわしろ氏を信じる。

お前の言うことは信用しない。
790デフォルトの名無しさん
垢版 |
2021/02/28(日) 03:55:51.43ID:BRDX8bQ+
天ぷらだとうどんと蕎麦のどっちが好き?
2021/02/28(日) 03:57:33.36ID:Gc6Q6B7T
カレー
792デフォルトの名無しさん
垢版 |
2021/02/28(日) 03:59:46.09ID:BRDX8bQ+
>>791
天ぷら前提なんだが、レスがハエーから許す
2021/02/28(日) 04:04:03.84ID:Gc6Q6B7T
天ぷらカレー
794デフォルトの名無しさん
垢版 |
2021/02/28(日) 04:07:35.88ID:BRDX8bQ+
>>793
うどんか蕎麦で
2021/02/28(日) 04:53:09.79ID:Gc6Q6B7T
カレーどんぶり
2021/02/28(日) 09:53:36.42ID:fiymphDk
>>792
みなさんこれがクソコードです
2021/02/28(日) 17:33:35.64ID:JGZwcedL
最初は有意義になるかなと思ったのにクソスレになったな
2021/02/28(日) 17:44:13.70ID:VO7rpKqD
>>797
そう思ってたのはスレ主だけだろw
スレタイ & 1スレでどっちみちクソスレになるのは確定してた
2021/02/28(日) 22:04:12.82ID:AdiQic6X
5chに有意義なことを期待する時点で
2021/02/28(日) 22:29:20.29ID:HY9f+UaN
Qiitaでもクソコード云々言って炎上してる記事があったな
2021/02/28(日) 23:14:06.43ID:797yScED
>>800
試しにクソコードでQiitaを検索してみたがポエムばっかりで面白いのなかったな
↓これが視点としては面白かったけど処理分割のアプローチ間違ってるから新たなクソコードが出来そう
https://qiita.com/teradonburi/items/6483e51d5f9d47f5c22a
2021/02/28(日) 23:55:31.04ID:VPMHnl/e
>>798
いや、スレ主じゃないけどアンチパターン研究スレは厶板に必要だとは思うよ
文脈から察せない人が暴れただけで
2021/03/01(月) 00:40:02.48ID:p4pc8RdJ
>>802
アンチパターンを集めたかったんなら
スレタイと1スレをそうなるよう書けって話だろ
アンチパターンとクソコードは全く別物なんだよ
コンテキストを理解してないと言われてる理由と合わせて最低限パターン・ランゲージくらいは学んでこい


ちなみに「いや」から書き始めるレスはクソレス・パターンだからな
2021/03/01(月) 02:16:03.17ID:6wDZP3ri
>>803
君がコミュ障パターンなだけだろ
2021/03/01(月) 02:47:59.87ID:o92pxtgz
>>804
そうやって自分でクソスレにしてんだよな
クソスレ主あってのクソスレ(ム板拡張版w)
2021/03/01(月) 02:51:31.50ID:g6QBZhEL
アンチパターンを取り上げてる本でオススメある?
SQLアンチパターンを読んで得るものが多かったので
2021/03/01(月) 06:38:18.35ID:6wDZP3ri
>>805
ほうクソの定義とは何かね
2021/03/01(月) 06:39:15.47ID:6wDZP3ri
マーチン・ファウラーのりファクタリングやろな
2021/03/01(月) 06:52:02.27ID:6wDZP3ri
>>805
おいお前話を広げろ、今のお前は他人のヘイトやってるだけのクソ野郎だからそうじゃないところを見せろ
2021/03/01(月) 06:56:37.18ID:6wDZP3ri
あ、間違ってたも
>>805は僕に同意してたわけね
でも僕は敏感な人間だから僕に言われてることだと思った、だけれども紛らわしい言い方した君が悪い、僕は絶対に悪くないからこの件は以後言及することを禁止します、以上
2021/03/01(月) 07:06:26.34ID:6wDZP3ri
上に出てるパターン・ランゲージってアレクザンダーの都市計画理論だろ、プログラミングの本じゃない、そんなたとえ話のようなものでわかった気になるのは危ない

Twitterでも建築の本読んでオブジェクト指向がどうとか言ってる人いるけどポストモダンなソーカル野郎としか思えないんだよなあ、関係のないことを関係づけてそこに気づいた自分が賢いと思いこんでしまうクルクルパー、地頭の良い人が陥りやすい穴のように見える
2021/03/01(月) 08:09:59.68ID:Dkl+jirL
40年近く前の本だしFORTRAN, PL/1が題材だから今の言語に合わない箇所もあるけど名著だと思う

プログラム書法 第2版 / Brian W.カーニハン P.J.Plauger 著 木村 泉 訳 | 共立出版
https://www.kyoritsu-pub.co.jp/bookdetail/9784320020856
2021/03/01(月) 08:21:42.09ID:VB40xofU
プログラミング作法の方が良いと思うよ
2021/03/01(月) 11:23:05.55ID:vk4XQtG7
中国行くと肛門PCR検査
815802
垢版 |
2021/03/01(月) 12:23:46.76ID:sbiXUVTE
コミュ症の自覚がない>>803
2021/03/01(月) 17:40:20.81ID:scPLhEmU
>>803
まーた、詭弁デメテルバカが発狂してるよ
一番勉強が足りてないお前が勉強してないっていうねw
頼むから、一生ROMってろ
2021/03/01(月) 20:15:47.54ID:XEpCIBIH
コードとはまた違うけど
javaのインターフェースとインプリメントはクソだなと思う
無駄にファイル数増えてクソうざい
2021/03/01(月) 20:59:56.79ID:lUjHuGPy
interfaceがクソってw
オブジェクト指向知らないのではw
2021/03/01(月) 21:16:55.91ID:4ocrwkuw
これだからJava脳はw
言語周りで幼稚な愚痴垂れ流してるやつのJava率の高さったらない
2021/03/01(月) 22:39:30.52ID:o/aEg2l/
>>811
GoFのデザインパターンも、ファウラーのリファクタリングも、エリックエバンスのDDDもみんなパターン・ランゲージ

それぞれのパターン・ランゲージに共通する要素は何なのか?
なぜパターンがソフトウェア開発に有用なのか?
この辺を学んで出直してくるといいんじゃね
2021/03/01(月) 22:48:23.51ID:o/aEg2l/
クソコードと言うのは単なるBad Practiceの一種であってアンチパターンとは違うもの

アンチパターンの意味を理解せずにアンチパターンの研究とかまあ無理よね
822デフォルトの名無しさん
垢版 |
2021/03/01(月) 23:16:44.33ID:vk4XQtG7
>>818
abstractだけでいいって事では?
2021/03/01(月) 23:43:38.69ID:f1Pg/hcl
C#やるとJavaのいろいろ足りてない部分はめちゃくちゃ実感する
2021/03/02(火) 00:47:10.90ID:k1c4vJst
>>820
君が何を学んだかを教えてよ
825デフォルトの名無しさん
垢版 |
2021/03/02(火) 03:20:46.99ID:9w2EW+ai
いちいち2chで教えなくていいから
2021/03/02(火) 10:54:48.23ID:MXVQCo9F
Anti-pattern
https://en.wikipedia.org/wiki/Anti-pattern
2021/03/02(火) 11:43:32.18ID:sTNRmcJa
>>818
そのインターフェース本当に必要?ってのが大半
他クラスとは何も関係無い孤立したクラスなのにインターフェース実装されてるの見たことある?
javaやってる感出すためだけにファイル数が2倍になるゴミ
828デフォルトの名無しさん
垢版 |
2021/03/02(火) 12:24:38.24ID:08kau52M
肛門コード
2021/03/02(火) 12:31:08.45ID:MXVQCo9F
>>827
ポリモーフィズム

Storage storage

storage = new USBMemory()
or
storage = new SDCard()

以下、storageを使って読み出し

storage.read()

これができなくなるとか論外
830デフォルトの名無しさん
垢版 |
2021/03/02(火) 15:55:12.73ID:HE4Aq4BV
1メソッド1インタフェイスのペアで作れば解決するじゃないか!

interface Writer{
void write(Data data);
}
interface Reader{
Data read();
}
interface Eraser{
void erase();
}

abstract class Storage implements Writer, Reader, Eraser{
abstract void write(Data data);
abstract Data read();
abstract void erase();
}
2021/03/02(火) 16:18:47.07ID:sTNRmcJa
>>829
そうやって複数クラスで使う前提じゃなくて
自身にしか提供しないくせにインターフェースにするクソコード見ても同じこと言えんの?

その例で言うと
Interface USBMemoryと
Implements USBMemoryImplementsと
Interface SDCardと
Implements SDCardImplementsの4つファイルが作られるんだよ
もちろんStorageクラスなんて作られないからな、覚悟しとけ?
2021/03/02(火) 17:22:18.70ID:MXVQCo9F
>>831
それはどうかと思うけど、それを根拠に>>817みたいな言語機能を批判しちゃだめだろって話
Java脳とか言い出す人が湧いてるし

まぁ、そのコードは確かに問題だな
2021/03/02(火) 17:45:25.68ID:MXVQCo9F
脱線したが、無意味にインタフェースと実装部を分けるクソコードは俺も見たことがある
俺も初心者時代はやらかした事はあったな

無駄にコードが増えるだけでメリットが無いというね
初心者時代は、>>831のコードを書けば
class XXXImplement
から
class XXXImplement2
に乗り換える時が楽だなんて思ってたけど、実際はXXXImplement2なんて作らずにXXXImplementを直接編集してた

変な突っ掛かり方をして悪かったな
2021/03/02(火) 17:49:55.29ID:1QjqZlxS
仕様と実装をどこで切り離しておくかという設計選択の話なのでコードだけでは判断できない
>>831のようにインターフェースに対して実装が1種類しかなくてもそれが望ましい状況もあれば望ましくない状況もある
2021/03/02(火) 17:59:46.35ID:QgVhfuvD
>>834
望ましい状況って例えば何なんw
教えてプロjavaプログラマーさん
2021/03/02(火) 18:06:26.23ID:RCz98UPT
インターフェース作ってもいいけど同じファイルに押し込んで欲しい
こんなくだらない内容でファイル数が倍は勘弁してほしい
2021/03/02(火) 18:27:01.85ID:1QjqZlxS
>>835
Storageの例と一緒だよ
共通した仕様を使いたいレイヤーと複数の実装を使いわけたいレイヤーがあって
それを分離することで結合度を下げときたい場合の選択肢の一つ

USBの例で言えばSDカードや他のストレージとは異なるUSB特有の仕様に依存したコードを書く必要がある場合に
実装が変更されても利用者側のプログラムを変更しなくてもいいようにしたかったり
複数の実装を実行時に切り替えて使えるようにしておきたい場合

面倒臭さと将来の柔軟性とのトレードオフ
切る場所が適切かどうかは要件次第なのでコードからは判断できない
2021/03/02(火) 18:28:28.29ID:k1c4vJst
>>835
実装を変えられるってことさ
オープンクローズプリンシパルを守ろうとしたらインタフェイス切るしかない
2021/03/02(火) 18:29:36.21ID:k1c4vJst
クラスは分けてなんぼ、理想を言えばメソッドごとにクラスを分けるべき
2021/03/02(火) 18:36:50.14ID:Ut+tyB9O
メソッドごとにクラスを分ける理由は?
2021/03/02(火) 18:47:13.75ID:cXyQmkET
同じ階層のものがたくさんあると
全体を把握しにくくなるんじゃないかなあ
842デフォルトの名無しさん
垢版 |
2021/03/02(火) 18:48:50.43ID:2RCjcGnL
クラス毎にファイルを分ける理由は?
2021/03/02(火) 18:48:57.53ID:qGFbOGXJ
Java脳のレスはインターフェースなくてもオブジェクト指向できるっつう話でしょ
引数に関数をとることでインターフェースの代替にできる時もあるしね
2021/03/02(火) 18:59:10.26ID:Ut+tyB9O
>>842
関連するものの単位が同じだからでは?
2021/03/02(火) 19:35:50.44ID:stemNYci
>>831
あの例だと
interface IStorageにread()などの必須メソッドを追加
class USBMemory implements IStorage
class SDCard implements IStorage
やろw
Storage抽象クラス又は親クラスで定義してoverrideでもいいけど
設計次第やな
2021/03/02(火) 19:55:38.87ID:sTNRmcJa
>>845
違うんだよなぁw

Interface USBMemory
class USBMemoryImplements implements USBMemory
Interface SDCard
class SDCardImplements implements SDCard

こんなのが爆誕してるというかほぼ全クラスこんなので統一されてる絶望感分かる?
2021/03/02(火) 20:12:52.16ID:sTNRmcJa
>>833
まあ仕様が悪いというより簡単に悪用される実態が問題なんだよね
そのパターンもあるあるやと思ってる
だけどもし仮に2に乗り換えたところで、何かあった時に戻れるようにって無印が残されて結局ファイル数は増える地獄なんだなぁw
2021/03/03(水) 07:45:39.12ID:jQr6IfK5
>>846
テストしやすくて最高じゃないですか
849デフォルトの名無しさん
垢版 |
2021/03/03(水) 10:51:02.42ID:xzgw1tFV
ワクチン効かなくて人類オワタ
2021/03/04(木) 00:08:07.08ID:FIbtDWBm
親クラスが子クラスに依存する処理を持つコード例
https://stackoverflow.com/a/29907649/

Eric Lippertの書いてるコードがクソなのか?
それともその認識がクソなのか?
2021/03/04(木) 09:40:02.79ID:s3zRsfeD
ケース・バイ・ケース
2021/03/04(木) 09:49:55.40ID:OjWW0m8I
普通にクソってことでいいんじゃね?
クソだけど処理が小さく、まともにするには
過剰気味な設計が必要になるならそのままにするけど
良いとは思わないけど必要十分
2021/03/05(金) 11:07:38.15ID:zIBx0bjD
短絡的にクソコード認定したがるやつの脳みそがクソってことだよ
>>1のようなプログラマーは自分の見方がクソなのかもしれないと考えられるようにならない限り
いつまでたってもクソプログラマーのまま
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況