クソコードとは何か

レス数が950を超えています。1000を超えると書き込みができなくなります。
2021/01/30(土) 17:33:05.78ID:BjNTZWUI
このスレはクソコードとは何かを考えるスレです。

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

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

等、クソコードを見た時に「あっ、これクソコードだ」って認識する根拠を挙げていきましょう。
2021/03/08(月) 10:14:50.71ID:1B2qwCXx
>>878
そういうのが特殊な理由

Pythonのような高レベル言語使ってるのに
ヘルパー関数を自由に作らせないのは控えめ言って異常だけどな
2021/03/08(月) 11:50:19.86ID:u4CRr3CF
全然控えめに言ってない件
2021/03/08(月) 13:51:58.27ID:pnlhyJpZ
作らせないってのもあると思うな
MSDNはドキュメントあるけど
派遣社員ってドキュメント書かないじゃん
ドキュメントないメソッドなら作らんほうがマシになるときもある
2021/03/08(月) 14:37:36.32ID:Amm+J3oO
>>881
ドキュメントが必要だと思うなら書いてもらえばいいだけでは?
必要なドキュメントをきちんと書かせないのは依頼主の責任
2021/03/08(月) 14:40:37.46ID:Amm+J3oO
ドキュメント必須のレイヤーとドキュメントは任意で十分なレイヤーがあるから
全部同じ扱いをするのは非効率

コーディング規約と同様に指針を決めておくのが普通
2021/03/08(月) 20:18:45.16ID:pnlhyJpZ
>>882
( ゚д゚)あ、お金ないんでいいです
885デフォルトの名無しさん
垢版 |
2021/03/08(月) 20:20:53.39ID:C8XgJIOz
ドキュメント間違えるし、イラネ
2021/03/08(月) 21:04:02.65ID:iO7qg9sm
>>884
金の使い方間違ってるw
2021/03/09(火) 08:13:13.98ID:DXzi7WCn
ドキュメントはちゃんとメンテしないとむしろ害を及ぼすよ
2021/03/09(火) 09:22:23.90ID:1va3W7Si
メンテと言ってる時点でおかしいんだよね
本来はドキュメント変更してからコード直すべき
まあ不具合対策とかでいちいちドキュメントまで直してられっかって言うのはよくあるけど…
2021/03/09(火) 09:35:33.69ID:p4cuNQqC
ドキュメントを修正するのは不可能
すでにそれでOKがでてるんだから
2021/03/09(火) 10:35:41.16ID:B9Z9HiJ8
関数化すべき
→勝手に関数作れないもん
→関数作ったらドキュメントが必要になるもん
→作ったドキュメント維持できないもん


コードを評価する方法よりも職場やプログラマーを評価する方法を身につけた方が
圧倒的に効率よくクソを避けられるといういい見本だな
2021/03/09(火) 11:18:33.87ID:R+x4GEwc
このスレで得られた教訓

クソプログラマーが「こういうコードはクソ」と言った場合、十中八九その認識のほうがクソ
2021/03/09(火) 11:48:27.03ID:2IS/A2ze
>>891
>>1を見ただけで得られる教訓じゃん
2021/03/09(火) 13:02:45.11ID:DvrveGIe
>>889
その理論でいくとコード修正するのも不可能では?
2021/03/09(火) 15:30:47.03ID:MbPysK70
>>891
それはわかる
895デフォルトの名無しさん
垢版 |
2021/03/09(火) 17:44:05.23ID:sQfPg4KP
引き継ぎしてドキュメントを読む。
ソースをあまり読まずに修正する。
ドキュメントを直す。
システムが死ぬ。
2021/03/09(火) 17:51:26.17ID:JYZP+6rB
>>893
コードは最終工程なので動かなければバグとして修正される
ドキュメントは動かなくても、コードを直せば動くので
ドキュメントの修正をする必要はない
2021/03/09(火) 18:19:39.56ID:tZmYicyt
>>888
コードがテストされるまで設計フェーズは終わらないので
その後のフィードバックで設計書の修正は当然
他のエンジニアリング分野で言う「製造」は
コンパイラとリンカーがやってしまうのであり
実装という実験によって設計の妥当性が証明されるまで
設計は終わらない
898デフォルトの名無しさん
垢版 |
2021/03/09(火) 20:20:33.28ID:sQfPg4KP
ロジックをドキュメント化するのは無駄。
コード読んで分からないものに手を入れてはいけない。
2021/03/09(火) 21:37:12.31ID:J60abFGc
>>891
このスレを見返してみると「こういうコードはクソ」というレスが15〜16あった
その中で「確かにそれはクソだな」と思ったのは1つだけ
それ以外は・・・
900デフォルトの名無しさん
垢版 |
2021/03/09(火) 22:03:20.61ID:qz7mFwyh
竹内関数は糞か否か。
2021/03/10(水) 02:31:32.15ID:hjUELKdd
どういう人が書いたのがわからんのが問題だと思う
バカが書いたとか間違ってるのが断定できればなんとかできるもん
2021/03/10(水) 13:29:27.14ID:hr2yGgcj
竹内関数は、WEB+DB vol.121 のRuby 3 特集で、
平行・並列処理、Ractor のベンチマークで使っている

マルチコア用の並列処理は、まだ数年は掛かりそう
2021/03/10(水) 15:29:31.30ID:eQWG2ihY
>>900
竹内関数は関数の仕様を定義したものなので
コードではなく仕様がクソかどうかという話になる
それはクソコードかどうかという話とは少し種類が違う
904デフォルトの名無しさん
垢版 |
2021/03/11(木) 15:58:20.83ID:2k6w0W90
まずは、使われない無駄なコードを減らして欲しい!

「無駄だらけのプログラムを効率化して、1万行→500行に。それを見た上司が激怒して『あいつは三流』と言いふらし始めました」(エンジニア・50代男性)
2021年1月26日 06:00
https://j-town.net/tokyo/column/allprefcolumn/317613.html?p=all
905デフォルトの名無しさん
垢版 |
2021/03/11(木) 16:00:27.63ID:2k6w0W90
とくぎ「パニパニハニー」を完全抹消コメント 1件

アイミョン
[KS108-054]
テーマ:キャラクター育成・強化2020/06/14 06:15
宝珠「パニパニハニーの技巧」とか、不要なオブジェクトは煩わしく誤動作の原因にもなります。
こうした旧バージョンのゴミは片づけて整理して、コマンド表示をわかりやすくしてほしいです。

https://i.imgur.com/IReXk4Q.png
2021/03/11(木) 16:31:29.74ID:4TSgT5Rn
>>904
50代にもなってこんな所でしょうもない憂さ晴らししてるほうもたいがいやな
907デフォルトの名無しさん
垢版 |
2021/03/11(木) 16:59:27.28ID:UhH3pQhX
>>904
条件分岐するたびに重複コードを書く初心者は必ずいる。サブルーチンの概念がないというよりは、変数の使い方がおかしいのが最大の理由だと思う。
908デフォルトの名無しさん
垢版 |
2021/03/11(木) 17:02:40.39ID:UhH3pQhX
プログラムもドキュメントも常に作りかけかと思う物を作る50代を知っている。
2021/03/11(木) 17:52:20.82ID:gBp5uuCV
ひな形とかサブルーチンって言葉が古めかしいよな
2021/03/11(木) 19:01:33.97ID:8a+EQRp9
サブルーチン=クソコードだよ
関数は原則として引数から戻り値を求めるものでテストが容易
もちろん副作用をもった関数もあるけど、わざわざ副作用と言ってるように
副作用は避けるべきものとして考えられてる

サブルーチンは戻り値がなく副作用がメイン
コードの責務とか考えなしに、似たようなコードがあったら
とりあえずサブルーチンにまとめちゃえってなる
その結果テストが容易ではなくなる
2021/03/11(木) 19:19:47.26ID:ifNxw6Pa
サブルーチンと関数を別キーワードで定義&コールするFortran流もありだと思うけどなあ
2021/03/11(木) 20:17:42.11ID:eJfNLsOm
>>910
クソプログラマーが「こういうコードはクソ」と言った場合、十中八九その認識のほうがクソ

サンプルが追加されたな
2021/03/11(木) 20:20:56.37ID:8a+EQRp9
クソプログラマーではないのでそれは当てはまらない
2021/03/11(木) 20:37:19.04ID:dIdzHpoo
クソプログラマーは自分がクソだという自覚ができない
自覚ができないからこそクソプログラマーとして生き続ける
2021/03/11(木) 21:26:53.63ID:sZRHwddG
>>910
サブルーチンに戻り値はないというのは勝手な思い込み
プログラミングにおける副作用という言葉は薬の副作用や副反応と違って一般的に望ましくないものという意味は全く無い

主張の中心となる用語をよく理解せず勝手な思い込みでオレオレ理論をふりかざすやつがクソプログラマーでなくなんなのだろうか?
自分の認識が間違ってるかもしれないとは考えないクソプログラマーの特徴がよく表れている
2021/03/11(木) 23:23:42.46ID:wuP7cLri
関数呼び出しは遅いから関数しか無いCは使えないという恐ろしいFortran使いが結構たりするけどな…
2021/03/11(木) 23:38:43.29ID:wuP7cLri
まあインライン化やマクロ駆使してオーバーヘッド削ったCよりは絶対読みやすいので、一理ないこともない
2021/03/12(金) 00:52:41.16ID:IfpuCZI8
今時FORTRAN使いとかいるのか・・・
どこで使っているんだ?w
2021/03/12(金) 03:40:10.66ID:pvW782MA
理学系とか今でもFORTRANらしい
2021/03/12(金) 03:51:45.30ID:iCE7eqEI
たぶんおじさんの想像するFORTRANとは随分違う言語だぞ
2021/03/12(金) 08:06:40.57ID:6WY1VkSt
>>918
母数がわからんけど、HPC分野だとまだまだFORTRAN優位

次世代スパコン「富岳」の重点課題で開発するアプリのうち,Fortranでないのは一つだけ.
https://qiita.com/implicit_none/items/ad4c556c043a91fa0dc4
2021/03/12(金) 10:14:24.86ID:Nf3fOkm/
Fortran2018?
2021/03/12(金) 11:45:41.06ID:zHGwFDvl
サブルーチン・副作用は、状態を持つから、ややこしい。
Ruby 3 のマルチコア並列処理・Ractor でも問題になっている

状態を持つと、共有変数の排他処理が難しいから、
関数型のElixir みたいに、immutable にしないといけない
924デフォルトの名無しさん
垢版 |
2021/03/12(金) 14:09:01.67ID:jKVaeyDL
デッドコードは、見つけて、取り除く必要がある。デッドコードを残しておくと、プログラマの理解と行動を
妨げることがあり、コードが実行されて、重大な問題を引き起こすリスクもある。 デッドコードの削除は、
技術的な問題ではない。Kevlin Henney氏によると、それは考え方と文化の問題だ。
https://www.infoq.com/jp/news/2017/03/dead-code/
925デフォルトの名無しさん
垢版 |
2021/03/12(金) 14:22:11.99ID:b9Kr93A5
仕様変更でなくてもよくなった箇所は、削除より、いったんコメントアウトで対処した方がいい。外国人はコードを変えて失敗する能天気だから、あいつらの言うことに従ってはいけない。
2021/03/12(金) 14:26:53.48ID:C5Hfq1un
>>925
VCS使えよ
2021/03/12(金) 14:35:41.22ID:6WY1VkSt
>>925
いつの時代の人だよw
928デフォルトの名無しさん
垢版 |
2021/03/12(金) 16:44:55.70ID:b9Kr93A5
必ずそういうことを言い出すやつがいるが、経験不足だと思うよ。いちいち見比べる方が効率が悪い。
929デフォルトの名無しさん
垢版 |
2021/03/12(金) 16:48:44.73ID:b9Kr93A5
すぐに削除しない方がいいと書いてあるのに、早とちりさんが多いね。
2021/03/12(金) 17:02:54.30ID:6WY1VkSt
>>928
> いちいち見比べる方が効率が悪い。
差分ツールも知らない爺乙
931デフォルトの名無しさん
垢版 |
2021/03/12(金) 17:19:15.11ID:7Crflr6r
見比べている自分の光景を想像しろ
932デフォルトの名無しさん
垢版 |
2021/03/12(金) 17:34:39.00ID:7Crflr6r
削除するなとは言ってない。ガンガン削除してもいいが、残ったコード内でこう作った意図がわからなくなるくらいなら、システムの作り直しの時点で変えるべきた。

元のデッドコードの話自体は初心者の話だし、コードの書き換えに躊躇がなく、バグだらけにするのは外国人に多いわけで、有名な製品をアップデートするとおかしくなる最大の理由。
2021/03/12(金) 17:41:07.46ID:EKGXILxS
外国人のフリして逃げる
934デフォルトの名無しさん
垢版 |
2021/03/12(金) 18:44:33.92ID:Jts8n3aI
クソコードとは俺が書いたコード
935デフォルトの名無しさん
垢版 |
2021/03/12(金) 18:52:31.32ID:0g8W4jPs
またまたご謙遜を。
936デフォルトの名無しさん
垢版 |
2021/03/12(金) 19:22:54.23ID:7Crflr6r
オープンソースはかなりの確率でクソコード
937デフォルトの名無しさん
垢版 |
2021/03/12(金) 19:44:02.10ID:HsBsGhC6
YAGNI (You Ain’t Gonna Need It) 直訳は「そんなモン要らんって!」
YAGNIの原則は「機能は実際に必要となるまでは追加しないのがよい」とすること。後で使うだろうという
予測の元に作っても、実際に使われるのはほんの一部。ソフトウェア実装において「予期しない変更」は常
についてまわり、できるだけ設計をシンプルにするべき。現実の問題に集中して余計なモノを足さない。
それがヤーグニ。
https://www.jabba.cloud/20180119204314/
938デフォルトの名無しさん
垢版 |
2021/03/12(金) 19:56:22.98ID:b9Kr93A5
業務システムにはあてはまらない。
939デフォルトの名無しさん
垢版 |
2021/03/12(金) 19:58:56.77ID:b9Kr93A5
>>937
仕様変更を想定しないといけないとわかっていながら、そのときの仕様で最適化するのは、その方が周囲から理解をえやすいから。
2021/03/12(金) 20:31:43.28ID:47v6/wL7
おまえヤベェわ
さすがクソプログラマースレ
941デフォルトの名無しさん
垢版 |
2021/03/12(金) 21:37:32.87ID:b9Kr93A5
外国人の言うことをありがたがっているようでは話にならない。
942デフォルトの名無しさん
垢版 |
2021/03/12(金) 21:37:59.65ID:HsBsGhC6
>クソコードとは何か

スマホ アプリの6割未利用!不要なアプリの大量保有はバッテリー消耗の一因。不要アプリは定期的に削除を。
https://prtimes.jp/main/html/rd/p/000000049.000005362.html

Androidスマホのキャリアアプリが1GB以上データ通信!?削除・無効化できるアプリ一覧
https://sp1.jp/career-appli/
943デフォルトの名無しさん
垢版 |
2021/03/13(土) 09:00:19.17ID:rQmPEF49
詫びソースコードコメント 1件

アイミョン
[KS108-054]
テーマ:冒険者の広場・DQXショップ2020/02/17 16:22
今月になってから急にシステム障害が多発しており、運営としては説明責任を果たすべきと考えます。

https://hiroba.dqx.jp/sc/news/category/3/

不具合を出した個所とその修正箇所の両方を「詫びソースコード」として開示するのです。
ソースコードも企業の重要な著作物ですが、だからこそ開示して詫びることが大切です。
それと同時にシステムの不具合がなぜ多発しているのかを、プレイヤーも一緒に考えるのです。
バンダイナムコゲームスの『ドラゴンボールZ ドッカンバトル』を見習うべきです。


https://i.imgur.com/s2RHkxT.png
944デフォルトの名無しさん
垢版 |
2021/03/13(土) 09:18:08.62ID:tBGlpruK
キチガイだなw
2021/03/13(土) 10:00:15.70ID:7EYMzEJd
スタッフの大人の対応w
946デフォルトの名無しさん
垢版 |
2021/03/14(日) 09:42:47.84ID:BsjTGNRz
ここに書かれた罵詈雑言と不要な議論の文字列
これがまさにクソコードだ
2021/03/14(日) 10:12:49.00ID:nT6f8vWc
>>921
2008以降になるとまともな和書殆ど無いよな、Amazonで見たら★2でわろた
英語なら20冊くらい引っかかって高評価だけど学術系出版社だから¥10000〜
俺もコンパイラマニュアルしか読んでないわ
948デフォルトの名無しさん
垢版 |
2021/03/14(日) 10:29:30.32ID:u05Cu7nI
クソコードの例

変数を取り違えて値を設定し、途中で本来の値を設定し直すコードが存在する。
2021/03/14(日) 11:56:43.59ID:NVyYwYtr
>>948
デッドコードの一種だね

値を取り違えて設定してることや
本来の値を設定し直してることが分かるようなら
たいしたクソではなさそう
2021/03/14(日) 12:25:06.62ID:mqW1umpN
フォートラン並みの配列演算記述ができるJuliaやPython/scipyが出てきたから、ガチる人以外はそっちに流れたんだろ
Matlabもフォートラン並みに高級だけどかなり高いし、プラットフォームが限られる
特にJuliaはCじゃなくフォートランの慣習に合わせてるし移行の敷居が低い
2021/03/14(日) 13:50:22.02ID:IL1Rx7pe
Matlab, R → Python → Julia

Matlab, Rは、もうダメ。
MIT は、Julia へ行ってる
952デフォルトの名無しさん
垢版 |
2021/03/14(日) 19:53:13.79ID:u05Cu7nI
>>949
10万行のコードを解析してわかったことだけどね。
2021/03/14(日) 21:04:29.30ID:FTgLqn2Y
>>11
constくそワロタ
2021/03/14(日) 22:59:16.59ID:SWD4O/qm
>>952
それがほんとなら根本の問題は別の所にあるよね

根本原因を究明できて再発防止策がとれたなら役に立ったクソコードということになる
2021/03/15(月) 07:24:19.90ID:AgY39MSU
>>953
なぜconstがダメなの?
2021/03/15(月) 08:19:07.60ID:unBa9C5h
覗いただけだけどテストコード不要論を唱えるプログラマがこの世に存在するとはな..
プログラマつっても世の中には色んな奴いるんだな
2021/03/15(月) 09:06:01.57ID:wTgsCYbG
>>955
JS知らないやつだからほっといてあげて
2021/03/15(月) 09:50:06.58ID:d7wExFeq
>>956
いやいらんでしょ
そのテストコードのテストはしなくてレビューでとか言ってる奴いたけど(笑)
結局それが正しいとはなぜ言えるのか?
959デフォルトの名無しさん
垢版 |
2021/03/15(月) 10:14:52.08ID:hBbAwZTG
テストコードがかなりのプログラムだとしらないやつがいるから仕方ない。
2021/03/15(月) 10:27:24.28ID:0wiZhmNk
>>958
正しいと言える必要なんてないからね
テストの基本
2021/03/15(月) 10:39:05.01ID:unBa9C5h
そもそもテストって想定どうりの動きをしてくれるかを確かめる為に書くんでしょ
テストコードなんて書く必要ないと思うならそれでいいし、テストなんて手動でいいと思ってる現場と規模感ならそれでいいんじゃない?
2021/03/15(月) 10:52:20.05ID:unBa9C5h
あとテストコードのテストって何?
テストコードを走らせて想定通りに動けば完了だよ
コードレビューはするでしょう
テストコードのテストコードを書けよという意味で言ったの?
2021/03/15(月) 11:44:06.79ID:bRJV5TtK
>>958
>>255に論理的に反論してみ
2021/03/15(月) 13:03:04.99ID:QmxS+DUu
>>961
テストは手動でいい・・・現場の方針でしかない
自動テストしないと再テストに時間がかかる・・・事実


再テストに時間がかかるがテストは手動でやる・・・アホな現場の方針でしかない
というだけだよ
2021/03/15(月) 13:32:11.56ID:d7wExFeq
>>963
その程度のことデバッグすれば分かるやん
テストコードを書くだけ無駄
2021/03/15(月) 13:37:22.63ID:QmxS+DUu
>>965
一回のデバッグの時間はどれくらいですか?
2021/03/15(月) 13:50:21.56ID:QmxS+DUu
もう降参かな?テストをしないでデバッグだけしてると
時間が膨大にかかるからねw

なによりテストしてないってことだから
エンバグしたことがわからない
2021/03/15(月) 13:52:10.06ID:bRJV5TtK
>>965
例えば千項目毎回テストするの?
そんな項目数がないような小規模案件ならなくてもいいかもねw
まさかリグレッションテストは不要だっていう主張なのかな?
2021/03/15(月) 13:58:05.35ID:QmxS+DUu
>>968
落ち着け。>>964はデバッグすると言ってる
テストしないでデバッグだけするんだ

テストはしないからテスト時間は0なのだ
やつはテストしないで製品をリリースしてるんだよ!
そしてバグが見つかったときに製品をリコールしてるんだよ
やつは組み込み系開発者だからな
2021/03/15(月) 14:47:18.91ID:uytQvjo+
世の中いろんな人がいるんだねえ
2021/03/15(月) 16:09:37.60ID:C+0mdEfW
テストコード組むのが上手いヤツはクラッカーに向いてる
972デフォルトの名無しさん
垢版 |
2021/03/15(月) 19:12:39.86ID:m9WM8q4q
テストは甘えと、あわしろ氏が言ってたけどな。

間違えなければテストする必要が無い。
2021/03/15(月) 19:26:48.17ID:QmxS+DUu
間違えなければテストする必要が無い。
そしてテストしなければ間違えたことがわからないのだ

「バグは見つかりませんでした!」
974デフォルトの名無しさん
垢版 |
2021/03/15(月) 19:32:28.24ID:m9WM8q4q
テストするってことは間違える前提で書いてるんだろ?

甘えすぎだわ。
2021/03/15(月) 19:35:41.62ID:QmxS+DUu
マジそれ

事故る前提で車を乗ってるやつが多すぎ
2021/03/15(月) 20:08:51.50ID:+SM2oHa/
自動テストは適当で良い、どうせバグはない
2021/03/15(月) 20:10:26.44ID:+SM2oHa/
それよりも手動の総合テストを頑張ったが良い、自動テストはコーダの自己満でしかない、ユーザと向き合ってないコミュ症の底辺がやること
2021/03/15(月) 20:11:36.50ID:+SM2oHa/
俺たちはシステムをデザインしてるんだという大局感が大事
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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