クソコードとは何かat TECH
クソコードとは何か - 暇つぶし2ch818:デフォルトの名無しさん
21/03/01 06:52:02.27 6wDZP3ri.net
>>805
おいお前話を広げろ、今のお前は他人のヘイトやってるだけのクソ野郎だからそうじゃないところを見せろ

819:デフォルトの名無しさん
21/03/01 06:56:37.18 6wDZP3ri.net
あ、間違ってたも
>>805は僕に同意してたわけね
でも僕は敏感な人間だから僕に言われてることだと思った、だけれども紛らわしい言い方した君が悪い、僕は絶対に悪くないからこの件は以後言及することを禁止します、以上

820:デフォルトの名無しさん
21/03/01 07:06:26.34 6wDZP3ri.net
上に出てるパターン・ランゲージってアレクザンダーの都市計画理論だろ、プログラミングの本じゃない、そんなたとえ話のようなものでわかった気になるのは危ない
Twitterでも建築の本読んでオブジェクト指向がどうとか言ってる人いるけどポストモダンなソーカル野郎としか思えないんだよなあ、関係のないことを関係づけてそこに気づいた自分が賢いと思いこんでしまうクルクルパー、地頭の良い人が陥りやすい穴のように見える

821:デフォルトの名無しさん
21/03/01 08:09:59.68 Dkl+jirL.net
40年近く前の本だしFORTRAN, PL/1が題材だから今の言語に合わない箇所もあるけど名著だと思う
プログラム書法 第2版 / Brian W.カーニハン P.J.Plauger 著 木村 泉 訳 | 共立出版
URLリンク(www.kyoritsu-pub.co.jp)

822:デフォルトの名無しさん
21/03/01 08:21:42.09 VB40xofU.net
プログラミング作法の方が良いと思うよ

823:デフォルトの名無しさん
21/03/01 11:23:05.55 vk4XQtG7.net
中国行くと肛門PCR検査

824:802
21/03/01 12:23:46.76 sbiXUVTE.net
コミュ症の自覚がない>>803

825:デフォルトの名無しさん
21/03/01 17:40:20.81 scPLhEmU.net
>>803
まーた、詭弁デメテルバカが発狂してるよ
一番勉強が足りてないお前が勉強してないっていうねw
頼むから、一生ROMってろ

826:デフォルトの名無しさん
21/03/01 20:15:47.54 XEpCIBIH.net
コードとはまた違うけど
javaのインターフェースとインプリメントはクソだなと思う
無駄にファイル数増えてクソうざい

827:デフォルトの名無しさん
21/03/01 20:59:56.79 lUjHuGPy.net
interfaceがクソってw
オブジェクト指向知らないのではw

828:デフォルトの名無しさん
21/03/01 21:16:55.91 4ocrwkuw.net
これだからJava脳はw
言語周りで幼稚な愚痴垂れ流してるやつのJava率の高さったらない

829:デフォルトの名無しさん
21/03/01 22:39:30.52 o/aEg2l/.net
>>811
GoFのデザインパターンも、ファウラーのリファクタリングも、エリックエバンスのDDDもみんなパターン・ランゲージ
それぞれのパターン・ランゲージに共通する要素は何なのか?
なぜパターンがソフトウェア開発に有用なのか?
この辺を学んで出直してくるといいんじゃね

830:デフォルトの名無しさん
21/03/01 22:48:23.51 o/aEg2l/.net
クソコードと言うのは単なるBad Practiceの一種であってアンチパターンとは違うもの
アンチパターンの意味を理解せずにアンチパターンの研究とかまあ無理よね

831:デフォルトの名無しさん
21/03/01 23:16:44.33 vk4XQtG7.net
>>818
abstractだけでいいって事では?

832:デフォルトの名無しさん
21/03/01 23:43:38.69 f1Pg/hcl.net
C#やるとJavaのいろいろ足りてない部分はめちゃくちゃ実感する

833:デフォルトの名無しさん
21/03/02 00:47:10.90 k1c4vJst.net
>>820
君が何を学んだかを教えてよ

834:デフォルトの名無しさん
21/03/02 03:20:46.99 9w2EW+ai.net
いちいち2chで教えなくていいから

835:デフォルトの名無しさん
21/03/02 10:54:48.23 MXVQCo9F.net
Anti-pattern
URLリンク(en.wikipedia.org)

836:デフォルトの名無しさん
21/03/02 11:43:32.18 sTNRmcJa.net
>>818
そのインターフェース本当に必要?ってのが大半
他クラスとは何も関係無い孤立したクラスなのにインターフェース実装されてるの見たことある?
javaやってる感出すためだけにファイル数が2倍になるゴミ

837:デフォルトの名無しさん
21/03/02 12:24:38.24 08kau52M.net
肛門コード

838:デフォルトの名無しさん
21/03/02 12:31:08.45 MXVQCo9F.net
>>827
ポリモーフィズム
Storage storage
storage = new USBMemory()
or
storage = new SDCard()
以下、storageを使って読み出し
storage.read()
これができなくなるとか論外

839:デフォルトの名無しさん
21/03/02 15:55:12.73 HE4Aq4BV.net
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();
}

840:デフォルトの名無しさん
21/03/02 16:18:47.07 sTNRmcJa.net
>>829
そうやって複数クラスで使う前提じゃなくて
自身にしか提供しないくせにインターフェースにするクソコード見ても同じこと言えんの?
その例で言うと
Interface USBMemoryと
Implements USBMemoryImplementsと
Interface SDCardと
Implements SDCardImplementsの4つファイルが作られるんだよ
もちろんStorageクラスなんて作られないからな、覚悟しとけ?

841:デフォルトの名無しさん
21/03/02 17:22:18.70 MXVQCo9F.net
>>831
それはどうかと思うけど、それを根拠に>>817みたいな言語機能を批判しちゃだめだろって話
Java脳とか言い出す人が湧いてるし
まぁ、そのコードは確かに問題だな

842:デフォルトの名無しさん
21/03/02 17:45:25.68 MXVQCo9F.net
脱線したが、無意味にインタフェースと実装部を分けるクソコードは俺も見たことがある
俺も初心者時代はやらかした事はあったな
無駄にコードが増えるだけでメリットが無いというね
初心者時代は、>>831のコードを書けば
class XXXImplement
から
class XXXImplement2
に乗り換える時が楽だなんて思ってたけど、実際はXXXImplement2なんて作らずにXXXImplementを直接編集してた
変な突っ掛かり方をして悪かったな

843:デフォルトの名無しさん
21/03/02 17:49:55.29 1QjqZlxS.net
仕様と実装をどこで切り離しておくかという設計選択の話なのでコードだけでは判断できない
>>831のようにインターフェースに対して実装が1種類しかなくてもそれが望ましい状況もあれば望ましくない状況もある

844:デフォルトの名無しさん
21/03/02 17:59:46.35 QgVhfuvD.net
>>834
望ましい状況って例えば何なんw
教えてプロjavaプログラマーさん

845:デフォルトの名無しさん
21/03/02 18:06:26.23 RCz98UPT.net
インターフェース作ってもいいけど同じファイルに押し込んで欲しい
こんなくだらない内容でファイル数が倍は勘弁してほしい

846:デフォルトの名無しさん
21/03/02 18:27:01.85 1QjqZlxS.net
>>835
Storageの例と一緒だよ
共通した仕様を使いたいレイヤーと複数の実装を使いわけたいレイヤーがあって
それを分離することで結合度を下げときたい場合の選択肢の一つ
USBの例で言えばSDカードや他のストレージとは異なるUSB特有の仕様に依存したコードを書く必要がある場合に
実装が変更されても利用者側のプログラムを変更しなくてもいいようにしたかったり
複数の実装を実行時に切り替えて使えるようにしておきたい場合
面倒臭さと将来の柔軟性とのトレードオフ
切る場所が適切かどうかは要件次第なのでコードからは判断できない

847:デフォルトの名無しさん
21/03/02 18:28:28.29 k1c4vJst.net
>>835
実装を変えられるってことさ
オープンクローズプリンシパルを守ろうとしたらインタフェイス切るしかない

848:デフォルトの名無しさん
21/03/02 18:29:36.21 k1c4vJst.net
クラスは分けてなんぼ、理想を言えばメソッドごとにクラスを分けるべき

849:デフォルトの名無しさん
21/03/02 18:36:50.14 Ut+tyB9O.net
メソッドごとにクラスを分ける理由は?

850:デフォルトの名無しさん
21/03/02 18:47:13.75 cXyQmkET.net
同じ階層のものがたくさんあると
全体を把握しにくくなるんじゃないかなあ

851:デフォルトの名無しさん
21/03/02 18:48:50.43 2RCjcGnL.net
クラス毎にファイルを分ける理由は?

852:デフォルトの名無しさん
21/03/02 18:48:57.53 qGFbOGXJ.net
Java脳のレスはインターフェースなくてもオブジェクト指向できるっつう話でしょ
引数に関数をとることでインターフェースの代替にできる時もあるしね

853:デフォルトの名無しさん
21/03/02 18:59:10.26 Ut+tyB9O.net
>>842
関連するものの単位が同じだからでは?

854:デフォルトの名無しさん
21/03/02 19:35:50.44 stemNYci.net
>>831
あの例だと
interface IStorageにread()などの必須メソッドを追加
class USBMemory implements IStorage
class SDCard implements IStorage
やろw
Storage抽象クラス又は親クラスで定義してoverrideでもいいけど
設計次第やな

855:デフォルトの名無しさん
21/03/02 19:55:38.87 sTNRmcJa.net
>>845
違うんだよなぁw
Interface USBMemory
class USBMemoryImplements implements USBMemory
Interface SDCard
class SDCardImplements implements SDCard
こんなのが爆誕してるというかほぼ全クラスこんなので統一されてる絶望感分かる?

856:デフォルトの名無しさん
21/03/02 20:12:52.16 sTNRmcJa.net
>>833
まあ仕様が悪いというより簡単に悪用される実態が問題なんだよね
そのパターンもあるあるやと思ってる
だけどもし仮に2に乗り換えたところで、何かあった時に戻れるようにって無印が残されて結局ファイル数は増える地獄なんだなぁw

857:デフォルトの名無しさん
21/03/03 07:45:39.12 jQr6IfK5.net
>>846
テストしやすくて最高じゃないですか

858:デフォルトの名無しさん
21/03/03 10:51:02.42 xzgw1tFV.net
ワクチン効かなくて人類オワタ

859:デフォルトの名無しさん
21/03/04 00:08:07.08 FIbtDWBm.net
親クラスが子クラスに依存する処理を持つコード例
URLリンク(stackoverflow.com)
Eric Lippertの書いてるコードがクソなのか?
それともその認識がクソなのか?

860:デフォルトの名無しさん
21/03/04 09:40:02.79 s3zRsfeD.net
ケース・バイ・ケース

861:デフォルトの名無しさん
21/03/04 09:49:55.40 OjWW0m8I.net
普通にクソってことでいいんじゃね?
クソだけど処理が小さく、まともにするには
過剰気味な設計が必要になるならそのままにするけど
良いとは思わないけど必要十分

862:デフォルトの名無しさん
21/03/05 11:07:38.15 zIBx0bjD.net
短絡的にクソコード認定したがるやつの脳みそがクソってことだよ
>>1のようなプログラマーは自分の見方がクソなのかもしれないと考えられるようにならない限り いつまでたってもクソプログラマーのまま



864:デフォルトの名無しさん
21/03/05 16:16:51.44 rOFa7Oz2.net
短絡的にクソプログラマー認定したがるやつの脳みそがクソってことだよ
>>853のようなプログラマーは自分の見方がクソなのかもしれないと考えられるようにならない限り
いつまでたってもクソコードのまま

865:デフォルトの名無しさん
21/03/05 17:34:44.54 5bhxQzE4.net
>>854
クソプログラマー認定も含めて自分の見方がクソかもしれないと考えてないようなら
そいつ自身がクソプログラマーの可能性はそれなりに高いだろうね
ただコードとプログラマーにはクソかどうか判断する基準に決定的違いがある
その決定的違いが分かってないから君はクソプログラマーなんだよ

866:デフォルトの名無しさん
21/03/05 18:45:25.18 Gcj+sygJ.net
> クソコードを見た時に「あっ、これクソコードだ」って認識する根拠を挙げていきましょう。
スレ主は短絡的にクソコード認定をしていないと思うけど
むしろ、なぜクソコードを見てクソコードだと感じたのか哲学するスレだろ
クソプログラマーの定義とかスレ違いだし、どうでもいいわ

867:デフォルトの名無しさん
21/03/05 20:45:43.09 72RBlbeS.net
>>856
スレ主さんwちーすっ

868:デフォルトの名無しさん
21/03/05 23:14:44.63 6LAcg/yu.net
>>855
底辺に何言っても無駄
他人からは学べないから

869:デフォルトの名無しさん
21/03/06 09:14:58.43 6IalgJ8T.net
根本的な原理が分かってない人が意外なぐらい多い
情報の多重化、DRY原則からの逸脱を誘発するものがとにかく駄目
突き詰めればダメなものは間接的でもそこにつながっているから被害を受けるのだと分かる
いろんなデザインパターンなんて結局は
いろんな状況でDRYを遵守する手練手管が99%だろう
重複実装も必要な時があるが
どんなものをどんな風に重複させるかで
状況はかなり異なるので短絡的な判断は禁物
1が言ってる一つ目の例は
もっと文脈をはっきりさせないと
何がクソなのか断定出来ないし
これで伝わると思ってるなら難アリ

870:デフォルトの名無しさん
21/03/06 11:40:20.85 3bUl0e7x.net
そもそもデザインパターンみたいなのは、こうすれば良いのでは?みたいな物だし
正直そういう所から入った層よりは、ある程度組めるようになってから見て納得出来た方が良いかと
つまりは最初に読むものでは無いと

871:デフォルトの名無しさん
21/03/06 12:21:11.27 x8WQCH58.net
バックグラウンドとデザパタへの反応
複雑でも無く大きくも無いプログラムで遊んでた人
→自分のコードに対してデザパタの概念が大きい
→無意味にデザパタ導入してコード無意味に膨らます
→あるいはデザパタは無価値だと騒ぎ出す
ある程度複雑で大きいものを作ろうとして糞の山量産した人
→自分のコードに対してデザパタの概念が小さい
→デザパタ導入して部分的に見通し良く場面が見える
→必要に応じてデザパタを無言で使用

872:デフォルトの名無しさん
21/03/06 12:47:09.63 2s/lB21T.net
オブジェクト指向を理解するにはデザインパターンを理解するのが近道
言語の基本文法を学んだ後すぐデザインパターンを学ぶと上達がはやい
パターン熱にかかるのも早い方がいい

873:デフォルトの名無しさん
21/03/06 14:22:35.38 pd/Aiz5V.net
デザインパターンとオブジェクト指向は全く別。

874:デフォルトの名無しさん
21/03/06 14:29:20.30 9ME8iPe/.net
>>863
GoFのデザインパターンのことだぞ

875:デフォルトの名無しさん
21/03/06 19:16:45.22 TUaJ1ME0.net
このスレすげえ面白えな
>>11からの流れは思わず引き込まれてしまった
下手なラノベよりよっぽど読めるわ

876:デフォルトの名無しさん
21/03/06 20:23:40.52 MNqEIsM4.net
そう言えば「名前がクソ」というクソパターンは
DRYとあまり関係ないな
あまりに基本過ぎて盲点だった
使ってる言葉や概念がそもそもおかしいのは
あまりに基本的な問題だが一番有りがちかもしれない
特に日本では戯言過ぎて英訳なんか不可能なぐらいの
曖昧模糊とした言葉を話す人が多いので…
コードを書くずっと前から間違ってることが多い

877:デフォルトの名無しさん
21/03/06 20:54:37.19 /fxEYj1Q.net
コードがクソかどうかはコードを見ただけでは判断できない
一見名前がクソっぽくても本当にクソなのかどうかは分からない

878:デフォルトの名無しさん
21/03/06 20:58:25.37 Q5bee5g2.net
コードを見る以外の何をやって判断するんだ?
煮るのか焼くのか食べるのか?

879:デフォルトの名無しさん
21/03/06 21:00:04.77 pd/Aiz5V.net
マウントスレ

880:デフォルトの名無しさん
21/03/06 21:08:34.97 BLtO+LoM.net
重複には悪性のものとそうでないものがある
明らかに悪性なものの見極めは簡単だかそうでないものは重複を除去すべきかどうかそう簡単には見極められない
accidental duplicationなのかactual duplicationか
重複を除去して抽象化することが望ましい状況なのかどうか
最低でもこの2点の判断が必要

881:デフォルトの名無しさん
21/03/07 00:51:19.68 1+EXA2lk.net
片方だけの変更が妥当なら良性、両方に変更を入れないとダメなら悪性、ぐらいでだいたい見分けられるんじゃね?

882:デフォルトの名無しさん
21/03/07 01:45:46.06 TO18Vm5t.net
例えばこれ
スレリンク(tech板:570番)
似たようなこと3回繰り返してるけど重複を除去すべきかどうか?
除去すべきならどうリファクタリングするか?

883:デフォルトの名無しさん
21/03/07 18:09:07.95 6RHLTJ16.net
具体的なコードが出てくると途端にヒヨるマウントスレ民

884:デフォルトの名無しさん
21/03/07 19:18:29.31 HPgG7LJK.net
ゴミみたいに細かい問題
知るかボケ

885:デフォルトの名無しさん
21/03/07 20:58:32.09 FZPehcc/.net
>>872
3行3回程度ならそのままにするかな
breakしないとダメなので関数化しても条件判断が要るし
行数が増えるなら関数化する
回数が増えるなら関数をテーブルにしてforで回すかな

886:デフォルトの名無しさん
21/03/08 08:06:44.01 Q93ekmxF.net
それは要件次第って言えてしまうからなあ
関数作れない時もあるし、仮に1回でも要件で拡張の余地をとか言われたら関数にしなきゃだし
クソコードって分かってもそうしなきゃいけないときもある

887:デフォルトの名無しさん
21/03/08 09:04:47.24 ca4xsibi.net
関数化すらしないやつがいるのはちょっと驚き
このケースで関数化する動機は繰り返し同じことをしてるからというより意図を明確にするため
行数やbreakの有無みたいな表面的な形よりも意味が重要なので
この書き方が組織内で標準化されてる等の特殊な理由がない限り関数化する
ループにするかどうかは処理順序やcssをコードに固定化すべき状況なのかどうかによる
これも形じゃなく意味
使い捨てじゃなく長期的にメンテするコードで
hrml要素の検索順や検索条件をコードに固定化したほうが望ましい状況は少ない

888:デフォルトの名無しさん
21/03/08 09:23:46.71 zo5oau9O.net
でも関数って勝手に作ったらまずい現場もあるよね

889:デフォルトの名無しさん
21/03/08 10:14:50.71 1B2qwCXx.net
>>878
そういうのが特殊な理由
Pythonのような高レベル言語使ってるのに
ヘルパー関数を自由に作らせないのは控えめ言って異常だけどな

890:デフォルトの名無しさん
21/03/08 11:50:19.86 u4CRr3CF.net
全然控えめに言ってない件

891:デフォルトの名無しさん
21/03/08 13:51:58.27 pnlhyJpZ.net
作らせないってのもあると思うな
MSDNはドキュメントあるけど
派遣社員ってドキュメント書かないじゃん
ドキュメントないメソッドなら作らんほうがマシになるときもある

892:デフォルトの名無しさん
21/03/08 14:37:36.32 Amm+J3oO.net
>>881
ドキュメントが必要だと思うなら書いてもらえばいいだけでは?
必要なドキュメントをきちんと書かせないのは依頼主の責任

893:デフォルトの名無しさん
21/03/08 14:40:37.46 Amm+J3oO.net
ドキュメント必須のレイヤーとドキュメントは任意で十分なレイヤーがあるから
全部同じ扱いをするのは非効率
コーディング規約と同様に指針を決めておくのが普通

894:デフォルトの名無しさん
21/03/08 20:18:45.16 pnlhyJpZ.net
>>882
( ゚д゚)あ、お金ないんでいいです

895:デフォルトの名無しさん
21/03/08 20:20:53.39 C8XgJIOz.net
ドキュメント間違えるし、イラネ

896:デフォルトの名無しさん
21/03/08 21:04:02.65 iO7qg9sm.net
>>884
金の使い方間違ってるw

897:デフォルトの名無しさん
21/03/09 08:13:13.98 DXzi7WCn.net
ドキュメントはちゃんとメンテしないとむしろ害を及ぼすよ

898:デフォルトの名無しさん
21/03/09 09:22:23.90 1va3W7Si.net
メンテと言ってる時点でおかしいんだよね
本来はドキュメント変更してからコード直すべき
まあ不具合対策とかでいちいちドキュメントまで直してられっかって言うのはよくあるけど…

899:デフォルトの名無しさん
21/03/09 09:35:33.69 p4cuNQqC.net
ドキュメントを修正するのは不可能
すでにそれでOKがでてるんだから

900:デフォルトの名無しさん
21/03/09 10:35:41.16 B9Z9HiJ8.net
関数化すべき
→勝手に関数作れないもん
→関数作ったらドキュメントが必要になるもん
→作ったドキュメント維持できないもん

コードを評価する方法よりも職場やプログラマーを評価する方法を身につけた方が
圧倒的に効率よくクソを避けられるといういい見本だな

901:デフォルトの名無しさん
21/03/09 11:18:33.87 R+x4GEwc.net
このスレで得られた教訓
クソプログラマーが「こういうコードはクソ」と言った場合、十中八九その認識のほうがクソ

902:デフォルトの名無しさん
21/03/09 11:48:27.03 2IS/A2ze.net
>>891
>>1を見ただけで得られる教訓じゃん

903:デフォルトの名無しさん
21/03/09 13:02:45.11 DvrveGIe.net
>>889
その理論でいくとコード修正するのも不可能では?

904:デフォルトの名無しさん
21/03/09 15:30:47.03 MbPysK70.net
>>891
それはわかる

905:デフォルトの名無しさん
21/03/09 17:44:05.23 sQfPg4KP.net
引き継ぎしてドキュメントを読む。
ソースをあまり読まずに修正する。
ドキュメントを直す。
システムが死ぬ。

906:デフォルトの名無しさん
21/03/09 17:51:26.17 JYZP+6rB.net
>>893
コードは最終工程なので動かなければバグとして修正される
ドキュメントは動かなくても、コードを直せば動くので
ドキュメントの修正をする必要はない

907:デフォルトの名無しさん
21/03/09 18:19:39.56 tZmYicyt.net
>>888
コードがテストされるまで設計フェーズは終わらないので
その後のフィードバックで設計書の修正は当然
他のエンジニアリング分野で言う「製造」は
コンパイラとリンカーがやってしまうのであり
実装という実験によって設計の妥当性が証明されるまで
設計は終わらない

908:デフォルトの名無しさん
21/03/09 20:20:33.28 sQfPg4KP.net
ロジックをドキュメント化するのは無駄。
コード読んで分からないものに手を入れてはいけない。

909:デフォルトの名無しさん
21/03/09 21:37:12.31 J60abFGc.net
>>891
このスレを見返してみると「こういうコードはクソ」というレスが15~16あった
その中で「確かにそれはクソだな」と思ったのは1つだけ
それ以外は・・・

910:デフォルトの名無しさん
21/03/09 22:03:20.61 qz7mFwyh.net
竹内関数は糞か否か。

911:デフォルトの名無しさん
21/03/10 02:31:32.15 hjUELKdd.net
どういう人が書いたのがわからんのが問題だと思う
バカが書いたとか間違ってるのが断定できればなんとかできるもん

912:デフォルトの名無しさん
21/03/10 13:29:27.14 hr2yGgcj.net
竹内関数は、WEB+DB vol.121 のRuby 3 特集で、
平行・並列処理、Ractor のベンチマークで使っている
マルチコア用の並列処理は、まだ数年は掛かりそう

913:デフォルトの名無しさん
21/03/10 15:29:31.30 eQWG2ihY.net
>>900
竹内関数は関数の仕様を定義したものなので
コードではなく仕様がクソかどうかという話になる
それはクソコードかどうかという話とは少し種類が違う

914:デフォルトの名無しさん
21/03/11 15:58:20.83 2k6w0W90.net
まずは、使われない無駄なコードを減らして欲しい!
「無駄だらけのプログラムを効率化して、1万行→500行に。それを見た上司が激怒して『あいつは三流』と言いふらし始めました」(エンジニア・50代男性)
2021年1月26日 06:00
URLリンク(j-town.net)

915:デフォルトの名無しさん
21/03/11 16:00:27.63 2k6w0W90.net
とくぎ「パニパニハニー」を完全抹消コメント 1件
アイミョン
[KS108-054]
テーマ:キャラクター育成・強化2020/06/14 06:15
宝珠「パニパニハニーの技巧」とか、不要なオブジェクトは煩わしく誤動作の原因にもなります。
こうした旧バージョンのゴミは片づけて整理して、コマンド表示をわかりやすくしてほしいです。
URLリンク(i.imgur.com)

916:デフォルトの名無しさん
21/03/11 16:31:29.74 4TSgT5Rn.net
>>904
50代にもなってこんな所でしょうもない憂さ晴らししてるほうもたいがいやな

917:デフォルトの名無しさん
21/03/11 16:59:27.28 UhH3pQhX.net
>>904
条件分岐するたびに重複コードを書く初心者は必ずいる。サブルーチンの概念がないというよりは、変数の使い方がおかしいのが最大の理由だと思う。

918:デフォルトの名無しさん
21/03/11 17:02:40.39 UhH3pQhX.net
プログラムもドキュメントも常に作りかけかと思う物を作る50代を知っている。

919:デフォルトの名無しさん
21/03/11 17:52:20.82 gBp5uuCV.net
ひな形とかサブルーチンって言葉が古めかしいよな

920:デフォルトの名無しさん
21/03/11 19:01:33.97 8a+EQRp9.net
サブルーチン=クソコードだよ
関数は原則として引数から戻り値を求めるものでテストが容易
もちろん副作用をもった関数もあるけど、わざわざ副作用と言ってるように
副作用は避けるべきものとして考えられてる
サブルーチンは戻り値がなく副作用がメイン
コードの責務とか考えなしに、似たようなコードがあったら
とりあえずサブルーチンにまとめちゃえってなる
その結果テストが容易ではなくなる

921:デフォルトの名無しさん
21/03/11 19:19:47.26 ifNxw6Pa.net
サブルーチンと関数を別キーワードで定義&コールするFortran流もありだと思うけどなあ

922:デフォルトの名無しさん
21/03/11 20:17:42.11 eJfNLsOm.net
>>910
クソプログラマーが「こういうコードはクソ」と言った場合、十中八九その認識のほうがクソ
サンプルが追加されたな

923:デフォルトの名無しさん
21/03/11 20:20:56.37 8a+EQRp9.net
クソプログラマーではないのでそれは当てはまらない

924:デフォルトの名無しさん
21/03/11 20:37:19.04 dIdzHpoo.net
クソプログラマーは自分がクソだという自覚ができない
自覚ができないからこそクソプログラマーとして生き続ける

925:デフォルトの名無しさん
21/03/11 21:26:53.63 sZRHwddG.net
>>910
サブルーチンに戻り値はないというのは勝手な思い込み
プログラミングにおける副作用という言葉は薬の副作用や副反応と違って一般的に望ましくないものという意味は全く無い
主張の中心となる用語をよく理解せず勝手な思い込みでオレオレ理論をふりかざすやつがクソプログラマーでなくなんなのだろうか?
自分の認識が間違ってるかもしれないとは考えないクソプログラマーの特徴がよく表れている

926:デフォルトの名無しさん
21/03/11 23:23:42.46 wuP7cLri.net
関数呼び出しは遅いから関数しか無いCは使えないという恐ろしいFortran使いが結構たりするけどな…

927:デフォルトの名無しさん
21/03/11 23:38:43.29 wuP7cLri.net
まあインライン化やマクロ駆使してオーバーヘッド削ったCよりは絶対読みやすいので、一理ないこともない

928:デフォルトの名無しさん
21/03/12 00:52:41.16 IfpuCZI8.net
今時FORTRAN使いとかいるのか・・・
どこで使っているんだ?w

929:デフォルトの名無しさん
21/03/12 03:40:10.66 pvW782MA.net
理学系とか今でもFORTRANらしい

930:デフォルトの名無しさん
21/03/12 03:51:45.30 iCE7eqEI.net
たぶんおじさんの想像するFORTRANとは随分違う言語だぞ

931:デフォルトの名無しさん
21/03/12 08:06:40.57 6WY1VkSt.net
>>918
母数がわからんけど、HPC分野だとまだまだFORTRAN優位
次世代スパコン「富岳」の重点課題で開発するアプリのうち,Fortranでないのは一つだけ.
URLリンク(qiita.com)

932:デフォルトの名無しさん
21/03/12 10:14:24.86 Nf3fOkm/.net
Fortran2018?

933:デフォルトの名無しさん
21/03/12 11:45:41.06 zHGwFDvl.net
サブルーチン・副作用は、状態を持つから、ややこしい。
Ruby 3 のマルチコア並列処理・Ractor でも問題になっている
状態を持つと、共有変数の排他処理が難しいから、
関数型のElixir みたいに、immutable にしないといけない

934:デフォルトの名無しさん
21/03/12 14:09:01.67 jKVaeyDL.net
デッドコードは、見つけて、取り除く必要がある。デッドコードを残しておくと、プログラマの理解と行動を
妨げることがあり、コードが実行されて、重大な問題を引き起こすリスクもある。 デッドコードの削除は、
技術的な問題ではない。Kevlin Henney氏によると、それは考え方と文化の問題だ。
URLリンク(www.infoq.com)

935:デフォルトの名無しさん
21/03/12 14:22:11.99 b9Kr93A5.net
仕様変更でなくてもよくなった箇所は、削除より、いったんコメントアウトで対処した方がいい。外国人はコードを変えて失敗する能天気だから、あいつらの言うことに従ってはいけない。

936:デフォルトの名無しさん
21/03/12 14:26:53.48 C5Hfq1un.net
>>925
VCS使えよ

937:デフォルトの名無しさん
21/03/12 14:35:41.22 6WY1VkSt.net
>>925
いつの時代の人だよw

938:デフォルトの名無しさん
21/03/12 16:44:55.70 b9Kr93A5.net
必ずそういうことを言い出すやつがいるが、経験不足だと思うよ。いちいち見比べる方が効率が悪い。

939:デフォルトの名無しさん
21/03/12 16:48:44.73 b9Kr93A5.net
すぐに削除しない方がいいと書いてあるのに、早とちりさんが多いね。

940:デフォルトの名無しさん
21/03/12 17:02:54.30 6WY1VkSt.net
>>928
> いちいち見比べる方が効率が悪い。
差分ツールも知らない爺乙

941:デフォルトの名無しさん
21/03/12 17:19:15.11 7Crflr6r.net
見比べている自分の光景を想像しろ

942:デフォルトの名無しさん
21/03/12 17:34:39.00 7Crflr6r.net
削除するなとは言ってない。ガンガン削除してもいいが、残ったコード内でこう作った意図がわからなくなるくらいなら、システムの作り直しの時点で変えるべきた。
元のデッドコードの話自体は初心者の話だし、コードの書き換えに躊躇がなく、バグだらけにするのは外国人に多いわけで、有名な製品をアップデートするとおかしくなる最大の理由。

943:デフォルトの名無しさん
21/03/12 17:41:07.46 EKGXILxS.net
外国人のフリして逃げる

944:デフォルトの名無しさん
21/03/12 18:44:33.92 Jts8n3aI.net
クソコードとは俺が書いたコード

945:デフォルトの名無しさん
21/03/12 18:52:31.32 0g8W4jPs.net
またまたご謙遜を。

946:デフォルトの名無しさん
21/03/12 19:22:54.23 7Crflr6r.net
オープンソースはかなりの確率でクソコード

947:デフォルトの名無しさん
21/03/12 19:44:02.10 HsBsGhC6.net
YAGNI (You Ain’t Gonna Need It) 直訳は「そんなモン要らんって!」
YAGNIの原則は「機能は実際に必要となるまでは追加しないのがよい」とすること。後で使うだろうという
予測の元に作っても、実際に使われるのはほんの一部。ソフトウェア実装において「予期しない変更」は常
についてまわり、できるだけ設計をシンプルにするべき。現実の問題に集中して余計なモノを足さない。
それがヤーグニ。
URLリンク(www.jabba.cloud)

948:デフォルトの名無しさん
21/03/12 19:56:22.98 b9Kr93A5.net
業務システムにはあてはまらない。

949:デフォルトの名無しさん
21/03/12 19:58:56.77 b9Kr93A5.net
>>937
仕様変更を想定しないといけないとわかっていながら、そのときの仕様で最適化するのは、その方が周囲から理解をえやすいから。

950:デフォルトの名無しさん
21/03/12 20:31:43.28 47v6/wL7.net
おまえヤベェわ
さすがクソプログラマースレ

951:デフォルトの名無しさん
21/03/12 21:37:32.87 b9Kr93A5.net
外国人の言うことをありがたがっているようでは話にならない。

952:デフォルトの名無しさん
21/03/12 21:37:59.65 HsBsGhC6.net
>クソコードとは何か
スマホ アプリの6割未利用!不要なアプリの大量保有はバッテリー消耗の一因。不要アプリは定期的に削除を。
URLリンク(prtimes.jp)
Androidスマホのキャリアアプリが1GB以上データ通信!?削除・無効化できるアプリ一覧
URLリンク(sp1.jp)

953:デフォルトの名無しさん
21/03/13 09:00:19.17 rQmPEF49.net
詫びソースコードコメント 1件
アイミョン
[KS108-054]
テーマ:冒険者の広場・DQXショップ2020/02/17 16:22
今月になってから急にシステム障害が多発しており、運営としては説明責任を果たすべきと考えます。
URLリンク(hiroba.dqx.jp)
不具合を出した個所とその修正箇所の両方を「詫びソースコード」として開示するのです。
ソースコードも企業の重要な著作物ですが、だからこそ開示して詫びることが大切です。
それと同時にシステムの不具合がなぜ多発しているのかを、プレイヤーも一緒に考えるのです。
バンダイナムコゲームスの『ドラゴンボールZ ドッカンバトル』を見習うべきです。

URLリンク(i.imgur.com)

954:デフォルトの名無しさん
21/03/13 09:18:08.62 tBGlpruK.net
キチガイだなw

955:デフォルトの名無しさん
21/03/13 10:00:15.70 7EYMzEJd.net
スタッフの大人の対応w

956:デフォルトの名無しさん
21/03/14 09:42:47.84 BsjTGNRz.net
ここに書かれた罵詈雑言と不要な議論の文字列
これがまさにクソコードだ

957:デフォルトの名無しさん
21/03/14 10:12:49.00 nT6f8vWc.net
>>921
2008以降になるとまともな和書殆ど無いよな、Amazonで見たら★2でわろた
英語なら20冊くらい引っかかって高評価だけど学術系出版社だから¥10000~
俺もコンパイラマニュアルしか読んでないわ

958:デフォルトの名無しさん
21/03/14 10:29:30.32 u05Cu7nI.net
クソコードの例
変数を取り違えて値を設定し、途中で本来の値を設定し直すコードが存在する。

959:デフォルトの名無しさん
21/03/14 11:56:43.59 NVyYwYtr.net
>>948
デッドコードの一種だね
値を取り違えて設定してることや
本来の値を設定し直してることが分かるようなら
たいしたクソではなさそう

960:デフォルトの名無しさん
21/03/14 12:25:06.62 mqW1umpN.net
フォートラン並みの配列演算記述ができるJuliaやPython/scipyが出てきたから、ガチる人以外はそっちに流れたんだろ
Matlabもフォートラン並みに高級だけどかなり高いし、プラットフォームが限られる
特にJuliaはCじゃなくフォートランの慣習に合わせてるし移行の敷居が低い

961:デフォルトの名無しさん
21/03/14 13:50:22.02 IL1Rx7pe.net
Matlab, R → Python → Julia
Matlab, Rは、もうダメ。
MIT は、Julia へ行ってる

962:デフォルトの名無しさん
21/03/14 19:53:13.79 u05Cu7nI.net
>>949
10万行のコードを解析してわかったことだけどね。

963:デフォルトの名無しさん
21/03/14 21:04:29.30 FTgLqn2Y.net
>>11
constくそワロタ

964:デフォルトの名無しさん
21/03/14 22:59:16.59 SWD4O/qm.net
>>952
それがほんとなら根本の問題は別の所にあるよね
根本原因を究明できて再発防止策がとれたなら役に立ったクソコードということになる

965:デフォルトの名無しさん
21/03/15 07:24:19.90 AgY39MSU.net
>>953
なぜconstがダメなの?

966:デフォルトの名無しさん
21/03/15 08:19:07.60 unBa9C5h.net
覗いただけだけどテストコード不要論を唱えるプログラマがこの世に存在するとはな..
プログラマつっても世の中には色んな奴いるんだな

967:デフォルトの名無しさん
21/03/15 09:06:01.57 wTgsCYbG.net
>>955
JS知らないやつだからほっといてあげて

968:デフォルトの名無しさん
21/03/15 09:50:06.58 d7wExFeq.net
>>956
いやいらんでしょ
そのテストコードのテストはしなくてレビューでとか言ってる奴いたけど(笑)
結局それが正しいとはなぜ言えるのか?

969:デフォルトの名無しさん
21/03/15 10:14:52.08 hBbAwZTG.net
テストコードがかなりのプログラムだとしらないやつがいるから仕方ない。

970:デフォルトの名無しさん
21/03/15 10:27:24.28 0wiZhmNk.net
>>958
正しいと言える必要なんてないからね
テストの基本

971:デフォルトの名無しさん
21/03/15 10:39:05.01 unBa9C5h.net
そもそもテストって想定どうりの動きをしてくれるかを確かめる為に書くんでしょ
テストコードなんて書く必要ないと思うならそれでいいし、テストなんて手動でいいと思ってる現場と規模感ならそれでいいんじゃない?

972:デフォルトの名無しさん
21/03/15 10:52:20.05 unBa9C5h.net
あとテストコードのテストって何?
テストコードを走らせて想定通りに動けば完了だよ
コードレビューはするでしょう
テストコードのテストコードを書けよという意味で言ったの?

973:デフォルトの名無しさん
21/03/15 11:44:06.79 bRJV5TtK.net
>>958
>>255に論理的に反論してみ

974:デフォルトの名無しさん
21/03/15 13:03:04.99 QmxS+DUu.net
>>961
テストは手動でいい・・・現場の方針でしかない
自動テストしないと再テストに時間がかかる・・・事実

再テストに時間がかかるがテストは手動でやる・・・アホな現場の方針でしかない
というだけだよ

975:デフォルトの名無しさん
21/03/15 13:32:11.56 d7wExFeq.net
>>963
その程度のことデバッグすれば分かるやん
テストコードを書くだけ無駄

976:デフォルトの名無しさん
21/03/15 13:37:22.63 QmxS+DUu.net
>>965
一回のデバッグの時間はどれくらいですか?

977:デフォルトの名無しさん
21/03/15 13:50:21.56 QmxS+DUu.net
もう降参かな?テストをしないでデバッグだけしてると
時間が膨大にかかるからねw
なによりテストしてないってことだから
エンバグしたことがわからない

978:デフォルトの名無しさん
21/03/15 13:52:10.06 bRJV5TtK.net
>>965
例えば千項目毎回テストするの?
そんな項目数がないような小規模案件ならなくてもいいかもねw
まさかリグレッションテストは不要だっていう主張なのかな?

979:デフォルトの名無しさん
21/03/15 13:58:05.35 QmxS+DUu.net
>>968
落ち着け。>>964はデバッグすると言ってる
テストしないでデバッグだけするんだ
テストはしないからテスト時間は0なのだ
やつはテストしないで製品をリリースしてるんだよ!
そしてバグが見つかったときに製品をリコールしてるんだよ
やつは組み込み系開発者だからな

980:デフォルトの名無しさん
21/03/15 14:47:18.91 uytQvjo+.net
世の中いろんな人がいるんだねえ

981:デフォルトの名無しさん
21/03/15 16:09:37.60 C+0mdEfW.net
テストコード組むのが上手いヤツはクラッカーに向いてる

982:デフォルトの名無しさん
21/03/15 19:12:39.86 m9WM8q4q.net
テストは甘えと、あわしろ氏が言ってたけどな。
間違えなければテストする必要が無い。

983:デフォルトの名無しさん
21/03/15 19:26:48.17 QmxS+DUu.net
間違えなければテストする必要が無い。
そしてテストしなければ間違えたことがわからないのだ
「バグは見つかりませんでした!」

984:デフォルトの名無しさん
21/03/15 19:32:28.24 m9WM8q4q.net
テストするってことは間違える前提で書いてるんだろ?
甘えすぎだわ。

985:デフォルトの名無しさん
21/03/15 19:35:41.62 QmxS+DUu.net
マジそれ
事故る前提で車を乗ってるやつが多すぎ

986:デフォルトの名無しさん
21/03/15 20:08:51.50 +SM2oHa/.net
自動テストは適当で良い、どうせバグはない

987:デフォルトの名無しさん
21/03/15 20:10:26.44 +SM2oHa/.net
それよりも手動の総合テストを頑張ったが良い、自動テストはコーダの自己満でしかない、ユーザと向き合ってないコミュ症の底辺がやること

988:デフォルトの名無しさん
21/03/15 20:11:36.50 +SM2oHa/.net
俺たちはシステムをデザインしてるんだという大局感が大事

989:デフォルトの名無しさん
21/03/15 20:12:57.03 QmxS+DUu.net
>>977
手動の総合テストにどれだけ時間がかかりますか?
まだこの質問に答えてもらってませんよ?

990:デフォルトの名無しさん
21/03/15 20:13:22.23 +SM2oHa/.net
ロケット打ち上げて爆発させるのがシステム開発�


991:フイテレーションなんだよ



992:デフォルトの名無しさん
21/03/15 20:14:03.52 +SM2oHa/.net
>>979
スコープとかものによるんじゃないかな

993:デフォルトの名無しさん
21/03/15 20:15:04.67 +SM2oHa/.net
底辺コーダはスコープと聞いて変数しか思い浮かばんだろwww

994:デフォルトの名無しさん
21/03/15 20:16:13.61 QmxS+DUu.net
>>981
スコープによるなら
○○の場合は、これぐらいとか
答えられるだろw
お前の実際の話をすればいいんだよ
手動テストしてないのか?

995:デフォルトの名無しさん
21/03/15 20:17:04.89 +SM2oHa/.net
>>983
〇〇には何を入れればいいの?おん?

996:デフォルトの名無しさん
21/03/15 20:18:08.93 QmxS+DUu.net
>>984
自分でスコープによるといっただろ
何も思いついてないのにスコープって言ったんか?

997:デフォルトの名無しさん
21/03/15 20:19:31.02 +SM2oHa/.net
>>985
スコープがなんなのかわかってないようだねwww

998:デフォルトの名無しさん
21/03/15 20:20:15.36 +SM2oHa/.net
スコープをまず説明してみwwwきちんと説明できたらなぜ○○に入れられないか自ずとわかるから

999:デフォルトの名無しさん
21/03/15 20:20:30.62 +SM2oHa/.net
ほれほれはよせいよw

1000:デフォルトの名無しさん
21/03/15 20:20:41.38 QmxS+DUu.net
981 名前:デフォルトの名無しさん[sage] 投稿日:2021/03/15(月) 20:14:03.52 ID:+SM2oHa/ [5/8]
>>979
スコープとかものによるんじゃないかな
↑「じゃあ○○(スコープ)の場合はこれぐらいと言ってください。」
986 返信:デフォルトの名無しさん[] 投稿日:2021/03/15(月) 20:19:31.02 ID:+SM2oHa/ [8/8]
>>985
スコープがなんなのかわかってないようだねwww
↑「わかってるお前が言ってください。」

1001:デフォルトの名無しさん
21/03/15 20:20:52.69 +SM2oHa/.net
スコープの説明責任はあなたにありまぁす!

1002:デフォルトの名無しさん
21/03/15 20:21:23.01 +SM2oHa/.net
>>989
あ、やっぱわかってないのな

1003:デフォルトの名無しさん
21/03/15 20:21:23.96 QmxS+DUu.net
>>990
お前がスコープが何なのかわかってないのがはっきりしたなw

1004:デフォルトの名無しさん
21/03/15 20:22:28.66 yk6Lta+7.net
答えられないならもうスコープについては答えなくていいよ
お前の実際の話をすればいいんだよ
実際の手動テストにどれくらいかかってるのか言え 
スコープはどれでもいい

1005:デフォルトの名無しさん
21/03/15 20:22:52.58 +SM2oHa/.net
>>992
〇〇を言ってくださいと君は言ったわけだがスコープの定義によりそのようなことはできないと述べたよ
なぜできないかはスコープの定義から自明なんだけど、君はスコープを何だと思ってるのかな?おん?

1006:デフォルトの名無しさん
21/03/15 20:23:33.49 sDtoJkVU.net
あと逃げるなよ?
実際の手動テストにどれくらいかかってるのか  
いうだけなんだから簡単だろ  

1007:デフォルトの名無しさん
21/03/15 20:24:23.98 +SM2oHa/.net
>>993
君は答えなくてはいけないよ、スコープとはなにか!!(一喝)

1008:デフォルトの名無しさん
21/03/15 20:24:28.31 sDtoJkVU.net
>>994
もうすでにスコープの話は不要と言いました。
実際の手動テストにどれくらい時間がかかってるんですか? 

1009:デフォルトの名無しさん
21/03/15 20:24:50.46 sDtoJkVU.net
どうして実際の手動テストにどれくらい時間がかかってるか言えないんですか?
膨大な時間がかかってるからですよね

1010:デフォルトの名無しさん
21/03/15 20:25:12.18 sDtoJkVU.net
手動テストは時間がかかることが証明された
反論あるならどーぞ(笑)

1011:デフォルトの名無しさん
21/03/15 20:25:24.05 sDtoJkVU.net
まあどうせ逃げるんやろな

1012:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 44日 2時間 52分 19秒

1013:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch