このスレはクソコードとは何かを考えるスレです。
・親クラスが子クラスに依存する処理を持つコード
例...社員クラスを継承した正社員クラスと派遣社員クラスがあり、社員クラスが正社員クラスの知識を持つ状況
・staticにするべきではないモデルにまでstaticにする人
例...社員クラスのメソッドを全てstaticにしたり、社員クラスにシングルトンパターンに相応するものを適用する人
等、クソコードを見た時に「あっ、これクソコードだ」って認識する根拠を挙げていきましょう。
クソコードとは何か
■ このスレッドは過去ログ倉庫に格納されています
2021/01/30(土) 17:33:05.78ID:BjNTZWUI
2021/01/31(日) 17:57:42.08ID:TZSorCef
>>19
> > getPrice(id) 関数とclothPrice.filter({ id }).first()
> > ってやってる事は一緒だよね?
>
> 関数とその中のコードが
> やってることが一緒になるのは当たり前です。
実装対象の仕様が1行程度のコードで住んでいる点をまず気にして。
> 関数にする意味は、コードの可読性を上げるためです。
可読性は上がったのだろうか?
だって、何のインスタンスのオブジェクトが返されるか名前から想像できますか?
> > getPrice(id) 関数とclothPrice.filter({ id }).first()
> > ってやってる事は一緒だよね?
>
> 関数とその中のコードが
> やってることが一緒になるのは当たり前です。
実装対象の仕様が1行程度のコードで住んでいる点をまず気にして。
> 関数にする意味は、コードの可読性を上げるためです。
可読性は上がったのだろうか?
だって、何のインスタンスのオブジェクトが返されるか名前から想像できますか?
2021/01/31(日) 18:00:20.47ID:JUmaLjMc
> だって、何のインスタンスのオブジェクトが返されるか名前から想像できますか?
逆。「何のインスタンスのオブジェクトが返されるか」を意識してはいけない。
それはかっこいい言葉で言うならデメテル法則に反している
実装の詳細を意識させるな
逆。「何のインスタンスのオブジェクトが返されるか」を意識してはいけない。
それはかっこいい言葉で言うならデメテル法則に反している
実装の詳細を意識させるな
2021/01/31(日) 18:02:13.86ID:TZSorCef
>>11
clothPrice.filter({ id }).first()
だったら...clothPriceインスタンスのPriceが帰ってくるんだなーって一目で分かるけど
getPrice(id)
だったら...え?何が帰ってくるのこれ?
ってなりませんか?
仮にJavaみたいな型宣言が必要な言語だったとしても、何のインスタンスのPriceが得られるのかわからないですよね?
...って、これが本当の理由かっ!?
色々、問題が想像つくから、回答に迷ってる
clothPrice.filter({ id }).first()
だったら...clothPriceインスタンスのPriceが帰ってくるんだなーって一目で分かるけど
getPrice(id)
だったら...え?何が帰ってくるのこれ?
ってなりませんか?
仮にJavaみたいな型宣言が必要な言語だったとしても、何のインスタンスのPriceが得られるのかわからないですよね?
...って、これが本当の理由かっ!?
色々、問題が想像つくから、回答に迷ってる
2021/01/31(日) 18:03:52.46ID:JUmaLjMc
> getPrice(id)
> だったら...え?何が帰ってくるのこれ?
> ってなりませんか?
そのオブジェクトのpriceだろ
そのオブジェクトが内部で使用している〜とかを意識しないといけないのはデメテルの法則違反
> だったら...え?何が帰ってくるのこれ?
> ってなりませんか?
そのオブジェクトのpriceだろ
そのオブジェクトが内部で使用している〜とかを意識しないといけないのはデメテルの法則違反
2021/01/31(日) 18:04:38.99ID:JUmaLjMc
クソコードじゃないって最初から言ってるだろ
2021/01/31(日) 18:05:06.22ID:TZSorCef
2021/01/31(日) 18:06:51.44ID:JUmaLjMc
> あなたに問いますけど、getPriceって誰に何の為に呼んでもらう関数だと思いますか?
このコードではそれは書いてないのだから、そこを勝手に想像して
自分の都合の良い解釈をするのは、それ自体が間違い
このコードではそれは書いてないのだから、そこを勝手に想像して
自分の都合の良い解釈をするのは、それ自体が間違い
2021/01/31(日) 18:07:52.12ID:TZSorCef
出題者さんの回答が知りたいな...。
まぁ、二人しか答えてないけど。
まぁ、二人しか答えてないけど。
2021/01/31(日) 18:13:16.87ID:TZSorCef
>>26
> このコードではそれは書いてないのだから、そこを勝手に想像して
> 自分の都合の良い解釈をするのは、それ自体が間違い
では、clothPrice.filter({ id }).first()は何をしているメソッドだも思いますか?
こっちは...なんとなくわかりませんか?
私はstiftを触ったことないですが、似たような言語で似たような記述をしたことがあるので推測できます。わかりやすいですね。
> このコードではそれは書いてないのだから、そこを勝手に想像して
> 自分の都合の良い解釈をするのは、それ自体が間違い
では、clothPrice.filter({ id }).first()は何をしているメソッドだも思いますか?
こっちは...なんとなくわかりませんか?
私はstiftを触ったことないですが、似たような言語で似たような記述をしたことがあるので推測できます。わかりやすいですね。
2021/01/31(日) 18:14:04.75ID:JUmaLjMc
> では、clothPrice.filter({ id }).first()は何をしているメソッドだも思いますか?
getPriceをしてるメソッド
getPriceをしてるメソッド
2021/01/31(日) 18:14:59.04ID:TZSorCef
って、よく見たらjsか!?まぁ、どっちでもいいや。
何となくでわかる記述って大切じゃないですか?
何となくでわかる記述って大切じゃないですか?
2021/01/31(日) 18:19:27.38ID:JUmaLjMc
2021/01/31(日) 18:21:37.30ID:TZSorCef
理由は必死に説明しているつもりなんだけどなぁ...。
こうなるから慎重に説明を考えていたんだけどなぁ...
こうなるから慎重に説明を考えていたんだけどなぁ...
2021/01/31(日) 18:22:44.83ID:TZSorCef
何となくでわかるの意味が分かってないことが分かった...。そもそも、filterの意味が分かってない?
2021/01/31(日) 18:25:20.39ID:TZSorCef
何となくこっちが良い
じゃなくて
コードを見たとき、記述から実装内容を察することができることが重要と言うべきだったかな...
言葉選びを間違えるとこうなるから慎重に説明をしないとなんだが...うーん、説明下手orz
じゃなくて
コードを見たとき、記述から実装内容を察することができることが重要と言うべきだったかな...
言葉選びを間違えるとこうなるから慎重に説明をしないとなんだが...うーん、説明下手orz
2021/01/31(日) 18:27:15.53ID:JUmaLjMc
実装者の視点しか持ってないんだよな。
クラス設計というのは、どういうインターフェースにすれば
クラスが"使いやすいか" というクラスの利用者からの視点で設計する
getPriceというメソッドではなく、その中のコードの実装の
話をしてる時点で視野が狭いのは明らか
テストコードも書いたことないだろ?
テストコードは必然的に使いやすいクラスであることが要求されるからな
クラス設計というのは、どういうインターフェースにすれば
クラスが"使いやすいか" というクラスの利用者からの視点で設計する
getPriceというメソッドではなく、その中のコードの実装の
話をしてる時点で視野が狭いのは明らか
テストコードも書いたことないだろ?
テストコードは必然的に使いやすいクラスであることが要求されるからな
2021/01/31(日) 18:27:53.96ID:JUmaLjMc
> コードを見たとき、記述から実装内容を察することができることが重要と言うべきだったかな...
実装の詳細は隠蔽しろって習わなかったのか?
実装の詳細は隠蔽しろって習わなかったのか?
2021/01/31(日) 18:31:40.92ID:TZSorCef
別に、実装者だけではなくライブラリユーザーの事を考えてますよ。
実際、ライブラリ開発者ですしお寿司。
じゃなければ、getPriceって誰か何のためにーなんて質問をする発想はないよ。
たしかに、実装の詳細は隠蔽するべきだね。
でも、私が注目しているのは、まさにユーザビリティに相当する部分です。
実際、ライブラリ開発者ですしお寿司。
じゃなければ、getPriceって誰か何のためにーなんて質問をする発想はないよ。
たしかに、実装の詳細は隠蔽するべきだね。
でも、私が注目しているのは、まさにユーザビリティに相当する部分です。
2021/01/31(日) 18:33:13.55ID:JUmaLjMc
じゃあ実装の詳細を無視して話をしよう
function getPrice(id) {
・・・隠蔽。1行かもしれないし100行かもしれない・・・
}
function getPrice(id) {
・・・隠蔽。1行かもしれないし100行かもしれない・・・
}
2021/01/31(日) 18:35:19.06ID:TZSorCef
1.getPriceが必要な場面を想像できますか?
→想像すること自体が間違いだと回答しましたが、はいorいいえ でお願いします。
2.それが想像できないのはなぜですか?
→想像すること自体が間違いだと回答しましたが、はいorいいえ でお願いします。
2.それが想像できないのはなぜですか?
2021/01/31(日) 18:37:59.05ID:JUmaLjMc
1.getPriceが必要な場面を想像できますか?
いいえ。
2.それが想像できないのはなぜですか?
出題に書いてないからです。
逆に出題に「これは商品オブジェクトです」と書いてあれば
getPriceが必要な場面を想像できます。
いいえ。
2.それが想像できないのはなぜですか?
出題に書いてないからです。
逆に出題に「これは商品オブジェクトです」と書いてあれば
getPriceが必要な場面を想像できます。
2021/01/31(日) 18:39:36.56ID:TZSorCef
>>38
もしかして...getPriceがクラスメソッドの実装ではない事に気がついていない?
もしかして...getPriceがクラスメソッドの実装ではない事に気がついていない?
2021/01/31(日) 18:41:32.55ID:JUmaLjMc
2021/01/31(日) 18:43:52.76ID:TZSorCef
2021/01/31(日) 18:45:22.65ID:JUmaLjMc
2021/01/31(日) 18:46:09.44ID:TZSorCef
>>44
いえいえ、ただのsin関数ですよ。数学の。
いえいえ、ただのsin関数ですよ。数学の。
2021/01/31(日) 18:47:29.69ID:JUmaLjMc
2021/01/31(日) 18:49:00.47ID:TZSorCef
...もしかして、三角関数知らない?
もうギブアップ。
もうギブアップ。
2021/01/31(日) 18:49:45.66ID:JUmaLjMc
2021/01/31(日) 18:50:29.12ID:TZSorCef
酷い意地悪を見た
2021/01/31(日) 18:54:20.45ID:uAw68cw/
面白すぎるだろこのやり取りw
最初から相手の話を聞く気がない人に説明をしても無駄無駄
最初から相手の話を聞く気がない人に説明をしても無駄無駄
2021/01/31(日) 18:54:30.12ID:uAw68cw/
諦めろ>>49!お疲れ様!
2021/01/31(日) 18:58:21.14ID:JUmaLjMc
stdnum.ca.sin SIN (Canadian Social Insurance Number).
https://arthurdejong.org/python-stdnum/doc/1.15/stdnum.ca.sin#module-stdnum.ca.sin
実際にあるみたいだなw
https://arthurdejong.org/python-stdnum/doc/1.15/stdnum.ca.sin#module-stdnum.ca.sin
実際にあるみたいだなw
2021/01/31(日) 18:59:23.14ID:uAw68cw/
sin関数は一目で具体的な用途が判るが、getPriceはそうじゃないし使い勝手もイマイチだって言いたいんだろ
察してやれ
察してやれ
2021/01/31(日) 19:00:26.13ID:JUmaLjMc
2021/01/31(日) 19:01:36.35ID:JUmaLjMc
2021/01/31(日) 19:03:23.18ID:TZSorCef
2021/01/31(日) 19:04:29.63ID:TZSorCef
>>53
よくわかりましたね。正解。
よくわかりましたね。正解。
2021/01/31(日) 19:05:57.07ID:JUmaLjMc
2021/01/31(日) 19:09:21.55ID:JUmaLjMc
function getPrice(id) {
const price = clothPrice.filter({ id }).first()
return price
}
これが一行(二行)だから関数にすべきでないとか
中身を直接書けば何やってるかわかるから関数にすべきでないというならば、
tan(数学のタンジェント)関数はなぜ用意されているのでしょうか?
double tan(double x) {
return sin(x) / cos(x);
}
たった一行です。中身を直接書けば何をやってるかわかります。
同じ理屈であれば、不要なはずです。
そういう結論になるはずです。
tanを関数にする理由は明らかですね。最初に言った理由と同じです
「clothPrice.filter({ id }).first()は何やってるの?」という質問が出るのであれば
それを関数にすることで可読性が上がるのです。中で何をやってるかは
意識させないようにするのが正しい設計です。
const price = clothPrice.filter({ id }).first()
return price
}
これが一行(二行)だから関数にすべきでないとか
中身を直接書けば何やってるかわかるから関数にすべきでないというならば、
tan(数学のタンジェント)関数はなぜ用意されているのでしょうか?
double tan(double x) {
return sin(x) / cos(x);
}
たった一行です。中身を直接書けば何をやってるかわかります。
同じ理屈であれば、不要なはずです。
そういう結論になるはずです。
tanを関数にする理由は明らかですね。最初に言った理由と同じです
「clothPrice.filter({ id }).first()は何やってるの?」という質問が出るのであれば
それを関数にすることで可読性が上がるのです。中で何をやってるかは
意識させないようにするのが正しい設計です。
2021/01/31(日) 19:22:21.34ID:TZSorCef
2021/01/31(日) 19:24:32.72ID:JUmaLjMc
コードはクソじゃないですが?
出題に書いてないって言うのは、出題がクソという意味ですが?
いい加減諦めたら?w
出題に書いてないって言うのは、出題がクソという意味ですが?
いい加減諦めたら?w
2021/01/31(日) 19:24:56.89ID:Ti7TRi+9
風呂入ってたら議論が白熱してた
俺どうすればいい?
俺どうすればいい?
2021/01/31(日) 19:25:29.66ID:JUmaLjMc
オナニーしてねろ
2021/01/31(日) 19:26:58.02ID:Ti7TRi+9
はい
2021/01/31(日) 19:28:30.31ID:TZSorCef
おかえり
もう、疲れたよパトラッシュ...
ところで、パトラッシュ、答えが知りたいな
もう、疲れたよパトラッシュ...
ところで、パトラッシュ、答えが知りたいな
2021/01/31(日) 19:30:52.25ID:Ti7TRi+9
てゆーか、答え言っていいの?
一応想定してた回答はあるけど
一応想定してた回答はあるけど
2021/01/31(日) 19:32:35.81ID:TZSorCef
いいよ!気になる。
2021/01/31(日) 19:34:13.36ID:JUmaLjMc
すでに指摘した点を蒸し返すなよ?
2021/01/31(日) 19:35:02.92ID:JUmaLjMc
せめてデメテルの法則ぐらいはわかった上で発言してくれな
2021/01/31(日) 19:35:18.81ID:Ti7TRi+9
2021/01/31(日) 19:36:30.29ID:Ti7TRi+9
2021/01/31(日) 19:37:21.40ID:JUmaLjMc
2021/01/31(日) 19:37:54.79ID:TZSorCef
2021/01/31(日) 19:38:59.71ID:Ti7TRi+9
>>72
まぁ思い付きの出題だから、その辺はすまんかった
まぁ思い付きの出題だから、その辺はすまんかった
2021/01/31(日) 19:39:20.06ID:JUmaLjMc
俺は何の勉強にもなってねーなw
2021/01/31(日) 20:18:52.57ID:OeszCOeJ
class Box {
private int h;
private int w;
public int getHeight(){
return this.h;
}
public int getWidth(){
return this.w;
}
public int setHeight(int value) {
this.h = value;
}
public int setWidth(int value){
this.w = value;
}
}
俺も出題しよっと
俺は上記、箱クラスを作った
カプセル化もしてるし、インスタンス化もできるし、まさにオブジェクト指向(キリッ)
さて、何が駄目でしょうか
前提...命名規則やインデント等の書き方の問題ではない
考えるべきこと...クラス設計的な問題点を見つけよ
private int h;
private int w;
public int getHeight(){
return this.h;
}
public int getWidth(){
return this.w;
}
public int setHeight(int value) {
this.h = value;
}
public int setWidth(int value){
this.w = value;
}
}
俺も出題しよっと
俺は上記、箱クラスを作った
カプセル化もしてるし、インスタンス化もできるし、まさにオブジェクト指向(キリッ)
さて、何が駄目でしょうか
前提...命名規則やインデント等の書き方の問題ではない
考えるべきこと...クラス設計的な問題点を見つけよ
2021/01/31(日) 20:21:04.97ID:OeszCOeJ
初期値書き忘れた
Javaの言語仕様で0が入るって事で
Javaの言語仕様で0が入るって事で
2021/01/31(日) 20:33:10.20ID:JUmaLjMc
2021/01/31(日) 20:34:17.92ID:JUmaLjMc
一文字変数が許されるのは、広くても関数レベル
可能ならそれよりも小さいブロックレベルまで
可能ならそれよりも小さいブロックレベルまで
2021/01/31(日) 20:36:14.99ID:JUmaLjMc
理由は「パッっと見」でクラス全体を見ることは普通は無理だから。
一文字変数は変数名から意図がわからないのでパッっと見でコードも同時に見れることが前提
一文字変数は変数名から意図がわからないのでパッっと見でコードも同時に見れることが前提
2021/01/31(日) 20:36:31.43ID:eKqnOz0E
うーん、この
2021/01/31(日) 20:38:19.85ID:OeszCOeJ
問題文に「命名規則は関係ない」って書いてあるのになぁ
2021/01/31(日) 20:39:22.25ID:JUmaLjMc
一文字変数は命名規則ではない
2021/01/31(日) 20:41:27.15ID:OeszCOeJ
脳がバグってるのか?
どうみても...ビジ...面白いから黙っておこう
どうみても...ビジ...面白いから黙っておこう
85デフォルトの名無しさん
2021/01/31(日) 22:12:44.94ID:HlWuf0AU >>76
hとwを高々保持するのが目的のようなやつをクラスにする必要あるやろかとは思う
あとプライベートにしてアクセッサを用意するのはいかにもなんだけど
これは言うほど嬉しくも無いと結論づけてもういいんじゃないかな
こーいうデータ保持クラスおまえらも山ほど書いてきたと思うけど
嬉しかったことあるかこれ?
結局これを受け入れる側のクラスライブラリとべったりの未来しか見えないし
hとwを高々保持するのが目的のようなやつをクラスにする必要あるやろかとは思う
あとプライベートにしてアクセッサを用意するのはいかにもなんだけど
これは言うほど嬉しくも無いと結論づけてもういいんじゃないかな
こーいうデータ保持クラスおまえらも山ほど書いてきたと思うけど
嬉しかったことあるかこれ?
結局これを受け入れる側のクラスライブラリとべったりの未来しか見えないし
8676(移動中)
2021/01/31(日) 22:30:49.34ID:g6MPPGEA >>85
素晴らしい!正解!!
理由説明も、その通り!
まぁ、解決するとしたら、そもそもこんなクラスを作るなorドメインロジックをしっかり記述しましょうってところか。
オブジェクト指向(キリッ)とか言いつつ、完全にオブジェクト指向の本質を無視したプログラムでした。
素晴らしい!正解!!
理由説明も、その通り!
まぁ、解決するとしたら、そもそもこんなクラスを作るなorドメインロジックをしっかり記述しましょうってところか。
オブジェクト指向(キリッ)とか言いつつ、完全にオブジェクト指向の本質を無視したプログラムでした。
2021/01/31(日) 23:07:03.11ID:kFPKIccw
でも教科書にはこういう例しか載っていないんだよな・・・
2021/01/31(日) 23:28:33.14ID:xTcVCzeY
たしかに
Box box = new Box();
box.setHeight(10);
box.getHeight();
box.setWidth(7);
こんなことやってても虚しいなw
せめて
Box box1 = new Box(10, 7);
Box box2 = new Box(10, 5);
if( box1.area() < box2.area() ){}
くらいのことはできてほしいな
あと、コンストラクタで変な値(マイナスとか)を入れたら例外を出すとか
教科書はまだ未開拓なところがあるからしゃーない
最近の学生がどんな教科書を読んでるかは知らないけど
Box box = new Box();
box.setHeight(10);
box.getHeight();
box.setWidth(7);
こんなことやってても虚しいなw
せめて
Box box1 = new Box(10, 7);
Box box2 = new Box(10, 5);
if( box1.area() < box2.area() ){}
くらいのことはできてほしいな
あと、コンストラクタで変な値(マイナスとか)を入れたら例外を出すとか
教科書はまだ未開拓なところがあるからしゃーない
最近の学生がどんな教科書を読んでるかは知らないけど
89デフォルトの名無しさん
2021/01/31(日) 23:28:37.40ID:HlWuf0AU 実装ありきでそれに対するアクセッサという順にしか考えないし
実装ではなくてインタフェースに対してプログラミングするとかも分かってない
インタフェースを設計する上で見るべきところに思考がフォーカスされてない
C#はプロパティがあって簡潔で嬉しい!これでアクセッサ書き放題ぐへへってなもん
実装ではなくてインタフェースに対してプログラミングするとかも分かってない
インタフェースを設計する上で見るべきところに思考がフォーカスされてない
C#はプロパティがあって簡潔で嬉しい!これでアクセッサ書き放題ぐへへってなもん
9089
2021/01/31(日) 23:29:48.84ID:HlWuf0AU あ、流れ読んでなかった
>>89はどれに対するレスじゃなくて雑感ね
>>89はどれに対するレスじゃなくて雑感ね
2021/01/31(日) 23:32:30.66ID:JUmaLjMc
ふう。やれやれ
アクセッサにするのは将来の拡張性のためだろ
Javaであればプロパティが存在しないから
そうしないとインターフェース互換性を保ったまま
継承することができない。
言われてコードを書いてるだけで、その理由を知らないんだな
アクセッサにするのは将来の拡張性のためだろ
Javaであればプロパティが存在しないから
そうしないとインターフェース互換性を保ったまま
継承することができない。
言われてコードを書いてるだけで、その理由を知らないんだな
2021/01/31(日) 23:37:56.79ID:JUmaLjMc
自分か継承をしたことがないからって
クソコードというのはコードの話をしてない
自分の経験の話になっている
クソコードというのはコードの話をしてない
自分の経験の話になっている
2021/01/31(日) 23:39:23.18ID:xTcVCzeY
大丈夫?ID真っ赤だぞ
2021/01/31(日) 23:45:54.87ID:JUmaLjMc
IDが赤くなるのはレスが多いからなだけだぞ?
それ以外に意味はない
それ以外に意味はない
2021/02/02(火) 07:34:00.26ID:Tpt4JRkR
クラス利用者の事を考えずに実装したクラスは全部クソコード説
2021/02/02(火) 14:23:08.30ID:bhwRAjFJ
お前の書いたのは全てクソコード説
2021/02/02(火) 14:38:58.03ID:o3/qhRLn
てめえのもな
2021/02/02(火) 15:05:56.95ID:dfd6YEEl
>>96
このスレで語られている内容を理解できない96はクソコードしか書けないニート説
このスレで語られている内容を理解できない96はクソコードしか書けないニート説
2021/02/02(火) 15:18:13.00ID:mk8gJgM8
>>11
コードの良し悪しは用途と仕様が不明確ならまともな判断はできないから
どちらもわからない状態じゃコーディングプラクティスの指摘だけになる
- clothPriceはどっからやってくるの? それでいいの?
- idを指定して複数の値が返されるようなデータ構造を使うべきなの?
- filter(id).first()よりfind(id)のほうがいいのでは?
- clothPriceが1000万件になっても問題ない?
- 俺の知ってるJavaScriptでは({ id })とは書けないけど?
- .first()はどこにどういう仕様で定義されてるの?
- idに対応する値がclothPriceに存在しなかった場合にどうなるの?
- テストコードも一緒に出してね
コードの良し悪しは用途と仕様が不明確ならまともな判断はできないから
どちらもわからない状態じゃコーディングプラクティスの指摘だけになる
- clothPriceはどっからやってくるの? それでいいの?
- idを指定して複数の値が返されるようなデータ構造を使うべきなの?
- filter(id).first()よりfind(id)のほうがいいのでは?
- clothPriceが1000万件になっても問題ない?
- 俺の知ってるJavaScriptでは({ id })とは書けないけど?
- .first()はどこにどういう仕様で定義されてるの?
- idに対応する値がclothPriceに存在しなかった場合にどうなるの?
- テストコードも一緒に出してね
100デフォルトの名無しさん
2021/02/02(火) 16:23:17.93ID:F8EiZmWN101デフォルトの名無しさん
2021/02/02(火) 18:40:58.39ID:dfd6YEEl102デフォルトの名無しさん
2021/02/02(火) 18:53:57.65ID:7of77oce103デフォルトの名無しさん
2021/02/02(火) 19:17:56.91ID:dfd6YEEl ここまで詭弁が病気を疑うレベル
論理学が発展しそうだ
論理学が発展しそうだ
104デフォルトの名無しさん
2021/02/02(火) 19:18:09.01ID:dfd6YEEl ここまで詭弁が酷いと病気を疑うレベル
論理学が発展しそうだ
論理学が発展しそうだ
105デフォルトの名無しさん
2021/02/02(火) 19:20:12.00ID:j1AIfgcw >>103
そんな滅茶苦茶な日本語を書くほど興奮してるのか?何が導火線に火を着けたんだw
そんな滅茶苦茶な日本語を書くほど興奮してるのか?何が導火線に火を着けたんだw
106デフォルトの名無しさん
2021/02/02(火) 19:27:02.71ID:ReeT4XGv >>102
アスペ死ね
アスペ死ね
107デフォルトの名無しさん
2021/02/02(火) 19:33:33.22ID:NnSaCayY さあ盛り上がって参りました
108デフォルトの名無しさん
2021/02/02(火) 20:57:02.78ID:LnwudBv/ 脳にコロナが沢山います
109デフォルトの名無しさん
2021/02/02(火) 21:30:20.78ID:IyiGSAGP >>11はせっかくお題を出してくれたんだから建設的に行こうや
あら探ししてても成長が無いぞ
> getPrice(id)
IDから価格を引くようなことするんなら
DBMS側で全部管理しておいて
コード上にはDM操作API(※)の操作のみがあるほうがスッキリすると思う
※例えばJavaで言ったらJDBC呼び出し
> clothPrice
あとこれ
fooPrice, barPriceってどんどん増えてきそうだけど大丈夫か?って思う
データの中身を区別したあとのものを変数に入れるのが不気味
クエリのパラメータ側にあったほうが自然に思える
なるべく細かくないものから指摘した
あら探ししてても成長が無いぞ
> getPrice(id)
IDから価格を引くようなことするんなら
DBMS側で全部管理しておいて
コード上にはDM操作API(※)の操作のみがあるほうがスッキリすると思う
※例えばJavaで言ったらJDBC呼び出し
> clothPrice
あとこれ
fooPrice, barPriceってどんどん増えてきそうだけど大丈夫か?って思う
データの中身を区別したあとのものを変数に入れるのが不気味
クエリのパラメータ側にあったほうが自然に思える
なるべく細かくないものから指摘した
110デフォルトの名無しさん
2021/02/02(火) 21:31:10.75ID:IyiGSAGP 訂正
×DM操作API
○DB操作API
×DM操作API
○DB操作API
111デフォルトの名無しさん
2021/02/02(火) 22:08:39.45ID:mk8gJgM8 >>109
毎回DB読まなくてもいいようにマスタデータをメモリ上にロードしてるのかもしれない
const makeCloth = function(repository) {
const clothPrice = repository.load(…)
return {
getPrice(id) {
const price = clothPrice.find(id)
return price
}
}
}
const Cloth = makeCloth(repository)
Cloth.getPrice(id)
毎回DB読まなくてもいいようにマスタデータをメモリ上にロードしてるのかもしれない
const makeCloth = function(repository) {
const clothPrice = repository.load(…)
return {
getPrice(id) {
const price = clothPrice.find(id)
return price
}
}
}
const Cloth = makeCloth(repository)
Cloth.getPrice(id)
112デフォルトの名無しさん
2021/02/03(水) 00:29:01.19ID:2d6hEoKZ 明示的にポインタ型で変数宣言したらauto&にしろって指摘受けたけど型推論にメリットってあるのか
聞くのも面倒だから言う通りに修正したけど
聞くのも面倒だから言う通りに修正したけど
113デフォルトの名無しさん
2021/02/03(水) 07:53:29.40ID:WEM0wpGD 自分の場合、型推論は
var x = 何か
var y = x
var z = y
var a = z
...
「何か」の部分に扱う型の決定を委ねたい場合に使う
でも、「何か」に任せたら不具合になりかねない場合は使わない
var x = 何か
var y = x
var z = y
var a = z
...
「何か」の部分に扱う型の決定を委ねたい場合に使う
でも、「何か」に任せたら不具合になりかねない場合は使わない
114デフォルトの名無しさん
2021/02/03(水) 17:47:38.43ID:cEj1fKgU >>111
流石にそれは問題文の課題解釈
流石にそれは問題文の課題解釈
115デフォルトの名無しさん
2021/02/04(木) 13:52:50.53ID:xGlwnT6u クソコードは存在しない。
クソプログラマがいるだけだ。
クソプログラマがいるだけだ。
116デフォルトの名無しさん
2021/02/04(木) 15:37:08.26ID:DKUfS2zw 前件否定
詭弁スレかなここは
詭弁スレかなここは
117デフォルトの名無しさん
2021/02/04(木) 15:40:28.24ID:9Y9XT+dm クソプログラマが書いたコードがクソコード
118デフォルトの名無しさん
2021/02/04(木) 16:11:03.81ID:xGlwnT6u 普通のコードを解釈と言う名の詭弁で棄損している
ケチを付けるためだけに延々と持論を展開したりな
すると普通のコードがゴミというレッテルを貼られる
そりゃあそうだ、そいつはアラを見つけて如何にしてレッテルを貼り付けるかだけに終始してるからだ
だからそいつには「ゴミ化」の手法がある
ケチを付けるためだけに延々と持論を展開したりな
すると普通のコードがゴミというレッテルを貼られる
そりゃあそうだ、そいつはアラを見つけて如何にしてレッテルを貼り付けるかだけに終始してるからだ
だからそいつには「ゴミ化」の手法がある
119デフォルトの名無しさん
2021/02/04(木) 17:51:50.18ID:JCtgNhXu すごいドヤ顔してそう
120デフォルトの名無しさん
2021/02/04(木) 18:10:05.67ID:cLYP9bxd >>118が何を言ってるのか理解できない
■ このスレッドは過去ログ倉庫に格納されています
