雑談スレ
前スレ
プログラマの雑談部屋 ★273
https://medaka.5ch.net/test/read.cgi/prog/1681225229/
探検
プログラマの雑談部屋 ★274
■ このスレッドは過去ログ倉庫に格納されています
1仕様書無しさん
2023/04/17(月) 19:11:47.99766仕様書無しさん
2023/04/22(土) 10:56:19.26 ていうかユーザー一覧画面を処理ごとに作ってるのかよ
うわぁ。。。
うわぁ。。。
767仕様書無しさん
2023/04/22(土) 10:56:59.17 ね
なんで業務用システムを
毎回毎回1から作ってるのか
なんで業務用システムを
毎回毎回1から作ってるのか
769仕様書無しさん
2023/04/22(土) 10:58:37.30 >>762
その列挙メソッドを持つクラスってのは、少なくとも3つのテーブルから情報を取得して情報をフィルタして結果を返すラッパークラスだろ
しかも、よっぽどうまく設計しないと、この処理でしか使えないという
そして、本人は上手く設計したつもりでも、他のチームメンバーからは誰からも利用されることのないボッチクラスになる可能性が高い
この程度の処理は、インターフェースとかクラスとか使って無駄に複雑に書かれるより、手続き型で素直に書かれてた方がメンテもしやすかったりするんだよなぁ
その列挙メソッドを持つクラスってのは、少なくとも3つのテーブルから情報を取得して情報をフィルタして結果を返すラッパークラスだろ
しかも、よっぽどうまく設計しないと、この処理でしか使えないという
そして、本人は上手く設計したつもりでも、他のチームメンバーからは誰からも利用されることのないボッチクラスになる可能性が高い
この程度の処理は、インターフェースとかクラスとか使って無駄に複雑に書かれるより、手続き型で素直に書かれてた方がメンテもしやすかったりするんだよなぁ
770仕様書無しさん
2023/04/22(土) 11:00:30.92771仕様書無しさん
2023/04/22(土) 11:01:09.11772仕様書無しさん
2023/04/22(土) 11:01:15.17 クラスのインヘリタンスがどうのこうのなんだよ
774仕様書無しさん
2023/04/22(土) 11:03:19.88 パッケージ(bootstrap)
775仕様書無しさん
2023/04/22(土) 11:03:35.89 >>752
ユーザーリポジトリクラス
ポイント数でユーザー検索する仕様を表現するクラス
半年利用がないでユーザー検索する仕様を表現するクラス
年齢が60〜◯×市って条件を判定するポリシークラス
買い物実績でユーザー検索する仕様を表現するくらす
SMSを送信するクラス
Aマーケットでポイント利用促進の案内メッセージを作るクラス
ユーザーリポジトリクラス
ポイント数でユーザー検索する仕様を表現するクラス
半年利用がないでユーザー検索する仕様を表現するクラス
年齢が60〜◯×市って条件を判定するポリシークラス
買い物実績でユーザー検索する仕様を表現するくらす
SMSを送信するクラス
Aマーケットでポイント利用促進の案内メッセージを作るクラス
776仕様書無しさん
2023/04/22(土) 11:04:47.62777仕様書無しさん
2023/04/22(土) 11:04:51.25 えーあー工場があって車があってタイヤがあるのがオブジェクト至高
778仕様書無しさん
2023/04/22(土) 11:05:29.35 なんかいいソフト思いつきませんか
犬の餌みたいに与えられる業務案件はもういやだ
犬の餌みたいに与えられる業務案件はもういやだ
779仕様書無しさん
2023/04/22(土) 11:05:33.04 >>758
世の中にはUIからのアクションごとに実質一つの関数でまかなう書き方する会社がごまんとあるんやで
ユーザdtoやポイントdtoにvo的な60歳以上や1000ポイント以上みたいな判定プロパティは持たせても、メインの処理は一本手続きや
世の中にはUIからのアクションごとに実質一つの関数でまかなう書き方する会社がごまんとあるんやで
ユーザdtoやポイントdtoにvo的な60歳以上や1000ポイント以上みたいな判定プロパティは持たせても、メインの処理は一本手続きや
784仕様書無しさん
2023/04/22(土) 11:08:00.46 Dtoは構造体だよ
787仕様書無しさん
2023/04/22(土) 11:08:49.85 >>779
アクションはUIからデータを取り出して最小限の入力チェックを行い、サービスを呼び出し、サービスの戻り値をUIに書き戻すだけ、だって教わらないのかね?世の中の平均的プログラマってさ
アクションはUIからデータを取り出して最小限の入力チェックを行い、サービスを呼び出し、サービスの戻り値をUIに書き戻すだけ、だって教わらないのかね?世の中の平均的プログラマってさ
789仕様書無しさん
2023/04/22(土) 11:09:57.99 プログラミング言語なんて1,2つでよくて契約とるところから一人でできることのが大事
790仕様書無しさん
2023/04/22(土) 11:10:46.19791仕様書無しさん
2023/04/22(土) 11:11:03.63 ファンクションキー毎に200行くらいあって
内容がほとんど同じで、キーによって微妙に違う所がある
そんなコピペ方式の実装を見たことがある
内容がほとんど同じで、キーによって微妙に違う所がある
そんなコピペ方式の実装を見たことがある
792仕様書無しさん
2023/04/22(土) 11:11:04.09 何万件ものデータ扱うならDBとか意味あるけど
たかだかすうひゃ
たかだかすうひゃ
794仕様書無しさん
2023/04/22(土) 11:15:07.24 >>787
そりゃ世間はコントローラアクションからドメインクラスを呼び出すのが作法になってるからだが、はっきり言ってトランザクションスクリプトしてるとボイラーテンプレートだしな。
まあ実際にはサービスクラスpublicメソッド呼び出しにaopしてるからコントローラはその呼び出しになってるけど
そりゃ世間はコントローラアクションからドメインクラスを呼び出すのが作法になってるからだが、はっきり言ってトランザクションスクリプトしてるとボイラーテンプレートだしな。
まあ実際にはサービスクラスpublicメソッド呼び出しにaopしてるからコントローラはその呼び出しになってるけど
796仕様書無しさん
2023/04/22(土) 11:16:08.57 >>783
俺のはDDDに忠実な、スタンダードな設計
DDDをよく理解せずに、リポジトリとかサービスって、言っとけばいいんだろ?
みたいな、浅い理解の仕方だと、仕様とか、ポリシーといった概念が抜け落ちて、しまうんだ
すると、リポジトリにやたら複雑な検索を実行するメソッドとか、同じ条件判定が、あちこちにコピーされる、といった、なんとも残念な、エセDDDになってしまう
俺のはDDDに忠実な、スタンダードな設計
DDDをよく理解せずに、リポジトリとかサービスって、言っとけばいいんだろ?
みたいな、浅い理解の仕方だと、仕様とか、ポリシーといった概念が抜け落ちて、しまうんだ
すると、リポジトリにやたら複雑な検索を実行するメソッドとか、同じ条件判定が、あちこちにコピーされる、といった、なんとも残念な、エセDDDになってしまう
797仕様書無しさん
2023/04/22(土) 11:16:44.04 ユーザクラスを生成してポイントと
履歴をテーブルから取得でええんじゃね?
よくあるパターンだとserviceで判定してactionにSMS通知フラグを
返しやるみたいな
履歴をテーブルから取得でええんじゃね?
よくあるパターンだとserviceで判定してactionにSMS通知フラグを
返しやるみたいな
800仕様書無しさん
2023/04/22(土) 11:18:44.21 みんな家に引きこもってないで出かけなさーい
801仕様書無しさん
2023/04/22(土) 11:19:00.28802仕様書無しさん
2023/04/22(土) 11:20:17.82 >>786
ううむ、バッドプラクティス
そのまま進むと、リポジトリの責務が際限なく膨らみ、様々なビジネスロジックの置き場と化す
悪いことはいわん、お若いの
リポジトリはシンプルに保つのじゃ
なお、CQRSで割り切って、短いキャンペーンの間なら、表示までは、テキトーなSQLでええやろ、ならおk
ずっと残すものは、綺麗に作れ。これ大事
ううむ、バッドプラクティス
そのまま進むと、リポジトリの責務が際限なく膨らみ、様々なビジネスロジックの置き場と化す
悪いことはいわん、お若いの
リポジトリはシンプルに保つのじゃ
なお、CQRSで割り切って、短いキャンペーンの間なら、表示までは、テキトーなSQLでええやろ、ならおk
ずっと残すものは、綺麗に作れ。これ大事
804仕様書無しさん
2023/04/22(土) 11:20:32.69806仕様書無しさん
2023/04/22(土) 11:23:23.63 マイクロサービスはそうするよ
という肯定意見がないのでこのスレはその程度なのだろう
という肯定意見がないのでこのスレはその程度なのだろう
807仕様書無しさん
2023/04/22(土) 11:23:25.89 何万件ものデータ扱うならDBとか意味あるけど
たかだか数百件扱うのに導入する意味が分からないよ
たかだか数百件扱うのに導入する意味が分からないよ
808仕様書無しさん
2023/04/22(土) 11:24:25.32809仕様書無しさん
2023/04/22(土) 11:24:32.70 条件をオブジェクトにするやつって複数のキャンペーンにどう対応するんだろう
全部クラス化するのか?
全部クラス化するのか?
810仕様書無しさん
2023/04/22(土) 11:24:50.59 数百件って条件は何処から出て来たんだよ
814仕様書無しさん
2023/04/22(土) 11:28:18.69 >>809
クラス化しても、後でそれでカバーできない条件ってのが絶対出てくるから、クラスの書き直し、それに依存してるコードの修正、そしてテストも失敗するから、大量のテストの修正ってパターンだな
クラス化しても、後でそれでカバーできない条件ってのが絶対出てくるから、クラスの書き直し、それに依存してるコードの修正、そしてテストも失敗するから、大量のテストの修正ってパターンだな
815仕様書無しさん
2023/04/22(土) 11:28:56.78 DBにする理由は永続化でデータ件数とかより
こっちかなと
テキストとかCSVで保存すると排他制御とか
行単位では出来ないし、何がどれやら作った人にしか解らなくなる
こっちかなと
テキストとかCSVで保存すると排他制御とか
行単位では出来ないし、何がどれやら作った人にしか解らなくなる
816仕様書無しさん
2023/04/22(土) 11:28:59.08 検索条件の一つ一つをクラス化しなきゃいけないと思ってるやつは電卓を作るときはボタンの一つ一つを全部クラス化しなきゃいけないとか思ってそうだな
Value Objectを知らんのだな
Value Objectを知らんのだな
818仕様書無しさん
2023/04/22(土) 11:30:15.37 まあ、皆自分の経験で仕事の規模も類推してしまいがちで
そのため過度に大げさになったり、小さくまとまり過ぎる事もあるだろう
そのため過度に大げさになったり、小さくまとまり過ぎる事もあるだろう
820仕様書無しさん
2023/04/22(土) 11:33:59.36 結局、SQLで書きにくい条件は、一旦メモリに読み込んでコードでゴリゴリフィルターかけて抽出するって感じ?
で、ゴリゴリフィルター部分をオレオレクラスで華麗に設計すればいいのか
で、ゴリゴリフィルター部分をオレオレクラスで華麗に設計すればいいのか
821仕様書無しさん
2023/04/22(土) 11:35:50.21 10kmラン54m44s
用もないのに有明まで走ってきた
用もないのに有明まで走ってきた
823仕様書無しさん
2023/04/22(土) 11:36:55.05 >>801
もしかして、仕様クラスを理解してない
エンティティが満たすべき、条件を抽象化するためのクラスだよ
だから仕様っていうの
リポジトリは、渡された仕様を満たすエンティティを、検索するだけ、だから業務の事を知らなくていいので、スッキリ
仕様を満たす、エンティティだけが、メモリに読み込まれるので、メモリ効率も抜群
もしかして、仕様クラスを理解してない
エンティティが満たすべき、条件を抽象化するためのクラスだよ
だから仕様っていうの
リポジトリは、渡された仕様を満たすエンティティを、検索するだけ、だから業務の事を知らなくていいので、スッキリ
仕様を満たす、エンティティだけが、メモリに読み込まれるので、メモリ効率も抜群
824仕様書無しさん
2023/04/22(土) 11:37:17.26 利用促進の案内クラスを作っておいて
条件や内容は可変にしておけば、後々楽だろう
条件や内容は可変にしておけば、後々楽だろう
825仕様書無しさん
2023/04/22(土) 11:38:05.74826仕様書無しさん
2023/04/22(土) 11:38:53.56 前向きに明るくポジティブに
みたいな愚痴も言えない空気押し付けられるのどう思う?
みたいな愚痴も言えない空気押し付けられるのどう思う?
828仕様書無しさん
2023/04/22(土) 11:41:58.18 SQLでも普通は一気にメモリに読み込むんじゃなくて、1件ずつ読みながら処理だからそれがネックになる事はないわな
SQL自体にしてもSQLビルダーで複雑な条件を動的に生成出来るし
SQL自体にしてもSQLビルダーで複雑な条件を動的に生成出来るし
829仕様書無しさん
2023/04/22(土) 11:43:50.55 年齢指定なんかは、運用時に自由にできたほうが便利だと思いますが
いかがですか
いかがですか
830仕様書無しさん
2023/04/22(土) 11:44:39.36 SQLはまとめてデータ取れてる気がすんだけど
それって実際は1件ずつFetchした結果を見てるから
そう感じるってだけなんかな?
それって実際は1件ずつFetchした結果を見てるから
そう感じるってだけなんかな?
831仕様書無しさん
2023/04/22(土) 11:46:27.14 >>809
キャンペーンごとに作る
var spec1 = new キャンペーンX対象者仕様();
var spec2 = new キャンペーンY対象者仕様();
var spec3 = new キャンペーンZ対象者仕様();
users.find(spec1);
users.find(spec2);
users.find(spec3);
繰り返しキャンペーンで、毎回微妙に変えたいならパラメータ化してもいい
var spec4 = new 定期キャンペーンW対象者仕様(age: 60, addressNearBy: "◯×");
users.find(spec4);
エレガント、、、
実にエェエエエエエレガントッ!
キャンペーンごとに作る
var spec1 = new キャンペーンX対象者仕様();
var spec2 = new キャンペーンY対象者仕様();
var spec3 = new キャンペーンZ対象者仕様();
users.find(spec1);
users.find(spec2);
users.find(spec3);
繰り返しキャンペーンで、毎回微妙に変えたいならパラメータ化してもいい
var spec4 = new 定期キャンペーンW対象者仕様(age: 60, addressNearBy: "◯×");
users.find(spec4);
エレガント、、、
実にエェエエエエエレガントッ!
833仕様書無しさん
2023/04/22(土) 11:48:06.07834仕様書無しさん
2023/04/22(土) 11:48:29.23 性別の指定がありませんが、これは担当者様の見落としですか?
835仕様書無しさん
2023/04/22(土) 11:49:04.83 >>834
ジェンダーフリーの時代だからじゃぁぁ
ジェンダーフリーの時代だからじゃぁぁ
836仕様書無しさん
2023/04/22(土) 11:50:32.86 なんというか、世間的にもdddしなくてもvoガッツリ育てりゃどうでも良くねってなってきてるフシあって、少なくとも2000年代に主張されてたdddとは違うプラクティスになってるよな
837仕様書無しさん
2023/04/22(土) 11:50:36.74 >>830
それは書き方次第
一気にも取れるし、カーソルで一件ずつも処理できる
C#だと、Listに読み込むか、IQueryableで遅延評価するみたいな感じか
レコードを全部オブジェクトに変換してから抽出しようとするとメモリ使う
それは書き方次第
一気にも取れるし、カーソルで一件ずつも処理できる
C#だと、Listに読み込むか、IQueryableで遅延評価するみたいな感じか
レコードを全部オブジェクトに変換してから抽出しようとするとメモリ使う
838仕様書無しさん
2023/04/22(土) 11:50:40.40 節句寿司太陽
839仕様書無しさん
2023/04/22(土) 11:52:38.16 >>829
時と場合
仕様クラスのコンストラクタで、可変にしつつ、デフォルト60とかでもいい
大事なのは、そのキャンペーンを、何度やるか
2回目が決まった時に、可変にしたって、いい
でも、一回しかやらない場合でも、業務を明確化するために、クラスにする
それは、条件がどんなに小さくても、だ
時と場合
仕様クラスのコンストラクタで、可変にしつつ、デフォルト60とかでもいい
大事なのは、そのキャンペーンを、何度やるか
2回目が決まった時に、可変にしたって、いい
でも、一回しかやらない場合でも、業務を明確化するために、クラスにする
それは、条件がどんなに小さくても、だ
840仕様書無しさん
2023/04/22(土) 11:54:05.38843仕様書無しさん
2023/04/22(土) 11:56:56.26 ポイントテーブルが処理のトリガーなのか
ユーザークラス生成の前にポイントの読み込みが先ですわね
こりゃお恥ずかしい ガハハハ
ユーザークラス生成の前にポイントの読み込みが先ですわね
こりゃお恥ずかしい ガハハハ
844仕様書無しさん
2023/04/22(土) 11:58:58.80 古えの90年代に存在したADOのRecordSetは破棄するまでDBに繋がったまま一行ずつフェッチする例だった気がする
メモリが少ないしそうなるよなって思うやつ
メモリが少ないしそうなるよなって思うやつ
845仕様書無しさん
2023/04/22(土) 11:59:49.30 >>836
というか、使う側のメンタリティが、変わった、のだろう
完全性だのなんだのと、とにかく、データが厳密であることを、求められた、昔は
大衆が、稀にしか起きないデータ誤りなら、運用でカヴァーした方が、安い、実行速度が速い、と気付いた
というか、使う側のメンタリティが、変わった、のだろう
完全性だのなんだのと、とにかく、データが厳密であることを、求められた、昔は
大衆が、稀にしか起きないデータ誤りなら、運用でカヴァーした方が、安い、実行速度が速い、と気付いた
846仕様書無しさん
2023/04/22(土) 11:59:57.46 検索結果オブジェクトと
案内の内容オブジェクトを
いい感じで連携させればいい
案内の内容オブジェクトを
いい感じで連携させればいい
847仕様書無しさん
2023/04/22(土) 12:00:14.04 お前らが華麗に設計して作ったクラスも、チームの他のメンバーからは誰にも気づかれず二度と再利用される事はないのであった…
849仕様書無しさん
2023/04/22(土) 12:03:37.05 再利用なんて実感として1割以下なんだけど世の中はそこそこ再利用されているものなのか?
850仕様書無しさん
2023/04/22(土) 12:04:28.56 Javaとデザインパターンかなり覚えたけど
結局、設計する事はなくソース解析の時にしか約に立たなかったわ
だから土方は土方のままなんだわ
Javaは大規模システムに向いているから商流によって作業が違うので
規模の大きな会社に居ないとド底辺作業員になるというロジックが成り立つ
のでJavaを捨ててpythonReactマンになりますた
結局、設計する事はなくソース解析の時にしか約に立たなかったわ
だから土方は土方のままなんだわ
Javaは大規模システムに向いているから商流によって作業が違うので
規模の大きな会社に居ないとド底辺作業員になるというロジックが成り立つ
のでJavaを捨ててpythonReactマンになりますた
851仕様書無しさん
2023/04/22(土) 12:05:22.25 汎用的なクラスってのはいろんなパターンを想定して無駄に複雑だったりするからな
まずそれを理解するコストが面倒くせ!ってなるんよ
まずそれを理解するコストが面倒くせ!ってなるんよ
854仕様書無しさん
2023/04/22(土) 12:07:42.10 今日はいい議論ができた
5chもたまには有意義なのだな
5chもたまには有意義なのだな
855仕様書無しさん
2023/04/22(土) 12:07:52.25 一発のみでもDIにしとけよとは思う
856仕様書無しさん
2023/04/22(土) 12:08:33.21 >>850
そりゃデザインパターンの大半はフレームワークを作る側か、シミュレーション分野などでしか使わんからな
普通の業務システムではフレームワークの選定とオレオレフレームワークに調整する作業者でないと、かっちりハマる機会はあまり無い
そりゃデザインパターンの大半はフレームワークを作る側か、シミュレーション分野などでしか使わんからな
普通の業務システムではフレームワークの選定とオレオレフレームワークに調整する作業者でないと、かっちりハマる機会はあまり無い
859仕様書無しさん
2023/04/22(土) 12:11:33.72 休日だからS級からZ級まで色んなプログラマが来てる
いや、S級は来ねえかw
いや、S級は来ねえかw
860仕様書無しさん
2023/04/22(土) 12:11:33.74 >>856
そうっすよね
個人的には業務をシステムに落とし込む段階で
オブジェクト指向とかデザインパターンって約に立つと
思ってたといか想像してたけど
そういう機会はないまま俺のJava道は終わりを告げたのだった
そうっすよね
個人的には業務をシステムに落とし込む段階で
オブジェクト指向とかデザインパターンって約に立つと
思ってたといか想像してたけど
そういう機会はないまま俺のJava道は終わりを告げたのだった
862仕様書無しさん
2023/04/22(土) 12:13:32.14 Javaは勉強するものであって実務で使う物ではない
例外で金融だけはJavaがベストだけど
例外で金融だけはJavaがベストだけど
863仕様書無しさん
2023/04/22(土) 12:13:53.44 で、お前ら昼飯何食うの
864仕様書無しさん
2023/04/22(土) 12:14:12.77 >>857
緊急に決まったキャンペーンでいちいち呼び出されて設計実装テストアップロード更新とかやってらんないよな
キャンペーンテーブルを作ってそこにクライアントがデータを打ち込めるUIを作るに決まってる
緊急に決まったキャンペーンでいちいち呼び出されて設計実装テストアップロード更新とかやってらんないよな
キャンペーンテーブルを作ってそこにクライアントがデータを打ち込めるUIを作るに決まってる
865仕様書無しさん
2023/04/22(土) 12:14:37.12 コーディングするこっち側が
可変部の見当付けておいて、
なんなら半自動でソース生成すればいい
可変部の見当付けておいて、
なんなら半自動でソース生成すればいい
866仕様書無しさん
2023/04/22(土) 12:15:01.15■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 立民・野田代表「早急に辞任を」 首相官邸筋の核兵器保有発言 ★2 [蚤の市★]
- 高市首相、円安・物価高で利上げ容認 昨年「あほ」と批判も…就任後は財政拡張批判も意識 [蚤の市★]
- 【東京】駅員が屋外に男性放置し通報せず 通行人が通報 搬送後死亡、都営地下鉄大江戸線清澄白河駅 [ぐれ★]
- 松村沙友理「いい女っていっぱいおるけどいい男あんまおらんくない?30オーバーでいい男性ってみんな結婚してる」★2 [muffin★]
- 【紅白】原爆騒動のaespaは出演強行なのにAKB篠田麻里子は紅白出禁 「NHKはどういう判断基準なの?」の声 [ヴァイヴァー★]
- 玉川徹氏「高市総理の余計な一言で2兆円超の損失。どう考えてんだ」中国怒らせ観光客減→1500万円損失のバス会社も…モーニングショー [少考さん★]
- 【実況】博衣こよりのえちえちスーパーダンガンロンパ5🧪
- 【高市】処方箋1100品目を自費負担にすることを自民と維新が合意、来年実施へ「解熱剤、湿布、アレルギー、アトピー薬など」 [817260143]
- 【実況】博衣こよりのえちえちスーパーダンガンロンパ4🧪
- 【漫画】日本国民、バカだった… [201193242]
- 宇崎ちゃんは遊びたい(今は意中の先輩と毎日ゴリゴリのセックスしてます)←これ
- 一瞬だけ凄い流行ったもの挙げてけ
