オブジェクト指向システムの設計 174 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/09/26(火) 07:20:38.98ID:qu+DPehL
前スレ
オブジェクト指向システムの設計 172
http://mevius.2ch.net/test/read.cgi/tech/1467992113
オブジェクト指向システムの設計 173
http://mevius.2ch.net/test/read.cgi/tech/1502182334/

類似スレ
手続き型システムの設計 1
http://mevius.2ch.net/test/read.cgi/tech/1500282714
2017/10/20(金) 22:19:22.96ID:tVzPx1a9
>>685
まず本人を召還して質問攻めにする
2017/10/21(土) 01:13:21.31ID:Uy6nGuGD
アンドロイドアプリ開発って稼げるんかな?
2017/10/21(土) 01:50:48.55ID:7iF7m8RQ
レッドオーシャン
2017/10/21(土) 11:03:31.78ID:hrRqQerQ
>>687
業務アプリを受託で開発するのが主戦場
iOSと同時開発必須

自分で直接販売するのはバクチだね
アプリ数多いといってもニッチはまだまだ足りてない
2017/10/22(日) 16:21:52.81ID:cbaZLKfH
>>592
別に複数あっていいと思うが
社員給与を振り込む
給与の分類か属性かで
2017/10/22(日) 19:45:01.88ID:+ZCERvep
>>592
給与は社員に与えられるものだから
「社員に対して」は要らなくね?
2017/10/22(日) 20:06:35.35ID:rLFHcAK9
役員やパート・アルバイト等、社員以外のケースがあるんじゃね?
2017/10/22(日) 22:16:25.60ID:ACc+t4fi
>>592
お金を移動させる
694デフォルトの名無しさん
垢版 |
2017/10/22(日) 22:16:28.27ID:guBNBPv4
>>592
目的語でひとくくりにするとわかりにくいけど
日本語では名詞が述語をどう修飾するかは格で区別されるから
格を考えればよいかと

1.「振り込む」が述語ならば振込先は口座なので「社員の口座に」としたほうが良いかと
振り込む(社員の口座に:与格, 給料を:対格)

2.「社員に」を使うなら述語は「支払う」かな
支払う(社員に:与格, 給料を:対格)

3. 対格しか使いたくないんですということならば「社員の」という属格で対格を修飾するしかないんじゃないかな
振り込む(社員の給料を:対格)
2017/10/22(日) 22:33:46.62ID:NNQ/H7Ih
文章だけで表現しなけりゃいいだろw
696デフォルトの名無しさん
垢版 |
2017/10/22(日) 22:52:37.75ID:6ZVx9hPm
すっごい不評な法令検索つくって賞もらっている大学教授
法令データベース「e-Gov法令検索」リニューアルにあたり、同法情報研究センターの協力教員である名古屋大学情報基盤センター(センター長:森健策)の外山勝彦(とやまかつひこ)
2017/10/24(火) 06:59:53.59ID:lnfs4xW4
DDDと言えば20項目の責務単位でドメインクラス作ったら一つのグラフ作るのに20個のクラスがデータベースに問い合わせちゃってパフォーマンスやばい

有識者のみなさんはどうやってるの?
2017/10/24(火) 07:10:47.55ID:vrotHuwu
DDDならドメイン層とインフラ層のレイヤーは分けろ

つまりドメインのクラスが個々に
直接SQL文でDB叩いたりしない
2017/10/24(火) 07:28:15.97ID:lnfs4xW4
>>698
例えばドメインクラス「作業時間」にhogeプロジェクトの作業時間を問い合わせた時、作業時間クラスがDBクラス使って作業時間を教えてくれるんじゃないの?

この辺解らないとパフォーマンスの問題でアクティブレコードに走っちゃいそうです
2017/10/24(火) 07:38:44.12ID:vrotHuwu
>>699
たとえばソシャゲみたいなWebアプリをイメージしてみよう
一個アイテムを見るたびにDBアクセスしてたら重いから
画面を遷移するときにまとめてローディングするよな?

だからそういう風にインフラ層で
ある程度まとめてデータ取ってきて
ドメイン層の内部ではDBに直接触らないようにする
2017/10/24(火) 08:58:46.53ID:UVHXr0A6
>>700
それはレイヤ分けるメリットでなくて
レイヤ分けるデメリットをカバーする方法じゃないの
2017/10/24(火) 12:12:03.52ID:lnfs4xW4
>>700
あらかじめオブジェクトにぶち込むのかな
油断するとメモリ食いそう
2017/10/24(火) 12:12:39.91ID:1mA0bXuL
>>697
集約の単位が間違ってんじゃないの
2017/10/24(火) 12:15:40.46ID:lnfs4xW4
>>703
昔は画面単位にデータ取ってたけどトランザクションスクリプトアンチパターンになるから作業時間とか予算とかドメインでクラス分けたんだ

それぞれのクラスがデータベースに問い合わせるからウッホという状態に
2017/10/24(火) 17:47:57.40ID:cjHIRFnx
>>697
基本は集約一つにリポジトリ一つ
レポーティング用途の場合はドメインモデルやリポジトリを経由せずに
DBレイヤーに直接問い合わせるのも有り

ドメインモデルを経由しなければ
ドメインロジックが分散する可能性があるのでトレードオフを判断したり
それを避ける工夫が必要だったりする

Patterns, Principles, and Practices of Domain-Driven Designって本で
一つの章使ってレポーティングの実装パターンを紹介してるので読むといいと思う
2017/10/24(火) 19:37:04.66ID:zYnBGUyD
ドメイン駆動とORMって相性悪くない?

class Foo : ValueObject<Foo> { 〜 }
class Bar : ValueObject<Bar> { 〜 }
class Baz : ValueObject<Baz> { 〜 }

class Hoge : Entity<Hoge> {
private final Foo _foo;
private final Bar _bar;
public Hoge(Foo foo, Bar bar) {
Assert.notNull(foo);
Assert.notNull(bar);
_foo = foo;
_bar = bar;
}
public Baz queryBaz() {
// なんか計算する
return new Baz(...);
}
public Hoge doSomething() {
// なんか計算する
return new Hoge(..., _bar); // なんか計算した結果fooが変化する。_barはそのまま
}
}

ORMってこういうガチンコDDD的なオブジェクトってうまくマッピングしてくれないじゃん?
だからORM使おうとするとpublicプロパティに汚染されてゲロ吐きそうになる
かといってORMはDTOまでに留めてDTOとドメインオブジェクトのマッピングを手書きするってのはそれはそれでめんどくさい
2017/10/24(火) 19:50:43.93ID:bxrjOehA
>>706
AutoMapper
2017/10/24(火) 20:00:23.46ID:zYnBGUyD
>>707
AutoMapperってやつそんな賢いの?
2017/10/24(火) 20:44:30.93ID:1mA0bXuL
逆にDDDこそORMだろ
集約をそのまま永続化したいんだから
2017/10/24(火) 21:35:54.97ID:bxrjOehA
>>708
使わないなんて考えられない
2017/10/24(火) 21:36:46.21ID:zYnBGUyD
>>709
どうかな
さっきも書いたようにDDDに忠実にドメインモデルを構築するとpublicプロパティが無くなって完全コンストラクタでインスタンスを構築しなければならない
DTOのようにフラットな構造にならない点でもORMで扱いにくい
2017/10/24(火) 21:46:26.94ID:zYnBGUyD
そもそもDBが単にオブジェクトの置き場所になるってのも疑問だよ
RDBは個々のオブジェクトではなく集合としてのビジネスルールを表現するのに適している
単なるデータストアではない
1ヶ月の間に正当な休暇を間に挟まず3営業日連続で欠勤した従業員にはペナルティを与えるといった業務ルールがあったらSQLで解決するほうがスマート
2017/10/24(火) 21:50:42.54ID:8vhM38kM
どのORM使ってるの?
いまどきORMのために可視性を変えたりしないでしょ
2017/10/24(火) 21:58:23.29ID:8vhM38kM
>>712
> そもそもDBが単にオブジェクトの置き場所になるってのも疑問だよ

DDDだろうとトランザクションスクリプトだろうとDBの役割は変わらないよ
ドメインモデルから見てあたかも単なるオブジェクトの置き場であるかのように振る舞うっていうのは、
そう振る舞うように作ってるからそうなるのであって、DBから見たら、アプリがDDDで作られてるかどうかなんてわからない
2017/10/24(火) 22:02:14.66ID:vrotHuwu
>>712
じつはそういう考え方もアリだと思う
SQLやPrologでビジネスルール書くのもアリ

でも現実的にはDDDの
インフラ層にDBを隔離するやり方が無難だと思う

SQLでビジネスロジックを表現すると
シンプルな例だと分かりやすく感じても
実務レベルの複雑なルールでは非常に難解になる

OOでチマチマ差分を書いていく方が分かりやすい
これはなんでOOが主流なのかの理由でもあると思う
2017/10/24(火) 23:18:27.01ID:7kpfYeDE
>>712

ひっかけっぽい例だな
SQLかじったレベルじゃそれは書けない

普通にアプリでやったほうが柔軟性高そうだ
2017/10/25(水) 01:20:58.43ID:vWNNDC2i
>>712
RDBMS主体でやるプロジェクトもあるだろ
ただ古臭くて不便なことが多いからか
アプリケーション側でやるのがほとんど

技術者の数も違うからかな
2017/10/25(水) 07:21:56.95ID:xH/9oE/2
期待のデータベーススペシャリスト持ちが開発してくれたプログラム
1クラス1メソッドにSQLをぎっちり書いていてくれた
流石データベーススペシャリストだと思った
2017/10/25(水) 14:49:56.93ID:0GYD+24d
そんなんアーキテクチャ検討時に認識合わせしとけよ
単なる指示ミス
2017/10/25(水) 18:41:28.64ID:xH/9oE/2
>>719
チームリーダーは電気寄りのC使い
JAVAの実装にはノータッチ
2017/10/25(水) 19:15:55.71ID:xH/9oE/2
データベーススペシャリストがSQLしか知らんのは仕方ない

ソフ開持ってなきゃね
2017/10/25(水) 19:21:45.35ID:aatZ8FSF
オブジェクト指向のスペシャリストとは言ってないからな
2017/10/25(水) 19:39:46.07ID:Pb7+sINR
メンバー集める時はくだらん資格のことより影響を受けた本とか聞いた方がいい
2017/10/25(水) 19:51:28.91ID:U0g+4+bj
オブジェクトにメソッドでリクエスト飛ばすと答が返ってくるならそれはそれでいいような…
2017/10/25(水) 22:27:46.82ID:Iwa5PdiW
>>719
>>718みたいな奴が指示する立場なわけないだろw
2017/10/25(水) 22:52:11.24ID:Pb7+sINR
DBスキルつけても負の遺産と有害な社内規約のせいで役に立たないことが多いね
データアクセス層でオブジェクトにマップしたらもう二度と中は見たくない
2017/10/25(水) 23:16:26.90ID:0GYD+24d
>>720
javaはともかくJAVAって書かれると
あっ・・・(察し)ってなるから気をつけて
2017/10/25(水) 23:17:51.80ID:Pb7+sINR
J(AvA)し
729デフォルトの名無しさん
垢版 |
2017/10/26(木) 00:00:20.94ID:g5KvQD5L
>>727
アスペすぎるだろ
お前が気をつけろ
2017/10/26(木) 01:11:04.35ID:dPE1fcQ6
スクリプトの方はjava表記多いけど
Javaの方は書籍とかもJAVA表記多いよねぇ
2017/10/26(木) 01:17:09.43ID:1jsCLZfy
ネット校正員多いけど
そんな表記は本質に全然関係ない
2017/10/26(木) 02:05:07.05ID:1RkkpTof
JAVAが得意とかJAVASCRIPT経験5年とか書いてるの見て
まともなコード書けるやつだと思えるの?
2017/10/26(木) 03:24:25.76ID:6866r+hk
そんなことで何か判断してる気になってるオマ、恥ずかしいぜw
734デフォルトの名無しさん
垢版 |
2017/10/26(木) 04:59:02.77ID:tVSriKDm
java - コマンド。
Java - 言語。
JAVA - 茶。
2017/10/26(木) 07:20:00.13ID:mjDXX7Bg
>>723
VBの絵本でプログラムを覚えました
非常に解りやすく良書だと思います
御社のお役に立ちたいです
2017/10/26(木) 07:44:35.72ID:Mi26Cf7P
>>735
不採用
2017/10/26(木) 08:27:35.90ID:GZLf9rra
>>734
わろちんこ
2017/10/26(木) 12:13:23.62ID:Tj52Vsp9
憂鬱なCプログラマのためのオブジェクト指向入門かなー
2017/10/26(木) 12:23:18.31ID:zDn623em
>>723
ワンピース
2017/10/26(木) 17:24:51.39ID:AKbjs7qE
読みにくくなるとかでクラス禁止になった

で、大卒正社員PMがクラス作った俺を高卒非正規はスキルが無いと滅茶苦茶言ってる

帳票の抽象クラスとそれを継承した3帳票のクラス作っただけなのに

つかボタンイベントで作られるメソッド以外禁止にする勢い
2017/10/26(木) 17:29:07.25ID:AKbjs7qE
前任者がボタンイベントのメソッドに処理をつらつら書いて完成させた成功体験が悪かったみたい

全部のメソッドに同じ処理をコピペしてるから修正の影響範囲がわけわからん
2017/10/26(木) 17:42:08.61ID:5JraUsKU
いや、いやいやいやいや
意外と侮れんぞそれ
2017/10/26(木) 17:56:41.42ID:uULs3yAC
>>740
カスなチームでまともな自分アピールならマ板でやれよ
2017/10/26(木) 18:00:39.29ID:5JraUsKU
>>740-741
そうは言っても仕事で
オブジェクト指向のメリットって
説明できんやろ?
やれるもんならやってみいや
2017/10/26(木) 19:31:42.55ID:e+Kal/eA
高卒非正規にそんなレベル要求すんなよ
2017/10/26(木) 19:35:59.43ID:5JraUsKU
結局、ここで人を馬鹿にしてる奴等もいざ自分が説明する立場になったら
何もできんということは覚えておいたらええよ
2017/10/26(木) 19:39:51.16ID:+Etvl7cI
>>744
同じコードをどこにコピペしたかわからんなるぐらいなら
クラスで一括にしたいなぁ
2017/10/26(木) 19:43:13.40ID:5JraUsKU
>>747
俺じゃなくて大卒正社員PM様に説明して差し上げろ
2017/10/26(木) 20:10:34.54ID:Ci1mUjz8
>>741
そいつここに呼んでこい
精神崩壊するまで論破して追い込んでやるよ
750デフォルトの名無しさん
垢版 |
2017/10/26(木) 20:12:16.99ID:t2R1m7Go
>>749
黙れ無職、はい論破
751デフォルトの名無しさん
垢版 |
2017/10/26(木) 20:16:04.62ID:t2R1m7Go
作っておしまいなソフトは多いし
規模が大きくないか、仕様が変わらないようなところなのかもしれないし
個別に修正するときはコピペした方が影響の範囲は小さくなるし
一か所見れば処理がわかるってんならコードの見通しもいいし
ソースコード見ない段階であれこれ言うのはちょっとちょっとちょっと
2017/10/27(金) 17:35:48.74ID:2941eAj7
>>751
作ってお終いなら俺は文句言わないよ
改造とバグ修正を投げられたから困ってるんだ
関心が分散しまくってる
高卒非正規の脳じゃオーバーロードだ
2017/10/27(金) 17:38:42.80ID:5X4PuMCl
>>752
そして無職か
早かったな
2017/10/27(金) 17:42:56.24ID:2941eAj7
無職じゃないって
つかクラス化した場合の有効性をコストで可視化しろって
もうバグ満載でリリースしてデスマーチコースだ
IT業界らしくなってきた
2017/10/27(金) 17:55:24.25ID:d3nx2286
>>754
ごめんけど、ここはオブジェクト指向を諦めた人のスレじゃないから
コピペだらけのトランザクションスクリプトが至高だと悟ったなら、それでやっていけばいいじゃん
わざわざ啓蒙しに来なくていいよ
2017/10/27(金) 18:19:51.82ID:WiM3d76u
>>755
返信先間違えてない?
2017/10/27(金) 18:20:59.58ID:/3yfU/y8
>>755
横からだがそれはコピペコードを勧めてるおじさんたちに言うべきだろ
2017/10/27(金) 18:21:31.07ID:WiM3d76u
>>752
共通のメソッド作ればいんじゃない?
クラスが駄目なら
2017/10/27(金) 21:26:57.91ID:2kHVS/Sf
オブジェクト指向がダメって人は
言語何使ってるんだ?
オブジェクト指向言語のAPI使ってないってこと?
2017/10/27(金) 21:29:19.70ID:xe5glOPz
オブジェクト指向ダメおじさんが棲んでいるのはC++
よくわかんだね
2017/10/28(土) 01:33:34.05ID:Yx58My1K
アップキャストの利点教えて
2017/10/28(土) 08:20:30.57ID:rZWSN5Vz
throw new AppException("ERR12345");

throw new AppException(ErrorCode.ERR12345);

throw new AppException(ErrorCode.BlogPostNotFound);

throw new BlogPostNotFoundException();

AppExceptions.ThrowBlogPostNotFound();

IAppException appExceptions = GetService<IAppExceptions>();
appExceptions.ThrowBlogPostNotFound();

どれがいい?
2017/10/28(土) 08:33:43.36ID:LbiBQBTu
長すぎるのはだめ、変換がかかって脳の短期メモリを大量消費させるのもダメ
2017/10/28(土) 10:05:21.85ID:BHZs+upa
return ErrCode.Err12345;
2017/10/28(土) 11:06:31.25ID:LD30atSw
diとiocの組み合わせの意義を教えてください

シングルトンをどこが持ってるかが重要なんですか?
2017/10/28(土) 13:49:36.24ID:rFINW7JJ
>>759
安定のVB
2017/10/28(土) 15:22:23.29ID:GkEAGE6K
>>766
話になんないな
2017/10/28(土) 15:26:57.39ID:bXFe772l
>>767
なぜ話にならないの?
2017/10/28(土) 15:27:19.93ID:bXFe772l
VBには継承がないから!

みたいなことを言って恥をかくと良いよ
770デフォルトの名無しさん
垢版 |
2017/10/28(土) 15:39:27.71ID:5jO14XmG
オブジェクト指向の言語を使っても
オブジェクト指向でプログラムを作ることにはならんでしょうに
staticメソッドを中心にプログラム組むことだってできるし
それなりの規模がないとオブジェクト指向は効果を発揮しないのじゃないかな
771デフォルトの名無しさん
垢版 |
2017/10/28(土) 15:42:18.02ID:5jO14XmG
そいえば旧VBは型の継承はサポートしてるんだよね
昨今は実装の継承はあまりやらない方がいんじゃないかって言われてるし
旧VBはオブジェクト指向言語と言っていいと思う
旧VB+ラムダ式の言語があれば最強な気がする
2017/10/28(土) 16:07:07.99ID:rZWSN5Vz
>>765
IoCは概念
DIはデザインパターン
シングルトンはゴミ
2017/10/28(土) 16:14:28.71ID:GkEAGE6K
>>768
ポリシーのない言語の何を話せと
2017/10/28(土) 19:00:48.19ID:bXFe772l
>>773
あれあれ?ポリシーがないってだけ?

そのポリシーとやらは
オブジェクト指向にどう関係してくるんですか?
2017/10/28(土) 20:33:50.28ID:U6aWHNpT
VBが糞と言うよりVB使いにくそしかいないと言うことでしょ
言語に善悪はない
2017/10/28(土) 20:42:09.52ID:rZWSN5Vz
VBはラムダのFunction省略できないとめんどくさくてやだ
2017/10/28(土) 21:06:18.54ID:b0D8bUkC
「ナンバーズ-天才数学者の事件簿-」でFBIの技術官が犯人のwifi逆探知するのに
「ええ、ビジュアルベーシックで絞り込めば…」って言ってたし(ガクブル
2017/10/28(土) 21:11:03.11ID:rZWSN5Vz
スーパーハッカーはみんなVB使うよね
2017/10/28(土) 21:15:11.66ID:LbiBQBTu
vb.netになって出来ることはC#と同じになったのになんか書き方がいちいち冗長
2017/10/28(土) 22:27:57.05ID:GkEAGE6K
やはり話にならないらしい
VBに毒されたものの末路だな
2017/10/28(土) 22:33:02.48ID:/Db+MOdS
思いこみって怖いな
2017/10/29(日) 21:04:57.30ID:YXSJDIox
>>779
そりゃBASIC構文だからな
BASIC構文でラムダ式とか記述に無理がある
2017/10/29(日) 22:10:12.67ID:8/yZ+26E
VBってまだサポートされてんだっけ
Coreになってからさっぱり話題にならなくなったけど
2017/10/29(日) 22:16:42.10ID:4sjZmv7g
JavaScript併用しなければならないWeb開発だと文法違い過ぎるから敬遠されるだろうね
2017/10/30(月) 07:04:36.23ID:s8k71vXD
VBは言語の問題でなく使う奴が糞

8割がスマートUIを書きモダンな設計を読みにくいと一蹴する

4重ループにカウンタ現役
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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