- ふらっと C#,C♯,C#(初心者用) Part117 [転載禁止]©2ch.net
61 :デフォルトの名無しさん[sage]:2015/10/07(水) 00:11:55.48 ID:T1RoiOzF - Abstract Factoryを使えばいい
interface IHage { void DoHage(); } interface IHoge { void DoHoge(); } class Hage: IHage { private IHoge hoge; public Hage(Func<IHage, IHoge> hogeFactory) { this.hoge = hogeFactory(this); } } class Hoge: IHoge { private IHage hage; public Hoge(IHage hage) { this.hage = hage; } } これで new Hage(hoge => new Hage(hoge)) としてインスタンス作ればいい factoryを変えればテスト時にHageにダミーのIHoge実装を食わせることもできる
|
- 【JavaScript】スクリプト バトルロワイヤル51【php,py,pl,rb】©2ch.net
968 :デフォルトの名無しさん[sage]:2015/10/07(水) 00:18:01.59 ID:T1RoiOzF - そうやって安易に言語固有のデータ構造を永続化すると後で変更するときに地獄を見るんだよなあ
|
- ふらっと C#,C♯,C#(初心者用) Part117 [転載禁止]©2ch.net
63 :デフォルトの名無しさん[sage]:2015/10/07(水) 00:24:26.54 ID:T1RoiOzF - >>61訂正
new Hage(hage => new Hoge(hage))
|
- 【JavaScript】スクリプト バトルロワイヤル51【php,py,pl,rb】©2ch.net
972 :デフォルトの名無しさん[sage]:2015/10/07(水) 00:53:17.23 ID:T1RoiOzF - で、後でクラスを変更したくなったらどうするの?
コードを弄りづらくなるので、言語のオブジェクトをそのまま保存しようという考えは開発効率の面でも有害だよ 最初に書いたきり放り出して二度と触らないならいいけどね
|
- 【JavaScript】スクリプト バトルロワイヤル51【php,py,pl,rb】©2ch.net
977 :デフォルトの名無しさん[sage]:2015/10/07(水) 07:22:29.14 ID:T1RoiOzF - >>975
MySQLもPostgresもOracleも今時ほとんどのDBはJSON型をネイティブでサポートしてるぞ 当然、検索もJSONの構造に沿った形でインデックス付きで可能
|
- ふらっと C#,C♯,C#(初心者用) Part117 [転載禁止]©2ch.net
77 :デフォルトの名無しさん[sage]:2015/10/07(水) 21:58:51.87 ID:T1RoiOzF - var groups = from x in hoge
where x.day.Year == 2015 && x.Month == 1 group x by x.BID into g; foreach (var g in groups) { Console.WriteLine(“BID={0}, Sum={1}”, g.Key, g.Sum(x => x.num)); }
|
- ふらっと C#,C♯,C#(初心者用) Part117 [転載禁止]©2ch.net
78 :デフォルトの名無しさん[sage]:2015/10/07(水) 21:59:22.05 ID:T1RoiOzF - >>77
訂正 into g は不要
|
- ふらっと C#,C♯,C#(初心者用) Part117 [転載禁止]©2ch.net
81 :デフォルトの名無しさん[sage]:2015/10/07(水) 22:06:02.97 ID:T1RoiOzF - >>79-80
それだとBIDでグループ化されてないよ メソッド形式でSumまで一行で書くならこう var sums = hoge.Where(tdata => 略) .GroupBy(tdata => tdata.BID) .Select(g => new { BID = g.Key, Sum = g.Sum(tdata => tdata.num) });
|
- ふらっと C#,C♯,C#(初心者用) Part117 [転載禁止]©2ch.net
87 :デフォルトの名無しさん[sage]:2015/10/07(水) 23:41:59.93 ID:T1RoiOzF - >>82
そもそも、IDしかわからない中途半端な投稿者オブジェクトを 新着一覧クラスの外に晒す必要があるのかよく考えたほうがいいよ。 新着一覧クラスが投稿者ID文字列のコレクションを公開するのが嫌なら 新着一覧クラス自身に投稿者詳細をダウンロードしてくるメソッドを持たせたっていい。 もちろん賛否両論あるだろうけど、オブジェクト指向に拘るのであれば オブジェクトから情報を取り出すのはなるべく避けて、オブジェクトに命令していくようにするのが基本。
|