このスレはクソコードとは何かを考えるスレです。
・親クラスが子クラスに依存する処理を持つコード
例...社員クラスを継承した正社員クラスと派遣社員クラスがあり、社員クラスが正社員クラスの知識を持つ状況
・staticにするべきではないモデルにまでstaticにする人
例...社員クラスのメソッドを全てstaticにしたり、社員クラスにシングルトンパターンに相応するものを適用する人
等、クソコードを見た時に「あっ、これクソコードだ」って認識する根拠を挙げていきましょう。
探検
クソコードとは何か
■ このスレッドは過去ログ倉庫に格納されています
2021/01/30(土) 17:33:05.78ID:BjNTZWUI
794デフォルトの名無しさん
2021/02/28(日) 04:07:35.88ID:BRDX8bQ+ >>793
うどんか蕎麦で
うどんか蕎麦で
795デフォルトの名無しさん
2021/02/28(日) 04:53:09.79ID:Gc6Q6B7T カレーどんぶり
796デフォルトの名無しさん
2021/02/28(日) 09:53:36.42ID:fiymphDk >>792
みなさんこれがクソコードです
みなさんこれがクソコードです
797デフォルトの名無しさん
2021/02/28(日) 17:33:35.64ID:JGZwcedL 最初は有意義になるかなと思ったのにクソスレになったな
798デフォルトの名無しさん
2021/02/28(日) 17:44:13.70ID:VO7rpKqD799デフォルトの名無しさん
2021/02/28(日) 22:04:12.82ID:AdiQic6X 5chに有意義なことを期待する時点で
800デフォルトの名無しさん
2021/02/28(日) 22:29:20.29ID:HY9f+UaN Qiitaでもクソコード云々言って炎上してる記事があったな
801デフォルトの名無しさん
2021/02/28(日) 23:14:06.43ID:797yScED >>800
試しにクソコードでQiitaを検索してみたがポエムばっかりで面白いのなかったな
↓これが視点としては面白かったけど処理分割のアプローチ間違ってるから新たなクソコードが出来そう
https://qiita.com/teradonburi/items/6483e51d5f9d47f5c22a
試しにクソコードでQiitaを検索してみたがポエムばっかりで面白いのなかったな
↓これが視点としては面白かったけど処理分割のアプローチ間違ってるから新たなクソコードが出来そう
https://qiita.com/teradonburi/items/6483e51d5f9d47f5c22a
802デフォルトの名無しさん
2021/02/28(日) 23:55:31.04ID:VPMHnl/e803デフォルトの名無しさん
2021/03/01(月) 00:40:02.48ID:p4pc8RdJ >>802
アンチパターンを集めたかったんなら
スレタイと1スレをそうなるよう書けって話だろ
アンチパターンとクソコードは全く別物なんだよ
コンテキストを理解してないと言われてる理由と合わせて最低限パターン・ランゲージくらいは学んでこい
ちなみに「いや」から書き始めるレスはクソレス・パターンだからな
アンチパターンを集めたかったんなら
スレタイと1スレをそうなるよう書けって話だろ
アンチパターンとクソコードは全く別物なんだよ
コンテキストを理解してないと言われてる理由と合わせて最低限パターン・ランゲージくらいは学んでこい
ちなみに「いや」から書き始めるレスはクソレス・パターンだからな
804デフォルトの名無しさん
2021/03/01(月) 02:16:03.17ID:6wDZP3ri >>803
君がコミュ障パターンなだけだろ
君がコミュ障パターンなだけだろ
805デフォルトの名無しさん
2021/03/01(月) 02:47:59.87ID:o92pxtgz806デフォルトの名無しさん
2021/03/01(月) 02:51:31.50ID:g6QBZhEL アンチパターンを取り上げてる本でオススメある?
SQLアンチパターンを読んで得るものが多かったので
SQLアンチパターンを読んで得るものが多かったので
807デフォルトの名無しさん
2021/03/01(月) 06:38:18.35ID:6wDZP3ri >>805
ほうクソの定義とは何かね
ほうクソの定義とは何かね
808デフォルトの名無しさん
2021/03/01(月) 06:39:15.47ID:6wDZP3ri マーチン・ファウラーのりファクタリングやろな
809デフォルトの名無しさん
2021/03/01(月) 06:52:02.27ID:6wDZP3ri >>805
おいお前話を広げろ、今のお前は他人のヘイトやってるだけのクソ野郎だからそうじゃないところを見せろ
おいお前話を広げろ、今のお前は他人のヘイトやってるだけのクソ野郎だからそうじゃないところを見せろ
810デフォルトの名無しさん
2021/03/01(月) 06:56:37.18ID:6wDZP3ri あ、間違ってたも
>>805は僕に同意してたわけね
でも僕は敏感な人間だから僕に言われてることだと思った、だけれども紛らわしい言い方した君が悪い、僕は絶対に悪くないからこの件は以後言及することを禁止します、以上
>>805は僕に同意してたわけね
でも僕は敏感な人間だから僕に言われてることだと思った、だけれども紛らわしい言い方した君が悪い、僕は絶対に悪くないからこの件は以後言及することを禁止します、以上
811デフォルトの名無しさん
2021/03/01(月) 07:06:26.34ID:6wDZP3ri 上に出てるパターン・ランゲージってアレクザンダーの都市計画理論だろ、プログラミングの本じゃない、そんなたとえ話のようなものでわかった気になるのは危ない
Twitterでも建築の本読んでオブジェクト指向がどうとか言ってる人いるけどポストモダンなソーカル野郎としか思えないんだよなあ、関係のないことを関係づけてそこに気づいた自分が賢いと思いこんでしまうクルクルパー、地頭の良い人が陥りやすい穴のように見える
Twitterでも建築の本読んでオブジェクト指向がどうとか言ってる人いるけどポストモダンなソーカル野郎としか思えないんだよなあ、関係のないことを関係づけてそこに気づいた自分が賢いと思いこんでしまうクルクルパー、地頭の良い人が陥りやすい穴のように見える
812デフォルトの名無しさん
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
プログラム書法 第2版 / Brian W.カーニハン P.J.Plauger 著 木村 泉 訳 | 共立出版
https://www.kyoritsu-pub.co.jp/bookdetail/9784320020856
813デフォルトの名無しさん
2021/03/01(月) 08:21:42.09ID:VB40xofU プログラミング作法の方が良いと思うよ
814デフォルトの名無しさん
2021/03/01(月) 11:23:05.55ID:vk4XQtG7 中国行くと肛門PCR検査
816デフォルトの名無しさん
2021/03/01(月) 17:40:20.81ID:scPLhEmU817デフォルトの名無しさん
2021/03/01(月) 20:15:47.54ID:XEpCIBIH コードとはまた違うけど
javaのインターフェースとインプリメントはクソだなと思う
無駄にファイル数増えてクソうざい
javaのインターフェースとインプリメントはクソだなと思う
無駄にファイル数増えてクソうざい
818デフォルトの名無しさん
2021/03/01(月) 20:59:56.79ID:lUjHuGPy interfaceがクソってw
オブジェクト指向知らないのではw
オブジェクト指向知らないのではw
819デフォルトの名無しさん
2021/03/01(月) 21:16:55.91ID:4ocrwkuw これだからJava脳はw
言語周りで幼稚な愚痴垂れ流してるやつのJava率の高さったらない
言語周りで幼稚な愚痴垂れ流してるやつのJava率の高さったらない
820デフォルトの名無しさん
2021/03/01(月) 22:39:30.52ID:o/aEg2l/ >>811
GoFのデザインパターンも、ファウラーのリファクタリングも、エリックエバンスのDDDもみんなパターン・ランゲージ
それぞれのパターン・ランゲージに共通する要素は何なのか?
なぜパターンがソフトウェア開発に有用なのか?
この辺を学んで出直してくるといいんじゃね
GoFのデザインパターンも、ファウラーのリファクタリングも、エリックエバンスのDDDもみんなパターン・ランゲージ
それぞれのパターン・ランゲージに共通する要素は何なのか?
なぜパターンがソフトウェア開発に有用なのか?
この辺を学んで出直してくるといいんじゃね
821デフォルトの名無しさん
2021/03/01(月) 22:48:23.51ID:o/aEg2l/ クソコードと言うのは単なるBad Practiceの一種であってアンチパターンとは違うもの
アンチパターンの意味を理解せずにアンチパターンの研究とかまあ無理よね
アンチパターンの意味を理解せずにアンチパターンの研究とかまあ無理よね
822デフォルトの名無しさん
2021/03/01(月) 23:16:44.33ID:vk4XQtG7 >>818
abstractだけでいいって事では?
abstractだけでいいって事では?
823デフォルトの名無しさん
2021/03/01(月) 23:43:38.69ID:f1Pg/hcl C#やるとJavaのいろいろ足りてない部分はめちゃくちゃ実感する
824デフォルトの名無しさん
2021/03/02(火) 00:47:10.90ID:k1c4vJst >>820
君が何を学んだかを教えてよ
君が何を学んだかを教えてよ
825デフォルトの名無しさん
2021/03/02(火) 03:20:46.99ID:9w2EW+ai いちいち2chで教えなくていいから
826デフォルトの名無しさん
2021/03/02(火) 10:54:48.23ID:MXVQCo9F Anti-pattern
https://en.wikipedia.org/wiki/Anti-pattern
https://en.wikipedia.org/wiki/Anti-pattern
827デフォルトの名無しさん
2021/03/02(火) 11:43:32.18ID:sTNRmcJa >>818
そのインターフェース本当に必要?ってのが大半
他クラスとは何も関係無い孤立したクラスなのにインターフェース実装されてるの見たことある?
javaやってる感出すためだけにファイル数が2倍になるゴミ
そのインターフェース本当に必要?ってのが大半
他クラスとは何も関係無い孤立したクラスなのにインターフェース実装されてるの見たことある?
javaやってる感出すためだけにファイル数が2倍になるゴミ
828デフォルトの名無しさん
2021/03/02(火) 12:24:38.24ID:08kau52M 肛門コード
829デフォルトの名無しさん
2021/03/02(火) 12:31:08.45ID:MXVQCo9F >>827
ポリモーフィズム
Storage storage
storage = new USBMemory()
or
storage = new SDCard()
以下、storageを使って読み出し
storage.read()
これができなくなるとか論外
ポリモーフィズム
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();
}
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();
}
831デフォルトの名無しさん
2021/03/02(火) 16:18:47.07ID:sTNRmcJa >>829
そうやって複数クラスで使う前提じゃなくて
自身にしか提供しないくせにインターフェースにするクソコード見ても同じこと言えんの?
その例で言うと
Interface USBMemoryと
Implements USBMemoryImplementsと
Interface SDCardと
Implements SDCardImplementsの4つファイルが作られるんだよ
もちろんStorageクラスなんて作られないからな、覚悟しとけ?
そうやって複数クラスで使う前提じゃなくて
自身にしか提供しないくせにインターフェースにするクソコード見ても同じこと言えんの?
その例で言うと
Interface USBMemoryと
Implements USBMemoryImplementsと
Interface SDCardと
Implements SDCardImplementsの4つファイルが作られるんだよ
もちろんStorageクラスなんて作られないからな、覚悟しとけ?
832デフォルトの名無しさん
2021/03/02(火) 17:22:18.70ID:MXVQCo9F833デフォルトの名無しさん
2021/03/02(火) 17:45:25.68ID:MXVQCo9F 脱線したが、無意味にインタフェースと実装部を分けるクソコードは俺も見たことがある
俺も初心者時代はやらかした事はあったな
無駄にコードが増えるだけでメリットが無いというね
初心者時代は、>>831のコードを書けば
class XXXImplement
から
class XXXImplement2
に乗り換える時が楽だなんて思ってたけど、実際はXXXImplement2なんて作らずにXXXImplementを直接編集してた
変な突っ掛かり方をして悪かったな
俺も初心者時代はやらかした事はあったな
無駄にコードが増えるだけでメリットが無いというね
初心者時代は、>>831のコードを書けば
class XXXImplement
から
class XXXImplement2
に乗り換える時が楽だなんて思ってたけど、実際はXXXImplement2なんて作らずにXXXImplementを直接編集してた
変な突っ掛かり方をして悪かったな
834デフォルトの名無しさん
2021/03/02(火) 17:49:55.29ID:1QjqZlxS 仕様と実装をどこで切り離しておくかという設計選択の話なのでコードだけでは判断できない
>>831のようにインターフェースに対して実装が1種類しかなくてもそれが望ましい状況もあれば望ましくない状況もある
>>831のようにインターフェースに対して実装が1種類しかなくてもそれが望ましい状況もあれば望ましくない状況もある
835デフォルトの名無しさん
2021/03/02(火) 17:59:46.35ID:QgVhfuvD836デフォルトの名無しさん
2021/03/02(火) 18:06:26.23ID:RCz98UPT インターフェース作ってもいいけど同じファイルに押し込んで欲しい
こんなくだらない内容でファイル数が倍は勘弁してほしい
こんなくだらない内容でファイル数が倍は勘弁してほしい
837デフォルトの名無しさん
2021/03/02(火) 18:27:01.85ID:1QjqZlxS >>835
Storageの例と一緒だよ
共通した仕様を使いたいレイヤーと複数の実装を使いわけたいレイヤーがあって
それを分離することで結合度を下げときたい場合の選択肢の一つ
USBの例で言えばSDカードや他のストレージとは異なるUSB特有の仕様に依存したコードを書く必要がある場合に
実装が変更されても利用者側のプログラムを変更しなくてもいいようにしたかったり
複数の実装を実行時に切り替えて使えるようにしておきたい場合
面倒臭さと将来の柔軟性とのトレードオフ
切る場所が適切かどうかは要件次第なのでコードからは判断できない
Storageの例と一緒だよ
共通した仕様を使いたいレイヤーと複数の実装を使いわけたいレイヤーがあって
それを分離することで結合度を下げときたい場合の選択肢の一つ
USBの例で言えばSDカードや他のストレージとは異なるUSB特有の仕様に依存したコードを書く必要がある場合に
実装が変更されても利用者側のプログラムを変更しなくてもいいようにしたかったり
複数の実装を実行時に切り替えて使えるようにしておきたい場合
面倒臭さと将来の柔軟性とのトレードオフ
切る場所が適切かどうかは要件次第なのでコードからは判断できない
838デフォルトの名無しさん
2021/03/02(火) 18:28:28.29ID:k1c4vJst839デフォルトの名無しさん
2021/03/02(火) 18:29:36.21ID:k1c4vJst クラスは分けてなんぼ、理想を言えばメソッドごとにクラスを分けるべき
840デフォルトの名無しさん
2021/03/02(火) 18:36:50.14ID:Ut+tyB9O メソッドごとにクラスを分ける理由は?
841デフォルトの名無しさん
2021/03/02(火) 18:47:13.75ID:cXyQmkET 同じ階層のものがたくさんあると
全体を把握しにくくなるんじゃないかなあ
全体を把握しにくくなるんじゃないかなあ
842デフォルトの名無しさん
2021/03/02(火) 18:48:50.43ID:2RCjcGnL クラス毎にファイルを分ける理由は?
843デフォルトの名無しさん
2021/03/02(火) 18:48:57.53ID:qGFbOGXJ Java脳のレスはインターフェースなくてもオブジェクト指向できるっつう話でしょ
引数に関数をとることでインターフェースの代替にできる時もあるしね
引数に関数をとることでインターフェースの代替にできる時もあるしね
844デフォルトの名無しさん
2021/03/02(火) 18:59:10.26ID:Ut+tyB9O >>842
関連するものの単位が同じだからでは?
関連するものの単位が同じだからでは?
845デフォルトの名無しさん
2021/03/02(火) 19:35:50.44ID:stemNYci >>831
あの例だと
interface IStorageにread()などの必須メソッドを追加
class USBMemory implements IStorage
class SDCard implements IStorage
やろw
Storage抽象クラス又は親クラスで定義してoverrideでもいいけど
設計次第やな
あの例だと
interface IStorageにread()などの必須メソッドを追加
class USBMemory implements IStorage
class SDCard implements IStorage
やろw
Storage抽象クラス又は親クラスで定義してoverrideでもいいけど
設計次第やな
846デフォルトの名無しさん
2021/03/02(火) 19:55:38.87ID:sTNRmcJa >>845
違うんだよなぁw
Interface USBMemory
class USBMemoryImplements implements USBMemory
Interface SDCard
class SDCardImplements implements SDCard
こんなのが爆誕してるというかほぼ全クラスこんなので統一されてる絶望感分かる?
違うんだよなぁw
Interface USBMemory
class USBMemoryImplements implements USBMemory
Interface SDCard
class SDCardImplements implements SDCard
こんなのが爆誕してるというかほぼ全クラスこんなので統一されてる絶望感分かる?
847デフォルトの名無しさん
2021/03/02(火) 20:12:52.16ID:sTNRmcJa >>833
まあ仕様が悪いというより簡単に悪用される実態が問題なんだよね
そのパターンもあるあるやと思ってる
だけどもし仮に2に乗り換えたところで、何かあった時に戻れるようにって無印が残されて結局ファイル数は増える地獄なんだなぁw
まあ仕様が悪いというより簡単に悪用される実態が問題なんだよね
そのパターンもあるあるやと思ってる
だけどもし仮に2に乗り換えたところで、何かあった時に戻れるようにって無印が残されて結局ファイル数は増える地獄なんだなぁw
848デフォルトの名無しさん
2021/03/03(水) 07:45:39.12ID:jQr6IfK5 >>846
テストしやすくて最高じゃないですか
テストしやすくて最高じゃないですか
849デフォルトの名無しさん
2021/03/03(水) 10:51:02.42ID:xzgw1tFV ワクチン効かなくて人類オワタ
850デフォルトの名無しさん
2021/03/04(木) 00:08:07.08ID:FIbtDWBm 親クラスが子クラスに依存する処理を持つコード例
https://stackoverflow.com/a/29907649/
Eric Lippertの書いてるコードがクソなのか?
それともその認識がクソなのか?
https://stackoverflow.com/a/29907649/
Eric Lippertの書いてるコードがクソなのか?
それともその認識がクソなのか?
851デフォルトの名無しさん
2021/03/04(木) 09:40:02.79ID:s3zRsfeD ケース・バイ・ケース
852デフォルトの名無しさん
2021/03/04(木) 09:49:55.40ID:OjWW0m8I 普通にクソってことでいいんじゃね?
クソだけど処理が小さく、まともにするには
過剰気味な設計が必要になるならそのままにするけど
良いとは思わないけど必要十分
クソだけど処理が小さく、まともにするには
過剰気味な設計が必要になるならそのままにするけど
良いとは思わないけど必要十分
853デフォルトの名無しさん
2021/03/05(金) 11:07:38.15ID:zIBx0bjD854デフォルトの名無しさん
2021/03/05(金) 16:16:51.44ID:rOFa7Oz2855デフォルトの名無しさん
2021/03/05(金) 17:34:44.54ID:5bhxQzE4 >>854
クソプログラマー認定も含めて自分の見方がクソかもしれないと考えてないようなら
そいつ自身がクソプログラマーの可能性はそれなりに高いだろうね
ただコードとプログラマーにはクソかどうか判断する基準に決定的違いがある
その決定的違いが分かってないから君はクソプログラマーなんだよ
クソプログラマー認定も含めて自分の見方がクソかもしれないと考えてないようなら
そいつ自身がクソプログラマーの可能性はそれなりに高いだろうね
ただコードとプログラマーにはクソかどうか判断する基準に決定的違いがある
その決定的違いが分かってないから君はクソプログラマーなんだよ
856デフォルトの名無しさん
2021/03/05(金) 18:45:25.18ID:Gcj+sygJ > クソコードを見た時に「あっ、これクソコードだ」って認識する根拠を挙げていきましょう。
スレ主は短絡的にクソコード認定をしていないと思うけど
むしろ、なぜクソコードを見てクソコードだと感じたのか哲学するスレだろ
クソプログラマーの定義とかスレ違いだし、どうでもいいわ
スレ主は短絡的にクソコード認定をしていないと思うけど
むしろ、なぜクソコードを見てクソコードだと感じたのか哲学するスレだろ
クソプログラマーの定義とかスレ違いだし、どうでもいいわ
857デフォルトの名無しさん
2021/03/05(金) 20:45:43.09ID:72RBlbeS >>856
スレ主さんwちーすっ
スレ主さんwちーすっ
858デフォルトの名無しさん
2021/03/05(金) 23:14:44.63ID:6LAcg/yu859デフォルトの名無しさん
2021/03/06(土) 09:14:58.43ID:6IalgJ8T 根本的な原理が分かってない人が意外なぐらい多い
情報の多重化、DRY原則からの逸脱を誘発するものがとにかく駄目
突き詰めればダメなものは間接的でもそこにつながっているから被害を受けるのだと分かる
いろんなデザインパターンなんて結局は
いろんな状況でDRYを遵守する手練手管が99%だろう
重複実装も必要な時があるが
どんなものをどんな風に重複させるかで
状況はかなり異なるので短絡的な判断は禁物
1が言ってる一つ目の例は
もっと文脈をはっきりさせないと
何がクソなのか断定出来ないし
これで伝わると思ってるなら難アリ
情報の多重化、DRY原則からの逸脱を誘発するものがとにかく駄目
突き詰めればダメなものは間接的でもそこにつながっているから被害を受けるのだと分かる
いろんなデザインパターンなんて結局は
いろんな状況でDRYを遵守する手練手管が99%だろう
重複実装も必要な時があるが
どんなものをどんな風に重複させるかで
状況はかなり異なるので短絡的な判断は禁物
1が言ってる一つ目の例は
もっと文脈をはっきりさせないと
何がクソなのか断定出来ないし
これで伝わると思ってるなら難アリ
860デフォルトの名無しさん
2021/03/06(土) 11:40:20.85ID:3bUl0e7x そもそもデザインパターンみたいなのは、こうすれば良いのでは?みたいな物だし
正直そういう所から入った層よりは、ある程度組めるようになってから見て納得出来た方が良いかと
つまりは最初に読むものでは無いと
正直そういう所から入った層よりは、ある程度組めるようになってから見て納得出来た方が良いかと
つまりは最初に読むものでは無いと
861デフォルトの名無しさん
2021/03/06(土) 12:21:11.27ID:x8WQCH58 バックグラウンドとデザパタへの反応
複雑でも無く大きくも無いプログラムで遊んでた人
→自分のコードに対してデザパタの概念が大きい
→無意味にデザパタ導入してコード無意味に膨らます
→あるいはデザパタは無価値だと騒ぎ出す
ある程度複雑で大きいものを作ろうとして糞の山量産した人
→自分のコードに対してデザパタの概念が小さい
→デザパタ導入して部分的に見通し良く場面が見える
→必要に応じてデザパタを無言で使用
複雑でも無く大きくも無いプログラムで遊んでた人
→自分のコードに対してデザパタの概念が大きい
→無意味にデザパタ導入してコード無意味に膨らます
→あるいはデザパタは無価値だと騒ぎ出す
ある程度複雑で大きいものを作ろうとして糞の山量産した人
→自分のコードに対してデザパタの概念が小さい
→デザパタ導入して部分的に見通し良く場面が見える
→必要に応じてデザパタを無言で使用
862デフォルトの名無しさん
2021/03/06(土) 12:47:09.63ID:2s/lB21T オブジェクト指向を理解するにはデザインパターンを理解するのが近道
言語の基本文法を学んだ後すぐデザインパターンを学ぶと上達がはやい
パターン熱にかかるのも早い方がいい
言語の基本文法を学んだ後すぐデザインパターンを学ぶと上達がはやい
パターン熱にかかるのも早い方がいい
863デフォルトの名無しさん
2021/03/06(土) 14:22:35.38ID:pd/Aiz5V デザインパターンとオブジェクト指向は全く別。
864デフォルトの名無しさん
2021/03/06(土) 14:29:20.30ID:9ME8iPe/ >>863
GoFのデザインパターンのことだぞ
GoFのデザインパターンのことだぞ
865デフォルトの名無しさん
2021/03/06(土) 19:16:45.22ID:TUaJ1ME0866デフォルトの名無しさん
2021/03/06(土) 20:23:40.52ID:MNqEIsM4 そう言えば「名前がクソ」というクソパターンは
DRYとあまり関係ないな
あまりに基本過ぎて盲点だった
使ってる言葉や概念がそもそもおかしいのは
あまりに基本的な問題だが一番有りがちかもしれない
特に日本では戯言過ぎて英訳なんか不可能なぐらいの
曖昧模糊とした言葉を話す人が多いので…
コードを書くずっと前から間違ってることが多い
DRYとあまり関係ないな
あまりに基本過ぎて盲点だった
使ってる言葉や概念がそもそもおかしいのは
あまりに基本的な問題だが一番有りがちかもしれない
特に日本では戯言過ぎて英訳なんか不可能なぐらいの
曖昧模糊とした言葉を話す人が多いので…
コードを書くずっと前から間違ってることが多い
867デフォルトの名無しさん
2021/03/06(土) 20:54:37.19ID:/fxEYj1Q コードがクソかどうかはコードを見ただけでは判断できない
一見名前がクソっぽくても本当にクソなのかどうかは分からない
一見名前がクソっぽくても本当にクソなのかどうかは分からない
868デフォルトの名無しさん
2021/03/06(土) 20:58:25.37ID:Q5bee5g2 コードを見る以外の何をやって判断するんだ?
煮るのか焼くのか食べるのか?
煮るのか焼くのか食べるのか?
869デフォルトの名無しさん
2021/03/06(土) 21:00:04.77ID:pd/Aiz5V マウントスレ
870デフォルトの名無しさん
2021/03/06(土) 21:08:34.97ID:BLtO+LoM 重複には悪性のものとそうでないものがある
明らかに悪性なものの見極めは簡単だかそうでないものは重複を除去すべきかどうかそう簡単には見極められない
accidental duplicationなのかactual duplicationか
重複を除去して抽象化することが望ましい状況なのかどうか
最低でもこの2点の判断が必要
明らかに悪性なものの見極めは簡単だかそうでないものは重複を除去すべきかどうかそう簡単には見極められない
accidental duplicationなのかactual duplicationか
重複を除去して抽象化することが望ましい状況なのかどうか
最低でもこの2点の判断が必要
871デフォルトの名無しさん
2021/03/07(日) 00:51:19.68ID:1+EXA2lk 片方だけの変更が妥当なら良性、両方に変更を入れないとダメなら悪性、ぐらいでだいたい見分けられるんじゃね?
872デフォルトの名無しさん
2021/03/07(日) 01:45:46.06ID:TO18Vm5t 例えばこれ
https://mevius.5ch.net/test/read.cgi/tech/1610137345/570
似たようなこと3回繰り返してるけど重複を除去すべきかどうか?
除去すべきならどうリファクタリングするか?
https://mevius.5ch.net/test/read.cgi/tech/1610137345/570
似たようなこと3回繰り返してるけど重複を除去すべきかどうか?
除去すべきならどうリファクタリングするか?
873デフォルトの名無しさん
2021/03/07(日) 18:09:07.95ID:6RHLTJ16 具体的なコードが出てくると途端にヒヨるマウントスレ民
874デフォルトの名無しさん
2021/03/07(日) 19:18:29.31ID:HPgG7LJK ゴミみたいに細かい問題
知るかボケ
知るかボケ
875デフォルトの名無しさん
2021/03/07(日) 20:58:32.09ID:FZPehcc/876デフォルトの名無しさん
2021/03/08(月) 08:06:44.01ID:Q93ekmxF それは要件次第って言えてしまうからなあ
関数作れない時もあるし、仮に1回でも要件で拡張の余地をとか言われたら関数にしなきゃだし
クソコードって分かってもそうしなきゃいけないときもある
関数作れない時もあるし、仮に1回でも要件で拡張の余地をとか言われたら関数にしなきゃだし
クソコードって分かってもそうしなきゃいけないときもある
877デフォルトの名無しさん
2021/03/08(月) 09:04:47.24ID:ca4xsibi 関数化すらしないやつがいるのはちょっと驚き
このケースで関数化する動機は繰り返し同じことをしてるからというより意図を明確にするため
行数やbreakの有無みたいな表面的な形よりも意味が重要なので
この書き方が組織内で標準化されてる等の特殊な理由がない限り関数化する
ループにするかどうかは処理順序やcssをコードに固定化すべき状況なのかどうかによる
これも形じゃなく意味
使い捨てじゃなく長期的にメンテするコードで
hrml要素の検索順や検索条件をコードに固定化したほうが望ましい状況は少ない
このケースで関数化する動機は繰り返し同じことをしてるからというより意図を明確にするため
行数やbreakの有無みたいな表面的な形よりも意味が重要なので
この書き方が組織内で標準化されてる等の特殊な理由がない限り関数化する
ループにするかどうかは処理順序やcssをコードに固定化すべき状況なのかどうかによる
これも形じゃなく意味
使い捨てじゃなく長期的にメンテするコードで
hrml要素の検索順や検索条件をコードに固定化したほうが望ましい状況は少ない
878デフォルトの名無しさん
2021/03/08(月) 09:23:46.71ID:zo5oau9O でも関数って勝手に作ったらまずい現場もあるよね
879デフォルトの名無しさん
2021/03/08(月) 10:14:50.71ID:1B2qwCXx880デフォルトの名無しさん
2021/03/08(月) 11:50:19.86ID:u4CRr3CF 全然控えめに言ってない件
881デフォルトの名無しさん
2021/03/08(月) 13:51:58.27ID:pnlhyJpZ 作らせないってのもあると思うな
MSDNはドキュメントあるけど
派遣社員ってドキュメント書かないじゃん
ドキュメントないメソッドなら作らんほうがマシになるときもある
MSDNはドキュメントあるけど
派遣社員ってドキュメント書かないじゃん
ドキュメントないメソッドなら作らんほうがマシになるときもある
882デフォルトの名無しさん
2021/03/08(月) 14:37:36.32ID:Amm+J3oO883デフォルトの名無しさん
2021/03/08(月) 14:40:37.46ID:Amm+J3oO ドキュメント必須のレイヤーとドキュメントは任意で十分なレイヤーがあるから
全部同じ扱いをするのは非効率
コーディング規約と同様に指針を決めておくのが普通
全部同じ扱いをするのは非効率
コーディング規約と同様に指針を決めておくのが普通
884デフォルトの名無しさん
2021/03/08(月) 20:18:45.16ID:pnlhyJpZ >>882
( ゚д゚)あ、お金ないんでいいです
( ゚д゚)あ、お金ないんでいいです
885デフォルトの名無しさん
2021/03/08(月) 20:20:53.39ID:C8XgJIOz ドキュメント間違えるし、イラネ
886デフォルトの名無しさん
2021/03/08(月) 21:04:02.65ID:iO7qg9sm >>884
金の使い方間違ってるw
金の使い方間違ってるw
887デフォルトの名無しさん
2021/03/09(火) 08:13:13.98ID:DXzi7WCn ドキュメントはちゃんとメンテしないとむしろ害を及ぼすよ
888デフォルトの名無しさん
2021/03/09(火) 09:22:23.90ID:1va3W7Si メンテと言ってる時点でおかしいんだよね
本来はドキュメント変更してからコード直すべき
まあ不具合対策とかでいちいちドキュメントまで直してられっかって言うのはよくあるけど…
本来はドキュメント変更してからコード直すべき
まあ不具合対策とかでいちいちドキュメントまで直してられっかって言うのはよくあるけど…
889デフォルトの名無しさん
2021/03/09(火) 09:35:33.69ID:p4cuNQqC ドキュメントを修正するのは不可能
すでにそれでOKがでてるんだから
すでにそれでOKがでてるんだから
890デフォルトの名無しさん
2021/03/09(火) 10:35:41.16ID:B9Z9HiJ8 関数化すべき
→勝手に関数作れないもん
→関数作ったらドキュメントが必要になるもん
→作ったドキュメント維持できないもん
コードを評価する方法よりも職場やプログラマーを評価する方法を身につけた方が
圧倒的に効率よくクソを避けられるといういい見本だな
→勝手に関数作れないもん
→関数作ったらドキュメントが必要になるもん
→作ったドキュメント維持できないもん
コードを評価する方法よりも職場やプログラマーを評価する方法を身につけた方が
圧倒的に効率よくクソを避けられるといういい見本だな
891デフォルトの名無しさん
2021/03/09(火) 11:18:33.87ID:R+x4GEwc このスレで得られた教訓
クソプログラマーが「こういうコードはクソ」と言った場合、十中八九その認識のほうがクソ
クソプログラマーが「こういうコードはクソ」と言った場合、十中八九その認識のほうがクソ
892デフォルトの名無しさん
2021/03/09(火) 11:48:27.03ID:2IS/A2ze893デフォルトの名無しさん
2021/03/09(火) 13:02:45.11ID:DvrveGIe >>889
その理論でいくとコード修正するのも不可能では?
その理論でいくとコード修正するのも不可能では?
894デフォルトの名無しさん
2021/03/09(火) 15:30:47.03ID:MbPysK70 >>891
それはわかる
それはわかる
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★4 [ぐれ★]
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★5 [ぐれ★]
- 【速報】高市総理が官邸入り [Hitzeschleier★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 高市内閣「支持」64%「不支持」19% NHK世論調査 ★2 [少考さん★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- 【誕生日】皇后さま、62歳「過去の歴史から謙虚に学び、平和の尊さを忘れず、平和を守るために必要なことを考え、etc」高市「」 [979264442]
- 日本人「アメリカ人が作れるなら自分も作れると思った」→銃密造で逮捕 [834922174]
- ぺこーら、地震で同僚が次々配信を止めるなか強行し続けるので悪目立ちするwww [268244553]
- 巨大地震 [957955821]
- 早く世界滅べ
- 【速報】高市早苗、起床 [779938112]
