2ch勢いランキング アーカイブ

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


デフォルトの名無しさん [sage] 2017/09/26(火) 07:20:38.98:qu+DPehL
前スレ
オブジェクト指向システムの設計 172
ttp://mevius.2ch.net/test/read.cgi/tech/1467992113
オブジェクト指向システムの設計 173
ttp://mevius.2ch.net/test/read.cgi/tech/1502182334/

類似スレ
手続き型システムの設計 1
ttp://mevius.2ch.net/test/read.cgi/tech/1500282714
デフォルトの名無しさん [sage] 2017/09/26(火) 07:21:32.78:qu+DPehL
2getでオブジェクト指向消滅!
デフォルトの名無しさん [sage] 2017/09/26(火) 14:21:52.30:8TtfrkPc
デザパタ
デフォルトの名無しさん [sage] 2017/09/26(火) 21:00:17.36:XXa+nt+D
このスレは結局デザパタの話題になっちゃうの?
デフォルトの名無しさん [sage] 2017/09/26(火) 21:28:18.31:L4WBOAz6
デザパタとSmalltalkと…
デフォルトの名無しさん [sage] 2017/09/26(火) 23:00:24.75:wPSfJS/Y
smalltalk信者: 変化する環境に適応出来なかった絶滅種
デザパタ厨: 煽ることしか出来ない無能

次の患者、どうぞ
デフォルトの名無しさん [sage] 2017/09/26(火) 23:21:32.01:U5HCny0u

お前は何て病気?
デフォルトの名無しさん [sage] 2017/09/26(火) 23:57:05.71:wPSfJS/Y
無能な煽りは逆効果だとも分からないほど無能なんだな。

デザパタなんてイラネな俺がいくら無能でも、
デザパタを勉強する価値がある事にはならんだろ。
肝心のデザパタ厨が無能なんだから。
お前ら当たり前の論理も組み立てられないのな。

結局はデザパタ厨もやりすぎて手段が目的になってる。
上級者の実装パターンを学び、実装時にそれを生かすのが目的なのに、
デザパタの暗記が目的になり、undoすら実装出来ないのでは意味無いだろ。
しかも自分がその程度だと気付けてないのも救えない。

全スレは訂正しておく
・933の実力>>>デザパタ厨=自分がundoの実装すらマトモに出来ない事に気づけない

布教したいのなら、お前らがやるべき事は、
実装方式を悩んでいる初心者に対し、「そこは○○パターンで(キリッ」と丁寧に教えることであって、
いくら俺を叩いても意味無いだろ。
まあお前らにはこれをやる実力すらないわけだが。
デフォルトの名無しさん [sage] 2017/09/27(水) 00:29:39.71:jZ7EahtZ
全スレが泣いた
デフォルトの名無しさん [sage] 2017/09/27(水) 00:46:50.85:jZ7EahtZ
心の中では「まえスレ」
デフォルトの名無しさん [sage] 2017/09/27(水) 01:46:12.14:SJAHc9Lg
設計パターンなんていらない
デフォルトの名無しさん [sage] 2017/09/27(水) 01:54:22.30:SJAHc9Lg
アーキテクチャパターンもいらない子
デフォルトの名無しさん [sage] 2017/09/27(水) 01:56:12.89:SJAHc9Lg

で、なんでデザパタイラネなんだっけ?
デフォルトの名無しさん [sage] 2017/09/27(水) 02:04:44.17:SJAHc9Lg
前スレ見てきた

> デザパタの暗記が目的になり、undoすら実装出来ないのでは意味無い

とか言ってる人がいたから、デザパタ厨とアンチデザパタ厨で実装対決してたのかと思ったら、誰もなにも実装してなかった
なるほど、undoすら実装できない人同士で設計論を争ってるのか
デフォルトの名無しさん [sage] 2017/09/27(水) 02:10:07.97:60RbULmH
デザパタの持つ意味も理解してなければ
デザパタとundoの関係も理解してない人が
デザパタイラネと言ってたのが前スレ
デフォルトの名無しさん [sage] 2017/09/27(水) 03:32:14.99:jZ7EahtZ
undoするものがないのに何を実装するんだ
こいつundoさえわからないのか
デフォルトの名無しさん [sage] 2017/09/27(水) 06:51:39.93:mNYogTbA
どんなコンテナ概念も全部「それは構造体だから〜」にする
いつもの「自動車は馬なし馬車だから」さんが居たのは憶えてる。
デフォルトの名無しさん [sage] 2017/09/27(水) 12:03:00.13:OelTm3Fw
un, deux, trios
デフォルトの名無しさん [] 2017/09/29(金) 01:04:50.43:NSGi97+G
「注文」っていう動詞があったときに、
「振る舞い」と「操作」って何が違うんかな。
デフォルトの名無しさん [sage] 2017/09/29(金) 01:17:44.77:tjqo0EG6

主体が違うし、それがOOPの基礎でもある。
詳しくは優秀なつもりのデザパタ厨が説明してくれるのを待て。
デフォルトの名無しさん [sage] 2017/09/29(金) 02:19:10.82:RLeXl8wr
order.cancel() -> 注文の振る舞い
cancel(order) -> 注文に対する操作

ただしメソッドのことを操作と呼ぶ場合もあるから文脈による
デフォルトの名無しさん [sage] 2017/09/29(金) 09:01:57.77:hpSK5POk

注文のように振る舞うオブジェクトを他のオブジェクトが操作するんだよ
デフォルトの名無しさん [sage] 2017/09/30(土) 01:29:46.30:/jgYbdHq
だからデザパタってなんだよ
デザインパターンすら打つのが面倒くせえ奴はプログラミングなんかやめちまえ
デフォルトの名無しさん [sage] 2017/09/30(土) 03:51:14.41:rw2PNEGc
デザパタ
デフォルトの名無しさん [sage] 2017/09/30(土) 06:58:20.29:SiFkWGTC
面倒くさがりはプログラマに向いてるだろ
デフォルトの名無しさん [sage] 2017/09/30(土) 07:00:21.91:REKxOj2c
オブジェクト指向ができなくて悩んでいるのですが、アドバイスお願いします
例として商品は10種類まで、今はつり銭の概念が入ってくるとややこしくて考えられないので投入金額 = 価格のみ購入可能というすごいシンプルな飲料自動販売機を想定しています
フローとしては購入する()内で飲料型の商品変数のメンバ価格と投入金額を比較し、イコールだった場合在庫数を減らす()を呼ぶというふうに考えているのですがどうなのでしょうか?
また自販機がわかりづらい場合、他の例を出して頂ければそちらで設計しますのでお願いします

クラス図を貼っておきます
ttps://i.imgur.com/0Sthq5O.png
デフォルトの名無しさん [sage] 2017/09/30(土) 07:13:23.68:SiFkWGTC
どうなのって、正解があるわけじゃないから好きに作れよ
複雑そうなところはクラスの数を増やす、そうでないなら無理にクラス化しない
そういうことでどこまで作るかにもよるし
ユースケース図でも書け
デフォルトの名無しさん [sage] 2017/09/30(土) 09:03:57.67:kOdc4YYr

お前が何がわからないのかわからない
デフォルトの名無しさん [sage] 2017/09/30(土) 09:04:38.47:fdjE74yE
デザパタ デザパタ デザパタ デザパタ デザパタ デザパタ デザパタ デザパタ
デザパタ デザパタ デザパタ デザパタ デザパタ デザハタ デザパタ デザパタ
デザパタ デザパタ デザパタ デザパタデザパタ デザパタ デザパタ デザパタ
デフォルトの名無しさん [sage] 2017/09/30(土) 10:19:36.24:bL0j7tMv
デザパタ厨はこういう時こそ「○○パターンで!」とやるべきだろ。
そもそもデザパタ厨ですら全く使わない(=見かけない)から最初の質問、
「本当に使われているのか?」が発生するのであって。
デフォルトの名無しさん [sage] 2017/09/30(土) 10:25:41.46:kOdc4YYr
ねーよ
デザパタは使おうとすると
適応根拠が説明しきれない
デフォルトの名無しさん [] 2017/09/30(土) 10:37:51.13:aRvHHZYR
StrategyとStateの違いって何よ
デフォルトの名無しさん [sage] 2017/09/30(土) 10:43:09.58:bL0j7tMv

それだとデザパタは使い物にならない=ゴミ、ってことになるだろ。
てか君はどっち派よ?
まずはデザパタ厨に説明する機会を与え、様子見すべきだろ。
デフォルトの名無しさん [sage] 2017/09/30(土) 10:43:56.11:bL0j7tMv

rgy
デフォルトの名無しさん [sage] 2017/09/30(土) 11:26:06.12:/L07O6Pa

どっちとかじゃない
デザパタはどのくらいクソって議論しか取り合わない
デフォルトの名無しさん [sage] 2017/09/30(土) 11:46:25.29:bL0j7tMv

なら敢えて聞こう、どの位クソなのかと
デフォルトの名無しさん [sage] 2017/09/30(土) 11:47:40.97:SoFMOodp
ところでリアルでデザパタって言ってるの?
デフォルトの名無しさん [sage] 2017/09/30(土) 11:52:30.69:/L07O6Pa

熱盛
デフォルトの名無しさん [sage] 2017/09/30(土) 12:58:39.68:YEkb06JW

外国人にはデザインパターンじゃないと
通じなかったよ
デフォルトの名無しさん [sage] 2017/09/30(土) 14:21:26.94:MuV6ZELy

オブジェクト指向かどうかに関係ないが
内部構造を考える前にシステム境界の内側と外側のインタラクションをまず考えること
システム境界の内側と外側のインタラクションを定義するためには
各インタラクションを自然言語で明確に記述することからはじまる

それができれば一番外側のクラスのインターフェースを考える(慣れるまで内部状態は一緒に考えない)
次に一番外側のクラスのインターフェースをサポートするために必要な状態やクラスを考える
で新しく必要だと考えたクラスのインターフェースを考える
これを繰り返す
デフォルトの名無しさん [sage] 2017/09/30(土) 14:26:12.80:MuV6ZELy

- 「お金の投入」と「商品の購入」を別インタラクション? お金はどうやって投入するの?
- 「購入する()」は何も渡さず何も返さない?

↑こういう点が必要なインタラクションを把握できてないと感じるところ
デフォルトの名無しさん [sage] 2017/09/30(土) 15:15:06.94:Rlso/pc7
デザパタなんてまだマシだろ
外人なんてDPって書く奴ざらにいるぞ
デフォルトの名無しさん [sage] 2017/09/30(土) 17:15:12.31:NS2YjOla

出庫(商品id, 出庫日, 個数)
入庫(商品id, 入庫日, 個数)

在庫管理 {
在庫数を取得する(p_商品id) {
a = (select sum(個数) from 入庫 where 商品id = p_商品id)
b = (select sum(個数) from 出庫 where 商品id = p_商品id)
return a - b
}
入庫する(商品id, 入庫日, 個数) {
insert into 入庫 (商品id, 入庫日, 個数)
}
出庫する(商品id, 出庫日, 個数) {
if (個数 > 在庫数を取得する()) throw 例外("在庫数が足りません")
insert into 出庫(商品id, 出庫日, 個数)
}
}

自販機 {
ボタンクリックイベント() {
商品id = 押されたボタンに紐付く商品idを取得する()
在庫管理.出庫(商品id, 現在時刻, 1)
押されたボタンに紐付く商品を取り出し口に落とす()
}
}

グローバル例外ハンドラ {
未処理例外イベント(例外) {
エラーログを出力する(例外)
}
}
デフォルトの名無しさん [sage] 2017/09/30(土) 17:45:39.05:kkTNvqls
DAOさん
デフォルトの名無しさん [sage] 2017/09/30(土) 18:37:38.64:MuV6ZELy

- 無限に入庫できるの?
- ボタン押せばお金入れて無くても商品出してくれるの?
- 在庫数取得中にラスト1個の出庫が発生すると商品出てこないね

早まった詳細化はよくあるデスマーチパターン
デフォルトの名無しさん [sage] 2017/09/30(土) 19:20:14.20:kkTNvqls

手続き型との違いが分からない
デフォルトの名無しさん [sage] 2017/09/30(土) 19:22:12.04:NS2YjOla

要件に無いので無限に入庫できる
金銭の問題は質問者が別途考えることであり現在のコンテキストにはそぐわない
自販機において商品購入の並列処理は考慮しなくてよい

あまりにも馬鹿馬鹿しい指摘は今後スルーします
デフォルトの名無しさん [sage] 2017/09/30(土) 19:27:44.53:bL0j7tMv
結局デザパタは自販機クラスを構成する時の説明に使えないのか?
ならばデザパタは存在価値が無く、デザパタ厨はゴミだって事になるが。

俺の見立てでは、デザパタはセンスがない奴の勉強してますアピール時のアリバイ程度にしかならない。
肝心の構造実装を説明する時にも他の用語の方が適切だって時点でゴミ確定。
使い物にならないから誰も使わず、「本当に使われてるんですか?」という質問が発生する。
デザパタ厨は老害だよ。

デザパタが有用だと主張するなら、デザパタ用語でより分かりやすい説明を提供できないといけない。
そもそも俺はデザパタ厨は実装能力が全くなく、非デザパタ用語での説明すら出来ないと見ているが。

ついでに言うとsmalltalk信者もこういう時こそメッセージング指向(キリッで
素晴らしい実装を披露するべきであるんだがな。



ところでそれは何言語で何指向なんだ?
(なお俺もは揚げ足取りで、現段階で必要な議論ではないと思う)
デフォルトの名無しさん [sage] 2017/09/30(土) 19:38:34.22:Cb9Aht4V

自販機クラスの構成の説明に使えないものはゴミなら、プログラミングの世界ってゴミばかりだねw
デフォルトの名無しさん [sage] 2017/09/30(土) 19:49:34.96:bL0j7tMv

そもそもお前らデザパタ厨は「『何に役立つから』デザパタを学ぶべきだ」という主張なんだ?
当然だが俺は、何にも役に立たないからゴミだ、という主張だ。
実際ここで使わないで、いつ使うんだ?という状況だろ。

> プログラミングの世界ってゴミばかりだねw
他に何がゴミだと思っている?
デフォルトの名無しさん [sage] 2017/09/30(土) 20:32:54.68:MuV6ZELy

え、じゃを書いた意味というか目的はなんなの?
デフォルトの名無しさん [sage] 2017/09/30(土) 20:34:28.53:/jgYbdHq

だろうな


マシならいいという風潮
デフォルトの名無しさん [sage] 2017/09/30(土) 20:47:17.95:Lb08y44X

> そもそもお前らデザパタ厨は「『何に役立つから』デザパタを学ぶべきだ」という主張なんだ?

デザパタ本を最初に読んだ時、
俺がそれまで悩んでいたり自分で考えた設計が
紹介されていたから、やっぱりちゃんとした
本で勉強したほうが時間の節約になると
実感したから学ぶべきだって主張

あんたの世界が狭いんだろ?
フレームワークを使って、その中身だけを書いてる人は使わないだろうさ
自分の作ったアプリにプラグインの仕組みを取り入れようとしたり
テキストエディタなんかを作ろうと考えたら、必ずと行っていいほど使うよ。
デフォルトの名無しさん [sage] 2017/09/30(土) 20:58:31.09:bL0j7tMv

そりゃへの回答だろ。
つか、俺は君のよりもの方が直接的で分かりやすいと思うが。
全部実装する必要もないし。


俺は48で何指向かと聞いたがこれは間違いだった。
これはOOPだね。見落とした。すまん。
デフォルトの名無しさん [sage] 2017/09/30(土) 21:05:07.39:bL0j7tMv

> 自分の作ったアプリにプラグインの仕組みを取り入れようとしたり
> テキストエディタなんかを作ろうと考えたら、必ずと行っていいほど使うよ。
ほう。何パターンを使うんだ?
前者は「DLL」、後者は前回も言ったがundoなら「逆方向履歴」等で、デザパタ用語は不要だろ。
これ以上に明快な説明をデザパタ用語でやってみろよ。
デフォルトの名無しさん [sage] 2017/09/30(土) 21:26:28.25:MuV6ZELy
要件定義をきちんとすれば自然に辿り着くことだけど
自動販売機をモデル化する場合に核になるのはステートマシン
それを理解せず設計したりコードを書いたりすれば
で指摘したような問題が後から後から出てくる

設計時もコーディング時も
事前/事後/不変条件を常に意識することが大事
デフォルトの名無しさん [sage] 2017/09/30(土) 21:49:36.71:Lb08y44X

「デザパタ」が必要ないんじゃなくて
「デザパタ用語」が必要ないって
お前書いてるよね?w
デフォルトの名無しさん [sage] 2017/09/30(土) 21:53:10.48:iRa5Yzik
デザインパターンな..
デフォルトの名無しさん [sage] 2017/09/30(土) 22:04:28.64:Lb08y44X
逆方向履歴という機能を実装するのに
デザインパターンが使われている
デフォルトの名無しさん [sage] 2017/09/30(土) 22:23:39.23:bL0j7tMv

それは当たり前。
デザパタは登場時の時点で「既に頻出」な物に名前を付けただけ。
何も新しい物はない。普通にコード書けば使っている。
だから俺は「デザパタを別に勉強する意味はない」という立場。


> 逆方向履歴という機能を実装するのに
何パターン?
これにはパターンは無いはずだが。
(ただし俺は全て押さえているわけではないが)
デフォルトの名無しさん [sage] 2017/09/30(土) 22:25:15.02:eDPmsgZ7
デザインパターンだっつってんだろ
馬鹿なの死ぬの?
デフォルトの名無しさん [sage] 2017/09/30(土) 22:26:30.68:bL0j7tMv

> 自動販売機をモデル化する場合に核になるのはステートマシン
これは多分違うぞ。
どのレベルからステートマシンと称するかにもよるが。
デフォルトの名無しさん [sage] 2017/09/30(土) 22:26:30.88:Lb08y44X
> デザパタは登場時の時点で「既に頻出」な物に名前を付けただけ。

たしかに世界にとっては頻出だろう?
だが勉強中の人にとっては知らない知識だ

だからその人が世界に追いつくために
勉強しなければいけないってことだ

なぜ頻出なものを自分で考え出さないといけないのか
それこそ時間の無駄だ
デフォルトの名無しさん [sage] 2017/09/30(土) 22:27:41.01:eDPmsgZ7

そこはステマシじゃねぇのかよ
中途半端な野郎だな
デフォルトの名無しさん [sage] 2017/09/30(土) 22:31:39.91:Lb08y44X
結局デザパタを認めないやつは
自分で考えだしたものが
実は教科書に乗っているようなものと
認めたくないんだろうな。
デフォルトの名無しさん [sage] 2017/09/30(土) 22:38:00.59:bL0j7tMv

> なぜ頻出なものを自分で考え出さないといけないのか
> それこそ時間の無駄だ
使える物は全て言語機能に採り入れられてるから、言語を学べば「使い方」は理解出来る。
そしてせっかく覚えた「デザパタ用語」は使い道がない。
中途半端に抽象化した結果、「ストラテジーバターン」=動的に対象関数を切り替える
とした場合、実装は「継承/委譲/関数ポインタ」等になり、実装時にはこれらの区別も重要な為、
「継承/委譲/関数ポインタ」が使われ、「ストラテジーバターン」が使われることはない。
だったら最初から言語機能をきっちり押さえた方がいい、というのが俺の立場。
(ただしJavaみたいな制限がきつい言語だと、言語だけ学んでも駄目だが)
デフォルトの名無しさん [sage] 2017/09/30(土) 22:39:39.55:eDPmsgZ7

ストパタじゃねぇのかよ
馬鹿なの?
デフォルトの名無しさん [sage] 2017/09/30(土) 22:40:17.60:Lb08y44X
> 使える物は全て言語機能に採り入れられてるから、言語を学べば「使い方」は理解出来る。

言語を学ぶの中にデザパタを学ぶが含まれているんだが?
なにを言ってるのだろうこいつは
デフォルトの名無しさん [sage] 2017/09/30(土) 22:41:49.90:Lb08y44X
ストラテジーバターンは継承/委譲/関数ポインタを応用して
作り出すパターン

単体の道具(継承/委譲/関数ポインタ)を
複数組み合わせて構造を作るのがパターン

やっぱりデザパタ分かってないんだなw
デフォルトの名無しさん [sage] 2017/09/30(土) 22:42:49.94:eDPmsgZ7

ストバタにしろやカス
デフォルトの名無しさん [sage] 2017/09/30(土) 22:43:01.60:bL0j7tMv

> 言語を学ぶの中にデザパタを学ぶが含まれているんだが?
これは初耳だが、どの言語のことだ?
デフォルトの名無しさん [sage] 2017/09/30(土) 22:46:06.66:Lb08y44X

どの言語でも

継承ってなんですか?
→ 親クラスの機能をサブクラスが受け継ぐことです

継承を使うと何ができるんですか?
→ 応用例はいくつもあります。例えば〜のような使い方が出来ます。
このような使い方を○○パターンといいます。

っていうように道具を使った応用例として
デザパタがでてくるだろ

お前は継承という道具を勉強するだけで
その継承のいろんな応用例まで勉強中のやつが思いつくと思ってんのか?
デフォルトの名無しさん [sage] 2017/09/30(土) 22:49:13.24:bL0j7tMv

> 単体の道具(継承/委譲/関数ポインタ)を
> 複数組み合わせて構造を作るのがパターン
これは俺は無駄なバリエーションで名前の数を増やしているだけという立場。
お前らはテンプレートメソッド=継承という立場だったはずだが、
その場合、テンプレートメソッド、ストラテジー、コンポジットを別々にする意味はあるのか?
そして、この程度の差異で無駄に名前を増産する意味があるのか?
何の為にストラテジーパターンを抽象化したんだ?
デフォルトの名無しさん [sage] 2017/09/30(土) 22:51:54.36:bL0j7tMv

> → 応用例はいくつもあります。例えば〜のような使い方が出来ます。
> このような使い方を○○パターンといいます。
ねーよアホ。
デザパタが書かれる前から継承はあったし、使われてる。
継承は継承としか書いてない。
お前はデザパタ洗脳用の教科書を掴まされたんじゃないのか?
デフォルトの名無しさん [sage] 2017/09/30(土) 22:54:20.26:Lb08y44X
> その場合、テンプレートメソッド、ストラテジー、コンポジットを別々にする意味はあるのか?
使い方が違うからな。

第一な、無駄なリエーションで名前を増やしているというのなら、
言語なんて実は

・順次実行
・メモリ(I/O)読み書き機能
・演算機能
・(条件付き)ジャンプ機能

これだけの用語で十分。関数とか例外とかそんなものすらいない。
実際機械語はこのぐらいしか機能がない。
それ以外の機能は、これらの基本的な機能の応用例でしか無い。

だが、それだけじゃあまりにも基本的な機能すぎて
他の人と知識を共有できないから名前を増やすことで
短い単語で言いたいことを表現してるんだろうが
デフォルトの名無しさん [sage] 2017/09/30(土) 22:54:51.73:eDPmsgZ7

テンメソだろ
なめてんのかてめぇ
デフォルトの名無しさん [sage] 2017/09/30(土) 22:55:19.24:Lb08y44X

> デザパタが書かれる前から継承はあったし、使われてる。

だからなんだ。

使われてるその応用例をカタログ化したのが
デザインパターンなんだろ

プロが長年かけて最適なパターンを教科書に乗せて
初学者がすぐに追いつけるようにしたんだよ。
デフォルトの名無しさん [sage] 2017/09/30(土) 22:57:54.56:Lb08y44X
> 継承は継承としか書いてない。

当たり前過ぎ・・・
基本と応用の違いも理解できんのか。

初学者に継承を教えるだけで、
すぐに応用例が思いつくわけ無いだろ

基本(継承)を教えてから、基本機能を組み合わせて
応用(パターン)を学ぶんだよ。


継承とパターンが違うんだから、
継承のストラテジーパターンって書くわけ無いだろw

継承=ストラテジーパターンではない。
色んなパターンの中で継承が使われてる
ストラテジーパターン以外でも継承が使われている。
この2つの単語は同一ではない
デフォルトの名無しさん [sage] 2017/09/30(土) 22:59:02.15:bL0j7tMv

> 短い単語で言いたいことを表現してるんだろうが
おう、だからやってみろとで俺は言ったはずだが、
お前も不都合なことは見えなくなる病気なんだな。

デザパタ用語は抽象度が中途半端すぎて、何にも使えない、というのが俺の立場。
まあ、の回答を待つ。
デフォルトの名無しさん [sage] 2017/09/30(土) 23:00:35.25:wIKBotg5

> 単体の道具(継承/委譲/関数ポインタ)を
> 複数組み合わせて構造を作るのがパタ
これは俺は無駄なバリで名前の数を増やしているだけという立場。
お前らはテンメソ=継承という立場だったはずだが、
その場合、テンメソ、スト、コンポジを別々にする意味はあるのか?
そして、この程度の差異で無駄に名前を増産する意味があるのか?
何の為にストパタを抽象化したんだ?
デフォルトの名無しさん [sage] 2017/09/30(土) 23:01:38.79:bL0j7tMv

俺は
> どの言語でも (中略)
> っていうように道具を使った応用例として
> デザパタがでてくるだろ
についてダウト!と言ってるんだよ。
理由は「継承」は「デザパタ」よりも古いから。

これに対する回答は?
デフォルトの名無しさん [sage] 2017/09/30(土) 23:15:32.07:Lb08y44X

> おう、だからやってみろとで俺は言ったはずだが、

そこがお前ずれてるんだよ。

デザパタは「やること」ではない
(誰かが)やったことの知識だ

すでに「やってる」ことに過ぎない
何をやれと言ってるのかさっぱりわからない。
デフォルトの名無しさん [sage] 2017/09/30(土) 23:17:34.98:Lb08y44X

> 理由は「継承」は「デザパタ」よりも古いから。

古いから何なんだよ・・・

最初に継承が生まれ、それを使って
いろんなパターンが生み出された。

継承はパタ−ンよりも古くて当然だよ。

で「継承」は「デザパタ」よりも古いからなに?
デフォルトの名無しさん [sage] 2017/09/30(土) 23:18:06.00:bL0j7tMv

> 初学者に継承を教えるだけで、
> すぐに応用例が思いつくわけ無いだろ
いやストラテジーパターンは応用例ですらない。使用例だ。
誰でも思いつくというか、この使い方をする為に設計された言語機能が継承だ。
そして使い方なら言語の説明で一通り為されて居るものだ。

> 継承=ストラテジーパターンではない。
(意見としては)違うね。
継承を使った場合、ストラテジーパターンに該当しない物を作れない。
抽象度が異なる為、これらは確かに単語としては同じではないが、しかし、
「ストラテジーパターン」という単語を使って説明する適切な場合がない。
要らない単語をいたずらに増やしただけだ。
デフォルトの名無しさん [sage] 2017/09/30(土) 23:20:26.38:Lb08y44X

> その場合、テンメソ、スト、コンポジを別々にする意味はあるのか?

応用例の説明見れば分かる通り
使い方が違うんだから意味あるだろうな。

シチューとカレーなんてどちらもほとんど同じ材料が使われてるが
別々の料理になってるだろ。


お前が言ってるのはそういうこと
いろんなパターンで継承が使われてるが、その継承の
使い方の違いでパターンの違いになるんだよ。

どっちも同じ材料が入ってるから、
「にんじん+たまねぎ+じゃがいも料理」だ!
じゃないの
デフォルトの名無しさん [sage] 2017/09/30(土) 23:21:33.84:bL0j7tMv

> 何をやれと言ってるのかさっぱりわからない。
お前は本当に馬鹿なのか?
日本語が通じないようならこの辺で打ちきりにするが。

俺は、
> 他の人と知識を共有できないから名前を増やすことで
> 短い単語で言いたいことを表現してるんだろうが ()
について、で求めた、
> 前者は「DLL」、後者は前回も言ったがundoなら「逆方向履歴」等
よりも簡単な説明をデザパタ用語でやれ、と言ってるんだが。
デフォルトの名無しさん [sage] 2017/09/30(土) 23:21:47.75:Lb08y44X

> 誰でも思いつくというか、この使い方をする為に設計された言語機能が継承だ。

最初にストラテジーパターンというパターンがあって
継承が生まれただと?

ハハハ



なぜなら

> 理由は「継承」は「デザパタ」よりも古いから。
デフォルトの名無しさん [sage] 2017/09/30(土) 23:23:53.47:bL0j7tMv

なるほどお前は池沼なんだな。

> で「継承」は「デザパタ」よりも古いからなに?
デザパタ(1995)以前の「継承」を実装していた言語の仕様書、
例えば「プログラミング言語C++」(1983)において、
> どの言語でも (中略)
> っていうように道具を使った応用例として
> デザパタがでてくるだろ ()
があり得ない、と言ってるんだが。
デフォルトの名無しさん [sage] 2017/09/30(土) 23:24:28.98:Lb08y44X


> 前者は「DLL」、後者は前回も言ったがundoなら「逆方向履歴」等
DLLはダイナミックリンクライブラリ
動的にリンクするライブラリと言うだけで、
それだけではどんなものかがわからない。

> undoなら「逆方向履歴」
逆方向履歴という機能を実現するにはいろんなやり方がある。
それだけではどんな設計を使うのかが決まっていない

その設計にどんなパターンを使うのが良いのか?
そこでデザインパターンの中から適切なものを探そう
デフォルトの名無しさん [sage] 2017/09/30(土) 23:26:32.68:Lb08y44X

あ、お前今が2017年だってわかってなのか?w

そりゃデザインパターンとしてカタログ化されてない
昔(1995)以前では、言語の勉強の中で
デザパタが登場するわけ無いだろwww
昔(お前の時代)にはデザパタ出てこないの当たり前だよーーーーw

今は言語の勉強の中で基本の応用として
デザパタを学習するんだよ。
デフォルトの名無しさん [sage] 2017/09/30(土) 23:27:35.90:Lb08y44X
いや、まかさ

俺の子供の時代にはそんなこと習わなかった

が根拠になっていたとはなwww
草www
デフォルトの名無しさん [sage] 2017/09/30(土) 23:29:01.75:bL0j7tMv

> 最初にストラテジーパターンというパターンがあって
> 継承が生まれただと?
お前は本当に馬鹿だな。

継承の典型的な使用例に「ストラテジーパターン」という名前を付けただけだ。
だけど実際は「継承」で全く問題なくて、しかも無駄に抽象化したから使いどころもなくなった。

というかどうやらデザパタ厨はマジで馬鹿で議論が出来ないのは分かった。
他の言葉が通じる連中が出て来たら再開する。
デフォルトの名無しさん [sage] 2017/09/30(土) 23:31:17.52:wIKBotg5

> 最初にストラテジーパターンというパターンがあって
> 継承が生まれただと?
お前は本当に馬鹿だな。

継承の典型的な使用例に「ストパタ」という名前を付けただけだ。
だけど実際は「継承」で全く問題なくて、しかも無駄に抽象化したから使いどころもなくなった。

というかどうやらデザパタ厨はマジで馬鹿で議論が出来ないのは分かった。
他の言葉が通じる連中が出て来たら再開する。
デフォルトの名無しさん [sage] 2017/09/30(土) 23:31:34.77:Lb08y44X
> 継承の典型的な使用例に「ストラテジーパターン」という名前を付けただけだ。

継承の応用例の一つとして「ストラテジーパターン」がある
応用例の一つであるということからもわかるように
継承を使った応用例はいくつも有るから

継承と言っただけで「ストラテジーパターン」を意味することにはならない。
だから「使い方」を言いたいときには「ストラテジーパターン」という必要がある。

継承はベースとなる機能
その継承の使い方がパターンなのである
デフォルトの名無しさん [sage] 2017/09/30(土) 23:32:35.29:bL0j7tMv

> その設計にどんなパターンを使うのが良いのか?
> そこでデザインパターンの中から適切なものを探そう
それも俺は要求済みだ。早く答えろ。

> > 逆方向履歴という機能を実装するのに
> 何パターン? ()

お前は典型的な「都合が悪い物は見えない病気」だな。
まあこの議論を見れば、デザパタ厨がどれだけゴミか分かるだろうから、お前らの布教も捗るだろうよ。
デフォルトの名無しさん [sage] 2017/09/30(土) 23:33:05.80:Lb08y44X
> 継承の典型的な使用例に「ストパタ」という名前を付けただけだ。

継承の典型的な使用例と何度も言っていることからわかるように

ストラテジーパターンは継承の使用例の一つでしか無い
だから継承といっても使用例が定まるわけではない。


何度も言うぞ

継承の「典型的な使用例」がストラテジーパターンである
デフォルトの名無しさん [sage] 2017/09/30(土) 23:35:25.33:bL0j7tMv

だから
・継承を使っているがストラテジーパターンには非該当
の例を出せるか?多分無理なんだよ。だから、
> だから「使い方」を言いたいときには「ストラテジーパターン」という必要がある。
この分離は必要ないんだよ。
この言い方では通じないとは思うが。
デフォルトの名無しさん [sage] 2017/09/30(土) 23:36:17.57:Lb08y44X
何度も言うぞ

継承の「典型的な使用例」がストラテジーパターンである

継承の使用例の一つがストラテジーパターンであるが
継承の利用例は他にも有る。

では聞こう

継承とは何パターンか?
答えるわけがない。

継承の使用例の一つがストラテジーパターンであるが
継承の他の利用例は別のパターン名がついているからである。


継承は道具。使用例がパターン。
使用例であるパターン名を言わないと、
どんな使用例かは答えられない

何度も言うぞ

継承の「典型的な使用例」がストラテジーパターンである 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
デフォルトの名無しさん [sage] 2017/09/30(土) 23:37:23.69:Lb08y44X
もうそろそろ、継承の「典型的な使用例」がストラテジーパターンである
という言葉の意味が理解できたことだろうか?


そう使用例がパターンなのである
デフォルトの名無しさん [sage] 2017/09/30(土) 23:37:53.05:wIKBotg5

だから
・継承を使っているがストパタには非該当
の例を出せるか?多分無理なんだよ。だから、
> だから「使い方」を言いたいときには「ストラテジーパターン」という必要がある。
この分離は必要ないんだよ。
この言い方では通じないとは思うが。
デフォルトの名無しさん [sage] 2017/09/30(土) 23:38:34.58:bL0j7tMv
,96,98,99
読め、そして以下の例よろしく
・継承を使っているがストラテジーパターンには非該当
デフォルトの名無しさん [sage] 2017/09/30(土) 23:39:35.12:wIKBotg5
,96,98,99
読め、そして以下の例よろしく
・継承を使っているがストパタには非該当
デフォルトの名無しさん [sage] 2017/09/30(土) 23:40:59.93:Lb08y44X


> ・継承を使っているがストパタには非該当
> の例を出せるか?

だせるが?

継承を使っている他のパターンはいくつも有るだろ?
だが、そのほかのパターンまで必要ない
継承の「使用例」がストラテジーパターンだ。
デフォルトの名無しさん [sage] 2017/09/30(土) 23:49:17.59:Lb08y44X
一つのクラスが複数のパターンを使っているってことは有るが
有るパターンが有るパターンを内包しているってのはない。

継承を使ってる他のパターンがストラテジーパターンを内包していること無い。

なぜそんな愚かな勘違いをするのか?

それはストラテジーパターンという使用例を
基本機能である継承と同一視しているからだ。

継承を使っているパターンはあるが
それはストラテジーパターンとして使っているわけではない。



継承とストラテジーパターンを同一視しているから、
そんな馬鹿な結論に至る。

これこそが、継承(基本機能)と応用(使用例)を
別々にしておくべきだという回答の一つでも有る
デフォルトの名無しさん [sage] 2017/09/30(土) 23:51:38.51:Lb08y44X
> Strategy パターンは、コンピュータープログラミングの領域において、アルゴリズムを実行時に選択することができるデザインパターンである。

と説明してあるように

アルゴリズムを実行時に選択しないのであれば
それはストラテジーパターンではない

継承を使っているからと言って実行時に選択するとは限らないからな

アルゴリズムを実行時に選択したい(使用例)ときに使うのが
ストラテジーパターンである
デフォルトの名無しさん [sage] 2017/09/30(土) 23:55:48.04:bL0j7tMv

だから、継承を使っていて、
> アルゴリズムを実行時に選択しない
例を挙げてみろ、と言ってるんだよ。
デフォルトの名無しさん [sage] 2017/10/01(日) 00:01:15.13:H5Asg8Dc
例えばRailsアプリだと一般的にモデルはActiveRecordクラスを継承して作るが
実行時にアルゴリズムを変えたりはしない
デフォルトの名無しさん [sage] 2017/10/01(日) 00:03:26.64:GRIqwmf+

ではそれは何の為に継承しているんだ?
デフォルトの名無しさん [sage] 2017/10/01(日) 00:07:41.09:H5Asg8Dc
ActiveRecordクラスで実装されている
機能を利用するために決まってるだろw

蛇足だが

ActiveRecordクラスを使わないモデルもあって
その場合は例えばActiveModelを使う。

だが面白いことに、ActiveRecordクラスは継承するが
ActiveModelは継承ではなくinclude(MixIn)する

実際の所コードを再利用することが目的なので
継承以外にもやり方はあるということだ。

そう考えるとActiveRecordも継承するのは必須ではないということになるな。

まあ蛇足だがw
デフォルトの名無しさん [sage] 2017/10/01(日) 00:12:57.26:GRIqwmf+

> そう考えるとActiveRecordも継承するのは必須ではないということになるな。
当たり前だ。
virtualに対して全くoverrideしないのなら継承の意味はない。
それはある意味、典型的な間違った使い方だ。
そしてお前はそれも分からない馬鹿だということ。
デフォルトの名無しさん [sage] 2017/10/01(日) 00:13:18.18:H5Asg8Dc
トーンが明らかに下がってきたなw

ようやくこのバカも理解出来あってことか。
デザインパターンは使用例(応用例)であって

そこで継承を使っているからって
継承が使用例(応用例)になるわけじゃない

ストラテジーパターンはアルゴリズムを実行時に
選択することができるようにするためのデザインパターン
そこで継承が使われていることは重要ではない。

継承を使うパターンは他にも有る。
使用例(応用例)が論点なのであって、何を使っているかは
デザインパターンとして考えるときには重要な事ではない。
デフォルトの名無しさん [sage] 2017/10/01(日) 00:16:02.84:H5Asg8Dc

> virtualに対して全くoverrideしないのなら継承の意味はない。
(そこからかーw)
デフォルトの名無しさん [sage] 2017/10/01(日) 00:16:29.39:GRIqwmf+

は?下がってないぞ。
俺はデザパタ=ゴミ、デザパタ厨=ゴミ、で変わりない。
ただしお前が馬鹿すぎて議論は無理だからフェードアウト気味なだけ。
デフォルトの名無しさん [sage] 2017/10/01(日) 00:17:15.28:U1G3k+aG
自分だけはバカじゃないという前提
デフォルトの名無しさん [sage] 2017/10/01(日) 00:21:43.29:H5Asg8Dc

でも、継承の「典型的な使用例」がストラテジーパターンである
という言葉に反論できてないじゃないですかーw

所詮、継承は使用例の一つなんですよ。
ストラテジーパターンを継承と言ってしまうと

他の継承を使っているパターンは、すべてストラテジーパターン
アルゴリズムを実行時に選択することができることが重要
だってことになるじゃないですかーw

意味不明ですよね

これはデザパタがゴミなんじゃなくて、
すべてはあんたのストラテジーパターンを継承と呼ぶから
こういう意味不明な結論にいなるわけですよ。


そうならないように、基本機能(継承)とその応用例(パターン)
きっちり分けて考えましょうって話なるわけ

何度も言いますよ?
継承の「典型的な使用例」がストラテジーパターンである
「典型的な使用例」です。
デフォルトの名無しさん [sage] 2017/10/01(日) 00:29:59.36:GRIqwmf+

間違った使い方はいくらでも出来るんだよ。言い換えれば、
・継承の正しい使用例は常にストラテジーパターンになる
でいいか?

overrideしないで継承するってのは典型的な「便利関数置き場」であって、
駄目だろこれは。
というか、これがありならパターンにあるべきだが、無いだろさすがに。
デフォルトの名無しさん [sage] 2017/10/01(日) 00:31:39.13:xYp8c7mI

間違った使い方はいくらでも出来るんだよ。言い換えれば、
・継承の正しい使用例は常にストパタになる
でいいか?

overrideしないで継承するってのは典型的な「便利関数置き場」であって、
駄目だろこれは。
というか、これがありならパタにあるべきだが、無いだろさすがに。
デフォルトの名無しさん [sage] 2017/10/01(日) 00:32:27.29:H5Asg8Dc
> ・継承の正しい使用例は常にストラテジーパターンになる
> でいいか?

継承の正しい使用例は常に「アルゴリズムを実行時に選択することができる」
ためのも。

うん。明らかに間違いだなw
実行時に選択できる必要ないし
デフォルトの名無しさん [sage] 2017/10/01(日) 00:33:52.13:H5Asg8Dc

> overrideしないで継承するってのは典型的な「便利関数置き場」であって、
> 駄目だろこれは。

だめでもなんでもない。

有るクラスが、有るクラスを踏まえているならば
(is-a関係)それを表現するために継承を使うべき

継承っていうのは「便利関数置き場」じゃないのよ?
それらの関数を使わなかったとしても
継承関係にあれば継承を使うんだよ。
デフォルトの名無しさん [sage] 2017/10/01(日) 00:35:47.35:H5Asg8Dc
overrideしない使い方として例えばRuntimeErrorみたいなのがあるな
その他の実行時エラークラスはRuntimeErrorを継承して作る。

そうすることで、全ての実行時エラークラスをRuntimeErrorとして
みなすことができるし、一部のクラスだけは例外的に
その他の情報をエラークラスに格納することができる。
デフォルトの名無しさん [sage] 2017/10/01(日) 00:46:34.86:GRIqwmf+

それはまた違う話だ。
1本道で複数継承している場合は、将来的に分岐したり交換される可能性等を踏まえているだけ。
絶対に分岐しないと分かり切っている場合に継承する意味はないだろ。

例えば、メソッド一つ一つ全部バラして継承させて、メソッド20個で継承20階層も出来るが、無駄だろ。
将来的にも絶対にoverrideされないのなら最初から継承構造なんて必要ないんだよ。
ベタにクラス作って終わりだ。


それはoverrideと同じ、というか、メソッドではなくメンバのoverrideになる。
デフォルトの名無しさん [sage] 2017/10/01(日) 00:49:35.69:H5Asg8Dc
これのどこがメンバのオーバーライドをしているのか説明してほしいもんなんだがw

ttp://blog.toshimaru.net/ruby-standard-error/

# `Exception`ではなく
class MyError1 < Exception; end
# `StandardError`.
class MyError2 < StandardError; end
デフォルトの名無しさん [sage] 2017/10/01(日) 00:51:22.19:H5Asg8Dc

お前さ、基本

1. 自分が○○にたいして馬鹿なことを言う
2. 自分が言った馬鹿なことの対して馬鹿だと自分でツッコむ
3. そのツッコミを根拠に、○○はダメだという

というやり方やってるよね?


○○がだめなんじゃなくて
お前がダメなんだよw
デフォルトの名無しさん [sage] 2017/10/01(日) 00:53:40.85:GRIqwmf+
が、まあ、これらは通常は区別されているから、以下としよう。
・メソッドの継承の正しい使用例は常にストラテジーパターンになる
・メソッド/フィールド等全てについて(将来的にも)全くoverrideしない場合は継承する意味がない
これでいいか?
デフォルトの名無しさん [sage] 2017/10/01(日) 00:54:50.31:U1G3k+aG
何かよくわからんけどおもしろいなそれ
デフォルトの名無しさん [sage] 2017/10/01(日) 00:57:27.86:H5Asg8Dc
> ・メソッドの継承の正しい使用例は常にストラテジーパターンになる

ならないって何度も言ってるんだがw

> ・メソッド/フィールド等全てについて(将来的にも)全くoverrideしない場合は継承する意味がない

意味はある。その例も出した。



結局さぁ、お前、実装のことしか考えられてないんだよ。
設計能力が圧倒的に不足している。

どんな設計を見た所で、その実装が継承使っていれば、
これは継承と呼ぶべきだーって叫ぶつもりだろ?
デフォルトの名無しさん [sage] 2017/10/01(日) 00:59:36.43:H5Asg8Dc
設計とはかならず「何のために」そういう設計をするのかという
目的が有る。それがデザパタの使用例や応用例なんだよ。

継承は「何のために」ではなく実現技術

だから継承といっただけでは何をしたいのか全くわからない。
だからデザインパターンで定義されている名前が必要
デフォルトの名無しさん [sage] 2017/10/01(日) 01:01:17.79:44WxUqLn
が、まあ、これらは通常は区別されているから、以下としよう。
・メソの継承の正しい使用例は常にストパタになる
・メソ/フィー等全てについて(将来的にも)全くoverrideしない場合は継承する意味がない
これでいいか?
デフォルトの名無しさん [sage] 2017/10/01(日) 01:02:05.70:H5Asg8Dc
> ・メソッドの継承の正しい使用例は常にストラテジーパターンになる

ならないって何度も言ってるんだがw

> ・メソッド/フィールド等全てについて(将来的にも)全くoverrideしない場合は継承する意味がない

意味はある。その例も出した。
デフォルトの名無しさん [sage] 2017/10/01(日) 01:03:39.76:GRIqwmf+

おれはRuby使いではないからチラ見ではよく分からんが、
見る限りrescueの仕様によるものであって、
Exceptionは派生しまくってるし、特に変だとも思わないが。
デフォルトの名無しさん [sage] 2017/10/01(日) 01:05:28.40:H5Asg8Dc

メソッド/フィールド等全てについて(将来的にも)全くoverrideしない
継承の正しい使い方だって言ってる
デフォルトの名無しさん [sage] 2017/10/01(日) 01:05:32.81:GRIqwmf+

とりあえずID見る癖付けろ。
俺のレスは粘着により複製されてるから。
デフォルトの名無しさん [sage] 2017/10/01(日) 01:07:40.92:GRIqwmf+

> どんな設計を見た所で、その実装が継承使っていれば、
> これは継承と呼ぶべきだーって叫ぶつもりだろ?
そりゃそうだろ。
お前は継承使ってても「これは継承ではない!」というのか?
デフォルトの名無しさん [sage] 2017/10/01(日) 01:09:09.45:GRIqwmf+

いや派生しまくってんだから、既にoverrideされまくっているはずだが。
デフォルトの名無しさん [sage] 2017/10/01(日) 01:10:27.50:H5Asg8Dc

> お前は継承使ってても「これは継承ではない!」というのか?

いや? 継承使っていてもストラテジーバターンでなければ
ストラテジーパターンではないと言うつもりだよ?

お前はストラテジーバターン=継承と呼ぶべきだって言ってるんだから、
お前はストラテジーパターンでないパターンを見ても、
ストラテジーバターン(=継承)だって言うんでしょ?

っていう話をしてるんだが?
デフォルトの名無しさん [sage] 2017/10/01(日) 01:11:52.96:44WxUqLn

あんたが表現のロジックを統一しないから代弁してやってんだよ
デフォルトの名無しさん [sage] 2017/10/01(日) 01:12:07.31:H5Asg8Dc

え? なに?

世界中の何処かで誰かがオーバーライドしていれば
それは継承使っていいって言ってるわけ?

その理屈だと継承が適切じゃないものなんてないだろうな。
世界中の何処かで誰かはオーバーライドしてるだろうさ
たとえそれが便利関数であったとしても
デフォルトの名無しさん [sage] 2017/10/01(日) 01:14:01.94:GRIqwmf+

> お前はストラテジーバターン=継承と呼ぶべきだって言ってるんだから、
そうとは言ってない。俺は、
・(正しい用法で)メソッドを継承した場合、ストラテジーパターンは自動的に適用されるから、
わざわざ「ストラテジーパターン(キリッツ」なんて言う機会も意味もない
という立場だ。
抽象度は違うが、分離不可能だし、分離する意味もないから通常は「継承」という言葉が使われる、ということ。
デフォルトの名無しさん [sage] 2017/10/01(日) 01:15:16.80:44WxUqLn

> お前はストラテジーバターン=継承と呼ぶべきだって言ってるんだから、
そうとは言ってない。俺は、
・(正しい用法で)メソを継承した場合、ストパタは自動的に適用されるから、
わざわざ「ストパタ(キリッツ」なんて言う機会も意味もない
という立場だ。
抽象度は違うが、分離不可能だし、分離する意味もないから通常は「継承」という言葉が使われる、ということ。
デフォルトの名無しさん [sage] 2017/10/01(日) 01:18:01.30:GRIqwmf+

意味不明。

RubyのExceptionは派生しまくっている=メソッド/フィールド等が既に追加/上書きされているはずであり、
これは正しい継承の使い方である、ということ。
デフォルトの名無しさん [sage] 2017/10/01(日) 01:19:25.82:H5Asg8Dc

> ・(正しい用法で)メソッドを継承した場合、ストラテジーパターンは自動的に適用されるから、
されない。

されると思っているのはお前がストラテジーバターン(設計用語)を
勝手に継承(実装用語)と読んでいるから、

何度も言うが設計は使用例(応用例)、つまり目的が有る
「アルゴリズムを実行時に選択することができる」
という目的があってこそストラテジーバターンと呼ぶことができるのであって
この目的がなければ、継承を使っていたからと言ってストラテジーバターンにはならない

設計用語を使わないからお前は「継承を使っているものはすべて継承だー!」という
意味不明なことをいうつもりだろって言ってんの。

設計用語を使っていれば「継承を使っているものはすべてストラテジーバターンだー!」
という事になって言葉的には意味不明なことにはならない。
もちろんこれが間違っているのは先に言ったとおり。

設計能力が足りないよ?
デフォルトの名無しさん [sage] 2017/10/01(日) 01:20:27.48:H5Asg8Dc

> RubyのExceptionは派生しまくっている=メソッド/フィールド等が既に追加/上書きされているはずであり、
いや上書きされてない。
上書きする必要ようもないしな。
デフォルトの名無しさん [sage] 2017/10/01(日) 01:25:04.92:GRIqwmf+

メンバは追加されてるだろ。(多分)
全く同じで階層だけ与えてエントリポイントをずらしているのか?
走だとしたらかなり奇妙な使い方だとは思うが。
デフォルトの名無しさん [sage] 2017/10/01(日) 01:26:45.20:44WxUqLn

メンバは追加されてるだろ。(多分)
全く同じで階層だけ与えてエンポイをずらしているのか?
走だとしたらかなり奇妙な使い方だとは思うが。
デフォルトの名無しさん [sage] 2017/10/01(日) 01:30:18.31:H5Asg8Dc

> メンバは追加されてるだろ。(多分)
オーバーライドの話だっただろ。アホめw


例外クラスは、クラスの階層構造を表現するのに
継承が適切だから継承を使ってる。
すべてのErrorはExceptioであり、実行時に発生するのは
StandardErrorであり、ファイルIOに関するエラーはIOErrorである
という風にだ。

これは設計として正しい。

オーバーライドするかどうかは些細な問題にすぎない。
重要なのは各クラスにどういう関係があって(これが設計)
それをどう言語で表現するか(これが実装)だ


お前がずっとやってるのは、実装だけしか見てないってことだよ。
デフォルトの名無しさん [sage] 2017/10/01(日) 01:30:53.56:GRIqwmf+

言いたいことは分かるが、平行線だな。
デフォルトの名無しさん [sage] 2017/10/01(日) 01:32:35.82:H5Asg8Dc

お前は言いたいことがわかる(俺が言ってることを理解した)
俺はお前が言いたいことがわからない

平行線ではない
デフォルトの名無しさん [sage] 2017/10/01(日) 01:34:40.94:GRIqwmf+

それも既に書いたけどね。
読め。

とはいえ平行線ならそれでいい。
デフォルトの名無しさん [sage] 2017/10/01(日) 01:36:17.23:H5Asg8Dc

すべてはお前が

ストラテジーバターンは継承を使ってるから
設計用語ではなく実装用語の継承と呼びましょう

そうするとストラテジーバターンなんて用語はいらないですよね?
ってことはデザパタ用語は全ていらないんじゃないですか?

使う目的なんか気にせず、実装に継承を使っていれば
全部継承と呼びましょうよ

だからデザパタは意味がない。ゴミ


というばーかな。理屈を言い出したのが悪い。
デフォルトの名無しさん [sage] 2017/10/01(日) 01:36:22.99:GRIqwmf+

> 俺はお前が言いたいことがわからない
じゃあ全部読み直せ。
それで分からないのなら、俺かお前の日本語が駄目駄目なだけであり、
どちらにしてもこれ以上は無理だ。
デフォルトの名無しさん [sage] 2017/10/01(日) 01:36:32.17:44WxUqLn

それも既に書いたけどね。
読め。

とはいえ平行線ならそれでいい。
デフォルトの名無しさん [sage] 2017/10/01(日) 01:38:16.54:H5Asg8Dc

お前の日本語がダメダメだってことだろw

お前はコンテキストを理解してない。
設計の話をしている時に実装の話をすんな
デフォルトの名無しさん [sage] 2017/10/01(日) 01:40:22.72:H5Asg8Dc
使う目的が違うのに、実装に継承が使われているだけで
全部継承と呼ぶな。それは実装用語だ

ストラテジーバターンの目的として使ってない時に

ストラテジーバターンは継承♪
継承を使っていればストラテジーバターン♪
だから全部ストラテジーバターン♪

とか言い出すなボケ

ストラテジーとは別のバターンとして使っているときは
実装に継承が含まれていようが別のパターンだ
デフォルトの名無しさん [sage] 2017/10/01(日) 01:42:14.15:GRIqwmf+

,79,84読め
現実的に使えないから使われてないのだと思うぞ。
これも平行線ならそれでいいが。


そんなことは言ってないんだが、そう読めたのならそれでいい。
デフォルトの名無しさん [sage] 2017/10/01(日) 01:43:39.80:H5Asg8Dc
> 現実的に使えないから使われてないのだと思うぞ。

現実的に使われてるから、使われてるとしか言いようがない
デフォルトの名無しさん [sage] 2017/10/01(日) 01:44:39.83:44WxUqLn

ストラテジーパターンって何?
ストパタのこと?
デフォルトの名無しさん [sage] 2017/10/01(日) 01:45:19.08:H5Asg8Dc
例えば、Railsのモデルに使われているActiveRecordというのは
もともとPoEAAのActiveRecordパターンという
パターンを実装したものだ

あまりにもRailsが有名になりすぎてRailsのものだと
勘違いしている人がいるぐらいにな。

これだけでも有名で大規模な利用例と言えよう
デフォルトの名無しさん [sage] 2017/10/01(日) 01:46:37.91:GRIqwmf+

> 現実的に使われてるから、使われてるとしか言いようがない
これって前から聞いてるけど、お前のリアルなの?
デフォルトの名無しさん [sage] 2017/10/01(日) 01:49:44.09:H5Asg8Dc

あぁ、レスが遅かったな。
すでにデザインパターンが使われてる例を一つ出したところだ


デザインパターンが使われていない証拠を出せ
デザインパターンが使われている証拠を出せ

これは

幽霊がいないという証拠を出せ
幽霊がいるという証拠を出せ

という話と似ている。幽霊がいないことを証明するのは難しいが
幽霊がいるという証明をするのは簡単
一匹でも幽霊を見つけてくればいい。

だから俺はデザインパターンが使われてる例を一つ出した。
お前は難しい方から攻めてくれ。デザインパターンが使われていないという証明をしろ。
デフォルトの名無しさん [sage] 2017/10/01(日) 01:52:23.50:GRIqwmf+
,159
そうだとしてさ、その場合、
「AcriveRecordオブジェクトを継承しといてね」とは言うけど、
「AcriveRecordパターン使ってね」とは言わないだろ、普通。
デフォルトの名無しさん [sage] 2017/10/01(日) 01:56:02.10:44WxUqLn
#define パターン パタ
#define デザインパターン デザパタ
#define ストラテジーパターン ストパタ
#define メソッド メソ
#define フィールド フィー
これでだいぶコード量が小さくできる

他に入れとくべきものある?
デフォルトの名無しさん [sage] 2017/10/01(日) 01:56:44.56:H5Asg8Dc

だからお前は実装のことしか見れてないっていってんだよww
視野が狭すぎ

「AcriveRecordオブジェクトを継承しといてね」は実装の話だ

「AcriveRecordパターン使ってね」は設計の話だ。
(実際には誰かに頼まれて使ったのではなくRailsの生みの親のDHHが
考慮した結果AcriveRecordパターンを使っわけだが)

お前は設計がすんだあとの立場からしか見えてないんだよ。
お前の書き込み自体が「○○しといてね」と指示を出される側から見てるのがその証拠
お前は誰かがやった設計の通りに、実装することしかしたことがないんだろ?
デフォルトの名無しさん [sage] 2017/10/01(日) 02:01:22.65:44WxUqLn
実装は思想やモデル、指針を定義するパターンを実現する手法のひとつにすぎない
それだけのことだよね
デフォルトの名無しさん [sage] 2017/10/01(日) 02:03:57.54:GRIqwmf+

いや、指示を出す立場でも同じ言葉だと思うが。

よく知らないが、
> ActiveRecordのようなO/Rマッパーを使うと、
> オブジェクト指向プログラミングができるのはもちろん、
> モデル層の永続化のコードを基本的にライブラリ任せにできるので、
> SQLを記述する煩わしさを避けることができます。
> ttp://www.atmarkit.co.jp/ait/articles/1104/12/news135.html
つまり俺なら普通に「O/Rマッパー」って言うぞ。
それを厨二に「ActiveRecord(キリッ」と名付けるのは勝手だが、
何故俺がいちいち名前を覚えないといけないのだ?
デフォルトの名無しさん [sage] 2017/10/01(日) 02:05:21.68:44WxUqLn

ソフトウェア設計者ならパターンくらい覚えるものだろう
仕様書を元に実装するコーダーなら別だが
デフォルトの名無しさん [sage] 2017/10/01(日) 02:08:23.29:GRIqwmf+

むしろ覚えるべきは「O/Rマッパー」(一般用語)であって、
「ActiveRecord」(Rails方言)ではないだろ。
デフォルトの名無しさん [sage] 2017/10/01(日) 02:08:24.39:H5Asg8Dc
普通、設計は「○○パターンを使ってね」なんて言わないからなぁ。

言うとしたら「○○パターンを使いましょう」だ
なにもない所から使うパターンを考えることが設計作業なんだから。

設計者が実装者に指示を出すとしたら
「○○パターンを使いますから、必要なクラスを実装してください」か
もしくは「○○パターンを使います。そのために必要なクラスの一部を作りましたから、
あなたは○○オブジェクトを継承しといてね」になるだろう。

そう実装の話。実装の立場からしか物事を見れてないから
設計をすることの意味すらもわからず
設計に実装と同じような指示が存在すると墓穴をほってしまう。
デフォルトの名無しさん [sage] 2017/10/01(日) 02:09:16.78:H5Asg8Dc

O/RマッパーとActiveRecordは同じ意味ではない。
まずそこから勉強することが大事だよな?
デフォルトの名無しさん [sage] 2017/10/01(日) 02:11:38.94:44WxUqLn

Active Recordというワードで鬼の首取るしかなくなってるように見える
議論の本質はそこではないともうひと方は言っていることがはたから見てても汲み取れる
デフォルトの名無しさん [sage] 2017/10/01(日) 02:12:56.51:H5Asg8Dc
まあ、ご教授してさしあげると(笑)

O/Rマッパーは設計を意味する用語ではない
なにかのオブジェクトとデータベースをマッピングする
という目的のためにライブラリ・フレムワークの種類のことだ。

O/Rマッパーと言ってもそこにどんな設計が使われているかはわからない。
ActiveRecordパターンを使ってるかもしれないし
Table Data Gatewayパターンを使ってるかもしれないし
Row Data Gatewayパターンを使ってるかもしれないし
Data Mapperパターンを使ってるかもしれない
デフォルトの名無しさん [sage] 2017/10/01(日) 02:14:56.98:H5Asg8Dc
RailsのActiveRecordは
その名前の通りPoEAAのActiveRecordパターンを
実装したO/Rマッパーである

別にO/Rマッパー全てがActiveRecordパターンというわけではない
デフォルトの名無しさん [sage] 2017/10/01(日) 02:15:32.16:GRIqwmf+

はいはい、「O/Rマッパー」と「ActiveRecord『パターン』」な。
つかこの辺は普通に脳内補完しろよマジで。


それ前から疑問で何度も聞いているのだが、お前のリアルでは
> 「○○パターンを使いましょう」
と言っているのか?

これも何度も言っているが、ストラテジーパターンに該当するとして、
その際、継承/委譲/関数ポインタのどれにするかで大違いなので、
現実的に「ストラテジーパターンで行きましょう」なんて議論は無理で、
「ここは委譲にしとく?」みたいなことにならないか?
デフォルトの名無しさん [sage] 2017/10/01(日) 02:16:17.79:44WxUqLn
まとめると、基本設計(パターン)とそれを実現するために使う道具(ライブラリ等の具体的な実装)の区別をちゃんとつけて設計しましょう
ってことでFA?
デフォルトの名無しさん [sage] 2017/10/01(日) 02:17:03.31:H5Asg8Dc
Java の Hibernate という O/Rマッパーが
Data Mapperパターンを使っている

ttp://d.hatena.ne.jp/naoya/20051024/1130146687

> テーブルの構造とクラスの設計に乖離がある場合、
> その乖離を埋めるためのマッピングを用意してやる必要がある、
> これが Data Mapper パターン。Java の Hibernate とかが
> Data Mapper による O/R マッピング実装。
デフォルトの名無しさん [sage] 2017/10/01(日) 02:18:34.76:H5Asg8Dc

O/Rマッパーの実装として

ActiveRecordパターンを使ったRailsのActiveRecordと
DataMapperパターンを使ったJavaのHibernateを紹介した


ここからもO/Rマッパーという用語では
設計がわからんという話に納得できただろ?w
デフォルトの名無しさん [sage] 2017/10/01(日) 02:18:59.84:GRIqwmf+
,171
それくらいは分かるが、と言うより、

・O/Rマッパー=OとRをマッピングするもの

であって、それ以上でも以下でもないんだよ。
ただし、中身の実装を知らなくていいというのがOOPであって、それで終わり。
デフォルトの名無しさん [sage] 2017/10/01(日) 02:20:16.08:H5Asg8Dc
> ただし、中身の実装を知らなくていいというのがOOPであって、それで終わり。

ア、ハイ、実装者側の立場からしか見えてないんですよね?w


中身の設計ぐらい知らなきゃw
デフォルトの名無しさん [sage] 2017/10/01(日) 02:21:21.14:44WxUqLn
少しずつ主張を変えていって最初からそう言ってるんだがってことにする論法って俗に何て言うの?
デフォルトの名無しさん [sage] 2017/10/01(日) 02:21:59.93:H5Asg8Dc
ちょっとまてw
終わった話を蒸し返す論法も使ってるぞw
デフォルトの名無しさん [sage] 2017/10/01(日) 02:26:02.99:GRIqwmf+

そのURL読んだけど、それって多分単純にその実装をそう呼んだだけであって、
いわゆるデザパタ(GoF)とはだいぶ主旨が異なるぞ。
まあそれを有り難がるのも自由だが。
デフォルトの名無しさん [sage] 2017/10/01(日) 02:28:09.18:H5Asg8Dc
実装者は使うライブラリ・フレームワークの設計をしらないと
めちゃくちゃになるからな。

例えば昔、トランザクションスクリプトパターンと
単なるSQLライブラリばかり使ってきた人が
別プロジェクトでPythonのDjango(これもActiveRecordパターン)を
使ったんだが散々な結果だったよ。

フレームワークとしてActiveRecordパターンを要求されるが
そこにActiveRecordパターンではやらないようなコード
(SQLを実行するだけのようなメソッド)をクラスに生やしたりして。

Djangoフレームワークの実装の中身は見なくてもいいけど
そこで使われている設計はちゃんと理解していなければダメだ。
デフォルトの名無しさん [sage] 2017/10/01(日) 02:28:25.53:44WxUqLn
あるOOPベースのライブラリを使うことで結果的にあるデザインパターンに沿うことになるライブラリと、いろんなデザインパターンを実現するのに使えるより純粋な道具としてのライブラリがあると思うの
そこはちゃんと分離して話をしないとダメだと思うの
デフォルトの名無しさん [sage] 2017/10/01(日) 02:28:51.27:H5Asg8Dc

お前(今までの流れから明らかに力不足)の
感想なんていらんがなw
デフォルトの名無しさん [sage] 2017/10/01(日) 02:30:10.95:GRIqwmf+
一応俺のスタンスは最初から変わってないつもりだぞ。
・デザパタはゴミ
・デザパタ厨もゴミ
・デザパタ用語は使い道がないからゴミ
デフォルトの名無しさん [sage] 2017/10/01(日) 02:31:34.05:44WxUqLn

そうだろうね
そしてそれはソフトウェア設計者としては二流以下だというのがこれまでの話の流れだと思うの
デフォルトの名無しさん [sage] 2017/10/01(日) 02:31:45.57:H5Asg8Dc

もう一つ。

・俺は無能なバカ

これも加えとけw
今までの流れで明らかになったしな
デフォルトの名無しさん [sage] 2017/10/01(日) 02:32:31.62:GRIqwmf+

それはある。
しかしそれは「フレームワークの中身を知っておけ」であって、「デザパタを知っておけ」ではない。
デフォルトの名無しさん [sage] 2017/10/01(日) 02:34:18.00:44WxUqLn

というより
・俺はデザインパターンとかめんどくさいから勉強したくないの
だと思う
デフォルトの名無しさん [sage] 2017/10/01(日) 02:35:51.52:GRIqwmf+

一応それは世間的には区別されているらしいぞ。(wikiだと思ったが、今探したがない)
・自分が思うように使うのがライブラリ
・フレームワークの場合は、自分が合わせる
デフォルトの名無しさん [sage] 2017/10/01(日) 02:36:36.93:H5Asg8Dc

> しかしそれは「フレームワークの中身を知っておけ」であって、「デザパタを知っておけ」ではない。

「フレームワークで使われてるデザパタを知っておけ」だ

俺はDjangoは当時知らなかったがActiveRecordパターンを知っていたから
使い方が間違っていることにすぐに気づいたぞ
特定のフレームワークに縛られない知識が重要という話だ。


あくまで実装者として立場からしか見れないお前は
今使ってるフレームワークの使い方で精一杯なんだろうけどな。

そしてフレームワークから呼び出されるコードしか書かないから
お前の世界にはデザパタがでてこないわけだよ。

全て理屈が通ったなw
デフォルトの名無しさん [sage] 2017/10/01(日) 02:40:26.75:GRIqwmf+

だからそれは「フレームワークがActiveRecord前提で組まれている」からであり、
それを「ActiveRecordパターン」と呼ぶのは自由だが、GoFの言う「デザパタ」とは違うって。
まあ平行線ならそれでいいが。
デフォルトの名無しさん [sage] 2017/10/01(日) 02:44:03.92:H5Asg8Dc
> GoFの言う「デザパタ」とは違うって。

そりゃそうだ。ActiveRecordパターンは

エンタープライズアプリケーションアーキテクチャパターン
ttps://www.amazon.co.jp/dp/B01B5MX2O2/
にのってるマーチン・ファウラーのデザインパターンなんだから
デフォルトの名無しさん [sage] 2017/10/01(日) 02:46:05.25:U1G3k+aG

そうだな
デザインパターンをデザパタと呼称する奴はゴミな場合が多い
デフォルトの名無しさん [sage] 2017/10/01(日) 02:50:38.64:GRIqwmf+

読め
デフォルトの名無しさん [sage] 2017/10/01(日) 02:51:22.94:H5Asg8Dc
ちなみにJava の Hibernate という O/Rマッパーは
ActiveRecordパターンとともに紹介されている
Data Mapperパターンを使っているが

Hibernate はフレームワークではない。ライブラリである。
デフォルトの名無しさん [sage] 2017/10/01(日) 02:53:02.16:GRIqwmf+
むしろお前らが何故そこまで必死なのか分からん。再度言うが、の後半、


それ前から疑問で何度も聞いているのだが、お前のリアルでは
> 「○○パターンを使いましょう」
と言っているのか?

これも何度も言っているが、ストラテジーパターンに該当するとして、
その際、継承/委譲/関数ポインタのどれにするかで大違いなので、
現実的に「ストラテジーパターンで行きましょう」なんて議論は無理で、
「ここは委譲にしとく?」みたいなことにならないか?

デザパタ厨の皆様、これに答えてくれよ。
デフォルトの名無しさん [sage] 2017/10/01(日) 02:55:34.72:44WxUqLn
デザインパターンは不要の長物といってる人はデザインパターンを理解してないと思われる
何かしらのソフトウェアをゼロから作り上げるにあたっては必ず何かしらの大枠となる基本設計思想や基本構造を構想して行われる
それがGoFのデザインパターンに一致するかもしれないし、新しい独自のデザインパターンかもしれない
デザインパターンという言葉は両者含めての言葉である
つまり、デザインパターンを持たないソフトウェアなど本来は存在しない
デフォルトの名無しさん [sage] 2017/10/01(日) 02:55:40.17:H5Asg8Dc

お前がなんでそんなことに必死になってるのか?
みんなそう思ってるよw

ストラテジーバターンでしか
お前はデザインパターンを否定できないってね。
デフォルトの名無しさん [sage] 2017/10/01(日) 02:57:01.13:H5Asg8Dc


> これも何度も言っているが、ストラテジーパターンに該当するとして、
> その際、継承/委譲/関数ポインタのどれにするかで大違いなので、
> 現実的に「ストラテジーパターンで行きましょう」なんて議論は無理で、

ここはいろんなアルゴリズムを実行時に切り替えられるようにしよう
であればストラテジーバターンで行きましょう。という議論になる。

アルゴリズムを実行時に切り替えられるようにしようという設計の話で
委譲にしておく?なんて実装の話は出てこない。
デフォルトの名無しさん [sage] 2017/10/01(日) 02:57:04.47:44WxUqLn
むしろお前らが何故そこまで必死なのか分からん。再度言うが、の後半、


それ前から疑問で何度も聞いているのだが、お前のリアルでは
> 「○○パターンを使いましょう」
と言っているのか?

これも何度も言っているが、ストパタに該当するとして、
その際、継承/委譲/関数ポインタのどれにするかで大違いなので、
現実的に「ストパタで行きましょう」なんて議論は無理で、
「ここは委譲にしとく?」みたいなことにならないか?

デザパタ厨の皆様、これに答えてくれよ。
デフォルトの名無しさん [sage] 2017/10/01(日) 02:58:01.82:H5Asg8Dc
ほらなw
答えたのに無視するもんなー

こういうやつです
デフォルトの名無しさん [sage] 2017/10/01(日) 03:01:11.73:44WxUqLn

デザインパターンとは設計の大枠となる構造や指針であって、それを決めてからより具体的な実装を検討していくってだけなんだが…
デフォルトの名無しさん [sage] 2017/10/01(日) 03:04:15.90:GRIqwmf+

だからID見ろよマジで

とはいえ君がならそれでいい。
他の奴も出来ればに回答よろしく。
俺はもう寝るが。
デフォルトの名無しさん [sage] 2017/10/01(日) 03:05:53.36:44WxUqLn

回答しといたぞ
デフォルトの名無しさん [sage] 2017/10/01(日) 03:07:26.90:GRIqwmf+

お前もどういう神経なのか分からんが、議論したいのなら普通に入ってこい。
邪魔したいのもお前の自由だが、だったらさらっと入ってくるな。
普通に迷惑行為をしてるんだぞお前は。
デフォルトの名無しさん [sage] 2017/10/01(日) 03:09:34.07:44WxUqLn

デザパタっていうなら省略ポリシーをちゃんと守って書きなって言ってるだけ
デフォルトの名無しさん [sage] 2017/10/01(日) 03:14:58.23:44WxUqLn

デザパタと言ったかと思えばストラテジーパターンと言ってみたり、中途半端なんだよ
そういうやつが書くコードは、ところどころポリシーが違ったりしてるいい加減なコードを書きそうだ
そんな調子だからデザインパターンも軽視するのだろう
デフォルトの名無しさん [sage] 2017/10/01(日) 03:20:07.22:H5Asg8Dc
デザパタと略すならストラテジーパターンも
ストパンと略すべきだろうな
デフォルトの名無しさん [sage] 2017/10/01(日) 03:23:34.93:44WxUqLn

いやそれはおかしいだろw
デフォルトの名無しさん [sage] 2017/10/01(日) 08:46:24.59:GRIqwmf+

ストラテジーパターン以外についても前スレでさんざん
○○=△△パターン、って書いたろ。
まあいいが。


undoすらまともに実装出来ないデザパタ厨が、
何をどう勘違いしたら設計出来るつもりになれるのか不思議だったが、
だいぶ喋ってくれたので何となく分かったような気がする。
まあ後日読み返してみることにするよ。これについてはありがとう。
デフォルトの名無しさん [sage] 2017/10/01(日) 09:03:28.63:U1G3k+aG
undoとかundoとかundoとか自分がやったことあるところは自信あるもんな
デフォルトの名無しさん [sage] 2017/10/01(日) 09:33:28.54:GRIqwmf+

まあ今日はもうやり合う気はないんだが、多分お前らは設計を根本的に勘違いしている。
例えば、内URLで言うなら、

> Table Data Gateway は J2EE の DAO に代表されるパターンで、
> ひとつのインスタンスがテーブルの全部のレコードを扱うというもの。
> SQL を一箇所に集めることで保守性を上げましょうね、というもの。

普通の人の設計=後半部分を考えること
お前らの言う設計=この全文を覚えること

になってる。
ただしこれがお前らみたいに考える能力がない連中にとって現実解になり得るのかもしれん。
これは前にも言ったが。

> 自分がやったことあるところは自信あるもんな
これがお前らの世界観を端的に示している。
経験済みならパターンとして暗記しているから出来るが、やったこと無いと何も出来ない。
最初の卵は絶対に産めないわけだ。
実はお前らがundoをさも難しいと思っていること自体がかなり滑稽なんだがな。

とはいえ新しい意味での「コピペプログラマ」が跋扈する時代でもあるから、
お前らのやり方でもある程度通用するのは事実なのだろう。
デザパタ厨=コピペプログラマのようだし。
デフォルトの名無しさん [sage] 2017/10/01(日) 10:06:53.73:GRIqwmf+
まあとにかく俺は、
「動的に対象関数を切り替える」と言えば済むだけのところで
「ストラテジーパターン」と言い換えるのは、厨二以外の意味はないと思うけどな。
そして「AcriveRecordパターン」なんて言っちゃうのは厨二過ぎて付いていけない。
「Rails標準O/Rマッパーの実装方式」と言えば誰にでも通じるのに。

とはいえこういう状況も割とよくあるのも事実だが。
デフォルトの名無しさん [sage] 2017/10/01(日) 10:46:47.52:IPLbJXkb
なんども使う処理は関数化して名前を付けるだろ
デザインパターンもそれと同じだよ
この考え方を理解できない人ってめちゃくちゃ長い関数を書きそうだよね
仕事では絶対に付き合いたくないタイプ
デフォルトの名無しさん [sage] 2017/10/01(日) 11:25:29.81:DL6cgIdt

とくに名前ついてないと思うけど
頭の悪い子が無自覚に食い下がるときって、いつもこうなってると思う
だから、いつもの展開だなって思うだけ

おまえら、バターン君これ以上いじっても何の利も無いぞ
もうそっとしておいてやれ
デフォルトの名無しさん [sage] 2017/10/01(日) 11:57:55.99:GRIqwmf+

それは君らが枝葉に対してしか反論しないからなんだがな。
とはいえこの意味も分からないのだと思うが。
君らのやり方については名前が付いていたはず。
デフォルトの名無しさん [sage] 2017/10/01(日) 12:04:09.09:qGSPhC6b
全体をみれてないのはどっちだろうね
デフォルトの名無しさん [sage] 2017/10/01(日) 12:06:57.99:GRIqwmf+
ああ、捕捉しておくと、
ID:H5Asg8Dcは頭が悪くて、多分短期記憶領域が非常に狭い。
だから論理的に筋立てるのではなく、言葉尻を掴んで反論してくる。
というかそれしか出来ない。
だがまあ、それでも話す気はあるみたいだから相手してみた、というところ。
最初からちゃんと議論してくれればこの展開にはなってない。
とはいえ、今のID:H5Asg8Dcにこれを求めるのは無理だ。

ただ、こういう、お前らに問題があるのに相手のせいにするというのはゆとりに多いし、
ゆとりは本当に馬鹿だから他のゆとりもそう思ってしまってみんなで同調する事も多い。
今まさにそうだが。
で、そういうのにも上の世代はブチ切れているから、そこら辺は自覚した方がいい。
デフォルトの名無しさん [sage] 2017/10/01(日) 12:22:54.23:yUwdbVfT
今デザパタ勉強中だけど、undo実装のパターンも二つぐらいなかったか
メメントとあともうひとつぐらい
よくわからんけど、なんでそんなに否定したがるかわからん
デフォルトの名無しさん [sage] 2017/10/01(日) 12:37:16.11:H5Asg8Dc
ほらな? 個人攻撃を始めちゃったw

これが記憶能力が少なくて名前を覚えられなくて


2分ヒープ木を用いて並び替えする方式でも
隣り合う要素の大小を比較しながら整列する並び替え方式でも
あらかじめ順番通りに並んだバケツを並び替えを行う要素分用意して順番に格納された要素をバケツから取り出し並び替えする方式でも
10進数の0以上の整数値の場合、0?10のバケツを用意しソートを行う要素の下1桁目に対応するバケツに格納する方式でも
バラバラになっている配列データを再帰的に最小限まで分解を行い分解し終わった後、結合を行う並び替える方式でも
動的に対象関数を切り替えるようなやり方をしよう

っていうやつなんやでw
デフォルトの名無しさん [sage] 2017/10/01(日) 12:47:03.35:qGSPhC6b

デザインパターンな
リアルで恥ずかしい思いしないように今のうちから直しといた方がいいよ
デフォルトの名無しさん [sage] 2017/10/01(日) 12:47:30.83:yUwdbVfT
パターンに名前をつけることにイラついてんのか?
デフォルトの名無しさん [sage] 2017/10/01(日) 12:48:22.68:yUwdbVfT
プログラマーってどうでもいいことに突っかかるよな
デフォルトの名無しさん [sage] 2017/10/01(日) 12:51:14.45:IPLbJXkb
PGは基本キチガイだよね
まともな奴だと逆に珍しい
もともとプログラム好きなオタクはもれなくキチガイだし
他の就職先なくてプログラマになったやつも内定取れないだけあって人間性のおかしなキチガイばかり
デフォルトの名無しさん [sage] 2017/10/01(日) 12:57:42.28:yUwdbVfT
GoFより自分の方が優秀だと主張したいのか?
デフォルトの名無しさん [sage] 2017/10/01(日) 13:10:11.98:OXD0q5aq
な?デザパタなんて使えないだろ
デフォルトの名無しさん [sage] 2017/10/01(日) 13:14:24.57:H5Asg8Dc
パターン名が覚えられない
だからデザパタは使えないってことにしたいんだ
デフォルトの名無しさん [sage] 2017/10/01(日) 13:17:01.88:DL6cgIdt

身の程知らず、も初学者にありがちなパターンだよなw
コンパイラがバグってるだの
言語がゴミだのOSがカスだの
俺だけが正しくて世界の全員が間違ってるだの

なにか、自分が無敵に思えるタイミングが、学習の初期の初期に存在するんだろうな
デフォルトの名無しさん [sage] 2017/10/01(日) 13:19:21.72:GRIqwmf+

前スレ読め
基本的に君は相手が何を言ったのか全く覚えてない。
だから話がループする。
それは君の問題だが、君の場合はそれが常である為に、その異常性に気付けない。
それはマジでヤバいぞ。リアルだったらブチ切れられて終わりのはず。


俺は、デザパタは役に立たない、デザパタ厨は全員undoすら実装できないのが証拠、という意見で、
それでも君が勉強するのは君の自由。
ただここら辺も前スレ818で言ったし、話は完全にループしてる。
結局俺は前スレ812の意見からほぼ修正されてない。

デザパタ厨はデザパタを暗記することが目的になっている。
GoFのはデザパタ厨が主張するように「設計用語」としては多少は意味があるが、(ただし使いどころがないからゴミ)
ActiveRecordとかのただの「実装の一例」を抽象化無しで「パターン」として取り扱うからおかしな事になる。

ただし、デザパタ厨=コピペプログラマにとってはこれが彼等なりの現実解なのだと思う。
これも前スレ927で言ったとおり。
デフォルトの名無しさん [sage] 2017/10/01(日) 13:20:54.51:qGSPhC6b
>229
>デザパタ厨
ってなんすか?
デフォルトの名無しさん [sage] 2017/10/01(日) 13:21:35.33:H5Asg8Dc
> 俺は、デザパタは役に立たない、デザパタ厨は全員undoすら実装できないのが証拠、という意見で、

根拠が無いな。

世界中を調べてみたのか?
まさかこのスレだけで判断してないよな?
デフォルトの名無しさん [sage] 2017/10/01(日) 13:21:53.57:qGSPhC6b

>デザパタ厨=コピペプログラマ
これもよくわからんな
デザインパターンを把握してないプログラマほどありもののコピペのつなぎ合わせでしのぎそうだが
デフォルトの名無しさん [sage] 2017/10/01(日) 13:21:57.09:H5Asg8Dc
世界中を調べてみればデザパタが使われているのは
明らかだろう。
デフォルトの名無しさん [sage] 2017/10/01(日) 13:23:11.45:H5Asg8Dc

正解。

アルゴリズムはコピペできるが
デザイン(設計)はコピペできない。

なぜならコピペ元(デザパタのサンプル)は
名前もサンプルだからそのまま使えることはない
デフォルトの名無しさん [sage] 2017/10/01(日) 13:23:13.35:OXD0q5aq

え?
デフォルトの名無しさん [sage] 2017/10/01(日) 13:24:56.88:H5Asg8Dc

実例はいくつも出してるよ。
デフォルトの名無しさん [sage] 2017/10/01(日) 13:27:40.28:OXD0q5aq

ごめん
現場で一度も見たことない
派遣で結構たくさん大手まわったけど
マジで1回も見たことないよ
デフォルトの名無しさん [sage] 2017/10/01(日) 13:29:19.01:iOi6hm11

参照
デフォルトの名無しさん [sage] 2017/10/01(日) 13:29:54.91:t00k+6e7

あほ
デフォルトの名無しさん [] 2017/10/01(日) 13:30:31.06:JkvRtWNG

フレームワーク作ってるなら
コマンド、テンプレートメソッド、ストラテジー、アブストラクトファクトリー
は鉄板でしょ
デフォルトの名無しさん [sage] 2017/10/01(日) 13:30:36.81:OXD0q5aq

掻い摘んで言うと
消滅したんだよねw
それでいいじゃん
何にこだわってるの?
デフォルトの名無しさん [sage] 2017/10/01(日) 13:32:35.36:OXD0q5aq

うん
全部知らない
デフォルトの名無しさん [sage] 2017/10/01(日) 13:38:57.48:GRIqwmf+
ちなみに俺もと同じで、
・デザパタ用語を敢えて使う状況がないから自然消滅した
という気がしている。
だから何度もデザパタ厨に「お前らのリアルで使ってるのか?」と聞いている。
デフォルトの名無しさん [sage] 2017/10/01(日) 13:38:58.29:yUwdbVfT
知らないことを誇るのってすごく恥ずかしいと思う
数学なんて役に立たねーってわめいてるバカ学生みたい
デフォルトの名無しさん [sage] 2017/10/01(日) 13:40:32.66:H5Asg8Dc

使ってるし使われてる。

お前はフレームワークを使うことしかやってないんだろ?
実装の立場でしか見れてない、
お前の仕事は設計が終わった後で設計にたずさわっていない。

そりゃ知らんはずだわw
デフォルトの名無しさん [sage] 2017/10/01(日) 13:44:03.36:DL6cgIdt

あんたつくづくお人好しだなw

数学なんて社会に出ても役に立たない!
って主張はたまに聞くが
その反論は意外と耳に届いてこない
なぜなら、反論しうる層の人々は
そこまでヒマでもないし、お人好しでもない
真顔のままで見下ろしてる
デフォルトの名無しさん [sage] 2017/10/01(日) 13:44:18.74:iOi6hm11

消滅?
なぜそういうことに思考が繋がるのかわかんないっすね
デフォルトの名無しさん [sage] 2017/10/01(日) 13:45:04.32:qGSPhC6b
自分だけは誰よりも正しく常に上位にいるという前提
デフォルトの名無しさん [sage] 2017/10/01(日) 13:45:38.71:GRIqwmf+

まあundoすら実装出来ない馬鹿がフレームワークの設計とか、あり得ないけどな
デフォルトの名無しさん [sage] 2017/10/01(日) 13:49:46.07:m+pWvPIZ
ブーメラン刺さってますよ
デフォルトの名無しさん [sage] 2017/10/01(日) 14:01:00.31:OXD0q5aq

なぁ
見たことないよな
デフォルトの名無しさん [sage] 2017/10/01(日) 14:04:05.22:OXD0q5aq
ネット上でも当たり前にデザパタが使われて解説してるサイトとか無いの?
msも使ってないし
デザパタサポートしてるフレームワークとかも聞かないし
デフォルトの名無しさん [sage] 2017/10/01(日) 14:43:18.93:H5Asg8Dc
> デザパタサポートしてるフレームワークとかも聞かないし

言ってることがおかしい。

デザインパターンは設計なのだから
「サポートしている」という言い方はしない
よくある設計をサポートしているフレームワークと言い換えれば
おかしいのがわかるだろう?

その時点で間違っているというのがわかる。

設計は使うものなので、デザインパターンの設計が
使われているフレームワークはいくつもある

GUIライブラリはデザインパターンをよく使う場所だし
プラグイン的な仕組みにも使われてる
デフォルトの名無しさん [sage] 2017/10/01(日) 14:52:33.98:H5Asg8Dc
面白いことにデザインパターンへの批判には
矛盾する二種類の批判が有る。

一つは
・誰でも普通に使ってるものにわざわざ名前をつけるな

もう一つは
・誰もそんなものを使っていない


おもしろいやろ?
デザインパターンを批判している人同士で
対立してるんやでw
デフォルトの名無しさん [sage] 2017/10/01(日) 14:53:18.46:OXD0q5aq

え?ボタン押してパターン選択したら必要なクラスが勝手にできるんでもいいんじゃないの?
でも誰も使ってないからそういうのできないんだよ
デフォルトの名無しさん [sage] 2017/10/01(日) 14:54:50.36:OXD0q5aq

矛盾してないじゃんw
両方成り立つ
大事なのはデザパタのパターンでのやり取りを誰もしてないってこと
デフォルトの名無しさん [sage] 2017/10/01(日) 14:56:03.88:H5Asg8Dc

明らかに矛盾してるよ

・誰でも普通に使ってるもの
・誰もそんなものを使っていない
デフォルトの名無しさん [sage] 2017/10/01(日) 14:58:51.94:H5Asg8Dc

> え?ボタン押してパターン選択したら必要なクラスが勝手にできるんでもいいんじゃないの?

あははw
それは「デザインパターンを使って設計したもの」
つまり「設計が終わった段階」から

コーディングの仕事をお前にさせる時に
クラスの枠組みを自動生成しているだけだ。
UMLツールがそういったことをやってくれる

お前は設計が終わった後の
実装を振られているだけなんだよ
お前は設計をしたことがない
デフォルトの名無しさん [sage] 2017/10/01(日) 14:59:57.46:OXD0q5aq

話の内容を理解しないで言葉だけ捕まえてるじゃん

使ってるって言ってる人はデザパタの構造だけの話でしょ?
使ってないって言ってる人はデザパタのパターンでのやり取りの話じゃん

結局、下の状態でなければデザパタの主旨から外れてるんだから
デザパタは使われてないんだよw
デフォルトの名無しさん [sage] 2017/10/01(日) 15:01:34.39:H5Asg8Dc
上の方でも「デザインパターンをコピペ」とか
意味不明なことを言ってるやつがいたが
デザインパターンはコピペしても意味がない。
なぜなら設計(=構造)だからだ

自動生成したとしてもファイルや
クラスのインターフェースぐらいしか作成できない

アルゴリズムなどコピペするような処理は含まれていない
あくまで構造だけなんだからコピペしようがない
デフォルトの名無しさん [sage] 2017/10/01(日) 15:02:53.48:H5Asg8Dc

> 使ってるって言ってる人はデザパタの構造だけの話でしょ?

そもそもデザパタは構造のパターンですが?

> 使ってないって言ってる人はデザパタのパターンでのやり取りの話じゃん

「デザインパターンのパターンでのやり取り」ってなんですか?
パターン♪パターン♪
デフォルトの名無しさん [sage] 2017/10/01(日) 15:03:17.57:OXD0q5aq

雛形作ってくれてもいいだろ
デザパタを使ってるなら楽だと思うぜ
シングルトンって押したら勝手にやってくれてもいいしね
デフォルトの名無しさん [sage] 2017/10/01(日) 15:04:09.40:OXD0q5aq

だからパターン名で設計のコミュニケーションを取ってないって言ってるの
デフォルトの名無しさん [sage] 2017/10/01(日) 15:04:13.49:H5Asg8Dc
> 雛形作ってくれてもいいだろ
UMLツールで雛形は自動生成されてますね?
デフォルトの名無しさん [sage] 2017/10/01(日) 15:04:53.26:H5Asg8Dc

お前が実装担当だからだろ?w
デフォルトの名無しさん [sage] 2017/10/01(日) 15:06:23.08:OXD0q5aq

え?
デザパタが指定できるの?
見たことないよ
デフォルトの名無しさん [sage] 2017/10/01(日) 15:06:25.98:yUwdbVfT

そらデザパタ勉強してないひとらにあわせてるんでね?
一番レベル低いところに合わせるって日本的じゃない
デフォルトの名無しさん [sage] 2017/10/01(日) 15:07:06.89:OXD0q5aq

だから使ってないってw
デフォルトの名無しさん [sage] 2017/10/01(日) 15:09:43.64:OXD0q5aq
デザパタスレとかもう無いしねw
デフォルトの名無しさん [sage] 2017/10/01(日) 15:10:19.52:H5Asg8Dc

だからデザパタが指定できるっていうのが意味不明
何を指定するんだ?

デザインパターンにはクラス名もメソッド名も
決められていない。(説明用サンプルは実際に使う名前じゃない)
クラス名もメソッド名も決まってないのだからコピペしようがないのがわかるだろ?


UMLツールなどで、デザインパターンを使って
設計者が設計していくんだよ。つまり
デザインパターンを表現するのに必要な
クラスとメソッドを書いていく。(クラス図)
そこから自動生成する。

デザインパターンを使うっていうのは、
コードの再利用じゃねんだよ。
設計レベルの話なんだから

いい加減、実装の世界からしか見れないのは卒業した方がいいよ
本当に技術力不足だから
デフォルトの名無しさん [sage] 2017/10/01(日) 15:12:01.22:yUwdbVfT
まあ別にデザパタ知らんでも仕事はできるだろうけどさ
知っとくと便利ってだけで
デフォルトの名無しさん [sage] 2017/10/01(日) 15:13:14.14:OXD0q5aq

だからボタン一発で作ってくれればいいじゃん
visualstudioみたいに
馬鹿だなお前w

まあ、この世に無いものの話だから理解できなきゃいいけどw
デフォルトの名無しさん [sage] 2017/10/01(日) 15:13:37.49:OXD0q5aq

誰も使ってないから
デフォルトの名無しさん [sage] 2017/10/01(日) 15:21:35.91:H5Asg8Dc

だから何を作るんだよ?
ファイルならファイル作成ボタンから作ればいいだろ
デフォルトの名無しさん [sage] 2017/10/01(日) 15:22:50.21:H5Asg8Dc
デザインパターンの自動化
ttps://www.infoq.com/jp/articles/Design-Pattern-Automation
デフォルトの名無しさん [sage] 2017/10/01(日) 15:25:11.32:H5Asg8Dc

お前が思っているよりも遥かに
高次元レベルでデザインパターンは言語・ライブラリ・フレームワークと
融合していることがからわかるぞ。

この上なにを自動生成したいのか?
デフォルトの名無しさん [sage] 2017/10/01(日) 15:28:50.57:H5Asg8Dc
> PostSharpは現在、次のデザインパターン用の既製の実装を提供している。
>

>
> これで、デザインパターンの既製の実装を使って、チームはAOPを学習せずに、AOPの恩恵に浴することができる。

まさにこの現象だろうな。

実装担当者は、すでにフレームワークなどの含まれてるデザインパターンを使うだけだから
デザインパターンを学習せずに、知らずに利用している。


そういうやつら(デザパターンの恩恵を受けてるやつ)が
デザインパターンは(実装者よりも前の設計者が担当が使うものだから)
使わないというのだろう。

視野の狭い事だ。視野っていうか、所詮コーダーって言えば良いのか
デフォルトの名無しさん [sage] 2017/10/01(日) 15:30:09.48:H5Asg8Dc
ジュニア開発者w

> デザインパターンの自動化の使用は、一般的に政治的に敏感な問題である 。
> なぜならそれは、チーム内で関心の分離を対処するからである。
> 典型的には、上級開発者は、デザインパターンを選択し、アスペクトを実装する。
> そしてジュニア開発者は、それらを使用する。上級開発者が検証ルールを記述し、
> 手書きのコードがアーキテクチャを尊重することを確実にする。
> ジュニアの開発者が全体のコードベースを理解する必要はないという事実は、実際には意図された効果である。
>
> この議論は、シニアマネージャーの視点を取り、ジュニアの開発者のプライドを
> 傷つける可能性があるので、一般的に取り組むにはデリケートものである。


ジュニアにはデザパタは不要だよwww
デフォルトの名無しさん [sage] 2017/10/01(日) 15:30:40.47:iOi6hm11
デザパタじゃなくてデザインパターンな
デフォルトの名無しさん [sage] 2017/10/01(日) 15:36:37.23:OXD0q5aq
このスレ誰も使ってないのにやたら頑張るなw
ぶっちゃけ、三○もN○Tもニ○ンもコニカミ○ルタもpana○onicもス○エニもシ○ープもN○Cも沖○気もク○タも富○通も
富士○機も東京○力も関西○力もS○NYも
使ってないから
デフォルトの名無しさん [sage] 2017/10/01(日) 15:38:44.47:H5Asg8Dc
使ってない証拠をが出してくれるまで
誰も信用しないように
デフォルトの名無しさん [sage] 2017/10/01(日) 15:39:38.98:H5Asg8Dc
ふむ

デザインパターンを活用し、最適なIT基盤を提案
ttp://www.nttdata.com/jp/ja/insights/trend_keyword/2013011701.html
デフォルトの名無しさん [sage] 2017/10/01(日) 15:44:38.60:OXD0q5aq

見たことねーw
連徹過ぎて記憶が飛んだ覚えしかねーわw
俺が関わったとこはまともな資料なんて無かったな

俺が実践で使えると思ったのは
N○Cだけだけどね
ここは1回行ってみる機会があれば
いい勉強になると思うな
デフォルトの名無しさん [sage] 2017/10/01(日) 15:44:54.18:H5Asg8Dc
探せば出てくるもんやなw

ttps://www.fujitsu.com/jp/Images/ejb-0312-mda.pdf

ttp://www.nagisa.or.jp/training/2017/18j.pdf
> 富士通九州システムズ(FJQS)講師:井上 龍也
> ・GoFのデザインパターンを使用したコード記述量削減法
デフォルトの名無しさん [sage] 2017/10/01(日) 15:49:09.29:H5Asg8Dc


> ぶっちゃけ、三○もN○Tもニ○ンもコニカミ○ルタもpana○onicもス○エニもシ○ープもN○Cも沖○気もク○タも富○通も
> 富士○機も東京○力も関西○力もS○NYも
> 使ってないから

> ここは1回行ってみる機会があれば
> いい勉強になると思うな

派遣の仕事って楽しい?
デフォルトの名無しさん [sage] 2017/10/01(日) 15:50:01.77:OXD0q5aq

おさっしw
デフォルトの名無しさん [sage] 2017/10/01(日) 15:52:03.93:H5Asg8Dc
> 俺が実践で使えると思ったのは
> N○Cだけだけどね
> ここは1回行ってみる機会があれば
> いい勉強になると思うな

NECのこれを受講すればいいのかな?

ttps://www.neclearning.jp/courseoutline/courseId/JV104/
システム開発における詳細設計の位置付け、作業内容、
JavaEEアーキテクチャの特徴を学びます。また
、JavaEEを使用したWebアプリケーション開発に用いる主要な
デザインパターンとその適用方法を設計演習を通して修得します。
デフォルトの名無しさん [sage] 2017/10/01(日) 15:55:44.33:OXD0q5aq

そんなんじゃねーよ
ちゃんと要件定義書から設計、実装までルーチンワークで作れるマニュアルがあるんだよ
見てねー奴も多いんだけど
作った奴天才だと思ったわ
デフォルトの名無しさん [sage] 2017/10/01(日) 16:11:52.72:H5Asg8Dc
ルーチンワークしてるやつには
考える必要がある設計は不要だよ
お前は何も考えなくていい
デフォルトの名無しさん [sage] 2017/10/01(日) 16:22:04.09:IPLbJXkb
ルーチンワークで十分な仕事しかしてないだけだし
ルーチン化できると言う割に自動化はしないあたり本当はルーチン化できてないんだろうなぁ
デフォルトの名無しさん [sage] 2017/10/01(日) 16:27:46.46:OXD0q5aq

考えないとわからないところなんて俺らの仕事の範囲ではないのかもな
デフォルトの名無しさん [sage] 2017/10/01(日) 16:37:01.00:H5Asg8Dc

> 考えないとわからないところなんて俺らの仕事の範囲ではないのかもな
だから設計は、俺ら=お前の会社の同僚 の
仕事の範囲でないんだろ?
デフォルトの名無しさん [sage] 2017/10/01(日) 17:33:06.46:iOi6hm11
設計とコーダーの違い
デフォルトの名無しさん [sage] 2017/10/01(日) 17:41:42.32:yUwdbVfT
いやまじ、使わないというのは正しいんだろうよ
使わないから必要ないと思ってる時点でおさとが知れるというだけなのでは
デフォルトの名無しさん [sage] 2017/10/01(日) 17:49:10.14:H5Asg8Dc
伝言ゲーム理論を使えば三段論法で
デザパタが使われていないことを証明できる

デザパタは
俺は使わない

それは使わない

どれも使わない

だれも使わない

使わない

故にデザパタだ誰も使っていない
デフォルトの名無しさん [sage] 2017/10/01(日) 17:50:50.31:NdVkYjBm
iOSアプリ開発で公式ドキュメント読んでて
これなんかObjective-C固有のプログラムガイドかと思ったら
アップルのシステムやアプリじゃ実際にこんなパターンを使ってるよ参考にしてね!
だったっけなぁ…

Objective-C プログラミングの概念
ttps://developer.apple.com/jp/documentation/CocoaEncyclopedia.pdf

現行でこういうのを使いまくった上でiPhoneやiPadが町中で日々動いてるわけで
デザインパターンは無いんだ!デザパタ厨が!とか言われても
おじいちゃん、そろそろ引退したら?としか…
デフォルトの名無しさん [sage] 2017/10/01(日) 18:00:38.71:H5Asg8Dc

マジ書いてあんなw

多くのCocoaアプリケーションでは、モデルオブジェクトの状態が変化すると、
その通知はコントロー ラオブジェクトを 経由して ビューオブジェクトに伝わります。
図 7-2にこの様子を示します。2つの基 本的なデザインパターンが関与していますが、よりすっきりとしています。

図 7-2 複合パターンとしてのMVC(Cocoa)
User action
Update
Update
Notify
Mediator Strategy Controller
ModelView
Command Composite
Observer

この複合デザインパターンでは、コントローラオブジェクトはMediatorパターンと
Strategyパターンを 包含しています。モデルとビューの間でやり取りされるデータフローを、
両方向とも仲介していま す。モデルの状態変化はコントローラオブジェクトを経由して
ビューオブジェクトに伝わります。さ らに、ビューオブジェクトには、ターゲットアクション
機構の実装という形で、Commandパターン も含まれています。
デフォルトの名無しさん [sage] 2017/10/01(日) 18:02:07.29:iOi6hm11

デザパタじゃなくてデザインパターンな
デフォルトの名無しさん [sage] 2017/10/01(日) 18:03:18.29:H5Asg8Dc
もう一つ

複合デザインパターンとしての
MVC「Model-View-Controller」は、より基本的なデザインパターンをいくつか組み合わせた形のデザインパターンです。
基本パターンどうしの組み合わせにより、MVCアプリケーションを特徴づける、機能の分割や通信経路を定義しています。
しかし従来型のMVCは、組み合わせる基本パターンが、現在のCocoaのそれとは違っていました。その違いは主として、
コントローラオブジェクトやビューオブジェクトに与える役割に関するものです。
当初の(Smalltalk流の)考え方では、MVCはComposite、Strategy、Observerというパターンから成っていました。

Composite:アプリケーションのビューオブジェクトは、実際には入れ子になったビューの
複合体(composite)であり、このビュー群が協調して(ビュー階層の形で)動作します。この表示コンポーネントは、
ウインドウを頂点とし、その下にテーブルビューなどの複合ビュー、さらにその下にはボタンなどの分割できないビューがあります。
ユーザ入力や画面表示の処理は、複合体を構成するどのレベルでも可能です。

Strategy:コントローラオブジェクトは、いくつかのビューオブジェクトに対する戦略(strategy)を実装しています。
ビューオブジェクトの機能は(視覚的)表示に関わる範囲に限定し、インターフェイスの振る舞いが当該アプリケーションに
おいてはどのような意味を持つか、の判断はすべてコントローラに委譲します。

Observer:モデルオブジェクトは、自分自身と直接的な関わり合いがあるオブジェクト(一般にビューオブジェクト)の
状態が変化すると、その通知を受け取ります。
デフォルトの名無しさん [sage] 2017/10/01(日) 18:03:24.42:iOi6hm11


Appleはああ見えてソフトの会社だから
そういうとこはしっかりしてる
デフォルトの名無しさん [sage] 2017/10/01(日) 18:14:08.71:H5Asg8Dc
ソフトウェアに強い会社(日本のハードのついでにソフトやってるとか
客の御用聞き会社とは違うやつ)は軒並みデザインパターンが
当然のものとして語られてる気がするね。

関数型のデザイン・パターン、第 1 回
ttps://www.ibm.com/developerworks/jp/java/library/j-ft10/index.html
デフォルトの名無しさん [sage] 2017/10/01(日) 18:26:16.96:RRIZa9RT
デザパタ使えないアピールするモチベーションが、デザパタ使ってない自分肯定でしかないのが見え見えだから、つまんない議論だよ
デフォルトの名無しさん [sage] 2017/10/01(日) 18:29:14.14:TmBxNMg6
あまり虐めないであげてよ
若気の至りってやつさ
デフォルトの名無しさん [sage] 2017/10/01(日) 18:51:21.95:qGSPhC6b
優越コンプレックスを抱えてる人は苦しいだろうなぁ
素直な心を取り戻せることを祈ってる
デフォルトの名無しさん [sage] 2017/10/01(日) 19:13:13.17:Pf7aXXU9
おk
これしか見たことねーけど
使われてるんだな
デフォルトの名無しさん [sage] 2017/10/01(日) 19:22:42.09:2hcCMVoe

凝った設計にもできるけど(たとえばDDDのドメインサービスとかさらに突っ込んだDCIのコンテキストベースで)
このくらいの要件なら自販機オブジェクトだけ定義して
在庫管理と商品種別はRDBで管理し、金銭投入→購入のタイミングで
SQLを発行して該当する飲料を商品種別テーブルからピックアップし、その後
在庫管理テーブルで在庫減らしのSQL発行で十分なのでは?

O/Rマッパーの使い方を学びたいならクラス図のようにオブジェクト化するのも手だけれども
デフォルトの名無しさん [sage] 2017/10/01(日) 19:58:14.48:TmBxNMg6
意味不明なウンチク垂れてないでコードを書けコードを
デフォルトの名無しさん [sage] 2017/10/01(日) 20:31:25.12:kJ8csjIE
数百スレ飛んで自販機戻ってきたw
デフォルトの名無しさん [sage] 2017/10/01(日) 23:59:30.23:DL6cgIdt
バターン君をいじめて
得るもんがあったのかどうか
各自寝る前に自問自答してほしい
デフォルトの名無しさん [sage] 2017/10/02(月) 00:03:17.40:1fd9LcjX
デザインパターンがいらないって言ってるやつは
実装側の視点でしか考えることができないってのがわかった。
これが得たものかな
デフォルトの名無しさん [sage] 2017/10/02(月) 00:04:09.63:wn2w8Fsj
ん?これいつものあたまおかしいおじいちゃんでしょ。
デフォルトの名無しさん [sage] 2017/10/02(月) 00:09:14.81:wn2w8Fsj
みたいに自演して
「結局キャットドアに戻ってきたな」とかだせえリセット図るの。
けっこうおっさん…つうより“じいさん”って歳で構造体から脳が進化してないから
オブジェクト指向側からのアプローチが歳で理解できない可哀想な初老
308 [sage] 2017/10/02(月) 00:15:00.22:YWGKtTIQ

何の自演だよ?
どのレスと同じやつだと勘違いしたのか教えてくれ
デフォルトの名無しさん [sage] 2017/10/02(月) 00:20:41.00:j0IOuO2e
そろそろ設計の議論もやめるかって思う
プログラムってどう組んでも動くしね
正解なんてないんじゃないかなぁ?
って思うようになった
仮にあったとしてもそれをどうやって証明するのか?
非常に虚しい気がしてきた

デザパタ、オブジェクト指向使うだの使わないだの
どっちが正解もクソも組んで金もらえたらそれでしめーな話をグダグダうるせーよな給料安いくせに

今、組めている人間を否定することはできない
また、否定する必要もない

俺等が話してることは麻雀のどの牌を捨てたらいいか?みてーな話でどうでもいいんだよきっと
初っ端字牌がないから国士無双は狙っては駄目ですよ
って言ったところで実際に狙って来ちまったらそれを誰が否定できようか?
そんなくだらない内容なんだよ
デフォルトの名無しさん [sage] 2017/10/02(月) 00:37:35.29:cbUKrfm3
> プログラムってどう組んでも動くしね

動くだけじゃダメでしょw
最低限じゃん。
動くだけの汚いコードたくさん見たこと有るよ。
デフォルトの名無しさん [sage] 2017/10/02(月) 00:42:43.36:j0IOuO2e

でも客からしたらどうでもいいよね
デフォルトの名無しさん [sage] 2017/10/02(月) 00:47:44.45:YWGKtTIQ
「プログラムを組む」っていう表現って何となく手続き的な臭いを感じる
プログラムを組み上げるものとして見てるってことだよね
デフォルトの名無しさん [sage] 2017/10/02(月) 00:48:05.40:ET3hV4TH

保守に工数かかるじゃん
無駄じゃん
デフォルトの名無しさん [sage] 2017/10/02(月) 01:12:12.35:j0IOuO2e

次の開発が無かったら保守にかけたお金は無駄だよね?
この辺は君等はトレードオフの問題を勝手にプラスサムの問題だと履き違えている
ぶっちゃけ馬鹿にしか見えないのであまりおおっぴらに言わない方がよい
デフォルトの名無しさん [sage] 2017/10/02(月) 01:15:20.46:j0IOuO2e
汎用性はトレードオフのはずだ
なぜ君等はつければつけるほどお得みたいなアホな考えもってるんだ?
保守なんかねーよ(あるかどうかわからないじゃん)
デフォルトの名無しさん [sage] 2017/10/02(月) 01:19:24.52:j0IOuO2e
改修の方向性も付けた汎用性が役に立たんようなもんだったらまるまる無駄であろ

でもこういう俺の確率が高い方もしくは損害が少ない方に倒す的考えも
所詮は麻雀の捨て牌議論と何も変わらないんだろうな
って話だな

やっぱ意味ねぇよな設計に拘るのはやめたほうがいいな
金にならねぇ
デフォルトの名無しさん [sage] 2017/10/02(月) 01:25:51.90:cbUKrfm3

> でも客からしたらどうでもいいよね

いくらでもコストがかかってもいいなんて言う客はいないよ
デフォルトの名無しさん [sage] 2017/10/02(月) 01:27:35.32:cbUKrfm3

> 汎用性はトレードオフのはずだ
汎用性の話はしてない

同じコードを何度も書いたり
コピペするとコストがかかるって話をしてる
デフォルトの名無しさん [sage] 2017/10/02(月) 07:52:52.48:j0IOuO2e

そうとは限らないよね
デフォルトの名無しさん [sage] 2017/10/02(月) 08:05:00.38:hd0o7pZ3

一般論だろ
デフォルトの名無しさん [sage] 2017/10/02(月) 09:31:52.84:j0IOuO2e

つまり字牌を切るといいよって話だよね
デフォルトの名無しさん [sage] 2017/10/02(月) 09:37:00.33:/w0x9Uo4
使い捨てのどうでもいいシステムは
使えない単価安い奴に
やらせとけって話じゃないの

まあ保守は作り始めた時点から始まってるから
リリースまで行けないかもしれないがな
デフォルトの名無しさん [sage] 2017/10/02(月) 10:10:18.07:hd0o7pZ3

運ゲの麻雀で例える意味がわからない
せめてオセロとか将棋で例えろよ
デフォルトの名無しさん [sage] 2017/10/02(月) 10:12:15.16:xue4yogs

オセロと将棋だと納得できるんだ?
デフォルトの名無しさん [sage] 2017/10/02(月) 14:17:29.12:hd0o7pZ3

出来るよ
どっちも定石があるじゃん
そう言うこと
まあ麻雀よりはイメージしやすいでしょ
デフォルトの名無しさん [sage] 2017/10/02(月) 14:48:34.13:j0IOuO2e

お前がアホだからできるだけだ
デフォルトの名無しさん [sage] 2017/10/02(月) 16:11:15.50:hd0o7pZ3

デザインパターンて、将棋における定石みたいなもんじゃん
定石覚えてなくても駒動かせれば将棋はできるけどねー
デフォルトの名無しさん [sage] 2017/10/02(月) 16:43:00.86:XscuzJF4
定石の有用性を証明してみろ
できなければ定石は役立たずのゴミということ
デフォルトの名無しさん [sage] 2017/10/02(月) 19:37:25.82:cbUKrfm3
定石は役立たずのゴミ
飛車は移動して右下隅の王を金銀桂馬香車で囲う
って言ったほうがわかりやすいじゃん

そもそも定石なんて知らなくても将棋はできるし、
何十年もやっていれば定石なんて自然に思いつく
デフォルトの名無しさん [sage] 2017/10/02(月) 20:16:28.02:j0IOuO2e
AIに以前からの定石がひっくり返されてるらしいなw
デザパタもAIにひっくり返される日も近いなw
デフォルトの名無しさん [sage] 2017/10/02(月) 20:25:48.81:YWGKtTIQ
将棋で言う定石はデザインパターンよりももっと粒度の大きいパターン
MVCかMVVMかみたいな
デザインパターンは手筋に近い

何十年もやってれば自然に思いつくことを
数週間から数ヶ月程度の断然短い時間で理解できるようになることや
より高い抽象度で物事を考えられるようになることに価値がある

おじいちゃんに何言っても無駄かもしれんが
デフォルトの名無しさん [sage] 2017/10/02(月) 20:40:52.30:cbUKrfm3

AIで新しい定石(デザパタ)ができるってことか?
それは嬉しいことだがw
デフォルトの名無しさん [sage] 2017/10/02(月) 20:40:58.78:ET3hV4TH
そりゃあ常識はひっくり返されるためにあるからな
ひっくり返ってそれが有益ならそれでいいじゃん
デフォルトの名無しさん [sage] 2017/10/02(月) 20:42:54.27:cbUKrfm3

> 何十年もやってれば自然に思いつくことを
> 数週間から数ヶ月程度の断然短い時間で理解できるようになることや

寿司学校に3ヶ月通っただけの店がミシュランになるなんて許せん
10年間下積みをしてやっと職人になれるんや。
寿司の修行ってのはなぁ、寿司の勉強じゃなねぇだよ
デフォルトの名無しさん [sage] 2017/10/02(月) 21:15:12.14:XscuzJF4
そもそもこんなスレがあること自体おかしいんだよ
オブジェクト指向設計なんてやってればそのうちできるようになるし、それが人と比べてどうなのかなんて気にする必要もない
人それぞれのオブジェクト指向でいい
デフォルトの名無しさん [sage] 2017/10/02(月) 21:24:38.66:cbUKrfm3
人それぞれの寿司でいい
カルフォルニア巻き
デフォルトの名無しさん [sage] 2017/10/02(月) 21:26:35.73:ET3hV4TH

それをあーやこーや言い合うのが子のスレなんじゃないの
デザインパターンを学習することによる不利益を逆に教えてほしいんだが
デフォルトの名無しさん [sage] 2017/10/02(月) 21:56:37.69:j0IOuO2e

麻雀の捨て牌議論といっしょで別に国士無双狙ってもええで
誰も困らん
デフォルトの名無しさん [sage] 2017/10/02(月) 22:19:15.07:KZXDpABL
Smalltalkって書くと荒れる?
デフォルトの名無しさん [sage] 2017/10/02(月) 22:26:05.82:cbUKrfm3

こっちへどうぞ

Smalltalkとオブジェクト指向議論スレ [無断転載禁止]©2ch.net
ttp://mevius.2ch.net/test/read.cgi/tech/1505709697/
デフォルトの名無しさん [sage] 2017/10/02(月) 22:32:16.34:YWGKtTIQ

ネタじゃなく本気で寿司屋と比べてるなら
ソフトウェアの世界から早めに足洗って転職したほうがいいよ
デフォルトの名無しさん [sage] 2017/10/02(月) 22:33:42.19:cbUKrfm3

お?理由は?説得力ある答たのむね!
デフォルトの名無しさん [sage] 2017/10/02(月) 23:45:29.99:CnUfppMG

せめて会話しようぜ
言葉のキャッチボールをさ
デフォルトの名無しさん [sage] 2017/10/03(火) 01:32:34.93:yLH9r4Cn
寿司屋の板前っていうより半完成品を卸してる問屋みたいなもんだろ
で、おまえらはひたすらごはんを詰め込む係
プロパー様がネタを乗せて最後に元請け営業様がたんぽぽ乗せる
デフォルトの名無しさん [sage] 2017/10/03(火) 07:32:10.18:ObXIbUik
スシローはIT化進んでるから寿司はオブジェクト指向で管理してるよな

インタフェース名はsushiと予想する
デフォルトの名無しさん [sage] 2017/10/03(火) 08:06:49.21:7lOo08Em

寿司メイカーはストラテジーパターン?
デフォルトの名無しさん [sage] 2017/10/03(火) 08:29:46.58:/tfwZRhN
Javaの注釈とかC#の属性ってどうなの?
デフォルトの名無しさん [] 2017/10/04(水) 20:25:20.81:oJzQgUY3
オブジェクト指向スレで寿司の話題だから、
シャリを基底クラスに例えてネタごとにシャリクラスを継承、
軍艦巻インターフェイスの実装とか、お子様にはワサビプロパティをtrueにとか、
そんな話かと思ったら全然違った。
デフォルトの名無しさん [sage] 2017/10/05(木) 00:03:31.68:qwtqiP1S
わさびプロパティってtrueとfalseのどっちだったらわさびが乗ってるんだ?
デフォルトの名無しさん [sage] 2017/10/05(木) 01:28:49.65:XUc7C4CE
わさび=真
デフォルトの名無しさん [sage] 2017/10/05(木) 07:17:31.37:gKycoOZO
寿司クラスのプロパティはシャリネタワサビだろ

スシローに関して言えばワサビのプロパティは不要
デフォルトの名無しさん [sage] 2017/10/05(木) 07:18:38.24:gKycoOZO

ワサビの状態は複雑だから真偽で取るなんてナンセンス
デフォルトの名無しさん [sage] 2017/10/05(木) 08:10:53.17:i3KEdcm5
各プロパティは読み取り専用だろ
デフォルトの名無しさん [sage] 2017/10/05(木) 08:16:20.73:qwtqiP1S
わさびの量を調整したい場合はどう拡張すればいいの?
例えば罰ゲームで使うような山盛りわさび寿司
外国人向けの程よくわさび増量

あと、わさび巻の場合はわさびプロパティの内容はどう持つべきか?
デフォルトの名無しさん [sage] 2017/10/05(木) 08:22:39.12:i3KEdcm5

寿司.putワサビ(量)
じゃないの
デフォルトの名無しさん [sage] 2017/10/05(木) 08:23:16.92:jqjwBcqV
またそれ系の話か
荒れそう
デフォルトの名無しさん [sage] 2017/10/05(木) 08:27:51.49:i3KEdcm5
というかあれか
寿司職人.putワサビ(寿司,量,状態)
かな
デフォルトの名無しさん [sage] 2017/10/05(木) 20:38:04.24:eqICMYt8
またキャットドアw
デフォルトの名無しさん [sage] 2017/10/05(木) 20:41:30.98:817UmOHy
大漁大漁!
デフォルトの名無しさん [sage] 2017/10/05(木) 23:44:16.07:W3Z8qYkC

キャットドアはやめろ
オブジェクト指向云々とは別のところに問題がある
またこの手の話するならちゃんと要件定義してからやれよ
デフォルトの名無しさん [sage] 2017/10/06(金) 00:35:25.91:jRqiq413

1つ賢い意見が出たな

要件定義をしないとキャットドアは作れない!

他のものもそうでないかな?
デフォルトの名無しさん [sage] 2017/10/06(金) 00:59:27.12:HTxWyqCb
どういう用途のソフトウェアかに関係なく
オブジェクト指向でモデリングできると思ってるやつが多々いるのはオブジェクト指向に密接に関係した問題
デフォルトの名無しさん [sage] 2017/10/06(金) 06:35:11.92:jC5wWKBy

できないの?
デフォルトの名無しさん [sage] 2017/10/06(金) 08:14:28.44:fl7uW9c1

寿司屋はわかりやすくね?
キャットドアやるならまずドアを作ってから継承するなりで基礎がないと
デフォルトの名無しさん [sage] 2017/10/06(金) 08:16:59.53:2VD9nX8b
物理的な形あるものを題材にするのはアホ
デフォルトの名無しさん [sage] 2017/10/06(金) 08:28:32.38:H+o2EjG4
そんなモデリングは天才に任せるわ
デフォルトの名無しさん [sage] 2017/10/06(金) 09:35:10.87:fZccj8aN

オブジェクト指向が間違っているのでは?(笑)
デフォルトの名無しさん [sage] 2017/10/06(金) 12:09:15.03:1IZeYBj0
オブジェクトという名前が悪い
責務指向とか役割指向の方が適切
デフォルトの名無しさん [sage] 2017/10/06(金) 14:21:58.68:5osgMmV8

enum ワサビ量 {なし, ちょっぴり, 少なめ, やや少ない, 普通, やや多め, 多め, メガ盛り, ギガ盛り, テラ盛り, ペタ盛り, ワサビのみ};
デフォルトの名無しさん [sage] 2017/10/06(金) 15:07:25.77:fK99UxEG
キャットドアで味を占めちゃってまぁ…
デフォルトの名無しさん [sage] 2017/10/06(金) 15:43:29.32:HTxWyqCb
簡単に篩にかけられてホントいいねこれ
デフォルトの名無しさん [] 2017/10/06(金) 21:48:40.87:Em99Pggz
処理の流れがあちこちに飛ぶし
あちこちから飛んでくるし
「これ誰が保守するんだ?」って気分になってる。
ちょっとした修正が今までならピンポイントでテスト合わせて30分位のところが
全体見るために3時間かかる感じ。
能力高くないと無理だと思うけど人手不足だし集められるかな?
もっと緩いオブジェクト指向でいいと思う。
こんなガチガチで上手くいったプロジェクトってあるの?
デフォルトの名無しさん [sage] 2017/10/06(金) 22:04:02.02:T+Euxqip

犬のしょんべんに当たっちまったな
自分以外の奴がソースコードを読めないようにする工夫だそれ

元凶がインターフェースで
継承してあるすべてのクラスのインスタンス作成箇所全部をチェックしないと処理がわからない
デフォルトの名無しさん [sage] 2017/10/06(金) 22:05:57.94:Y8RIMSRs
チンポについて教えてください。
チンポをインスタンス化して、引き数にマンコを持つキンタマメソッドの戻り値
ザーメンを取得したいのですが、コンパイル結果がフニャチンになります。
どうしたらいいですか。
デフォルトの名無しさん [sage] 2017/10/06(金) 22:27:28.80:FHIJEXWg
はい
デフォルトの名無しさん [sage] 2017/10/06(金) 22:47:26.17:enlE2n2s

それガチガチなんじゃなくて設計や実装が下手なだけ
デフォルトの名無しさん [sage] 2017/10/06(金) 23:17:58.09:H+o2EjG4

ほんとにガチガチならそのクラスを作ったやつの後任者〜お前の前任者までの間で間違ったクラスの使い方が広まったんだろうよ
デフォルトの名無しさん [sage] 2017/10/07(土) 00:17:06.44:XGVjma4L

それガチガチなんじゃない。
デフォルトの名無しさん [sage] 2017/10/07(土) 05:03:01.30:8/GtqdSW
“これはこれをする奴”と一目でわかって
処理飛ばした後はそいつがよしなにやるから
細かいことは考えなくていい。
というのがオブジェクト指向の売りだから
「コイツはなにやってんだよ!」と処理追うのに混乱するようなのは
基本を履き違えてる気はする。
変なとこから流れてきた自称プログラムのプロがやりがちな
暗号みたいなクラス名とか
デフォルトの名無しさん [sage] 2017/10/07(土) 06:51:50.71:6GKmJG1C
だいたいインターフェースが元凶だって
実行してみないとわかんねーし
デフォルトの名無しさん [sage] 2017/10/07(土) 07:09:22.30:sBPFzIIo
インターフェースが現況って言ったってクラス名とメソッド名である程度目的はわかるようになってるんじゃねえの
それができてないなら単なる設計ミスじゃん
デフォルトの名無しさん [sage] 2017/10/07(土) 07:23:39.11:6GKmJG1C

バカの作るインターフェースは思いつきで入れた汎用性を実現するものだからそもそも設計書に書かれない
デフォルトの名無しさん [sage] 2017/10/07(土) 07:43:58.72:PgxJwh6E

そういうもんか
そういう用途で使うべきではないわな
デフォルトの名無しさん [] 2017/10/07(土) 08:28:19.15:nPfSE+SF

手続き型みたいなのでバグ探すと、大体1ファイルの中見て
処理の流れもその中だけ追えば良くて
シンプルな流れだからチョイチョイってできるけど
完全なオブジェクト指向だと、
「この値を設定してるのは、ここ、
…、
じゃなくて、コイツ他のとこで設定してるのか〜、
ここ?
あ、もっと上か〜」
みたいにあちこち辿っていくから
あんまり良いことに感じないけど。
影響範囲も広いし。
考えなくていいのは、製造するときに何が何をすると
ハッキリと決められてる時で
どこにバグあるかとか見るときは
「ここだろう」と最初に思ったとこではなかったりしなくね?
設計が難しいなら、
バカでもできる簡単な設計で済む手続き型最強な気がする。
デフォルトの名無しさん [] 2017/10/07(土) 08:32:25.87:nPfSE+SF
は詳細設計書位しかなくて、クラス図とかもろもろないケースの話で。
デフォルトの名無しさん [sage] 2017/10/07(土) 08:45:17.84:XbHkmFTG

ガチガチのオブジェクト指向ならその値がどこで設定されたなんか関係ないよ
今受け取った値に対しての動きをするだけ
デフォルトの名無しさん [sage] 2017/10/07(土) 08:56:39.98:YsvN5rHZ
ワンインスタンス内ではメンバはグローバル変数みたいに振る舞うから
継承多くなるとっていうかある時点でクソ言語になるんだよね
デフォルトの名無しさん [sage] 2017/10/07(土) 08:59:42.95:gjULmNh3


>手続き型みたいなのでバグ探すと、大体1ファイルの中見て
>処理の流れもその中だけ追えば良くて
>シンプルな流れだからチョイチョイってできるけど

これはむしろオブジェクト指向の特徴だね

>完全なオブジェクト指向だと、
>「この値を設定してるのは、ここ、
>…、
>じゃなくて、コイツ他のとこで設定してるのか〜、
>ここ?
>あ、もっと上か〜」

これは典型的な手続き型のデバッグだよね

もしかしてスレ加速を狙ってわざと間違えてる?
デフォルトの名無しさん [sage] 2017/10/07(土) 09:01:52.28:YsvN5rHZ

それ明らかに俺から見て逆だわ
処理に対して一旦オブジェクトで纏めるオブジェクト指向がそこの辺シンプルになるわけねーだろチンカス
デフォルトの名無しさん [sage] 2017/10/07(土) 09:07:01.43:gjULmNh3

あ〜
うん
まあそういう人も居るよね
存在を否定はしないよ
民主主義国家の人民は自由であるべきだ
デフォルトの名無しさん [sage] 2017/10/07(土) 09:13:58.30:XbHkmFTG

393で言いたいことはまぁわかる
けど自分が多数派であると思い込んでるのはおかしい
おまえの中の「〜べき」って論は他人に通じないので押しつけないで
デフォルトの名無しさん [sage] 2017/10/07(土) 09:33:31.18:gjULmNh3

いろんなコミュニティに顔だしてみなよ
リアルが無理ならネットコミュニティだけでもいい
が常識的な認識だよ
デフォルトの名無しさん [sage] 2017/10/07(土) 09:45:04.94:cHXvfEBn

どこにそんなの書いてあるんだよ
デフォルトの名無しさん [sage] 2017/10/07(土) 09:45:43.21:fUAr46yo
呼び出し階層が深いだけで可読性が低いなら抽象化が下手なだけで、オブジェクト指向に限った話じゃない

呼び出し元や定義にジャンプする機能のないエディタ使ってると辛いとか
DIでコンフィグから実装を注入してると追うのが面倒くさいとかなら分かる
デフォルトの名無しさん [sage] 2017/10/07(土) 09:55:17.34:XbHkmFTG

おまえの中ではそうなんだろうな
繰り返すが393で言いたいことはまぁわかる
デフォルトの名無しさん [] 2017/10/07(土) 10:08:41.11:HG4cr/37

> どこにそんなの書いてあるんだよ


いろんなコミュニティ
デフォルトの名無しさん [sage] 2017/10/07(土) 10:17:47.53:b4KK/o19
いろんな考えかたの人がいる
それは認めるべきだ
オブジェクト指向が好きなやつも手続き型が好きなやつもみんな自由と権利を持っている

でもここはオブジェクト指向のスレなので
手続き型に興味があるなら手続き型スレで議論を深めればいいんじゃないかな?

手続き型システムの設計 1 [無断転載禁止]©2ch.net・
ttp://mevius.2ch.net/test/read.cgi/tech/1500282714/

オブジェクト指向がわかりにくくて嫌いだからといってもオブジェクト指向のコミュニティを荒らしてもいい理由にはならないだろう
住み分けは大事だ
デフォルトの名無しさん [sage] 2017/10/07(土) 10:24:12.14:cHXvfEBn

なんだそのキチガイコミュニティ

2〜3個リンク貼ってみろ
潰してくる
デフォルトの名無しさん [sage] 2017/10/07(土) 10:24:39.29:b4KK/o19

スタックオーバーフロー潰してくれ
デフォルトの名無しさん [sage] 2017/10/07(土) 10:32:38.68:cHXvfEBn

どのレスだよ
デフォルトの名無しさん [sage] 2017/10/07(土) 10:33:11.71:AzEsxXfu
ガチガチに手続き型で組んだプログラムなんて見とうないわ
あちこちに飛ぶから云々ってマジでいってんのか
デフォルトの名無しさん [sage] 2017/10/07(土) 10:44:43.23:b4KK/o19
あちこち飛ぶからいいんじゃねえか
飛ばなかったら全ての処理が一箇所に集まってパンクするだろw
デフォルトの名無しさん [sage] 2017/10/07(土) 11:50:23.50:h9kzLMoI
飛び方がキレイな木の枝のようになっていればよい
枝から枝へモモンガのように飛ぶ処理が入っていたら地獄だ
デフォルトの名無しさん [sage] 2017/10/07(土) 14:53:33.77:8/GtqdSW
というか、オブジェクト指向はクラスに責任を持たせることで
責任が遡ったり他へ波及するのを防ぎデバッグも局所化して容易にする思想なので
どこかで一目でわかるように「この値を設定する一意の責任を持つのはおまえ」と
責任を持った誰かがいて、正しく作ってればそこから周りにゴミが飛び散るはずがないので

>「この値を設定してるのは、ここ、
>…、
>じゃなくて、コイツ他のとこで設定してるのか〜、
>ここ?
>あ、もっと上か〜」

とか、それのどこがオブジェクト指向だ。と同じ感想
デフォルトの名無しさん [sage] 2017/10/07(土) 15:00:30.34:2+lwKRbT

だからインターフェースだって
デフォルトの名無しさん [sage] 2017/10/07(土) 16:02:05.40:kNgxClsQ

意味わからんけど
どんな使い方してんねん
デフォルトの名無しさん [sage] 2017/10/07(土) 16:08:52.04:b4KK/o19
素人がインターフェースを使うと実装に強く依存してしまうことがある
実装クラスの内部的な挙動を前提にするとかね
デフォルトの名無しさん [sage] 2017/10/07(土) 16:19:22.15:s04ZU/0N
おまえらおしゃべりしたいだけだろ
リアルで交流しろや
デフォルトの名無しさん [] 2017/10/07(土) 17:51:59.67:HG4cr/37


なに? お前、モモンガ先輩の事ディスってるの?
デフォルトの名無しさん [sage] 2017/10/07(土) 19:44:56.82:XbHkmFTG

Javaのデフォルトメソッドとか
デフォルトの名無しさん [sage] 2017/10/07(土) 20:05:29.97:sBPFzIIo
しっかり役割を分担しないとオブジェクト指向の利点をいかせないと言うことか
デフォルトの名無しさん [sage] 2017/10/07(土) 21:05:16.73:XbHkmFTG

利点も何も役割分担できてないならそもそもオブジェクト指向じゃないよ
デフォルトの名無しさん [sage] 2017/10/07(土) 21:37:16.03:b4KK/o19
一言でクラスの役割を言えなければ設計ミス
デフォルトの名無しさん [sage] 2017/10/07(土) 21:55:08.92:E9rJLdk9

神クラス
デフォルトの名無しさん [sage] 2017/10/07(土) 22:17:55.42:kNgxClsQ

いやだから、インターフェイスってそういうもんじゃん
デフォルトの名無しさん [sage] 2017/10/08(日) 09:02:57.57:jBiYbWN1
オブジェクト指向の設計の話をしてると
このクラスはこのことを知ってるべきだ、イヤ知らないべきだ
なんて話がよくあるが
アスペの代表的な特徴として自分の視点でしか考えられない
ということかあるのでアスペにOOは無理
デフォルトの名無しさん [sage] 2017/10/08(日) 09:11:34.28:Iqz4qArZ

確かにアスペに取り扱いは難しいな
だが言うなればオブジェクト指向はアスペクラスの集合体だからアスペ視点は大切
デフォルトの名無しさん [sage] 2017/10/08(日) 09:24:12.05:p3iPkAzZ
アスペルガー指向
デフォルトの名無しさん [sage] 2017/10/08(日) 09:24:39.06:jBiYbWN1

1人1クラスずつ作るのか
他の人のクラスを利用することがないからゴッドクラスが乱立するな
最悪だ
デフォルトの名無しさん [sage] 2017/10/08(日) 09:27:10.43:4gVJmCxE
そういう現場は多いよ
見積もりしやすいとかいう頭が悪い理由で、画面を作業単位にして割り振るから
神画面クラスがいくつも出来上がる

挙げ句の果てにその見積もりも根拠なしの適当な数字ときたもんだ
デフォルトの名無しさん [sage] 2017/10/08(日) 09:31:28.00:Iqz4qArZ

お前がアスペだったか
デフォルトの名無しさん [sage] 2017/10/08(日) 09:39:58.73:jBiYbWN1

説明できないと何の論拠も無く相手をアスペで片付けるんだね
デフォルトの名無しさん [sage] 2017/10/08(日) 09:51:49.98:jBiYbWN1

あるな
メンテの費用たくさん取れるからいいんだよとか言い出す始末
勉強してるのがバカバカしくなる
デフォルトの名無しさん [sage] 2017/10/08(日) 10:04:06.91:St7l03cQ
でも見積り出せない作業じゃお金もらえないから
デフォルトの名無しさん [sage] 2017/10/08(日) 10:17:02.42:jBiYbWN1
単価を品質に見合ったものにしろ
デフォルトの名無しさん [sage] 2017/10/08(日) 10:58:52.79:tomnUErs
おまえらアスペとかADHDとか言ってるけど
せめてググってwikipediaや解説サイトぐらい見れば話が合うような言葉を選んでくれ
10人にADHDの説明させたら10通りの回答が出てくる現状では
技術的な議論に使う言葉じゃないと思うんだわ
デフォルトの名無しさん [sage] 2017/10/08(日) 11:01:13.46:4gVJmCxE
見積もりは出したふりでいい
客も見積もりに意味ないことは分かってるから上司への説明など適当にうまくやってくれる
その辺は阿吽の呼吸ですよ
デフォルトの名無しさん [sage] 2017/10/08(日) 11:04:17.48:p3iPkAzZ
関わるのも面倒だからそういうのはメンバーにいない方がマシ
デフォルトの名無しさん [sage] 2017/10/08(日) 11:16:34.14:ZEE0bNSu

自分が誰よりも上位にあることを見せかける上で便利だからねアスペ認定は
デフォルトの名無しさん [sage] 2017/10/08(日) 11:18:28.86:A99pIV6O
ここオブジェクト指向スレなんですが?
アスペがアスペを叩いていて笑う
デフォルトの名無しさん [sage] 2017/10/08(日) 11:25:19.20:4gVJmCxE
アスペクト指向ってどうなったの
デフォルトの名無しさん [sage] 2017/10/08(日) 11:36:48.97:FYLwhXQv

オブジェクト指向にフックを仕込めれば十分であることがわかった
アスペクト指向は「指向」ではなく、オブジェクト指向設計に
組み込む一種のパターン
デフォルトの名無しさん [sage] 2017/10/08(日) 15:55:36.81:0lUaooNs

DIで若干使われてなかったっけ?
デフォルトの名無しさん [sage] 2017/10/08(日) 20:27:37.02:CWK8ZE8n
そういや一時期流行ったな
実装のまずさを誤魔化す手段という認識しかなかった
デフォルトの名無しさん [sage] 2017/10/08(日) 22:01:40.54:4gVJmCxE
デコレーター
属性バリデーション
シリアライズ
apiプロキシ


aopは意識しないだけで結構使ってるな
デフォルトの名無しさん [sage] 2017/10/09(月) 08:04:01.64:tvCeOLo3
メッセージリソース管理クラスの素晴らしい設計を教えてください

void SomeAppMethod() {
// do something
view.AddMessage("MSG_0123")
// do something
}

こんな感じでリソースIDがシステム中にばら撒かれて制御不能状態になっています
メッセージリソースを管理するクラスを作って解消したいのですが良いAPIが決まりません
デフォルトの名無しさん [sage] 2017/10/09(月) 08:13:01.79:1ju7bjVC

何が困ってるの?
デフォルトの名無しさん [sage] 2017/10/09(月) 08:52:42.35:PA3EvPtr

OOPではリソースIDのような物理的な情報は隠蔽しなければならない

public interface ILowLevelMsgManager {
string GetMsg(string msgId, params object[] placeHolderArgs);
}

public interface IMsgManager {
string GetHogeMsg(); // ほげええええ
string GetFugaMsg(int num); // ふがふが{num}ふがふが
}

public class MsgManager : IMsgManager {
private ILowLevelMsgManager llmm;
public MsgManager(ILowLevelMsgManager pllmm) { llmm = pllmm; }
public string GetHogeMsg() { return llmm.GetMsg("MSG_0001"); }
public string GetFugaMsg(int num) { return llmm.GetMsg("MSG_0002", num); }
}
デフォルトの名無しさん [sage] 2017/10/09(月) 09:16:54.02:L5aecCRz

それになんの意味があるのかさっぱりわからんな
メッセージなんてでかいプロジェクトだと500個とか行っちゃって
詳細なんかわかんなくていいんじゃないの?
もうメッセージ一覧で確認することは諦めろよ的な
デフォルトの名無しさん [sage] 2017/10/09(月) 09:24:41.04:L5aecCRz
メッセージでこれまで見た中で一番多いのは3000だった
そこまで構えろとはいわんけどそういう性質のものではある

ソースの該当箇所に一つ一つ置いていく手間は省略できない
メッセージリソースIDとメッセージが照合できればそれでその作業は終わりじゃねーのか?
後、何を管理してもらいたい?
デフォルトの名無しさん [sage] 2017/10/09(月) 10:08:03.54:PA3EvPtr

ハードコードされた人間可読性ゼロの3000個のIDはそう簡単には管理しきれないと思うが
まあ君の人生だしどう時間を使おうと君の自由だね
私はしっかり管理して時間を節約するよ
デフォルトの名無しさん [sage] 2017/10/09(月) 10:21:29.30:Y2JfmrWo
客の都合でID体系変更になってリテラル全部調べて置き換えて再テストしたトラウマ
する価値ないと思ってもとりあえずでいいから抽象化しておいて損はない
デフォルトの名無しさん [sage] 2017/10/09(月) 10:22:07.29:FteGtpX4
別ファイルに切り出して読み込めばいいと思う
デフォルトの名無しさん [sage] 2017/10/09(月) 10:44:55.28:3IBabimx

いやぁ、だからさ
ソースのエラー箇所に自動配置なんかできないんだからそこは300だろうが3000だろうが30000だろうが手動じゃん
IDとエラーメッセージが組にさえなってたらどういう構造にしようがやることかわんねーよ的な
デフォルトの名無しさん [sage] 2017/10/09(月) 10:48:47.25:3IBabimx
visualstudioのjaファイルとかその辺の仕組み使えばいいんじゃないの?
ローカライズするならやっとかないと死ぬよ
デフォルトの名無しさん [sage] 2017/10/09(月) 10:50:11.84:Vj0lVF94
rm = new ResourceManager(locale)
un = rm.get("property.name.user-name")
msg = rm.get("validation.error.max-length", un, 10)
print msg # ユーザー名は10文字以下で入力してください

スッキリ
デフォルトの名無しさん [sage] 2017/10/09(月) 10:55:11.14:PA3EvPtr

それじゃ可読性が低すぎるって言ってるの
暗号みたいにIDばらまかれても保守できないよ
それにのようにIDとメッセージの対応が変わることもある
手間が変わらないなら1つ抽象化層を設けてコードを保護すべき
デフォルトの名無しさん [sage] 2017/10/09(月) 11:29:45.24:3IBabimx

いやぁでもこの数やる気にはなんないなぁ
デフォルトの名無しさん [sage] 2017/10/09(月) 11:31:53.98:3IBabimx

体系が変わるのはまた別の話かな
もう完全に仕様変更なわけで落ち着いて対応できる
デフォルトの名無しさん [sage] 2017/10/09(月) 11:34:13.65:3IBabimx
このケースで余計に一層設けるのはメリット薄いんじゃない?
って言いたい
デフォルトの名無しさん [sage] 2017/10/09(月) 11:44:58.84:M//uOX8+

C#なら素直に.resx使う
少なくとも存在しないIDを使った場合に
コンパイルエラーになる仕組みを使う

種類ごとにグループ化(階層化)して管理しやすくする

メジャーなフレームワーク参照したら分かると思うがMSG_0123みたいな命名自体も悪手
もうどうしようもないのかもしれんが
デフォルトの名無しさん [sage] 2017/10/09(月) 11:50:08.07:3IBabimx

もう数からいってメッセージのうちのどれ?って判別できる量で終わらんと思うし
IDの命名規則なんて些細なことよw
俺の経験で言うと
デフォルトの名無しさん [sage] 2017/10/09(月) 11:59:06.73:RdvZrZJ8
コードジェネレータがいいよ

メッセージID, メッセージテキスト, パラメータ数
Hoge, ほげ, 0
Fuga, {0}はふがです, 1

これをエクセルで管理してメッセージ管理クラスを出力

class MessageManager {
public static string Hoge() => "ほげ";
public static string Fuga(object p0) => string.Format("{0}はふがです", p0);
}

んでデータ数が増えてきたらエクセルをやめてデータベースで管理
エクセルを使えばお客様もお喜びになられるので一石二鳥
デフォルトの名無しさん [sage] 2017/10/09(月) 12:17:44.19:M//uOX8+

メンテナンス性を犠牲にしても
命名負荷を下げたいという意思決定をしてるんならいいんじゃないの

神クラス・神テーブルと同じアプローチだけど
物によってはそれが適切な選択の場合もあるんだろうから
デフォルトの名無しさん [sage] 2017/10/09(月) 12:35:04.44:1orfMMQz

> メッセージリソース管理クラスの素晴らしい設計を教えてください

メッセージリソースなんてものを作らない。

view.AddMessage("あーがこーでどうなりました")

って日本語で書けばいい。

多言語化したいなら、gettextなどの言語やフレームワーク標準の
多言語化ライブラリを使えばいい話。

その場合は、英語でメッセージを書いて、日本語化するってことが
よく行われるが逆でもいいだろう。
デフォルトの名無しさん [sage] 2017/10/10(火) 07:21:02.20:JGhyCx0Y

責務指向良いね

ゲームはオブジェクト指向でしっくり来るかも知れんけど業務システムだとピンと来ない
デフォルトの名無しさん [sage] 2017/10/10(火) 08:31:03.78:v9JcaVeZ
ゲームをオブジェクト指向で作ると作りにくいよ
相互作用の処理が多過ぎてオブジェクトに閉じない
デフォルトの名無しさん [sage] 2017/10/10(火) 12:08:00.54:RxOfGqdN
それは設計どころかゲームそのものとしての落とし込みが不十分
ゲームとか一定のルールに則った動作をするだよ
デフォルトの名無しさん [sage] 2017/10/10(火) 12:15:07.34:duckiwE1

メッセージ&イベントだらけになって死ぬな
ゲームは関数型が至高
デフォルトの名無しさん [sage] 2017/10/10(火) 23:46:15.72:WxQVAUFU
「オブジェクト指向だからステージの俳優が全員なんか言ってきて
カントクは一人一人対応なんかしてたら死ぬな!!www」

…いや、間違った理解をした奴はまあそういうドマヌケやらかしがちだが
普通はステージステータスに集約されて、ディレクターは
そのステータスを見て上から必要な個々に指示が送られるように作るからね…
デフォルトの名無しさん [sage] 2017/10/11(水) 00:09:15.15:i63/Wje0
ゲームは油断するとすぐにキャストや型判定だらけになってしまう
特定のクラス同士の時だけ発生する相互作用とか
デフォルトの名無しさん [sage] 2017/10/12(木) 12:26:13.92:UV6Mfibu
ゲームとか業務とかピンキリだろ
デフォルトの名無しさん [sage] 2017/10/12(木) 21:48:31.48:Drh75QCI
お客さんが属性バリデーションも他のバリデーションフレームワークも使っちゃダメって言うんだけど
どうすれば楽にバリデーションできる?
言語はC#
テキストリソースは全てDBで管理されている
ロケールによってエラーテキストを変えなければならいとする
デフォルトの名無しさん [sage] 2017/10/12(木) 22:09:08.92:o8TlX9Z0

普通に作る以外にない
ちなみにダメって言う理由は何なの?

あとバリデーション自体と
バリデーション結果に応じたエラーテキストの選択は
分けて考えたほうがいいよ
デフォルトの名無しさん [sage] 2017/10/12(木) 22:34:53.95:Drh75QCI

属性やフレームワークは設定方法がよくわからないのでメンテナンスの時に困るから

ひたすら単調にif文をズラズラと書いてるんだけどシンドイ
項目数が100近いPageもあってそれぞれが何種類かのバリデーションを行うからバリデーションだけで数百行のメソッドになることもある
デフォルトの名無しさん [sage] 2017/10/12(木) 23:00:42.84:o8TlX9Z0

xmlでルール書くやつは敬遠されるのは理解できなくもないが
単純な属性ベースは分かりやすいしメンテしやすいのにね

楽しようとすれば結局自前で簡易的なフレームワーク風のものを作ることになる
あまりにも数が多いならコード生成という選択肢も
デフォルトの名無しさん [sage] 2017/10/12(木) 23:06:26.57:njn1yLjW

ライセンス的に問題がないものをコピーすればいい
[sage] 2017/10/13(金) 00:23:50.41:9nU9SyY4

フレームワーク書いたらだめなの?
デフォルトの名無しさん [sage] 2017/10/13(金) 01:47:19.56:l1jERKvk

Frameworkを使わないc#ってどんだけマゾなの?ランタイム自分で書いてんの?
デフォルトの名無しさん [sage] 2017/10/13(金) 01:48:05.83:nTgCE4U5

そんな理由にならない理由に従おうとする方がバカ
デフォルトの名無しさん [sage] 2017/10/13(金) 02:48:12.40:s0+Jkp8l
今回みたいな例だとライブラリを使わないで自作するとしたら
使った場合に比べて何倍ぐらいの金額を請求する?
デフォルトの名無しさん [sage] 2017/10/13(金) 02:56:05.56:GlXmqXn2
バリデーションが全体の工数に占める割合がわからないとなんともいえないけど、数倍なんてなるわけないだろアホ
どんだけバリデーションばっかやってるプロダクトを想定してんだよ

客に費用の話をするとき、「通常この規模だと20人月ですが、バリデーションライブラリが使えないので+50人月かかります」とでも言うのか
デフォルトの名無しさん [sage] 2017/10/13(金) 03:43:57.20:s0+Jkp8l
はぁ? 増えた分の請求は当然するだろ。当たり前のことを当たり前にするだけだぞ
デフォルトの名無しさん [sage] 2017/10/13(金) 04:33:13.10:l1jERKvk

なんでいきなりフレームワークじゃなくてライブラリの話になってんの?
デフォルトの名無しさん [sage] 2017/10/13(金) 04:36:24.84:zVcBlnUR

既存のフレームワーク使わずに自作する方が工数膨らむに決まってんだろ
カプコンレベルじゃないとスキル的にも厳しい
デフォルトの名無しさん [sage] 2017/10/13(金) 04:37:49.67:zVcBlnUR
ごめん勘違い
工数の膨らみ方が半端なさ過ぎて非現実的ってのが言いたかった
デフォルトの名無しさん [sage] 2017/10/13(金) 04:40:34.82:qOElJcq/
ひとまず使って組んで元の処理コピーして置き換えちゃえばいいんちゃう?
バリデーションのソースってあんでしょ?
デフォルトの名無しさん [sage] 2017/10/13(金) 05:21:13.13:s0+Jkp8l

バリデーションのフレームワークなんてないでしょw
デフォルトの名無しさん [sage] 2017/10/13(金) 07:46:49.24:DI18WdpZ

フレームワークの一部としてバリデーションがあるやろ
デフォルトの名無しさん [sage] 2017/10/13(金) 14:51:54.32:+zTlsJiZ
バリデーションのフレームワーク普通にあるだろw
デフォルトの名無しさん [] 2017/10/13(金) 16:33:32.34:kRlRrFWL
ごめん、何言ってんだかよくわかんないんだけど、
まず、のバリデーションって、一体何に対するバリデーションの話してるの?
デフォルトの名無しさん [sage] 2017/10/13(金) 23:02:45.05:6pOkahl4
if (!validateRequired("#foo")) {
var msgFormat = getResource("error.required");
var label = getLabel("#foo");
addMessage(msgFormat, label);
addCss("#foo", "input-error");
}
以下100項目繰り返し

これ以上簡潔で保守性の高いバリデーションが存在しない件
OOPは物事を無駄に複雑化するばかりで役に立たん
デフォルトの名無しさん [sage] 2017/10/13(金) 23:14:22.48:s0+Jkp8l

バリデーションとメッセージとUIを一緒くたにするな
どこが保守性高いんだか、見づらいだけだろ
デフォルトの名無しさん [sage] 2017/10/13(金) 23:14:50.38:+zTlsJiZ

それは普通に抽象化できるだろ
そんなん100個も繰り封ヤしてたらサブャCボ出るわ
ャfフォルトの名末ウしさん [sage] 2017/10/13(金) 23:16:05.73:+zTlsJiZ
だよなー
判定と表示は分けようって最初に教わる
デフォルトの名無しさん [sage] 2017/10/13(金) 23:18:48.84:s0+Jkp8l
バリデーションはYAMLで定義するのが一番だって最近気づいた
デフォルトの名無しさん [sage] 2017/10/13(金) 23:31:13.18:6pOkahl4
御託はいいからコード書いてみれば?
俺のコードより明確で保守性の高いコードをかけるとは思えんが
デフォルトの名無しさん [sage] 2017/10/13(金) 23:36:42.10:pm2E02lv
こーゆー上から目線なやつは自分の思い描くもの以外は全部クソって発想なのでめんどくさい
デフォルトの名無しさん [sage] 2017/10/13(金) 23:38:06.15:6pOkahl4
そもそも俺のコードは判定と表示が綺麗に分かれてるし
デフォルトの名無しさん [sage] 2017/10/14(土) 00:25:45.56:2Glba8SI
煽って教えてもらうスタイルに転向した?
デフォルトの名無しさん [sage] 2017/10/14(土) 00:53:07.58:T9MbLxY+
きも
デフォルトの名無しさん [sage] 2017/10/14(土) 07:25:19.71:SVCVJk+z
バリデーション処理はexcel表から生成するものだよ
素人は手書きするらしいけどね
プロはこんなめんどくさいコードは書かない
デフォルトの名無しさん [sage] 2017/10/14(土) 09:45:45.21:xbyIhqN5

マジで!?どういう仕組み?
デフォルトの名無しさん [sage] 2017/10/14(土) 10:58:40.12:SVCVJk+z

簡単だよ
|画面ID|セレクタ|コマンド名|ルール|
の一覧表をVBAマクロのループで回してjavascriptのコードを生成してjsフォルダに置く
それだけだ
うちの会社では20画面程度のシステムを扱うことが多いけど、このマクロのおかげで全画面の検証処理の実装が1人日でできてしまう
一覧性も高くそのまま仕様書やテストケースにも使える優れものだ
デフォルトの名無しさん [sage] 2017/10/14(土) 11:22:11.10:K4XROtS+
コピペプログラマは余計なコードを増やしてくれるな

foreach(validate as entry){
if (!validateRequired(entry.name)) {
var msgFormat = getResource(entry.resource);
var label = getLabel(entry.name);
addMessage(msgFormat, label);
addCss(entry.name, entry.clazz);
}
}

簡単に100分の1になるだろ
validateもプログラムからデータにしたら保守性あがるだろ
Modelからvalidateを収集するようにしてビジネスロジックを集約してもいいけど
今更そこまで設計変えるのは愚策か
デフォルトの名無しさん [sage] 2017/10/14(土) 11:32:55.38:SVCVJk+z

これじゃ何やってるかお客様がわからないだろ
素直にエクセルにしろって
デフォルトの名無しさん [sage] 2017/10/14(土) 11:44:12.14:XRdStdss
お客様がソース読むのかよ w
条件をお客様が決めるならExcelでもらってのentryを生成するツールを作ればいいだけ
デフォルトの名無しさん [sage] 2017/10/14(土) 11:47:29.29:SVCVJk+z
結局コード生成するんじゃないかwww
なら最初からコード生成する前提で余計な手書きコードは書かない方がいい
プログラミングの基本すらわかってないのかよ
デフォルトの名無しさん [sage] 2017/10/14(土) 12:02:38.48:2Glba8SI
でた、いつもの自称プロさんw
デフォルトの名無しさん [sage] 2017/10/14(土) 12:08:57.88:SVCVJk+z
自称プロってwww
ここは学生専用だったか?
デフォルトの名無しさん [sage] 2017/10/14(土) 12:51:39.31:6KISst0f

> 条件をお客様が決めるならExcelでもらってのentryを生成するツールを作ればいいだけ

発想が逆。YAML形式などで条件を書いて
必要ならばExcelに変換する。
Excelなんてサイズが無駄に多すぎて差分の比較もできないから
バージョン管理は事実上無理だろ
デフォルトの名無しさん [sage] 2017/10/14(土) 12:56:11.86:6KISst0f
YAML形式の何が良いかというとシンプルで見やすいから
お客様が直接読み書きできるってことだな
下手なCSVファイルよりもメンテナンス性が良い
デフォルトの名無しさん [sage] 2017/10/14(土) 13:15:41.53:NTbBehto
まあそのデータなら差分出したきゃ
CSVで出して比較できそうだけどな
デフォルトの名無しさん [sage] 2017/10/14(土) 13:55:47.42:2Glba8SI
Excelでも管理できてるなら別にいいと思うぞ
客や開発メンバーのリテラシーレベルに合ってるなら
無理に違うフォーマットを強要する必要はない
openxmlとか使えば差分比較だけならできる

むしろルールと処理を密結合させても平気な神経のほうが理解できない
そのうえプロを自称してドヤるww
デフォルトの名無しさん [sage] 2017/10/14(土) 14:10:09.58:6KISst0f

客にExcelを "ルール通りに" 使わせるという
リテラシーレベルをもとめるな

勝手にフォーマットを変える、勝手にセルを結合する。
どこからかコピペした結果おかしくなって直さない
追加分とかいって差分を送りました。そっちで結合してください
とか、毎回人手で対応しなきゃならない作業が発生するぞ。
こっちで決めた使い方のルールを守ってくれやしない
デフォルトの名無しさん [sage] 2017/10/14(土) 14:11:17.22:6KISst0f
> openxmlとか使えば差分比較だけならできる
むり、見た目同じように見えても、
レイアウト属性など関係ない情報の
大量の差分までできて管理できない
デフォルトの名無しさん [sage] 2017/10/14(土) 14:12:50.65:2Glba8SI

属性情報は無視してdiff出せるよ
色変えたとか罫線追加したとかそのレベルの差分確認したいとなると
専用ツール入れないと実用レベルでは使えない
デフォルトの名無しさん [sage] 2017/10/14(土) 14:15:37.80:NZcmE+Ju
ヴァリデーションフレームワークってどれも中途半端だよな
ちょっと複雑なヴァリデーションをしようとすると適用不能になる
しょうがないからカスタムコードを書くことになるんだけどフレームワークとケンカし始めるからフレームワークは規約で禁止って流れになる
日本の厳しい要件についてこれる柔軟性の高いフレームワークは無いものか
デフォルトの名無しさん [sage] 2017/10/14(土) 14:16:08.20:2Glba8SI

その辺は上の自称プロさんならVBA使ってルール守らせるExcel作るだろ
俺は別にExcel推奨したいわけじゃないぞ
デフォルトの名無しさん [sage] 2017/10/14(土) 14:16:14.83:XRdStdss

意味わからん
YAMLで書ける客がどれだけいるんだよ w
そもそも客がYAMLで書けるならExcelに変換なんて要らん、そのままソースに変換するなりすればいい
要件によっては実行時にそのまま読み込んでもいいかも知れんし
まあ程度ならcsvとかで充分だと思うが
デフォルトの名無しさん [sage] 2017/10/14(土) 14:18:15.77:XRdStdss

> とか、毎回人手で対応しなきゃならない作業が発生するぞ。
どんだけ低レベルの客と付き合ってるんだよ w
デフォルトの名無しさん [sage] 2017/10/14(土) 14:22:34.78:6KISst0f

例えばこの例だと行を一行追加して、A2にあったWorldが
A3に変わった時の差分はこんなふうに表示される
ttp://blog.modd.com/entry/2016/01/26/125206

diff -u a.txt b.txt
--- a.txt 2017-10-14 14:16:59.481494825 +0900
+++ b.txt 2017-10-14 14:17:20.601528128 +0900
@@ -5,6 +5,12 @@
</row>
<row r="2">
<c r="A2" t="str">
+ <v>OOXML</v>
+ </c>
+</row>
+<row r="3">
+ <c r="A3" t="str">
<v>World</v>
</c>
</row>

Worldがもともとrow r="2"、c r="A3" だったわけだが、たった一行挿入することで、
2行目以下の、"全ての行データに対して" このようにrowとcが変化するわけだよ。
それで差分を管理できるわけ無いだろ。
デフォルトの名無しさん [sage] 2017/10/14(土) 14:24:44.57:6KISst0f

> YAMLで書ける客がどれだけいるんだよ w

こっちでこんな感じで書いてくださいっていうだけ。
それはExcelと同じ。

違うのは、Excelでは条件を指定した所で
見えない情報(フォーマット情報など)が
大量に埋め込まれるということ。
そしてその見えない情報を正しく修正するのが大変だということ
デフォルトの名無しさん [sage] 2017/10/14(土) 14:26:09.55:6KISst0f

> どんだけ低レベルの客と付き合ってるんだよ w

逆。客のレベルがExcelを無駄に使えるから
セルの結合とか色を変えたりしてくる。
Excelはできることが多すぎるんだよ。
余計なことをなんでもできてしまう。
デフォルトの名無しさん [sage] 2017/10/14(土) 14:28:15.75:6KISst0f

> ちょっと複雑なヴァリデーションをしようとすると適用不能になる

普通はちょっと複雑なバリデーションを書くための方法がフレームワークに用意されてる。

それに、ちょっと複雑なところだけ別にやればいいだけ。

100個のうち1個のマイナーケースに対応できないから、
100個すべてめんどくさい方法で作りましたとかアホでしか無い。
デフォルトの名無しさん [sage] 2017/10/14(土) 14:30:01.79:NZcmE+Ju

日本の業務アプリを甘く見過ぎだろ
カスタムコード書きまくらないと対応できねえよ
アホみたいにシンプルなUIしか書かなくてもいいWeb屋はスキル要らないし気楽でいいよな
デフォルトの名無しさん [sage] 2017/10/14(土) 14:34:03.24:6KISst0f

じゃあバリデーションのすべてがカスタムコードである例を教えてください
デフォルトの名無しさん [sage] 2017/10/14(土) 14:35:49.60:6KISst0f
例えば郵便番号のバリデーションが
カスタムコードとか言いそうで笑えるw

そして郵便番号を使うたびに
同じバリデーションをコピペしてるんだろうな。

普通は関数にしてフレームワークに登録すれば終わり
あとは同じバリデーションを使いまわしできる。
デフォルトの名無しさん [sage] 2017/10/14(土) 14:40:00.04:6KISst0f
あぁ、当たり前だけど範囲チェックや型チェックや正規表現チェックとか
単純なものだけではなく、カスタムバリデーションや条件付きバリデーションなんかも
フレームワークの基本機能の1つだと先に言っておこう
デフォルトの名無しさん [sage] 2017/10/14(土) 14:45:10.18:XRdStdss

> こっちでこんな感じで書いてくださいっていうだけ。
えっ?
YAMLの書き方から教えるのかよ...
Excelでフォーマット守れって言うこともできない客にYAML書けるとか無職の妄想乙 w
デフォルトの名無しさん [sage] 2017/10/14(土) 14:46:32.49:6KISst0f
日本の業務アプリを作っているところがアホなのは、
バリデーションが正しく機能しているかは
アプリを実行して画面からぽちぽち実際と同じ使い方をして
検証していることなんだよな。同じ内容のバリデーションであっても
項目ごとに検証する。それがテスト時間を無意味に増やしてしまっている。

本来はバリデーションのテストは種類ごとに1つ(すごく当たり前だがw)
そして、画面の項目ごとに、想定しているバリデーション名が
設定されているかを設定ファイルを見て確認するだけ。
実際に動かしてテストはしない。
デフォルトの名無しさん [sage] 2017/10/14(土) 14:47:12.46:2Glba8SI

試したけど俺の環境では↓こうなるよ
diffだけなら十分実用レベル

$git diff
diff --git a/book.xlsx b/book.xlsx
index c75fc9a..6215aa2 100644
--- a/book.xlsx
+++ b/book.xlsx
@@ -1,5 +1,6 @@
Sheet1
Hello
+ OOXML
World
デフォルトの名無しさん [sage] 2017/10/14(土) 14:50:00.76:6KISst0f

> YAMLの書き方から教えるのかよ...

YAMLの書き方はExcelよりも簡単だよ。
Excelは知らない人が使いこなすためには
数週間とか数カ月かかるが、

YAMLだとフォーマット用意して、
これと同じように書いてくださいで説明終わり。

Excelでフォーマットを守れないのは、
これと同じように書いてくださいと言っても、使い方が難しいから。
俺の母親は、文字の自動補間機能のせいで「1」と入力しようと
しても「10」と補完されてしまって困っていたな。
デフォルトの名無しさん [sage] 2017/10/14(土) 14:52:49.20:2Glba8SI

実際のイメージ
ttps://i.imgur.com/uatG5Vj.png
デフォルトの名無しさん [sage] 2017/10/14(土) 14:53:33.13:6KISst0f

じゃあ今度はある程度データを入れて、同じ内容のセルを結合する前後で
ためしてみそれがどう見えるかを確認したら絶望することになるから
デフォルトの名無しさん [sage] 2017/10/14(土) 14:56:35.11:6KISst0f
ちなみに補足しておくと、はxlsxを直接比較しているのではなく
xlsxをテキストに変換してから比較している。
その時にフォーマット情報などいろいろ抜け落ちる。

だから「取り消し線のところは無視してください。」なんてのはわからない。
このようにExcelはなんでもできてしまうから、
重要な情報が抜け落ちる所に書かれてあった時に比較できない。
デフォルトの名無しさん [sage] 2017/10/14(土) 15:07:27.23:XRdStdss

Excelの使い方が難しい?
YAMLがきちんと書けてExcel使えない奴なんて見たことないけどな
お前のおかんはYAML書けるのか? w
デフォルトの名無しさん [sage] 2017/10/14(土) 15:08:18.32:NTbBehto

俺はやるべきだと思うなぁ
だって外人のアプリってそのせいなのかどうなのか知らんけど
よく動いてないじゃんw
デフォルトの名無しさん [sage] 2017/10/14(土) 15:08:49.27:XRdStdss

にはフォーマット情報なんて要らんだろ
どんどん深みにはまってるぞ w
デフォルトの名無しさん [sage] 2017/10/14(土) 15:10:17.11:NTbBehto
xmlはプログラマしか編集できない上に
ファイルがでかくなると読み込み速度ヤバイので駄目だよ
デフォルトの名無しさん [sage] 2017/10/14(土) 15:20:54.33:IPoqHaAU
俺が昨日書いた検証処理の一部
実際にはこれの数十倍の検証ルールがあると考えてほしい
フレームワークで簡単にできるなら教えてほしいおねがいします

webアプリ
テーブルをバリデーションする

列は4つでそれぞれinputを持ってる
typeは順に「checkbox, text, text, text」

検索でバックエンドから取ってきたデータがこのテーブルに表示される
これを手入力で編集してバックエンドに保存する
再検索できるが検索時にはバリデーションしなくてよい
保存するときはバリデーションを実行する

メッセージはローカライズすること
すべてのテキストリソースはバックエンドで管理されている
デフォルトの名無しさん [sage] 2017/10/14(土) 15:21:29.07:IPoqHaAU
1列目のcheckboxがOFFの行はバリデーションしなくていい
2〜4列目のtextがすべて未入力の行はバリデーションしなくていい

2, 3列目が空白の場合エラー
2, 3列目が整数でない場合エラー
2, 3列目の合計値が1000を超えたらエラー

1列目のcheckboxがONの行の2, 3列目の合計値が10000を超えたらエラー

4列目はオプション
10文字以上の場合エラー
入力された文字列がバックエンドに登録されていない場合エラー

エラーメッセージは重複を排除して昇順に並び替えて所定の ul の子要素として追加する

エラーがあった入力項目は背景色を赤くする
同じ行で1つでもエラーがあった行は罫線を赤くする
デフォルトの名無しさん [sage] 2017/10/14(土) 15:22:07.10:6KISst0f

> だって外人のアプリってそのせいなのかどうなのか知らんけど
> よく動いてないじゃんw

外人のアプリって何?Windows?Linux?MacOS?
デフォルトの名無しさん [sage] 2017/10/14(土) 15:42:07.29:D5wME4oE
OSをアプリって言う奴初めて見たw
デフォルトの名無しさん [sage] 2017/10/14(土) 15:51:27.37:6KISst0f

どうでもいいけど、列目〜とか言って時点で、画面と密結合してんなーとしか思えんなw

列があれば行もあるんだろうけど、一行単位で処理してるようだから、
一行が、一クラスの一インスタンスと考えればよいだろう
1000超えたらエラーなのか10000超えたらエラーなのか分からんが。

画面表示周りにビューの仕事でこれはバリデーションではない。
バリデーション結果オブジェクトを見てビューで表示さればいいだけ(何度も言わせないように)

長くなったのでコードは次のレスに書く
デフォルトの名無しさん [sage] 2017/10/14(土) 15:51:34.74:6KISst0f
class Row
 include ActiveModel::Validations

 def col1_condition; end
 def col2_value; end
 def col3_value; end
 def col4_text; end

 def condition;
  col1_condition && col2_value.present? && col3_value.present? && col4_text.present?
 end
 def col2_plus_col3_number
  col2_value + col3_value
 end
 // ↑ここまでは単なるクラス定義
 //↓ここ以下がバリデーション

 validates :col2_value numericality: true, presence: true, if condition
 validates :col3_value numericality: true, presence: true, if condition
 validates :col2_plus_col3_number less_than_or_equal_to: 1000, if condition
 validates :col2_plus_col3_number less_than_or_equal_to: 10000, if condition

 validates :col4_text; maximun: 10, if condition
 validate :col4_registered

 def col4_registered
  // 入力された文字列がバックエンドに登録されていない場合エラー
 end
end
デフォルトの名無しさん [sage] 2017/10/14(土) 15:53:04.43:6KISst0f
× validate :col4_registered
○ validate :col4_registered, if: condition

っていうか全部 if の後の: 付け忘れてたw
デフォルトの名無しさん [sage] 2017/10/14(土) 16:04:41.69:2Glba8SI

だからそれは意図して属性情報は差分比較しないようにしてるからじゃん。。
なんなんその言いがかり

セルの結合もデータ的に何を意味してるのかVBA使うやつなら当然知ってるし
データとして使うExcelシートなら書式設定は変更されないようにロックするだろ
その辺のリテラシがないならExcel使うってのは選択肢にはならないわな
デフォルトの名無しさん [sage] 2017/10/14(土) 16:09:11.95:6KISst0f

すべての属性情報が無視していいとは限らないからね。
属性情報として重要な事が書かれているかもしれない。
そういう無視して良いのがないかわからないのがExcelの欠点の1つ
Excelになれている人ほど、余計な工夫をしてくる。
デフォルトの名無しさん [sage] 2017/10/14(土) 16:12:09.17:IPoqHaAU

これはなんの言語ですか?
JavaScriptだとどうなるのでしょうか?
10000を超えないのは複数の行について合計した時の話です
メッセージやCSSの処理はどうすればいいでしょうか?
デフォルトの名無しさん [sage] 2017/10/14(土) 16:23:07.56:6KISst0f

Ruby & Rails

JavaScriptはしらん。けど大差ないものは作れるだろ
文法上の制約があるとしてんもこんなふうになる程度

validates("col2_value", {numericality: true, presence: true, if: "condition"})

> 10000を超えないのは複数の行について合計した時の話です
一行ごとに保存できるのであれば、保存する時に
この一行を保存するときに10000を超えるかどうかを調べればいい

一行ごとに保存できない、つまりまとめて保存するならば、
一行に相当するオブジェクトに含まれる配列として
テーブル全体を持っておき、そのテーブルの数値の合計を調べれば良い。

> メッセージやCSSの処理はどうすればいいでしょうか?
んなもん、バリデーション結果を返して、そこに含まれるerrorsを
画面に表示すればいいだけ。ローカライゼーションは別の話。
デフォルトの名無しさん [sage] 2017/10/14(土) 16:32:34.19:IPoqHaAU

なるほど
なんとなくわかりかけてきました

肝心のエラー情報はどうやって、どのような形式で取得しますか?
検索や保存など処理によって検証内容が異なる場合は似たようなクラスを2つ用意するのでしょうか?
デフォルトの名無しさん [sage] 2017/10/14(土) 16:37:58.88:6KISst0f
> 肝心のエラー情報はどうやって、どのような形式で取得しますか?
フレームワーク次第なんだんだからそのやり方に従えばいい

> 検索や保存など処理によって検証内容が異なる場合は似たようなクラスを2つ用意するのでしょうか?
似たようなもの=同じではない=違うもの

違うなら別々に用意しなければいけないし、
100%まったく同じならば、使い回せばいい。
一部が全く同じならば、同じ部分だけつかいまわせるように切り出せばいい

絶対にやってはいけないのは、違うところがあるのに
似ているからという理由だけで違うものを使いまわすこと
そんなことをするとある修正が全く無関係な所に影響を及ぼしてしまう。

異なるなら別のものを作るのは当たり前の話だ。
デフォルトの名無しさん [sage] 2017/10/14(土) 16:44:22.76:wPdsvz2f

> すべての属性情報が無視していいとは限らないからね。
限るだろ ⇒ のデータなんだから w
デフォルトの名無しさん [sage] 2017/10/14(土) 16:45:47.95:6KISst0f
あとなぁ、コピペはいけないってことの意味を勘違いしてるやつが多いんだよな。

単語、文字列をコピペしたらいけない。ファイルをコピペしたら
いけないって勘違いしてる。

コピペしたらいけないのは処理だってーの。
処理はテストするものが定義はテストする意味はない。
定義でするべきなのはテストではなくて確認
確認は目視でもOKなんだよ。

バリデーションなんてほぼ定義にできてしまうのだから
テストする項目にはならない。確認する項目。
だからYAMLに分離して、技術者じゃなくても確認できるようにしておけば良いんだ。
デフォルトの名無しさん [sage] 2017/10/14(土) 16:46:45.77:IPoqHaAU

ちなみにrubyだとバリデーション結果はどうなってるんですか?
デフォルトの名無しさん [sage] 2017/10/14(土) 16:47:38.90:6KISst0f

問題はExcelにはのデータ以外の情報も自由に入れられてしまうところなんだよ。
そしてそれがわかりづらい。
デフォルトの名無しさん [sage] 2017/10/14(土) 16:49:56.83:6KISst0f

RubyじゃなくてRailsな。バリデーションはRailsというフレームワークの一機能
バリデーション結果のオブジェクトの中に
errosってのがあってそこに項目ごとにエラーメッセージが入ってる。
またバリデーション結果のオブジェクトにはvalid?、invalid?メソッドがあって
全体がバリデーションでOKだったかどうかもわかる。
デフォルトの名無しさん [sage] 2017/10/14(土) 16:55:23.66:IPoqHaAU

どの項目でエラーが出たかはわかりませんか?
背景色を変えるには入力項目のidとrubyオブジェクトのプロパティとのひも付けが必要だと思いますが
ここも粗結合にしたまま対応できるんでしょうか?
デフォルトの名無しさん [sage] 2017/10/14(土) 17:01:53.89:2Glba8SI

この場合のcheckboxは更新対象を示すフラグっぽいから
2~4列目のモデルの要素とは別にしたほうがいいんじゃないかな

ONになってる行のコレクション対してバリデーションすればいいので
if conditionは全部消せる
デフォルトの名無しさん [sage] 2017/10/14(土) 17:02:08.30:6KISst0f

だからerrorsオブジェクトの中に項目ごとにエラーが入ってるって言ったろ

> 背景色を変えるには入力項目のidとrubyオブジェクトのプロパティとのひも付けが必要だと思いますが
いらねーよ。

どうせエラー画面がでたら、エラーが出たその項目の値を表示するだろ?
その項目のすぐ下にでもエラー情報だせばいいだろ。

あ?id? エラー情報の表示にidなんていらねーからな。
まさかと思うが、CSSに全項目書いてたりしないよな。
それならclass使え。アホらしいから
デフォルトの名無しさん [sage] 2017/10/14(土) 17:06:44.40:6KISst0f

そこらへんはどうでもいいやw
重要なのはこの程度でカスタムコード書きまくらないと対応できないとか
思っていたことがはっきりしたってだけ

で、俺の意見はここからさらに先で、Railsのバリデーションコード
あの程度の情報量であれば、YAMLに簡単に外だしできるので、
外出して、客にもレビュー可能にして、価値の低いテストを減らしたい。
YAMLにすればフロントエンド側(JavaScript)でも再利用できるだろうし。
なんでもかんでもクラスに定義するのが良いとは思わないな。
デフォルトの名無しさん [sage] 2017/10/14(土) 17:11:55.12:ipiotHZI
その先はないので程々にした方がいい
設定ファイルでバリデーションするアイデアはJavaとか他の言語が大昔にとっくに通過していて
世界中でこれは使い物にならんと判定されたものだよ
デフォルトの名無しさん [sage] 2017/10/14(土) 17:15:32.80:ipiotHZI
バリデーションすなわち入力検証をプレゼンテーションから切り離して考えるのもバカバカしい
入力検証はViewあるいはViewModelに属する処理だからプレゼンテーションに入るのが正解
ドメインモデルに入力検証をやらせるのは愚かとしか言いようがない
デフォルトの名無しさん [sage] 2017/10/14(土) 17:16:00.23:6KISst0f
> 設定ファイルでバリデーションするアイデアはJavaとか他の言語が大昔にとっくに通過していて

それはXMLが失敗の原因だった。
XMLにはタグや属性という技術者しか知らないものが
あるからだめだったんだよ。
デフォルトの名無しさん [sage] 2017/10/14(土) 17:17:14.17:6KISst0f

> 入力検証はViewあるいはViewModelに属する処理だからプレゼンテーションに入るのが正解
YAMLにすることでそれも実現できる

バリデーションは、プレゼンテーションだけのものではない
プレゼンテーションでもドメインモデルでも使われるものだ
デフォルトの名無しさん [sage] 2017/10/14(土) 17:20:06.76:6KISst0f
更に言うならば、バリデーションはフレームワークではなく
言語仕様に組み込むべきものだよ。
本質的にはD言語の契約プログラミングと同じものなんだから
デフォルトの名無しさん [sage] 2017/10/14(土) 17:21:48.23:ipiotHZI

違う

モデル定義とバリデーション定義が離れすぎていること
コンパイルできないから開発環境の恩恵をうまく得られないこと
バリデーションを書くのは開発者であるが開発者に馴染みのある言語はXMLやYAMLではなくJavaやC#であること

これらが問題点
デフォルトの名無しさん [sage] 2017/10/14(土) 17:24:16.70:6KISst0f

> バリデーションを書くのは開発者であるが開発者に馴染みのある言語はXMLやYAMLではなくJavaやC#であること

あんたはバリデーション処理とバリデーション定義をごっちゃにしてる。
バリデーション処理は動くコードで書くが、
バリデーション定義は動くコードではない。

JavaのXMLなんかも動くコードではないから
これは定義であり、定義の内容をJavaやC#で書く意味はない。
だってただのデータだぞ?ハッシュで持たせればいい程度の情報。
デフォルトの名無しさん [sage] 2017/10/14(土) 17:25:05.23:S4q9ZUfo

俺もその意見に賛成かなぁ

画面が変わったら変わった画面用のチェックが必要になってる気がするわ
デフォルトの名無しさん [sage] 2017/10/14(土) 17:25:21.74:ipiotHZI

違う

プレゼンテーションレイヤではオブジェクトが不正な状態を受け入れることが前提
不正な状態を検知する処理がバリデーション

ドメインレイヤではオブジェクトは不正な状態は受け入れない
プロパティの不正な値をセットしようとした瞬間に例外
メソッドに不正な引数を与えた瞬間に例外
これはバリデーションではない
ドメインレイヤでは契約を使う
デフォルトの名無しさん [sage] 2017/10/14(土) 17:25:55.08:6KISst0f
の例で言えば

 validates :col2_value numericality: true, presence: true, if condition
 validates :col3_value numericality: true, presence: true, if condition
 validates :col2_plus_col3_number less_than_or_equal_to: 1000, if condition
 validates :col2_plus_col3_number less_than_or_equal_to: 10000, if condition

 validates :col4_text; maximun: 10, if condition
 validate :col4_registered

この部分がバリデーション定義。
簡単にYAMLにできるし、客が検証したい部分でも有る。

numericalityの内容とかconditionの内容がバリデーション処理(の一部)
デフォルトの名無しさん [sage] 2017/10/14(土) 17:27:05.32:6KISst0f

> ドメインレイヤではオブジェクトは不正な状態は受け入れない
> プロパティの不正な値をセットしようとした瞬間に例外
> メソッドに不正な引数を与えた瞬間に例外
> これはバリデーションではない

バリデーションに引っかかった結果をどう表示するか?が
プレゼンテーションでやるべきこと。

バリデーションそのものは使いまわすことができる。
デフォルトの名無しさん [sage] 2017/10/14(土) 17:27:18.82:S4q9ZUfo

ctrl+vで貼った1GBテキストとかメモリに保持すんの?
デフォルトの名無しさん [sage] 2017/10/14(土) 17:28:02.59:ipiotHZI

それはあなただけが感じる特殊な感覚だよ
世界中のプログラマは設定ファイルを捨て去り属性やアノテーションを使うようになった
XMLよりYAMLの方が多少マシという点は認めるが上記の手法に比べればどんぐりのせくらべといったところだ
デフォルトの名無しさん [sage] 2017/10/14(土) 17:28:38.29:6KISst0f

> 世界中のプログラマは設定ファイルを捨て去り属性やアノテーションを使うようになった

設定ファイルを捨ててYAMLにしたの間違いだろw
デフォルトの名無しさん [sage] 2017/10/14(土) 17:29:02.43:6KISst0f
設定をYAMLではなくソースコードに埋め込むのを見てみたいもんだがw
デフォルトの名無しさん [sage] 2017/10/14(土) 17:30:30.98:S4q9ZUfo
お前ら、喧嘩するな
どこに持とうがチェック項目は増えても減ってもいないんだぜ

だったら一番やりやすい画面かな
デフォルトの名無しさん [sage] 2017/10/14(土) 17:32:16.56:6KISst0f

いや増えてる。画面でやると画面ごとにバリデーション処理が増えてしまう。
だから数を減らすにはより中心であるモデルで行う必要がある。
デフォルトの名無しさん [sage] 2017/10/14(土) 17:32:52.58:S4q9ZUfo
ファイルに外だししたからチェックしなくていいですなんて
んなわけねぇだろ

今時エロ本の竿役だってそんなこと言わねぇよ
デフォルトの名無しさん [sage] 2017/10/14(土) 17:34:49.45:S4q9ZUfo

チェックはしなきゃ駄目だよ
デフォルトの名無しさん [sage] 2017/10/14(土) 17:35:14.23:ipiotHZI

JavaのBean ValidationやC#のDataAnnotationsを調べてみればいい
モデルとバリデーション設定を分離して管理する意味がないとわかるはずだ
デフォルトの名無しさん [sage] 2017/10/14(土) 17:39:42.15:XRdStdss

低能相手ならそうかもな
御愁傷様としか言えないけど w
デフォルトの名無しさん [sage] 2017/10/14(土) 18:20:50.90:6KISst0f

> ファイルに外だししたからチェックしなくていいですなんて
> んなわけねぇだろ

そんなこと言ってないよw
バリデーションという単純な部分を
外だしすると誰でもチェックできるようになるよ。

そもそもExcelでやっていたことだからね。
Excelという使いづらい形式がYAMLに変わっただけ
誰でもチェックできるってことの意味がわかったかな?


あ、YAMLに変わってプログラムからそれを
そのまま使うってところも違うか。
デフォルトの名無しさん [sage] 2017/10/14(土) 19:06:29.37:GDzf5CCz
YAMLが誰でも読み書きできると主張しているのはプログラマだけという事実について考える必要があるようだ
エクセルは誰でも読み書きできる
これはプログラマ以外のステークホルダーも同意している
デフォルトの名無しさん [sage] 2017/10/14(土) 19:35:21.74:LrE/Uk2a
xmlはパンピーには無理
スコープなんて意識できるわけねーし

っていうか俺でも辛い
xmlを編集できるツールがそもそもねーじゃん
責任持ってお前作って配れよ
デフォルトの名無しさん [sage] 2017/10/14(土) 21:47:43.86:4wM/EQmV
結局のところフレームワーク無しだとif文書きまくるのが最強ということですか?
いわゆるKISSに原則ってやつですね
デフォルトの名無しさん [sage] 2017/10/14(土) 21:59:38.46:6KISst0f

if文以外は不要
デフォルトの名無しさん [sage] 2017/10/14(土) 22:36:04.01:LrE/Uk2a
データからソースコード吐き出すツールでも作ったらどうか?
デフォルトの名無しさん [sage] 2017/10/15(日) 00:42:30.20:RBDvyi+r
データはRDBMSでもテキストでもなんでもいいだろ
DAOで抽象化しとけば後から変えられる
メンテできるものにしろ
デフォルトの名無しさん [sage] 2017/10/15(日) 00:48:50.64:/8UsyUgn

それやるとメンテが大変になるから辞めたほうが良いよ。
変換などせずそのまま使う方がいい
デフォルトの名無しさん [sage] 2017/10/15(日) 18:02:34.88:nlQ3NzZf
なんか盛り上がってるようだがとりあえず

に賛成票。
設定が正しいか目視で済ませずテストすべき。
目視チェックで済ませたところが往々にしてトラブルの元。
デフォルトの名無しさん [sage] 2017/10/15(日) 18:26:45.76:/8UsyUgn
> 設定が正しいか目視で済ませずテストすべき。

そのテストって実行結果を目視で調べるんだろ?

それか、テストのテストのテストのテストを書くわけないだろうから、
テスト書いて目視でそのテストが正しいか調べるんだろ?

どうせ最後は目視するしかないんだよ。
コードレビューとも言うね。

そんなのをやるぐらいなら
「十分な目ん玉があれば、全てのバグは洗い出される」方式を
利用した方がいいよ。

オープンソースでない場合、コードだと「十分な目ん玉」は集められない。
だから技術者ではない人でも検証可能な形にして「十分な目ん玉」を集めたほうが良い

これはコストのかけ方の問題だよ。重要かつ難しい所には技術者を割り当て
バリデーションとかいう単純な所は、誰でもできるようにして十分な数の目ん玉で対応する
デフォルトの名無しさん [sage] 2017/10/15(日) 18:43:04.37:hXjn0fon
バグってるかどうかはリリースすればわかる
瑕疵期間でも人件費はタダじゃねえからな
別にテストで全部見つける必要はない
瑕疵期間なしって契約ならテストで全部チェックするけどね
デフォルトの名無しさん [sage] 2017/10/15(日) 18:57:53.15:hZRxEBGG

コードレビューとテストは目的も確認の手段も違うじゃん
正しいメールアドレスの形式かどうかをチェックする場合とかを考えたら分かるだろ

それに仕様に間違いがないかどうかを誰もが確認できるようにすることと
コードがその仕様通りに動いているかどうかを確認することは
確認する対象が全く違う

自己正当化の論理に聞こえる
デフォルトの名無しさん [sage] 2017/10/15(日) 19:04:24.38:/8UsyUgn

> 正しいメールアドレスの形式かどうかをチェックする場合とかを考えたら分かるだろ

その場合だと「ある文字列が正しいメールアドレスの形式か?」という
ロジックは技術者が入念にチェックすべき重要なロジック。
そしてこれはisMailAddressみたいな名前の関数となる。

そしてユーザーが入力したある項目のバリデーションが
isMailAddressになっているか?は目視で確認すれば良い
これは技術者でなくてもできる。

何でもかんでもコストがかかる技術者を使うなっていうのはこういう話だよ。
バカは項目が存在する数だけ、漢字が使えないこと、@の前は.になってないこと
.を連続して2つ以上使わないこと、みたいなチェックをするからな。

メールアドレスのバリデーションが正しく動いているならば、
そのバリデーションを使う場所がいくつあろうが、
そのバリデーションが使われていることだけを確かめれば良いんだよ。
デフォルトの名無しさん [] 2017/10/15(日) 19:22:46.86:EYoRh89i
「社員に対して給料を振り込む」という文章を
「ooをxxする」という1文にしたいときって、
「社員」と「給料」の2つの目的語があるからどうすればいいの?
デフォルトの名無しさん [sage] 2017/10/15(日) 19:28:58.58:nlQ3NzZf

>>メールアドレスのバリデーションが正しく動いているならば、
>>そのバリデーションを使う場所がいくつあろうが、
>>そのバリデーションが使われていることだけを確かめれば良いんだよ。

確める内容はそれでOK
でも確める方法が設定ファイルの目視チェックでは不十分。
設定ファイルの各項目が実際の動作に反映されてるか動かしてみないと。

まあシステム間結合テストとか言われるようなテストフェーズでやる場合、実装担当はあまり関係ないことかもしれないが。
誰かがそのテストをする必要はある。
デフォルトの名無しさん [sage] 2017/10/15(日) 19:39:32.38:vM8WLXd+
設定ファイルに書いてあればOK
笑えないけど笑っちまった
設定ファイルの記述ミスは存在しない前提かよ
デフォルトの名無しさん [sage] 2017/10/15(日) 19:43:52.74:/8UsyUgn

> 設定ファイルの各項目が実際の動作に反映されてるか動かしてみないと。
それは画面やAPIごとに、ここではこの項目が使われていますって
画面に表示するだけでOK。それを目視で確認すれば良い。


> 設定ファイルの記述ミスは存在しない前提かよ

記述ミスは目視で調べろって話だろw
何を聞いてるんだか
デフォルトの名無しさん [sage] 2017/10/15(日) 19:49:40.01:vM8WLXd+

見ただけじゃわかんねえよw
デフォルトの名無しさん [sage] 2017/10/15(日) 20:00:30.48:/8UsyUgn
というかさ、目視を軽視してないか?
動作確認を過大評価してないか?

動作確認っていうのは確かに動作させたものに関しは
その通り動くだろうけど、動作させてない所はわからないんだぞ。
偶数かどうかチェックする関数、2と4と6でテストしてOKだからといって
8がOKになるとは限らない。コードのロジックを "目視" して
問題ないことを確認しているはずなんだが?

永遠の時間があれば全て動作確認すればいいだろうけど
実際にはそんな時間はない。だから動作させずに目視で確認できるように
そういう仕組を作っていくことが重要なんだよ。

時間をかけて努力をすることは偉くもなんともない。
なるべく時間をかけずに成果を上げるようにしないと
生産性は上がらないぞ
デフォルトの名無しさん [sage] 2017/10/15(日) 20:03:20.76:/8UsyUgn

それは見ただけでわかるような仕組みを作ってないから。

ゲームでよくあるデバッグモードみたいなものを
本気で実装した方がいいよ。
通常のプレイで見えないパラメータを、デバッグする人も見えないまま
デバッグするのは、時間を無駄に消費するだけ

デバッグモードを有効にしたら、見えないパラメータ
例えばこの項目のバリデーションは○○です〜みたいなものを
表示するようにすれば、見ただけでわかるようになる。
デフォルトの名無しさん [sage] 2017/10/15(日) 20:04:45.78:vM8WLXd+
テストも目視も要らないよ
とりあえずリリースしちゃいなよ
問題があればそれではっきりするだろ
説得するより怒られる方が楽って昔の偉いプログラマも言ってたぞ
デフォルトの名無しさん [sage] 2017/10/15(日) 20:09:59.40:/8UsyUgn

ベータ版リリースとか有るからね。

でも、それはちゃんと発生した問題を自動で
検出して通知する仕組みが必要だよ。
それがないと問題があっても教えてくれないし、
発生した問題の詳細もわからない。
言うほど簡単じゃない。
デフォルトの名無しさん [sage] 2017/10/15(日) 20:21:11.07:zIm4LF54

なんかお前もうヤケクソじゃね?w
お前の主張は誰が見てもありえねーからw
デフォルトの名無しさん [sage] 2017/10/15(日) 20:25:02.63:/8UsyUgn

反論は、文句じゃなくて、理屈で返してください
デフォルトの名無しさん [sage] 2017/10/15(日) 20:27:43.57:zIm4LF54

だってそんなん
社会で通用しねーのわかってるし
相手にしてお前の馬鹿が伝染ったら嫌だし
デフォルトの名無しさん [sage] 2017/10/15(日) 20:58:42.66:/8UsyUgn

理屈で返せない理由がそれ?
デフォルトの名無しさん [sage] 2017/10/15(日) 21:03:02.20:KCBqed/H

でかいソフトを書いたことないだろうな...
コードは正しくても実行するとうまく動かないとか経験したことないだろ
デフォルトの名無しさん [sage] 2017/10/15(日) 21:06:15.70:/8UsyUgn

その質問に、

ある と答えた場合
ない と答えた場合

それぞれあなたはなんて返してくるんですか?
いや、どうせどちらで答えても、的はずれな
文句言って終わるんだろうなと思いましてねw
デフォルトの名無しさん [sage] 2017/10/15(日) 21:13:49.98:zIm4LF54

いや、もうただの屁理屈じゃんお前の
設定ファイルの読み込み処理がバグってるかもしんねーじゃん
最終的な動作の確認は絶対必要じゃん

お客からしたら設定値なんて
ファイルに出そうがソースに埋め込もうが知ったこっちゃないじゃん
ただ、お約束した機能が動いているかどうかはお客さんとの約束でしょ?
その確認をしないでどーすん?
デフォルトの名無しさん [sage] 2017/10/15(日) 21:17:26.65:/8UsyUgn
> 設定ファイルの読み込み処理がバグってるかもしんねーじゃん

ならそこだけをテストすりゃいーだろ。
仕事は減らす方向に向かって頑張れよ。

人海戦術で時間をかけたらからって
偉くもなんともないんだぞ
デフォルトの名無しさん [sage] 2017/10/15(日) 21:21:47.27:KCBqed/H

まずはどっちなの?
デフォルトの名無しさん [sage] 2017/10/15(日) 21:22:09.90:/8UsyUgn
> ただ、お約束した機能が動いているかどうかはお客さんとの約束でしょ?
> その確認をしないでどーすん?

その確認をどーするって、お前は客にテストやりましたって
エクセルシートでも送りつけて、それが本当かもわからないのに
これ見て納得してくださいってやってるんだろ?何一つ証拠がねーよ。
それともテスト作業してる動画を何時間も見せてこれが証拠ですとでもやるつもりか?

コード見せたって客はその内容わからないかもしれないし、
テストコード見せたって、それがソースコードの形じゃやっぱりわからない。
エクセルファイル見せたって、それを本当にやったかどうかもわからない。
間違って記入しているかもしれない。何にもあてにならないよね。

俺が言ってるのは、客にも簡単にわかるような形でデータを作り
そのデータをそのままプログラムで使えって言ってるの。
客がそれみて納得すりゃそれでOKだし、そのファイルを
直接使うからもちろんその通りに動く。

客の検収作業が、そのまま目視による確認になってるんだが。
デフォルトの名無しさん [sage] 2017/10/15(日) 21:36:21.23:hZRxEBGG

メールアドレスじゃなく郵便番号くらいを例にしたほうがよかったかね
どういうメールアドレスを正しい形式とするかは要件によって変わってくるんだよ
RFCがあるからといって技術者が勝手に決められるものじゃないから

簡単な郵便番号の入力チェックでも
何をOKとして何をNGとするかは要件次第
その「目視の確認」で一体何が担保できるんだろうね?

1500001
150-0001
150−0001
150    (旧3桁)
150-01  (旧5桁)
150-9999 (存在しない)

あらゆるケースをすべてテストできるわけでもないしするべきでもないが
仕様通りに動くと自信を持てるレベルのテストはすべき
デフォルトの名無しさん [sage] 2017/10/15(日) 21:42:30.40:zIm4LF54

はぁ?馬鹿?
設定ファイルが間違ってる可能性は?
読み込みはうまく行っても
値が反映されてない可能性は?
それが設定ファイルのある特定の設定値だけバグる可能性は?

まあ、普通に仕様通りに動くこと確認した方が早いよね?
デフォルトの名無しさん [sage] 2017/10/15(日) 21:43:34.59:/8UsyUgn
> メールアドレスじゃなく郵便番号くらいを例にしたほうがよかったかね
> どういうメールアドレスを正しい形式とするかは要件によって変わってくるんだよ
> RFCがあるからといって技術者が勝手に決められるものじゃないから
>
> 簡単な郵便番号の入力チェックでも
> 何をOKとして何をNGとするかは要件次第
> その「目視の確認」で一体何が担保できるんだろうね?

メールアドレスや郵便番号でもなんでもいいが、
ある項目が「メールアドレス」や「郵便番号」であることが担保できる。

これにより仮にバグがあったとしても、一箇所を修正するだけで
すべてが修正されることが担保できる。

動かして確認する方法だと、ある箇所のバグが修正されたからといって
別の場所も同じように修正されるとは限らない。

目視の確認ができるようにしておくことで、工数が大幅に削減できた。
デフォルトの名無しさん [sage] 2017/10/15(日) 21:44:37.83:/8UsyUgn

ならばそこだけテストすればいいだろって
さっきも言った。

目視の確認ではない。テストだ。
デフォルトの名無しさん [sage] 2017/10/15(日) 21:44:44.64:zIm4LF54
想像力が足りないから不具合が無いように見えるんだろうね
想像力足りなくてもこういうの経験ないのかな?
経験不足もあるのかな?
考えが幼いよ
デフォルトの名無しさん [sage] 2017/10/15(日) 21:45:37.94:zIm4LF54

じゃあ、普通に全部テストするってレスしてるよね?w
デフォルトの名無しさん [sage] 2017/10/15(日) 21:48:35.14:/8UsyUgn

お前関数って知らないのか?
共通化の基本テクニックだぞ?

全てのメールアドレスや郵便番号の項目で
同じ関数を使うんだよ。

テストをするのはその関数のみ。
バリデーションとしてその関数を使っているかどうかを
設定ファイルに書く。

何度も同じ話をさせるな
デフォルトの名無しさん [sage] 2017/10/15(日) 21:53:28.83:zIm4LF54

かんけーねーんだよ
何度も言うけどファイルに出したのはテメーの勝手なんだよ
動くかどうかを証明しろって言ってるの

何が必要でしょうか?
デフォルトの名無しさん [sage] 2017/10/15(日) 22:00:17.33:/8UsyUgn

見えない情報がある時点で、動かした所で
どんな場合でも動くとは証明できないってのは理解できてる?

ソースコードを読めば動かさなくてもわかる問題でも
ソースコードを隠した状態だと動かした結果だけでは証明できなくなる。
デフォルトの名無しさん [sage] 2017/10/15(日) 22:03:56.10:zIm4LF54

俺の質問に答える気はあるのかな?
もちろん答えは千差万別だが

お前のソフトが動くことの証明をして欲しいんだよ

一度でもソフトを納品したことがあるならわかるよね?
上司におんぶで抱っこでそんなこと気にしたことなかった?
デフォルトの名無しさん [sage] 2017/10/15(日) 22:08:32.52:/8UsyUgn

> お前のソフトが動くことの証明をして欲しいんだよ

なんでお前もできてないことを俺がやらんといけないの?
って言ってるんだが。

動くことの証明はソースコードを見せる以外に不可能なんだよ。
デフォルトの名無しさん [sage] 2017/10/15(日) 22:09:42.31:/8UsyUgn
ソフトウェアの納品は、動くことの証明じゃない。

これだけやりました。やったという証拠です。信じてください。
バグはないと思います(実際には有るだろ?)
という意味でしかない。

気にしたことなかった?
デフォルトの名無しさん [sage] 2017/10/15(日) 22:10:40.16:/8UsyUgn
いや、ソフトウェア納品でバグが1つもないと
証明するものを出したというのであれば、
それを言ってくれて良いんだが?

バグが有ることは証明できるが
バグがない(正しく動く)ことは証明できない
常識なんだがねぇ。
デフォルトの名無しさん [sage] 2017/10/15(日) 22:16:36.59:zIm4LF54

おお、よくわかってんじゃん
じゃあ、それをお前はどうやってやるの?
デフォルトの名無しさん [sage] 2017/10/15(日) 22:20:08.75:/8UsyUgn

え? 信用してくださいドキュメントの話なんかしてないじゃんw
今まで通りのやり方で適当にでっち上げれば?

俺は少ない手間で必要十分なテストをするだけの話
デフォルトの名無しさん [sage] 2017/10/15(日) 22:26:02.41:zIm4LF54

いいや
ソフトウェアって上から下まで
さっきお前が言ったとおり
確実なものなんか何一つないよ
お前の十分だってお前の中の十分だろ?

俺等とは違うの
その差分を俺らとは違うお前は自分で埋めなければならない
そこに理屈はない
それが説得ってもんじゃん
人を見るのが嫌ならこの業界は向いてないね
デフォルトの名無しさん [sage] 2017/10/15(日) 22:31:22.39:/8UsyUgn
結局屁理屈でごまかしたかw

無能なお前らと違うと言っても
だから何としか言えんわw
デフォルトの名無しさん [sage] 2017/10/15(日) 22:41:19.56:zIm4LF54

結局、テスト仕様書もテスト結果も
全ては説得なんだよ

理論に飛躍があり過ぎる
ウォーターフォールのV字開発で
設定ファイルに外だししたから
テスト項目減りますなんざ
あり得ない理論なんだよ

まあ、当然説得なんで可愛い女の子が交渉してくれば通る可能性も無きにしもあらずではあるけどね
デフォルトの名無しさん [sage] 2017/10/15(日) 23:06:53.56:nlQ3NzZf


>>>> 設定ファイルの各項目が実際の動作に反映されてるか動かしてみないと。
>>それは画面やAPIごとに、ここではこの項目が使われていますって
>>画面に表示するだけでOK。それを目視で確認すれば良い。

なるほど。
各項目のUIを一通り動作させて、
で書いてくれたようなデバッグモード的表示やデバッグログで、動いたバリデータの書類を出力するってことならよさそうだ。
それなら設定ファイルの内容および設定ファイルの配置の正当性が確認できる。
[sage] 2017/10/16(月) 00:16:25.05:Qeq9VPfc
2008年くらいに.net FWの地雷踏みまくった事を鑑みると、
テスト仕様は要件定義から作成すべきだし、その実施も単体、結合レベルは機械的に掛けてもいいけど、総合は手でやるべきだろうなぁ。

「テスト対象はまともに動いていない」という仮説を、ケース毎に一つずつ潰していって、残るのが「正常に動いてる」って結果なのが試験で
「正常に動いてる」が先に立って「なぜならこう書いたから、こう動くはずで、現にそう動いてる」ってのは試験じゃなくて単なる確認では?
正直、単体テストでもテスト対象を作った言語を使わないでテストして欲しいところ。
デフォルトの名無しさん [sage] 2017/10/16(月) 04:11:08.89:LbOcJE9h
結局ID:/8UsyUgnはにレスできずに逃げたのかよ w
デフォルトの名無しさん [sage] 2017/10/16(月) 23:24:09.06:t2YDIrX7

場合によるので「どちらも」が正解
デフォルトの名無しさん [sage] 2017/10/17(火) 05:56:41.14:kMB04QqG

個人の話なのに場合によるとか頭大丈夫? w
デフォルトの名無しさん [sage] 2017/10/17(火) 19:34:45.23:lUBT12Jg
>コードは正しくても実行するとうまく動かないとか経験したこと俺はマニュアルどおりやったからこのコードは動かないけど正しいんだ!
デフォルトの名無しさん [] 2017/10/17(火) 20:15:05.57:EyAJ3Syg
「Object Oriented」は「オブジェクト指向」と訳されていますが、実はこれが大変な誤訳で、正しくは「目的志向」です。
つまり、何らかの目的があって、それを目指す(「指向」は向いているだけ)というわけです。
デフォルトの名無しさん [sage] 2017/10/17(火) 20:25:59.57:jqryz7F2
目的はObjective
Objectは単純に『物』の意味だよ。
デフォルトの名無しさん [] 2017/10/17(火) 20:28:58.13:EyAJ3Syg

典拠をご提示いただきたい
デフォルトの名無しさん [sage] 2017/10/17(火) 20:53:30.82:G9wCIPXR

まず自分が提示しろ
デフォルトの名無しさん [sage] 2017/10/17(火) 21:02:26.86:y2IFefmv
依存しあってんじゃねーよ
デフォルトの名無しさん [] 2017/10/17(火) 21:19:29.37:EyAJ3Syg

senderを自分で生成する方法
ttp://bbs.wankuma.com/index.cgi?mode=al2&namber=85371
デフォルトの名無しさん [sage] 2017/10/17(火) 21:56:16.29:G9wCIPXR

お、おう。。それもJittaさんか…

面白い捉え方だと思うけど
Object Orientedという言葉が出てきた歴史を調べれば
「目的指向」が誤訳なのが分かるよ
ttps://en.wikipedia.org/wiki/Object-oriented_programming#History
デフォルトの名無しさん [] 2017/10/17(火) 22:34:25.19:EyAJ3Syg

Jittaさんが言ってることの方がガセネタですね
じゃあそれを根拠にわんくまに怒鳴り込もうと思います
ありがとうございます
[sage] 2017/10/17(火) 22:41:00.56:GZgPL7cm
まあ英語でObject orientedだと、大体は対象志向みたいな意味合いだけどな。
Objectって単語は、モノと言うよりも「認識できる何か」「動作や感情の対象」を指す。
動詞になると顕著で、「俺はこれに文句があるんだが」ぐらいキツい意味。
「I object to waiting」みたいな。

Ob + ject 。前に向かって投げたやつ。客観的に見ることができる物、が語源。
逆に、中に投げ入れるモノがinject。下に投げたものがsubject(自我、主観)。
[sage] 2017/10/17(火) 22:46:44.09:GZgPL7cm

単なる「モノ」はだいたいbody、matter、substance。
physical bodyとか使う。
天体の「体」もbody。heavenly-body。
デフォルトの名無しさん [sage] 2017/10/17(火) 22:54:02.93:0cEpFleP

素晴らしい「モノ」
優れている「モノ」
高品質な「モノ」
高機能な「モノ」

のモノはどれになるの?
デフォルトの名無しさん [sage] 2017/10/17(火) 22:55:17.94:0cEpFleP
食べモノ、飲みモノ
も追加しよう
デフォルトの名無しさん [sage] 2017/10/17(火) 22:55:26.36:xucK+Hbm
thingは?
デフォルトの名無しさん [] 2017/10/17(火) 22:55:57.78:EyAJ3Syg

つまりJittaさんが大正解ってこと?
デフォルトの名無しさん [sage] 2017/10/17(火) 22:59:32.89:xucK+Hbm
目的を指向するってメチャクチャ当たり前だなw 殊更言葉にするのが恥ずかしいくらい
デフォルトの名無しさん [sage] 2017/10/17(火) 23:08:10.96:O+BDW8Aj
責務指向でいいじゃん?
デフォルトの名無しさん [sage] 2017/10/17(火) 23:20:41.75:A1W0Ufl3
役割って感じ?
objectではないけどしっくり来る
デフォルトの名無しさん [] 2017/10/17(火) 23:31:17.25:EyAJ3Syg
責務駆動設計とか言うよね
デフォルトの名無しさん [sage] 2017/10/17(火) 23:35:58.51:0cEpFleP
せやかて駆動設計
デフォルトの名無しさん [sage] 2017/10/17(火) 23:36:27.01:O+BDW8Aj
責務はいつも一つ!
デフォルトの名無しさん [] 2017/10/17(火) 23:38:24.92:EyAJ3Syg

いいね!
デフォルトの名無しさん [sage] 2017/10/17(火) 23:47:01.89:G9wCIPXR
Functional ProgrammingのFunctionにだって責務あるし
POAのProcessやDOAのDataにだって責務は有る

他と違って「オブジェクト」という抽象概念を中心に物事を考えるからオブジェクト指向という名前
んでオブジェクトってのは↓
a data structure that can contain functions as well as data, variables, and other data structures
ttps://www.merriam-webster.com/dictionary/object
デフォルトの名無しさん [] 2017/10/17(火) 23:58:04.35:EyAJ3Syg
Object oriented languageは
・カプセル化、継承、多態性をサポートするもの
・JavaやC++、Rubyなど

Object based languageは
・継承・多態性をサポートしないもの
・VBなど

orientedはbasedと似たような意味で、basedよりも多くの条件を規定する。

Object based languageを「オブジェクトを基本にした言語」と解釈するならば
Object oriented languageは「オブジェクトを本位にした言語」と解釈するのが妥当な気がする。

「本位」は中心にして基本にするという意味なので「基本」を強めてる感じ。
デフォルトの名無しさん [] 2017/10/17(火) 23:58:36.63:EyAJ3Syg

やっぱそうだよね、オブジェクトを中心にするっていうのがオブジェクト指向だよね
デフォルトの名無しさん [sage] 2017/10/18(水) 00:03:46.63:YCPgdWPh

オブジェクトじゃわからない
Objectはなんて訳すのが適切なのか
デフォルトの名無しさん [] 2017/10/18(水) 00:22:48.20:kh//WtC6

の歴史を見てほしい、翻訳してほしい、よろしくお願いします
デフォルトの名無しさん [sage] 2017/10/18(水) 00:36:43.88:GswCLlj6
ピッタリの訳語がないから
新しく作るか (例 経済)
既存の言葉に新しい意味を持たせるか (例 自由)

ちなみに中国語訳では「対象」らしい
[sage] 2017/10/18(水) 00:58:52.74:a2+TOoEN

good one,
better one,
high-quality one,
とかでは?モノと言うよりは、何か指しとるでしょ、その言い回しで言うときには、モノは。


事象、作品、道具、衣服などなど、それだけでは存在に意味が存在しない類のやつ。転じて、流行りとか、大事な事を指したりする。
デフォルトの名無しさん [sage] 2017/10/18(水) 07:54:38.23:/RGzz2zm
抽象的な部分は合ってるな
デフォルトの名無しさん [sage] 2017/10/18(水) 07:56:46.88:/RGzz2zm
orientedも指向より主導の方がいいと何かの本で書いてたな
デフォルトの名無しさん [sage] 2017/10/18(水) 08:07:11.64:/RGzz2zm
主体とか本位とかでもいいかもね
役割主体、役割本位
デフォルトの名無しさん [sage] 2017/10/18(水) 08:13:24.82:lHCL+31V

「モノ」「箱」「塊」とかなんでもいいような気がしてきた
どうせ実際に使う時は「社員」とか「敵機」とかになるんだし
デフォルトの名無しさん [sage] 2017/10/18(水) 14:09:11.49:hmGkDgR5
人間の方の理解のために「”もの“になにかやらせる」
「”もの“を複製して別な”もの“のパーツとして使う」
これわかりやすいっしょ?
どんどん再利用パーツ増えて複雑になってったらこうじゃないとキツイっしょ。
で提唱されたってのに、すぐにベテランプログラマーさんは
「この名前さあ、タイプすんのめんどくさいから「あ」「い」「う」でよくね?」と他人にわからない暗号にしたがったり
「オブジェクト指向ってさぁ、オブジェクト単位に分けるんっしょ?この再利用しない中身もさぁ
ぜんぶ用途別に名前つけてパーツに分類整理しなきゃ!」とかやりなさる…
[sage] 2017/10/18(水) 19:20:47.11:a2+TOoEN
そうなると、クラスって何だ、インスタンスって何だ、コピーなら、コピー元も何かの役割を果たしてたんだろ?みたいな明後日の事言われるからな。

プレスの金型と、それで作り出した製品くらいの言い方の方が伝わる。
たまに金型に便利な治具ついてることもあるし、付けることもできて、それはプレスせずに金型から直接使えますが、
その治具にメモとかつけると皆から見えたり、誰かに剥がされたりするので、必要がなければ製品に付けたほうがいいですよ、
何回プレスしたかのカウンタとかは治具につけたら良いですね。みたいに説明した事ある。

スーパークラスとかサブクラスも、同じように、互換品の金型と互換品とかそういう説明できるから、物理な型で説明すると割とわかってくれる。
デフォルトの名無しさん [sage] 2017/10/18(水) 22:26:09.70:FgeE42WT
適切な訳語、的確なメタファって大事やね
[sage] 2017/10/18(水) 23:14:36.30:a2+TOoEN
プロトタイプベースな言語だと、コピーのメタファの方が的確になったり、まぁ難しいわ、もう自分が知ってる物を、1から人に教える順番を考えるのは。
デフォルトの名無しさん [sage] 2017/10/19(木) 00:15:22.98:ycrHDnwP
自分がちゃんと理解してないものは人に説明できないって言うしね
デフォルトの名無しさん [sage] 2017/10/19(木) 07:18:30.10:mnQ3FyhH
ガウディ本読んでから議論して欲しいね。
[sage] 2017/10/19(木) 08:25:03.58:Qitn7VqG

わかるわ。耳が痛い。教育することになって逆に知る事も多かったしな。
若手の新アイディアは、素直に教えてもらってる。
たまに俺が相槌しか話してないうちに「出直します」って言うから、どうやらテディベアとしても活用されてる模様。
デフォルトの名無しさん [sage] 2017/10/19(木) 08:44:29.39:CxX652pT

気持ち悪い
デフォルトの名無しさん [sage] 2017/10/19(木) 08:45:50.14:CxX652pT
自分の行動を素直にと修飾するところが完全に淫乱テディベア
デフォルトの名無しさん [sage] 2017/10/19(木) 20:46:11.30:SO5YirTn
オブジェクト指向を理解させたければ
まずはオブジェクトを理解させることからはじめないと

クラスやプロトタイプは二の次でいいし
責務や役割は別レイヤーの話
デフォルトの名無しさん [] 2017/10/20(金) 06:47:53.32:2DRMxDJ6
DDDって結構やってるもん?
デフォルトの名無しさん [] 2017/10/20(金) 07:15:39.98:VprmOZRL
ディスプレーディスパッチドライバ。
デフォルトの名無しさん [sage] 2017/10/20(金) 07:46:42.44:l3SzA2hH

IT後進国の日本ではまだほとんど導入されてないね
非正規化DB 、非レイヤー化、貧血ドメイン、トランザクションスクリプトが主流
デフォルトの名無しさん [] 2017/10/20(金) 08:25:54.77:VprmOZRL
韓国に学べ!
デフォルトの名無しさん [sage] 2017/10/20(金) 08:30:05.48:E/kZ39qH

3Dゲームはよくやる
デフォルトの名無しさん [sage] 2017/10/20(金) 08:43:33.27:cXXy/ND2

結構やってるでしょ
エヴァンス本から何年経ったやら…
デフォルトの名無しさん [] 2017/10/20(金) 08:54:44.62:2DRMxDJ6


完全に対立してるな。

個人的には比較的昔からある企業は前者で、若くて成功してる部類の企業は後者かな?と思うけど。

実際DDDやってるぜー、て現場はどういう特性なんだろ。
デフォルトの名無しさん [sage] 2017/10/20(金) 18:29:33.31:yLtxI7rs
要件定義や設計時にDDDの考え方を(一部)導入してるのと
実装含めて厳格にDDD導入してるのとで違うよね

前者は多いけど後者は少ない
は実装者の視点
は要件定義・設計者の視点
おそらく
デフォルトの名無しさん [sage] 2017/10/20(金) 20:39:31.31:QLYblo8q
たとえばをDDDでやるとどんな感じになるの?
DCIでやったときとの違いも知りたい
デフォルトの名無しさん [sage] 2017/10/20(金) 22:19:22.96:tVzPx1a9

まず本人を召還して質問攻めにする
デフォルトの名無しさん [sage] 2017/10/21(土) 01:13:21.31:Uy6nGuGD
アンドロイドアプリ開発って稼げるんかな?
デフォルトの名無しさん [sage] 2017/10/21(土) 01:50:48.55:7iF7m8RQ
レッドオーシャン
デフォルトの名無しさん [sage] 2017/10/21(土) 11:03:31.78:hrRqQerQ

業務アプリを受託で開発するのが主戦場
iOSと同時開発必須

自分で直接販売するのはバクチだね
アプリ数多いといってもニッチはまだまだ足りてない
名無しさん@そうだ選挙に行こう! Go to vote! [sage] 2017/10/22(日) 16:21:52.81:cbaZLKfH

別に複数あっていいと思うが
社員給与を振り込む
給与の分類か属性かで
名無しさん@そうだ選挙に行こう! Go to vote! [sage] 2017/10/22(日) 19:45:01.88:+ZCERvep

給与は社員に与えられるものだから
「社員に対して」は要らなくね?
デフォルトの名無しさん [sage] 2017/10/22(日) 20:06:35.35:rLFHcAK9
役員やパート・アルバイト等、社員以外のケースがあるんじゃね?
デフォルトの名無しさん [sage] 2017/10/22(日) 22:16:25.60:ACc+t4fi

お金を移動させる
デフォルトの名無しさん [] 2017/10/22(日) 22:16:28.27:guBNBPv4

目的語でひとくくりにするとわかりにくいけど
日本語では名詞が述語をどう修飾するかは格で区別されるから
格を考えればよいかと

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

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

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

有識者のみなさんはどうやってるの?
デフォルトの名無しさん [sage] 2017/10/24(火) 07:10:47.55:vrotHuwu
DDDならドメイン層とインフラ層のレイヤーは分けろ

つまりドメインのクラスが個々に
直接SQL文でDB叩いたりしない
デフォルトの名無しさん [sage] 2017/10/24(火) 07:28:15.97:lnfs4xW4

例えばドメインクラス「作業時間」にhogeプロジェクトの作業時間を問い合わせた時、作業時間クラスがDBクラス使って作業時間を教えてくれるんじゃないの?

この辺解らないとパフォーマンスの問題でアクティブレコードに走っちゃいそうです
デフォルトの名無しさん [sage] 2017/10/24(火) 07:38:44.12:vrotHuwu

たとえばソシャゲみたいなWebアプリをイメージしてみよう
一個アイテムを見るたびにDBアクセスしてたら重いから
画面を遷移するときにまとめてローディングするよな?

だからそういう風にインフラ層で
ある程度まとめてデータ取ってきて
ドメイン層の内部ではDBに直接触らないようにする
デフォルトの名無しさん [sage] 2017/10/24(火) 08:58:46.53:UVHXr0A6

それはレイヤ分けるメリットでなくて
レイヤ分けるデメリットをカバーする方法じゃないの
デフォルトの名無しさん [sage] 2017/10/24(火) 12:12:03.52:lnfs4xW4

あらかじめオブジェクトにぶち込むのかな
油断するとメモリ食いそう
デフォルトの名無しさん [sage] 2017/10/24(火) 12:12:39.91:1mA0bXuL

集約の単位が間違ってんじゃないの
デフォルトの名無しさん [sage] 2017/10/24(火) 12:15:40.46:lnfs4xW4

昔は画面単位にデータ取ってたけどトランザクションスクリプトアンチパターンになるから作業時間とか予算とかドメインでクラス分けたんだ

それぞれのクラスがデータベースに問い合わせるからウッホという状態に
デフォルトの名無しさん [sage] 2017/10/24(火) 17:47:57.40:cjHIRFnx

基本は集約一つにリポジトリ一つ
レポーティング用途の場合はドメインモデルやリポジトリを経由せずに
DBレイヤーに直接問い合わせるのも有り

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

Patterns, Principles, and Practices of Domain-Driven Designって本で
一つの章使ってレポーティングの実装パターンを紹介してるので読むといいと思う
デフォルトの名無しさん [sage] 2017/10/24(火) 19:37:04.66: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とドメインオブジェクトのマッピングを手書きするってのはそれはそれでめんどくさい
デフォルトの名無しさん [sage] 2017/10/24(火) 19:50:43.93:bxrjOehA

AutoMapper
デフォルトの名無しさん [sage] 2017/10/24(火) 20:00:23.46:zYnBGUyD

AutoMapperってやつそんな賢いの?
デフォルトの名無しさん [sage] 2017/10/24(火) 20:44:30.93:1mA0bXuL
逆にDDDこそORMだろ
集約をそのまま永続化したいんだから
デフォルトの名無しさん [sage] 2017/10/24(火) 21:35:54.97:bxrjOehA

使わないなんて考えられない
デフォルトの名無しさん [sage] 2017/10/24(火) 21:36:46.21:zYnBGUyD

どうかな
さっきも書いたようにDDDに忠実にドメインモデルを構築するとpublicプロパティが無くなって完全コンストラクタでインスタンスを構築しなければならない
DTOのようにフラットな構造にならない点でもORMで扱いにくい
デフォルトの名無しさん [sage] 2017/10/24(火) 21:46:26.94:zYnBGUyD
そもそもDBが単にオブジェクトの置き場所になるってのも疑問だよ
RDBは個々のオブジェクトではなく集合としてのビジネスルールを表現するのに適している
単なるデータストアではない
1ヶ月の間に正当な休暇を間に挟まず3営業日連続で欠勤した従業員にはペナルティを与えるといった業務ルールがあったらSQLで解決するほうがスマート
デフォルトの名無しさん [sage] 2017/10/24(火) 21:50:42.54:8vhM38kM
どのORM使ってるの?
いまどきORMのために可視性を変えたりしないでしょ
デフォルトの名無しさん [sage] 2017/10/24(火) 21:58:23.29:8vhM38kM

> そもそもDBが単にオブジェクトの置き場所になるってのも疑問だよ

DDDだろうとトランザクションスクリプトだろうとDBの役割は変わらないよ
ドメインモデルから見てあたかも単なるオブジェクトの置き場であるかのように振る舞うっていうのは、
そう振る舞うように作ってるからそうなるのであって、DBから見たら、アプリがDDDで作られてるかどうかなんてわからない
デフォルトの名無しさん [sage] 2017/10/24(火) 22:02:14.66:vrotHuwu

じつはそういう考え方もアリだと思う
SQLやPrologでビジネスルール書くのもアリ

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

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

OOでチマチマ差分を書いていく方が分かりやすい
これはなんでOOが主流なのかの理由でもあると思う
デフォルトの名無しさん [sage] 2017/10/24(火) 23:18:27.01:7kpfYeDE


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

普通にアプリでやったほうが柔軟性高そうだ
デフォルトの名無しさん [sage] 2017/10/25(水) 01:20:58.43:vWNNDC2i

RDBMS主体でやるプロジェクトもあるだろ
ただ古臭くて不便なことが多いからか
アプリケーション側でやるのがほとんど

技術者の数も違うからかな
デフォルトの名無しさん [sage] 2017/10/25(水) 07:21:56.95:xH/9oE/2
期待のデータベーススペシャリスト持ちが開発してくれたプログラム
1クラス1メソッドにSQLをぎっちり書いていてくれた
流石データベーススペシャリストだと思った
デフォルトの名無しさん [sage] 2017/10/25(水) 14:49:56.93:0GYD+24d
そんなんアーキテクチャ検討時に認識合わせしとけよ
単なる指示ミス
デフォルトの名無しさん [sage] 2017/10/25(水) 18:41:28.64:xH/9oE/2

チームリーダーは電気寄りのC使い
JAVAの実装にはノータッチ
デフォルトの名無しさん [sage] 2017/10/25(水) 19:15:55.71:xH/9oE/2
データベーススペシャリストがSQLしか知らんのは仕方ない

ソフ開持ってなきゃね
デフォルトの名無しさん [sage] 2017/10/25(水) 19:21:45.35:aatZ8FSF
オブジェクト指向のスペシャリストとは言ってないからな
デフォルトの名無しさん [sage] 2017/10/25(水) 19:39:46.07:Pb7+sINR
メンバー集める時はくだらん資格のことより影響を受けた本とか聞いた方がいい
デフォルトの名無しさん [sage] 2017/10/25(水) 19:51:28.91:U0g+4+bj
オブジェクトにメソッドでリクエスト飛ばすと答が返ってくるならそれはそれでいいような…
デフォルトの名無しさん [sage] 2017/10/25(水) 22:27:46.82:Iwa5PdiW

みたいな奴が指示する立場なわけないだろw
デフォルトの名無しさん [sage] 2017/10/25(水) 22:52:11.24:Pb7+sINR
DBスキルつけても負の遺産と有害な社内規約のせいで役に立たないことが多いね
データアクセス層でオブジェクトにマップしたらもう二度と中は見たくない
デフォルトの名無しさん [sage] 2017/10/25(水) 23:16:26.90:0GYD+24d

javaはともかくJAVAって書かれると
あっ・・・(察し)ってなるから気をつけて
デフォルトの名無しさん [sage] 2017/10/25(水) 23:17:51.80:Pb7+sINR
J(AvA)し
デフォルトの名無しさん [] 2017/10/26(木) 00:00:20.94:g5KvQD5L

アスペすぎるだろ
お前が気をつけろ
デフォルトの名無しさん [sage] 2017/10/26(木) 01:11:04.35:dPE1fcQ6
スクリプトの方はjava表記多いけど
Javaの方は書籍とかもJAVA表記多いよねぇ
デフォルトの名無しさん [sage] 2017/10/26(木) 01:17:09.43:1jsCLZfy
ネット校正員多いけど
そんな表記は本質に全然関係ない
デフォルトの名無しさん [sage] 2017/10/26(木) 02:05:07.05:1RkkpTof
JAVAが得意とかJAVASCRIPT経験5年とか書いてるの見て
まともなコード書けるやつだと思えるの?
デフォルトの名無しさん [sage] 2017/10/26(木) 03:24:25.76:6866r+hk
そんなことで何か判断してる気になってるオマ、恥ずかしいぜw
デフォルトの名無しさん [] 2017/10/26(木) 04:59:02.77:tVSriKDm
java - コマンド。
Java - 言語。
JAVA - 茶。
デフォルトの名無しさん [sage] 2017/10/26(木) 07:20:00.13:mjDXX7Bg

VBの絵本でプログラムを覚えました
非常に解りやすく良書だと思います
御社のお役に立ちたいです
デフォルトの名無しさん [sage] 2017/10/26(木) 07:44:35.72:Mi26Cf7P

不採用
デフォルトの名無しさん [sage] 2017/10/26(木) 08:27:35.90:GZLf9rra

わろちんこ
デフォルトの名無しさん [sage] 2017/10/26(木) 12:13:23.62:Tj52Vsp9
憂鬱なCプログラマのためのオブジェクト指向入門かなー
デフォルトの名無しさん [sage] 2017/10/26(木) 12:23:18.31:zDn623em

ワンピース
デフォルトの名無しさん [sage] 2017/10/26(木) 17:24:51.39:AKbjs7qE
読みにくくなるとかでクラス禁止になった

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

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

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

全部のメソッドに同じ処理をコピペしてるから修正の影響範囲がわけわからん
デフォルトの名無しさん [sage] 2017/10/26(木) 17:42:08.61:5JraUsKU
いや、いやいやいやいや
意外と侮れんぞそれ
デフォルトの名無しさん [sage] 2017/10/26(木) 17:56:41.42:uULs3yAC

カスなチームでまともな自分アピールならマ板でやれよ
デフォルトの名無しさん [sage] 2017/10/26(木) 18:00:39.29:5JraUsKU

そうは言っても仕事で
オブジェクト指向のメリットって
説明できんやろ?
やれるもんならやってみいや
デフォルトの名無しさん [sage] 2017/10/26(木) 19:31:42.55:e+Kal/eA
高卒非正規にそんなレベル要求すんなよ
デフォルトの名無しさん [sage] 2017/10/26(木) 19:35:59.43:5JraUsKU
結局、ここで人を馬鹿にしてる奴等もいざ自分が説明する立場になったら
何もできんということは覚えておいたらええよ
デフォルトの名無しさん [sage] 2017/10/26(木) 19:39:51.16:+Etvl7cI

同じコードをどこにコピペしたかわからんなるぐらいなら
クラスで一括にしたいなぁ
デフォルトの名無しさん [sage] 2017/10/26(木) 19:43:13.40:5JraUsKU

俺じゃなくて大卒正社員PM様に説明して差し上げろ
デフォルトの名無しさん [sage] 2017/10/26(木) 20:10:34.54:Ci1mUjz8

そいつここに呼んでこい
精神崩壊するまで論破して追い込んでやるよ
デフォルトの名無しさん [] 2017/10/26(木) 20:12:16.99:t2R1m7Go

黙れ無職、はい論破
デフォルトの名無しさん [] 2017/10/26(木) 20:16:04.62:t2R1m7Go
作っておしまいなソフトは多いし
規模が大きくないか、仕様が変わらないようなところなのかもしれないし
個別に修正するときはコピペした方が影響の範囲は小さくなるし
一か所見れば処理がわかるってんならコードの見通しもいいし
ソースコード見ない段階であれこれ言うのはちょっとちょっとちょっと
デフォルトの名無しさん [sage] 2017/10/27(金) 17:35:48.74:2941eAj7

作ってお終いなら俺は文句言わないよ
改造とバグ修正を投げられたから困ってるんだ
関心が分散しまくってる
高卒非正規の脳じゃオーバーロードだ
デフォルトの名無しさん [sage] 2017/10/27(金) 17:38:42.80:5X4PuMCl

そして無職か
早かったな
デフォルトの名無しさん [sage] 2017/10/27(金) 17:42:56.24:2941eAj7
無職じゃないって
つかクラス化した場合の有効性をコストで可視化しろって
もうバグ満載でリリースしてデスマーチコースだ
IT業界らしくなってきた
デフォルトの名無しさん [sage] 2017/10/27(金) 17:55:24.25:d3nx2286

ごめんけど、ここはオブジェクト指向を諦めた人のスレじゃないから
コピペだらけのトランザクションスクリプトが至高だと悟ったなら、それでやっていけばいいじゃん
わざわざ啓蒙しに来なくていいよ
デフォルトの名無しさん [sage] 2017/10/27(金) 18:19:51.82:WiM3d76u

返信先間違えてない?
デフォルトの名無しさん [sage] 2017/10/27(金) 18:20:59.58:/3yfU/y8

横からだがそれはコピペコードを勧めてるおじさんたちに言うべきだろ
デフォルトの名無しさん [sage] 2017/10/27(金) 18:21:31.07:WiM3d76u

共通のメソッド作ればいんじゃない?
クラスが駄目なら
デフォルトの名無しさん [sage] 2017/10/27(金) 21:26:57.91:2kHVS/Sf
オブジェクト指向がダメって人は
言語何使ってるんだ?
オブジェクト指向言語のAPI使ってないってこと?
デフォルトの名無しさん [sage] 2017/10/27(金) 21:29:19.70:xe5glOPz
オブジェクト指向ダメおじさんが棲んでいるのはC++
よくわかんだね
デフォルトの名無しさん [sage] 2017/10/28(土) 01:33:34.05:Yx58My1K
アップキャストの利点教えて
デフォルトの名無しさん [sage] 2017/10/28(土) 08:20:30.57: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();

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

シングルトンをどこが持ってるかが重要なんですか?
デフォルトの名無しさん [sage] 2017/10/28(土) 13:49:36.24:rFINW7JJ

安定のVB
デフォルトの名無しさん [sage] 2017/10/28(土) 15:22:23.29:GkEAGE6K

話になんないな
デフォルトの名無しさん [sage] 2017/10/28(土) 15:26:57.39:bXFe772l

なぜ話にならないの?
デフォルトの名無しさん [sage] 2017/10/28(土) 15:27:19.93:bXFe772l
VBには継承がないから!

みたいなことを言って恥をかくと良いよ
デフォルトの名無しさん [] 2017/10/28(土) 15:39:27.71:5jO14XmG
オブジェクト指向の言語を使っても
オブジェクト指向でプログラムを作ることにはならんでしょうに
staticメソッドを中心にプログラム組むことだってできるし
それなりの規模がないとオブジェクト指向は効果を発揮しないのじゃないかな
デフォルトの名無しさん [] 2017/10/28(土) 15:42:18.02:5jO14XmG
そいえば旧VBは型の継承はサポートしてるんだよね
昨今は実装の継承はあまりやらない方がいんじゃないかって言われてるし
旧VBはオブジェクト指向言語と言っていいと思う
旧VB+ラムダ式の言語があれば最強な気がする
デフォルトの名無しさん [sage] 2017/10/28(土) 16:07:07.99:rZWSN5Vz

IoCは概念
DIはデザインパターン
シングルトンはゴミ
デフォルトの名無しさん [sage] 2017/10/28(土) 16:14:28.71:GkEAGE6K

ポリシーのない言語の何を話せと
デフォルトの名無しさん [sage] 2017/10/28(土) 19:00:48.19:bXFe772l

あれあれ?ポリシーがないってだけ?

そのポリシーとやらは
オブジェクト指向にどう関係してくるんですか?
デフォルトの名無しさん [sage] 2017/10/28(土) 20:33:50.28:U6aWHNpT
VBが糞と言うよりVB使いにくそしかいないと言うことでしょ
言語に善悪はない
デフォルトの名無しさん [sage] 2017/10/28(土) 20:42:09.52:rZWSN5Vz
VBはラムダのFunction省略できないとめんどくさくてやだ
デフォルトの名無しさん [sage] 2017/10/28(土) 21:06:18.54:b0D8bUkC
「ナンバーズ-天才数学者の事件簿-」でFBIの技術官が犯人のwifi逆探知するのに
「ええ、ビジュアルベーシックで絞り込めば…」って言ってたし(ガクブル
デフォルトの名無しさん [sage] 2017/10/28(土) 21:11:03.11:rZWSN5Vz
スーパーハッカーはみんなVB使うよね
デフォルトの名無しさん [sage] 2017/10/28(土) 21:15:11.66:LbiBQBTu
vb.netになって出来ることはC#と同じになったのになんか書き方がいちいち冗長
デフォルトの名無しさん [sage] 2017/10/28(土) 22:27:57.05:GkEAGE6K
やはり話にならないらしい
VBに毒されたものの末路だな
デフォルトの名無しさん [sage] 2017/10/28(土) 22:33:02.48:/Db+MOdS
思いこみって怖いな
デフォルトの名無しさん [sage] 2017/10/29(日) 21:04:57.30:YXSJDIox

そりゃBASIC構文だからな
BASIC構文でラムダ式とか記述に無理がある
デフォルトの名無しさん [sage] 2017/10/29(日) 22:10:12.67:8/yZ+26E
VBってまだサポートされてんだっけ
Coreになってからさっぱり話題にならなくなったけど
デフォルトの名無しさん [sage] 2017/10/29(日) 22:16:42.10:4sjZmv7g
JavaScript併用しなければならないWeb開発だと文法違い過ぎるから敬遠されるだろうね
デフォルトの名無しさん [sage] 2017/10/30(月) 07:04:36.23:s8k71vXD
VBは言語の問題でなく使う奴が糞

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

4重ループにカウンタ現役
デフォルトの名無しさん [sage] 2017/10/30(月) 07:11:07.87:s8k71vXD
VBAはオブジェクト指向が出来るように近代化して欲しいと思ったけどVBAごときでオブジェクト指向導入する規模とかヤバそうだから現状維持と緩やかな死が良いね
デフォルトの名無しさん [sage] 2017/10/30(月) 07:17:28.85:s8k71vXD
ER図とクラス図が似てくるのは危険な匂いしてますか?

正規化した物理設計レベルじゃ違うけど外仕レベルじゃ同等になっちゃう
デフォルトの名無しさん [sage] 2017/10/31(火) 03:29:44.56:mdHqu73h

RDBMSの最適化進めてくと違ってこないか
後からクラスだけ変えるのもあるし
デフォルトの名無しさん [sage] 2017/11/01(水) 17:29:31.91:qqAk/1TW

内部設計になってDBの正規化始めると確かに違います
ただ外部設計ではほぼ同じになるのでER図とクラス図に差が無いんです
ER図要るのかこれってなるので世間様はどう折り合い付けてるのか気になりまして
デフォルトの名無しさん [sage] 2017/11/01(水) 19:42:14.01:4uxV0O6/
データベースは実装の奥底にあるものなので設計では何も決めない
データベースなしの状態で動くところまで実装してようやく、そろそろ永続化の実装考えようかって話が始まる
デフォルトの名無しさん [sage] 2017/11/01(水) 23:11:58.08:DVi/8EkI

そのDB使う他のアプリケーションには必要だろう
デフォルトの名無しさん [sage] 2017/11/02(木) 06:51:48.84:lwOkXqsb
異なるアプリでデータベースを共有するの迷惑
APIを用意してくれ
デフォルトの名無しさん [sage] 2017/11/02(木) 18:50:34.87:XzNKC0MY
マイクロサービスか
やりたいけど構築するのが面倒だ
誰か代わりに作ってくれ
デフォルトの名無しさん [] 2017/11/03(金) 00:25:37.71:g9SR2OMf
クラス依存症は、だいたいのところファンクションという概念すら理解できていないのが9割
クラスに格納されたデータという名詞的実体に安堵しているだけで
プログラムを書く才能も、システム設計する能力もないやつが
好き勝手にクラス図をかいて、ぼくのさいっきょなクラスチームを作るだけなんだよなあ

だから僕の考えたクラス構成という話題は出ても
そのクラスがどのように通信するかっていう話をオブジェクト指向信者は語らないの

なぜならばそのメッセージングを実装できないから
そのすばらしいクラスが単なるデータの塊でしかないことを
自分で書いた壮大な物語でカプセル化し、他人から見えなくしたいから

カプセル化って偉大だよなあ?
電卓やじゃんけんすら実装できないひ弱な自分を壮大なクラス図を書けばごまかせると錯覚できちゃうんだから
デフォルトの名無しさん [] 2017/11/03(金) 00:39:25.54:T1BwLucT
VB.Netはもう20年ほど前に完全に移行しているんだけどなぁ
VB馬鹿にするやつがどれだけオブジェクト指向理解してんのか疑問だな
デフォルトの名無しさん [sage] 2017/11/03(金) 01:01:02.20:EKwPnWZh

それならオブジェクトをシリアライズして保存した方が楽かな
キーは要るけど
デフォルトの名無しさん [sage] 2017/11/03(金) 01:02:36.32:EKwPnWZh
オブジェクトでプールして必要に応じて永続化してくれるようなサービスでもういいな
デフォルトの名無しさん [sage] 2017/11/03(金) 02:56:41.30:9CXEo34m

さすがに時代錯誤な感じ

今どきのメジャーな言語は
ほとんどクラス持ってるぞ
Java、C#、C++、Python、Ruby、PHP……
デフォルトの名無しさん [sage] 2017/11/03(金) 09:36:22.11:khFcMPIR

PHPをそこに並べる違和感
デフォルトの名無しさん [sage] 2017/11/03(金) 10:39:58.84:r8BoLq9w
間違ってないんだから問題ないだろ。

あとついでに無名クラスを持っている言語
PHP、・・・

クロージャーを持ってる言語
PHP、・・・

トレイトを持ってる言語
PHP、・・・

ジェネレータを持っている言語
PHP、・・・
デフォルトの名無しさん [] 2017/11/03(金) 11:12:35.69:CFYOACkT
PHPは最先端の言語だからな。だからこそ、バカには使いこなせない。
のに、バカがこぞって使うからクソ言語扱いされている。
デフォルトの名無しさん [sage] 2017/11/03(金) 11:32:59.46:11xKh3l5
PHPといえばPHP3だから仕方がない
デフォルトの名無しさん [] 2017/11/03(金) 11:53:34.15:OuG6RHrP
10年経ったことにも気づかない引きこもりがいる板だからな
10年前に見かけた与太を今日話すことに違和感をおぼえる知能もない
プログラミングできるわけじゃないから、技術的な話にも初心者の質問にも応えられない
「ただ」「昔見かけたもの」を「書く」だけ
デフォルトの名無しさん [sage] 2017/11/03(金) 20:34:02.69:gWq7s/sI

VB6のコードをそのままVB.NETに移植する仕事を何度したことか
デフォルトの名無しさん [sage] 2017/11/03(金) 20:37:17.28:gWq7s/sI
C系やる奴はPHPやJAVAもやってるけどVB使いはVBしかできないケースが多い
デフォルトの名無しさん [sage] 2017/11/03(金) 20:43:59.17:CsNI9L5l

ゴミを移植してゴミを作る仕事
デフォルトの名無しさん [sage] 2017/11/03(金) 23:15:38.46:+QQUmgGP

> VB.Netはもう20年ほど前に完全に移行しているんだけどなぁ
VB.netのリリースは2001年(16年前)なんだが...

> VB馬鹿にするやつがどれだけオブジェクト指向理解してんのか疑問だな
人の心配する前に自分の認知症の心配した方がいいぞ w
デフォルトの名無しさん [] 2017/11/03(金) 23:36:33.86:lQ0XoM3e
四捨五入してみろ
デフォルトの名無しさん [sage] 2017/11/03(金) 23:38:47.21:r8BoLq9w
0年になった
デフォルトの名無しさん [] 2017/11/04(土) 08:50:40.41:KxJ3WBAq
20年ほど前じゃない16年前だ <- これアスペすぎるだろ
デフォルトの名無しさん [sage] 2017/11/04(土) 08:56:19.44:/k8c/hp8
プログラマは基本アスペと考えてよい
デフォルトの名無しさん [sage] 2017/11/04(土) 12:02:51.50:sTeHaJ1X

20と16の区別もつかなくなってるのか w
デフォルトの名無しさん [sage] 2017/11/04(土) 12:16:47.10:gO0rp64l
Math.Round(16 / 10) * 10
デフォルトの名無しさん [sage] 2017/11/04(土) 12:19:19.48:fdoXNWBH
8進数の20は10進数の16
すなわち、20=16、とな
デフォルトの名無しさん [sage] 2017/11/04(土) 12:25:24.71:2EHXQrQJ

天才
デフォルトの名無しさん [sage] 2017/11/04(土) 12:33:11.68:ENl7xTTM

なら020って書かなきゃね
デフォルトの名無しさん [] 2017/11/04(土) 12:51:55.25:zD8APvjd
ヒント:8進数。
デフォルトの名無しさん [sage] 2017/11/05(日) 19:58:02.68:B4RjlPFm
VBとCOBOLはいまさら覚えたくねえなぁ
C系と記述が違うのに先進性は無いとか鬱になる
デフォルトの名無しさん [sage] 2017/11/05(日) 22:07:38.20:CePAYm1Z
嫌なら使うな
デフォルトの名無しさん [] 2017/11/06(月) 03:30:04.80:2Q/sT7xS
ヤフーブログの ttps://blogs.yahoo.co.jp/kamyu_2010 にデザパタ解説を発見した。
デフォルトの名無しさん [sage] 2017/11/06(月) 03:38:11.03:tjV5ukzM
分かりにくい解説だな
マルチポストする前に文章を見直せ
デフォルトの名無しさん [sage] 2017/11/06(月) 06:54:06.00:+zcozLzP
これはひどい
デフォルトの名無しさん [sage] 2017/11/08(水) 23:53:37.92:lvw6xF65

デザパタじゃなくてデザインパターンな
デフォルトの名無しさん [sage] 2017/11/10(金) 07:29:56.57:wtQgej54

ペチパーやドザーみたいな愛称だろアスペか
デフォルトの名無しさん [sage] 2017/11/10(金) 19:33:33.06:i2VZEM66

アスペじゃなくてアスペルガー症候群な
デフォルトの名無しさん [sage] 2017/11/10(金) 22:43:26.83:Mfymh77r

文脈的に、アスペルガー症候群じゃなくてアスペルガー症候群患者な
デフォルトの名無しさん [sage] 2017/11/10(金) 22:53:19.54:hftGMpVC

これがアスペルガー症候群患者なんだな
デフォルトの名無しさん [] 2017/11/10(金) 22:57:56.01:7i6+bCDW

ガチアスペルガー症候群患者乙
デフォルトの名無しさん [sage] 2017/11/10(金) 23:30:07.23:Ww/tyRwt
どうやったらこんなつまんないレスを返せるんだよ...
重症やな w
デフォルトの名無しさん [] 2017/11/10(金) 23:31:12.69:8c9+Jy54
どうやったらこんなつまんないレスを返せるんだよ...
重症やな w
デフォルトの名無しさん [] 2017/11/10(金) 23:34:23.55:x9Tf8I1u

ガチアスペルガー症候群患者乙






デフォルトの名無しさん [sage] 2017/11/10(金) 23:43:05.04:hftGMpVC
ガチとか低能過ぎるやろ
823 [sage] 2017/11/11(土) 00:14:54.76:xhBZikg9
は俺じゃねぇからな
デフォルトの名無しさん [sage] 2017/11/11(土) 00:30:35.12:lcuwgMKR
ガチじゃなくてガチンコな
デフォルトの名無しさん [sage] 2017/11/11(土) 00:42:07.97:Sl8bQtQ2
ガはいらなくない?
デフォルトの名無しさん [] 2017/11/11(土) 01:09:18.75:QwHnz2ZY

オッサンか?
デフォルトの名無しさん [sage] 2017/11/11(土) 01:17:31.05:TdmokUpS
ひょっとしてガチが若いとか思ってるんじゃないよな w
デフォルトの名無しさん [] 2017/11/11(土) 01:21:19.20:QwHnz2ZY
若いと思ってるっつーか実際若いしな
ガチとか使う奴=低脳、バカっぽいって発想がオッサンぽい
デフォルトの名無しさん [sage] 2017/11/11(土) 04:47:12.59:TdyG/ulQ
アスペ指向スレッドの会話 174
デフォルトの名無しさん [sage] 2017/11/11(土) 09:58:35.10:TdmokUpS

ごめん、どうみてもお前の方がおっさんだよ ww
デフォルトの名無しさん [sage] 2017/11/11(土) 10:09:10.57:Lx/BUCVW
ttp://i.imgur.com/sWco4kY.jpg
デフォルトの名無しさん [sage] 2017/11/11(土) 11:01:18.10:Zi5KnTyx
アスペクト指向プログラミングってのは具体的にどんなのかよく分からんわ
興味ないから
デフォルトの名無しさん [sage] 2017/11/11(土) 13:24:33.88:n/0UZzMc
興味ないなら知る必要ない
デフォルトの名無しさん [] 2017/11/11(土) 18:10:49.46:QwHnz2ZY

え?おまえって未成年か何か?
デフォルトの名無しさん [sage] 2017/11/11(土) 18:34:36.42:TdmokUpS
もうそのレスがおっさん臭い w
デフォルトの名無しさん [] 2017/11/11(土) 18:52:46.73:EGHwL5V1
おっさんは嫌いかい?
デフォルトの名無しさん [] 2017/11/11(土) 18:53:43.53:EGHwL5V1
おっさんは知識と経験と優しさでできています
残りの9割は脂肪です
デフォルトの名無しさん [sage] 2017/11/11(土) 19:41:06.94:nQmTPzFJ
おっさんは別に嫌いじゃないけどみたく勘違いしてる奴はキモい
デフォルトの名無しさん [sage] 2017/11/11(土) 21:36:07.55:TdyG/ulQ
オッサン指向ガチムチな設計 174
デフォルトの名無しさん [] 2017/11/12(日) 11:03:42.20:hG4wTZ8S
おっさん煽りでスレ消化して楽しいんだろうか
デフォルトの名無しさん [] 2017/11/12(日) 11:10:51.09:H0u2BwIs
アスペ志向プログラミング。
デフォルトの名無しさん [sage] 2017/11/12(日) 13:09:56.66:CLpxq670

ホモはお帰りください
デフォルトの名無しさん [sage] 2017/12/05(火) 13:42:11.58:x/Ziu4N3
やっぱり青木 淳いいな
若い時に心酔して、経験積むうちに忘れていたが
ようやく言わんとすることが分かつて来た
デフォルトの名無しさん [] 2018/01/04(木) 13:45:00.27:rLoh+wxC
2ちゃんねる自体、どこかの機能でデザインパターンつかわれてるの?
デフォルトの名無しさん [] 2018/01/05(金) 18:43:53.01:kDZQv7Ud

つこてるマメがちがうよ
デフォルトの名無しさん [] 2018/01/27(土) 22:10:53.07:FKF1aZVQ
クラス図とER図の違いって継承関係が
あるかないかだと思ってるんだけど、
DBのテーブルって継承はないわけじゃん、
継承とか知識レベル/操作レベルってDB設計的には
どう対応するの?
デフォルトの名無しさん [] 2018/01/28(日) 07:50:43.37:JtfoYsxK
いや、が知らないだけで、ERモデリング技法にも
継承に相当するサブセット(部分集合)の表現は存在している
明らかに欠けているのはメソッド(ストアドプロシージャ)かな
デフォルトの名無しさん [sage] 2018/01/28(日) 08:06:43.20:9retBgHA
CRUDは外部的だね

データ保護に対しては各種制約を設けるしかない

それらを言語側で埋めるのがORマッピングだったりDAOパターンだったり
デフォルトの名無しさん [] 2018/01/28(日) 20:53:59.18:iKmgvq7C

いやそれは分かったが実際のテーブルはどうするんだよ
親クラスと 子クラスA 子クラスBのテーブル全部別々に
作るの?
ここでいいう親子は継承の親子関係のことで
外部キーでの関連のことではないものとする。
デフォルトの名無しさん [sage] 2018/01/28(日) 21:10:28.78:LAVjxJs1
考え方次第かな?

一つのテーブルに全カラム持たせるか差分情報だけのテーブルを連結するか
デフォルトの名無しさん [sage] 2018/03/31(土) 13:51:12.70:O6Ruc86y
オブジェクト指向の考え方を教えてください

指定した2点を通る線を描画するプログラムを作ろうと思っています。
・色
・線の太さ
こんなプロパティを持つクラス「DrawLine」を考えています。

さらにこのクラスを継承を用いて
・2点間のみ線を引く線分クラス
・2点を通る直線クラス
・2点のうち片方を始点に持つ半直線クラス
を派生させようかと思っています。

これとは別に描画のインターフェースを担うクラス「LineInterface」を用意しようと思っています
・線を引く
・線を消す
・2点の位置を変更を受け付ける
・色の変更を受け付ける
・線の太さの変更を受け付ける
・線分、直線、半直線の変更を受け付ける

さて、ここで疑問なのですが、インターフェースを担うクラス「LineInterface」は
内部に色や線の太さ、線分・直線・半直線の状態を記憶するbool値型のフラグ
ないしはenum型の値(線分・直線・半直線)を持つべきでしょうか?

最初はこの手のフラグには頼らない設計を心がけてみました。
色、線の太さ、線分・直線・半直線、これらの状態が変更されるたびに
クラス「DrawLine」のインスタンスを作成し直せばいいと思ったからです。
ただすぐに壁にぶち当たりまして、たとえば色を変更しようと思いクラス「DrawLine」の
インスタンスを作り直そうと思ったとき、それが線分クラスなのか半直線クラスなのか
直線クラスなのかは状態を記録しておかないと判断できないことに気付きました。
インターフェースクラスには最低限の内部状態はbool値enum値フラグとして保持しておくべきでしょうか?
デフォルトの名無しさん [] 2018/03/31(土) 14:36:01.69:c97ae/y4
筋が悪い
デフォルトの名無しさん [sage] 2018/03/31(土) 15:08:51.89:jo8oJ0bD
まずを先に読んで「もっと何か具体的に言ってやれよw」と思ったが
その後を頑張って読んだら、言いたい事は既にに書いてあった
デフォルトの名無しさん [sage] 2018/03/31(土) 15:12:00.87:O6Ruc86y
出直してきまつ(´;ω;`)ウゥッ
デフォルトの名無しさん [] 2018/03/31(土) 15:19:37.25:bjBtCztz
なぜか観てしまう!!サバイバル系youtuberまとめ
ttp://tokyohitori.hatenablog.com/entry/2016/10/01/102830
あのPewDiePieがついに、初心YouTuber向けに「視聴回数」「チャンネル登録者数」を増やすコツを公開!
ttp://naototube.com/2017/08/14/for-new-youtubers/
27歳で年収8億円 女性ユーチューバー「リリー・シン」の生き方
ttps://headlines.yahoo.co.jp/article?a=20170802-00017174-forbes-bus_all
1年で何十億円も稼ぐ高収入ユーチューバー世界ランキングトップ10
ttps://gigazine.net/news/20151016-highest-paid-youtuber-2015/
おもちゃのレビューで年間12億円! 今、話題のYouTuberは6歳の男の子
ttps://www.businessinsider.jp/post-108355
彼女はいかにして750万人のファンがいるYouTubeスターとなったのか?
ttps://www.businessinsider.jp/post-242
1億円稼ぐ9歳のYouTuberがすごすぎる……アメリカで話題のEvanTubeHD
ttps://weekly.ascii.jp/elem/000/000/305/305548/
専業YouTuberがYouTubeでの稼ぎ方具体的に教えます。ネタ切れしない方法は〇〇するだけ。
ttps://www.youtube.com/watch?v=Co9a9fHfReo
YouTubeで稼げるジャンルは〇〇動画です。YouTube講座
ttps://www.youtube.com/watch?v=_Nps8xb5czQ
デフォルトの名無しさん [] 2018/03/31(土) 15:23:11.79:c97ae/y4
test
デフォルトの名無しさん [sage] 2018/03/31(土) 15:28:08.71:vu/Huc/I
長文書いてしまう人はもうちょっと図や箇条書きして考えまとめた方がいいな
デフォルトの名無しさん [] 2018/03/31(土) 16:04:12.88:fnj+62QA
とりあえずC#で書くとこんな感じか

class abstract LineBase{
 public float width{get; private set;}
 public Color color{get; private set;}
 public Point start{get; private set;}
 public Point end{get; private set;}

 // 初期値をセット
 public LineBase(引数){}
 public LineBase(LineBase instance){}

 // 共通メソッドを実装
 public void SetWidth(int width){}
 public void SetColor(Color col){}
 public void SetPoint(Point start, Point end){}
 public void Eraser(){}

 public virtual void Draw(){} // 仮想メソッド
}

class SegmentLine: LineBase{
 public SegmentLine(引数): base(引数){}
 public SegmentLine(LineBase instance): base(instance){}
 public overrider void Draw(){} // 線分の描画処理を実装
}

class StraightLine: LineBase{
 public SegmentLine(引数): base(引数){}
 public SegmentLine(LineBase instance): base(instance){}
 public overrider void Draw(){} // 直線の描画処理を実装
}
デフォルトの名無しさん [] 2018/03/31(土) 16:07:03.50:fnj+62QA

何のクラスかは正直どうでもいい
こんな感じで基底型のインスタンスをコンストラクタに渡してコピーしとけ

// 線分クラスを生成
LineBase segment = new SegmentLine(初期値を渡す);

// 線分のデータで直線クラスを生成
LineBase straight = new StraightLine(segment);
デフォルトの名無しさん [sage] 2018/03/31(土) 16:42:41.66:O6Ruc86y

最初線分を描いて、途中で気が変わってやっぱり直線を描きたいな、となったときは
インスタンスsegmentを消去したのち、インスタンスstraightを選択してDraw()を実行する
という理解でよろしいでしょうか?

さらにその状態で色を変えたいときはインスタンスstraightを選んだまま色を変えるということでしょうか?

インスタンスsegmentとインスタンスstraight、いま選んでいるのはどちらか?という情報は
どこかに格納しておくべきでしょうか?
デフォルトの名無しさん [sage] 2018/03/31(土) 19:12:42.71:NUZUQ+fU

・線の引き方の違いを継承で実装する
・線のデータをフラグで持つ

特にこの二点はオブジェクト指向として筋が良くない

・線の引き方はメソッドで実装
・データはフラグじゃなくオブジェクトで渡す

こっちの方がオススメ
デフォルトの名無しさん [sage] 2018/03/31(土) 19:51:14.18:O6Ruc86y

クラス「DrawLine」は単純なDraw()メソッドは廃止して代わりに

DrawStraightLine()…直線を描画するメソッド
DrawSegmentLine()…線分を描画するメソッド
DrawHalfLine()…半直線を描画するメソッド

を実装し、インターフェースからクラス「DrawLine」には

・2点の情報が格納された構造体
・色、線の太さの情報が格納された構造体

を渡す。

という理解でよろしいでしょうか?

ちなみにインターフェース上では線の引き方はフラグ等で格納しておいても構いませんか?
ユーザーがインターフェースに対して
SetSegmentLine()
などの命令を実行したらそれに応じてbool値に記憶させておくというのが常道でしょうか?
デフォルトの名無しさん [sage] 2018/04/01(日) 03:19:52.65:qrIxuUzF

前半はそう。継承を使うのはダメじゃないんだけど
継承を使いこなすのは非常に難しいので
慣れるまではメソッドをたくさん生やす方が分かりやすい


後半はフラグとかいらない
そういう発想がまだないんだろうけど
デザインパターン勉強するとよく分かる

オブジェクトの生成と使用を分けて
なるべく値の設定を生成の一回だけで済ますと
フラグの不整合のバグが減ってソフトが安定する
これがオブジェクト指向を使うメリットのひとつ

特にオブジェクトが常に動き回るゲームとかじゃなくて
作図ソフトだったら基本的に一度オブジェクトを作ったら
そのまま静的な図になるから位置は不変データにして
もし位置を修正するときにはオブジェクトを再生成する

なんでそうするかっていうとフラグがバラバラ増えていくと
どこで値を変更したのか不明で後でメンテが困難になってくるから
できる限り生成時に一括で設定するようにするの
デフォルトの名無しさん [sage] 2018/04/01(日) 11:40:58.30:eiVy9NnE

こんな感じでどうでしょうか。

インターフェースを担うクラス「LineInterface」から
実際に線を描画するクラス「DrawLine」に向けて
新たに以下のような3番目のクラス「Information」を作成し、このインスタンスを投げようかと思います。
クラス「Information」には2点の位置座標、色、線の太さ、半直線か直線か線分かの情報が格納されています。

Class Information
{
public:
  double x1, y1, x2, y2;
  int color;
  int lineWidth;
  bool leftExtendFlag, rightExtendFlag;


};

線を描画するのに必要な情報は全てこのクラスに格納・隠蔽します。
ユーザーから線に関する新たな情報を受け付けたら
デフォルトの名無しさん [sage] 2018/04/01(日) 11:44:40.29:eiVy9NnE
あ、失礼。途中で書き込んでしまいましたorz

ユーザーから線に関する新たな情報を受け付けたら
クラスInformationに用意した専用メソッドを通してメンバ変数にデータがセットされます。
直接メンバ変数を操作するわけではないので(bool型のフラグを直接いじることはない)
安全面でも良いかと

このインスタンスを受け取った「DrawLine」クラスはメンバ変数を直接読み込み(publicで
宣言したのでアクセス可能)、線を描画します。
書き換えはせず、新たなデータを受け取とるたびに「DrawLine」クラスのインスタンスを
新規に作成しようと思います(なのでデータはコンストラクタで受け取るのみ)。

こんな感じでオブジェクト指向になるでしょうか?
873 [sage] 2018/04/01(日) 20:00:03.25:qrIxuUzF


細かいこと言うと第三のクラス名はまだしも「LineInfo」とかだろうね
実用ソフトだと「Line」だけじゃなく「Box」とか「Circle」とか増えてくから

細かいとこでキリがないけど
でもそれで組んでみればいいんじゃないの

OOPの要点を一言でいうと疎結合にすることで
ゴチャゴチャするようだったらまた設計を見直していく
デフォルトの名無しさん [sage] 2018/04/01(日) 22:44:15.70:eiVy9NnE

> 細かいとこでキリがないけど
> でもそれで組んでみればいいんじゃないの

了解しました、この方向で組んでみます

> OOPの要点を一言でいうと疎結合にすることで
> ゴチャゴチャするようだったらまた設計を見直していく

プログラムに関する本はちまたに溢れかえっているんですが
オブジェクト指向の設計に関する本ってなかなか見かけませんね
学ぶだけでなく説明する方も難しいのかもしれません>オブジェクト指向
デフォルトの名無しさん [sage] 2018/04/01(日) 23:09:11.53:qrIxuUzF

>オブジェクト指向の設計に関する本
探せばいっぱいあるよ

でも本格的なのはたいてい翻訳書で
分厚くて高くて難しいから読むの大変だとは思う
デフォルトの名無しさん [sage] 2018/04/01(日) 23:15:35.41:eiVy9NnE

そうでしたか、本屋さん行って見ます(´・ω・`)ノ
デフォルトの名無しさん [sage] 2018/04/01(日) 23:54:31.59:voVzLJKC

多分そもそもオブジェクト指向を「学ぶもの」と思っている時点で間違い。
あれは悟るものだ。


おそらくOOPの練習なのだろうけど、そもそも題材も悪い。
オブジェクトの切り方は例えば .NET でも見てみればいいでしょ。
Graphicクラスに全部メソッドが付いている。
ttp://https://msdn.microsoft.com/ja-jp/library/system.drawing.graphics">ttps://msdn.microsoft.com/ja-jp/library/system.drawing.graphics(v=vs.110).aspx
というか、線分と半直線と直線を別のオブジェクトにする意味が分からない。
余計使いにくくなるだけだ。何をどう抽象化(共通化)すべきなのか、全く分かってない。

ただな、OOPを「初心者」が理解するのは不可能なんだよ。
心はデフォルトの名無しさん [sage] 2018/04/01(日) 23:59:53.19:eiVy9NnE

了解しました
とにかく書いてみます(`・ω・´)
デフォルトの名無しさん [sage] 2018/04/02(月) 00:22:40.39:zddvN9B7

まあ君はやろうとしているだけかなりマシだよ。
やろうとせずに知ろうとだけする奴も多いからね。
そもそも、

・これこれこうで、後はよきにはからえ

と処理を投げられる物をオブジェクトにするべきであって、
逆に、そうでない物をオブジェクトにしても余計に話が混乱するだけ。
「隠蔽」も、初心者はとにかく「隠蔽」しようとするが、これも間違いで、
(外部から使うときに)そもそも見たくも知りたくもない物を「隠蔽」するんだよ。

といっても、やらないと分からないだろうから、まずは頑張れ。
デフォルトの名無しさん [] 2018/04/02(月) 04:18:10.81:3ewhMOuh
>OOPはC++作者が再定義したもの

元凶だよな
Javaも再定義してるけど
デフォルトの名無しさん [] 2018/04/02(月) 08:32:10.05:i02Vx/uo
(第1章 はじめに 2頁)
たとえば、CycはFredという名前の男が朝にひげをそるという話が理解できなかった。
Cycの推論エンジンは、この話の中に矛盾を見つけた。Cycは人間には電気の部品がないことは知っているが、
Fredが電気カミソリを持っていたので、エンティティ「Fredがひげそり中(FredWhileShaving)」
には電気の部品が含まれていると考えた。したがって、CycはFredがひげをそっている間、
Fredはそれでも人間なのかと尋ねた。

『深層学習』
著者:
Ian Goodfellow, イアングッドフェロー,
Yoshua Bengio, ヨシュアベンジオ,
Aaron Courville, アーロンカービル
デフォルトの名無しさん [sage] 2018/04/02(月) 23:04:05.50:d0x/o4SK
アメリカのジョークはよく分からん。
きっと翻訳が悪いんだな
デフォルトの名無しさん [] 2018/04/03(火) 00:23:48.15:cU9BUIMs
電気の部品が誤訳か
デフォルトの名無しさん [sage] 2018/04/03(火) 07:27:20.27:93hqFpFO

C++(というかその設計者)はSmalltalk(同)のメッセージングのOOPを
ユーザー定義型(=抽象データ型)のOOPとして再定義したわけだけど
JavaはOOPの何を再定義したの?
デフォルトの名無しさん [sage] 2018/04/03(火) 08:14:01.65:U8mOCWOb
C++からSmalltalkにちょい戻したのがJavaのOOPじゃね
デフォルトの名無しさん [sage] 2018/04/03(火) 08:14:49.22:U8mOCWOb
Javaは抽象データ型のOOPをより純化させたとも言えるか
デフォルトの名無しさん [sage] 2018/04/03(火) 14:49:04.54:W7EC8mO+
smalltalkの臭すぎて堪らんところをc++で置き換えたのがJava
デフォルトの名無しさん [] 2018/04/03(火) 16:24:37.04:R6gDm2yr
一番上手くやってるのは Objective-C だと思う
デフォルトの名無しさん [sage] 2018/04/03(火) 19:48:24.93:J58Y9OWc
Obj-C好きなのだが中身がC丸出しなのがなぁ…
swiftは文法モダンに!でまた“ここで処理投げてます!”が
わからないようにする悪弊組み込まれちゃったし…
(それは退歩なんだってば)
デフォルトの名無しさん [sage] 2018/04/03(火) 20:48:38.44:MVEz7YW1
20年前はObjcet-Cなんて一部の物好きの研究者しか使ってなかった

FORTANやPascalと共に滅亡して時代はC++かJAVAの二強になると
堅く信じていた当時からすれば今のObject-Cの人気ぶりには隔世の感がある
デフォルトの名無しさん [sage] 2018/04/03(火) 21:27:13.17:/J95OWxU
objcが人気なんじゃなくてiPhoneが人気なだけ
swiftの普及の早さを見ればわかるでしょ、みんな嫌々objcを使ってたって
デフォルトの名無しさん [sage] 2018/04/03(火) 21:53:44.19:xHu3FOx+
使われているかどうかと人気があるかどうかは別だからね
嫌いだけど選択肢が少ないから仕方なく使っているって人も多い

だって実際に

> 嫌われる傾向が強いほかの言語には、「PHP」「Objective-C」
>「CoffeeScript」「Ruby」などが挙がっている。


ttps://builder.japan.zdnet.com/tool/35109803/

> Stack Overflowは、この嫌われている言語ランキングに
> 使用したデータを、求職情報ページの「Developer Story」ページから
> 集めた。Developer Storyは、開発者が自分の職歴や実績などを
> まとめて公開できるサービスだが、このページには使いたい言語と使いたくない言語のタグを追加できるようになっている。
>
> 嫌われる傾向が強いほかの言語には、「PHP」「Objective-C」
>「CoffeeScript」「Ruby」などが挙がっている。
>
> 一方、嫌う人が少ない言語には、「R」「Kotlin」「TypeScript」
>「Rust」「Bash」「Clojure」「Swift」「Python」「JavaScript」「Go」などが並んだ。
デフォルトの名無しさん [sage] 2018/04/03(火) 21:59:40.75:xHu3FOx+
こっちは別のデータ

ttps://news.mynavi.jp/article/20170330-a133/

> fossBytesに3月28日(米国時間)に掲載された記事「Which Are The Most Loved and Most
> Hated Programming Languages|2017」が、Stack Overflow Developer Survey 2017の
> 調査結果を引き合いに出し、開発者に愛されているプログラミング言語と嫌われている
> プログラミング言語のトップ25を伝えた。愛されているプログラミング言語1位は
> Rustで、これにSmalltalkとTypescript、Swift、Goが続いている。
>
> 嫌われているプログラミング言語トップ25は次のとおり。

> Visual Basic 6
> VBA
> CoffeeScript
> VB.NET
> Matlab
> Objective-C
> Assembly
> Perl
> Lua
> Hack
デフォルトの名無しさん [] 2018/04/04(水) 03:20:59.36:h2UR4/YM

なんでVBとかVBAが入ってないし
デフォルトの名無しさん [] 2018/04/04(水) 03:22:51.75:h2UR4/YM

そっちも Java がスルーされてるな
CoffeeScript は悪くないと思うんだけど
D とか Julia は呼ばれてないな
デフォルトの名無しさん [sage] 2018/04/04(水) 06:54:46.68:ITrH2VCT
Smalltalk死滅したと思ってたw普通に処理系とかある
ttps://dotinstall.com/lessons/basic_smalltalk
デフォルトの名無しさん [sage] 2018/04/04(水) 07:59:57.79:xIeCjOW7
Smalltalkは今でも現役だよ
日本では壊滅的に過疎ってるだけで
デフォルトの名無しさん [sage] 2018/04/04(水) 09:40:51.95:XMHeCdXK
おまえの思いは要らない
現役である証拠を書けばいい
デフォルトの名無しさん [sage] 2018/04/04(水) 09:52:34.51:xIeCjOW7
お前のツッコミも余計
手ぶらの批判は誰でもできる
事実としてPharoの処理系は更新され続けてる
デフォルトの名無しさん [sage] 2018/04/04(水) 13:33:18.19:1Ww7GQWk
最近ようやくしょぼい専用VCS諦めてしょぼいGitHubクライアントを組み込みにしだしたみたいだね
デフォルトの名無しさん [sage] 2018/04/04(水) 15:35:00.13:AI7Zq0uN
更新されていたら現役なのか……
よし、Dは現役だな
デフォルトの名無しさん [sage] 2018/04/04(水) 16:05:22.98:1Ww7GQWk
それはない
デフォルトの名無しさん [sage] 2018/04/04(水) 16:15:15.27:Vp4f9mRG
インスタンス造り機に「このクラスのインスタンスを作れ」ってぶち込むより
クラスに自分のインスタンス造る機能が入ってて
「おまえのコピーをこの名前で作れ」の方が個人的には関与する言語機能が減って好き。
デフォルトの名無しさん [] 2018/04/04(水) 17:04:03.96:Pmay6Vdj
javascriptか
デフォルトの名無しさん [sage] 2018/04/05(木) 00:06:12.16:gzVEs0yB

> 事実としてPharoの処理系は更新され続けてる

更新されているからと言って現役ということにはならない
あたりまえのこと言わせんな
デフォルトの名無しさん [sage] 2018/04/05(木) 00:08:00.87:gzVEs0yB

> 「おまえのコピーをこの名前で作れ」の方が個人的には関与する言語機能が減って好き。

コピーしかできないのか?
なにもないところから作ることはできないのか?
コピーを作った後に、値を変更してインスタンスを完成させるのか?
デフォルトの名無しさん [sage] 2018/04/05(木) 00:43:38.66:raTA0cM5
new Test() を Test.New() にでもすんのか?
デフォルトの名無しさん [sage] 2018/04/05(木) 09:23:27.96:ZXf9eqYN
それを言うなら Test.Default().Clone() とか Test.Default().Copy() かと

> 作った後に、値を変更してインスタンスを完成させるのか?

これってプロトタイプベースだから必要なわけではなく、クラスベースでもコンストラクタで普通にやってる作業だよね?
デフォルトの名無しさん [sage] 2018/04/05(木) 09:31:20.59:ZXf9eqYN

他の言語の場合は、更新程度なら必要条件にすらならないかもしれないけれど
Smalltalkみたいにドックフードとして食らうことが避けられず
動的かつ可塑性を最大の利点にしている言語・環境に限れば
更新(変化)し提供され続けていることは少なからぬ人に使われている証拠として十分だろうね
デフォルトの名無しさん [sage] 2018/04/05(木) 09:36:41.34:zY62GpOZ
ドックフードとして食らうことが避けられず
動的かつ可塑性を最大の利点にしている言語・環境
デフォルトの名無しさん [sage] 2018/04/05(木) 13:36:49.22:ZXf9eqYN
説明必要だった?
デフォルトの名無しさん [sage] 2018/04/05(木) 13:39:17.15:JfUQNi2M
ドックフード
デフォルトの名無しさん [sage] 2018/04/05(木) 14:17:43.32:NoTQwqd+
ドックフード
意味の説明もさることながら、どこの業界の用語か知りたい
デフォルトの名無しさん [sage] 2018/04/05(木) 14:33:11.81:JfUQNi2M
波止場食堂の料理ってことかな
ttps://tabelog.com/kanagawa/A1401/A140106/14031740/
デフォルトの名無しさん [sage] 2018/04/05(木) 21:08:45.28:YQEitOA5
ここらへんでどうよ

マイクロソフトが社員に勧める“ドッグフード”栄養学
ttps://japan.cnet.com/article/20060067/
デフォルトの名無しさん [sage] 2018/04/05(木) 21:13:07.08:YQEitOA5
ああなんだグかクかって話かつまらん
デフォルトの名無しさん [sage] 2018/04/05(木) 23:45:55.89:YZZKvgKX

作る人がいることの証明にはなってるが
使う人がいることの証明になってないよ

誰も使って無くても、更新し続けることはできるんだから
デフォルトの名無しさん [sage] 2018/04/06(金) 07:23:27.16:LPJ18IcZ
たとえばMatzはRubyをほとんど使わないけどRubyに変更を加え続けていたしそれは容易だ
Rubyに限らず通常の言語の場合たとえ使う人がゼロでもリリースし続けることは理論的に可能

しかしSmalltalkの場合、Smalltalkを使わずにそれに変化を加えることはできないんだよ
デフォルトの名無しさん [sage] 2018/04/06(金) 07:32:26.80:8wNEeXKm
>Smalltalkの場合、Smalltalkを使わずにそれに変化を加えることはできない

それが正しいとしても
Smalltalk処理系の開発者はその処理系を使い続けている
ってことになるだけで
Smalltalk処理系の開発者以外の人がその処理系を使い続けている
かどうかは分からないよな
デフォルトの名無しさん [sage] 2018/04/06(金) 08:09:41.10:psgMbVRj
RubyにできてSmalltlkにできないはずがない
デフォルトの名無しさん [sage] 2018/04/06(金) 09:04:24.09:MsWWfJyW

他の言語では 処理系開発者=利用者 には必ずしもならないが
Smalltalkではその特殊性から 処理系開発者=利用者 がほぼ成り立つ
したがって、Smalltalkは更新されリリースされていれば利用者は必ずいる

上にもあるがこれだけだよ君はいったい何と戦っていて何を証明したいんだ?
「利用者」の定義をしぼればいつかはSmalltalkの利用者はゼロにできるけど
それだと「俺ほどの人間のアンテナにひっかからないSmalltalkは死滅しているも同然」という情弱識者とたいしてかわらんぞ

もし本当にSmalltalkが実務等で使われているか知りたければ sorabito "smalltalk" とかでググるか
ttp://pharo.org/success/ にアクセスして事例を精査してみればいいと思うけど
実際のところSmalltalkがどうあろうが端から興味なんてないんだろ?
デフォルトの名無しさん [] 2018/04/06(金) 09:42:07.15:sTfZcU1Y

プロトタイプベースでもコンストラクタ定義すればいいだけだよな
デフォルトの名無しさん [sage] 2018/04/06(金) 09:43:26.17:8wNEeXKm
Pharoを使っているのはPharoを開発している人たちだけってことか
ttps://pharo.org/
デフォルトの名無しさん [sage] 2018/04/06(金) 10:15:31.78:MsWWfJyW

たぶん の = の誤りの指摘だと思うんで念のためお詫びと訂正しておくと、
これは「〜ならば」の間違いなので申し訳ないけど適宜読み替えてほしい
Smalltalkであっても利用者 = 処理系開発者 の関係は必ずしも成り立たない
ついSmalltalkのメッセージ式っぽく考えて交換法則を忘れてしまった^^;

まあ屁理屈をこねればSmalltalkにおける開発とはすなわち言語や環境の拡張に他ならないので
利用者はすべて処理系開発者だとも言えなくもないけどそれはさすがに言い過ぎだろうしここで主張したいことではない
デフォルトの名無しさん [sage] 2018/04/06(金) 10:22:42.82:ZnmviTnR
Smalltalkは
海外だと事例けっこうあるんだけどね
日本だとあんまり使われてない
デフォルトの名無しさん [sage] 2018/04/06(金) 10:39:28.53:8wNEeXKm
xがSmalltalk処理系の開発者ならばxはそのSmalltalk処理系の利用者である

というのが正しいとしても、処理系開発者以外に利用者がいるとは言えない
が言ってるのも「処理系開発者以外の利用者」についてだと思う
デフォルトの名無しさん [sage] 2018/04/06(金) 10:40:22.92:iXquvPXW
Objective-Cに吸い取られ、吸い取ったObjective-Cも死にかかっている悲劇の言語
デフォルトの名無しさん [sage] 2018/04/06(金) 10:44:41.31:MsWWfJyW

こだわるね^^;
では処理系開発者をその言語の利用者にカウントしてはいけない合理的な理由を述べてよ
デフォルトの名無しさん [sage] 2018/04/06(金) 10:52:55.90:JkCTmz46
処理系開発者をユーザーにカウントしてもいいなら多分Dもユーザーおるな
デフォルトの名無しさん [sage] 2018/04/06(金) 11:01:06.13:8wNEeXKm

>処理系開発者をその言語の利用者にカウントしてはいけない

誰もそんなことは言っていないわけだが

利用者が処理系の開発者だけの状況を、その言語は現役とか
その言語は普及しているとか言わないだろ
が言ってるのもたぶんそういうこと
デフォルトの名無しさん [sage] 2018/04/06(金) 11:48:03.10:MsWWfJyW

まず君の思う「現役」の定義を明確にしてよ
これまで誰も主張していない「普及」をいきなり持ち出してきたけど、それが答え?
もし一定のシェアをとっていない言語を「現役」と言ってはいけないって法があるなら
今のSmalltalkは誰が見ても明らかに違うだろうこれで満足?

ただシェアこそないがコミュニティはかつてないほど活発だしまして「死滅」からほど遠いのも事実
これをもって「今でも現役」と表現することも決して間違いではないと思うが違うのか?

そもそもの「現役」はを受けての「死滅」なぞしていないという意味でしかない
その文脈を読めてないが自分の考える「現役」と違うってだけの単純な話を
なにをそんなにこだわって執拗につっかかり続けるのかわからん
Smalltalkが今も「現役」を名乗ると個人的になにか不都合でもあるの?
デフォルトの名無しさん [sage] 2018/04/06(金) 11:59:37.86:3wQ1F3ea
Objective-CがiOS絡みで再び出てきた時に自分が理解できず
「変態言語!変態言語!!」ってほざいてた頭ゆるいアンチApple老人が
いやあれはねとsmalltalkerが擁護するの見て
『ならsmalltalkも俺の敵だ!』ってやってるだけだからw
デフォルトの名無しさん [sage] 2018/04/06(金) 12:27:10.77:8wNEeXKm

912>更新(変化)し提供され続けていることは少なからぬ人に使われている証拠として十分だ

とか言い出すからおかしくなる
処理系が更新されてるから少なからぬ人に使われているのは間違いない、だから現役だって主張だろ
「少なからぬ人に使われている証拠」とかいうのがあるなら最初からそれを出せばいい

処理系が更新されているからと言って現役ということにはならないのだから
デフォルトの名無しさん [sage] 2018/04/06(金) 12:52:57.07:MsWWfJyW

なるほど「少なからぬ」を文字通り「普及」や相応のシェアを持っているという主張だと短絡して反発したわけね
これもやはり 「死滅」=利用者ゼロあるいは数名 に対し「そんな少なくはない」という程度の意味だと思うけど

では何人くらいが使っていれば「現役」を名乗っていいわけ?とにかくそれを明確にしてよ
デフォルトの名無しさん [sage] 2018/04/06(金) 12:58:53.40:8wNEeXKm

知らん
俺が言いたいのは

処理系が更新されているからと言って「少なからぬ人に使われている」ことにはならない
「少なからぬ人に使われている証拠」とかいうのがあるなら最初からそれを出せばいい

ってだけだし、が言ってるのもたぶんそういうこと
デフォルトの名無しさん [sage] 2018/04/06(金) 13:48:16.89:JkCTmz46
短絡して反発
デフォルトの名無しさん [sage] 2018/04/06(金) 13:50:08.64:JkCTmz46
ってか利用者ゼロもしくは数名じゃないなら現役なんだったら、やっぱりDは現役じゃん
デフォルトの名無しさん [sage] 2018/04/06(金) 15:10:21.25:EuPCLdj/

改めて訊くけど処理系開発側になったらもう利用者としてカウントされなくなるのはなぜ?
利用者が処理系の気にくわない部分に手を加えてそれが採用されるパターンとかよくあると思うんだけど
それともその程度なら開発側とは考えなくても良いの?その場合の線引きは?
デフォルトの名無しさん [sage] 2018/04/06(金) 15:28:16.59:8wNEeXKm

なぜたったこれだけのことを理解できないのだろう

>処理系が更新されているからと言って「少なからぬ人に使われている」ことにはならない
>「少なからぬ人に使われている証拠」とかいうのがあるなら最初からそれを出せばいい
デフォルトの名無しさん [sage] 2018/04/06(金) 17:17:11.35:wJqpEogz
それ、あなたが設定した勝利条件ですよね。
デフォルトの名無しさん [sage] 2018/04/06(金) 17:33:39.79:A2hg00U/
Smalltalk や Pharo をGoogleトレンドで調べてみると、Windows 95の 1/3 でWindows 3.1 やD languageと同等くらい
(なお、言語だけじゃなくOSと比較したのはSmalltalkは環境であるってのに敬意を評して)

ttps://trends.google.co.jp/trends/explore?q=Smalltalk,Windows%2095,Windows%203.1,Pharo,D%20Language

Smalltalk、もしかしたらWindows 3.1と同じくらいのユーザ数に使われてるかも知れんね。凄いね!
デフォルトの名無しさん [sage] 2018/04/06(金) 17:35:51.79:wJqpEogz
アニメDVDの出荷数とか毎週調べてそうw
デフォルトの名無しさん [sage] 2018/04/06(金) 18:14:07.35:iXquvPXW
うわ、見苦し
デフォルトの名無しさん [sage] 2018/04/06(金) 21:13:21.34:3wQ1F3ea
「売れてるアニメが勝ちなんだから売れてる証拠をおまえが出せよな!」
(相手にされない)
「ほらDVDの円盤の販売数を調べたぞ!ほっら売れてないからおまえの負け〜俺の勝ちー!」
(一同失笑)
デフォルトの名無しさん [sage] 2018/04/06(金) 21:39:10.60:BhlurXrp
脈絡なくアニメで例え出すのも意味不明でキメェし、
別のSmalltalkerがそれに普通に乗っかるのもキメェ
デフォルトの名無しさん [sage] 2018/04/06(金) 21:45:48.91:gJMJciRt

> 改めて訊くけど処理系開発側になったらもう利用者としてカウントされなくなるのはなぜ?
「処理系開発側になったらもう利用者としてカウントされなくなる」とは言っていない


話の順番が逆で
先にお前が「処理系開発側を利用者としてカウントする」などと
おかしなことを言ったから、お前の間違い指摘しただけ

ここでお前が言ったことを改めて言い直してみようか?

「利用者数がわからないので、処理系開発者を利用者に含めていいですか?」

良いというわけがなかろう?
デフォルトの名無しさん [sage] 2018/04/07(土) 08:48:35.78:bpYQikic
Smalltalk = Windows 3.1

www
デフォルトの名無しさん [sage] 2018/04/07(土) 10:19:42.41:f0JiZPxN
メーリングリストの投稿者数(重複除く)から見積もると
Pharo Smalltalkの利用者は数千人くらいはいる

Haskellのだいたい半分くらい
デフォルトの名無しさん [sage] 2018/04/07(土) 10:35:25.27:K06NcGxe
Haskellの利用者数が2万人以下?ねーよw
デフォルトの名無しさん [sage] 2018/04/07(土) 11:18:19.63:f0JiZPxN
少し前のデータだけどHaskellもSmalltalkもさして利用者数に増減はないとして参考にすると
Smalltalk利用者の規模はHaskellのおおよそ半分というのは別の解析でも同じ

ttp://www.dataists.com/2010/12/ranking-the-popularity-of-programming-langauges/
デフォルトの名無しさん [] 2018/04/07(土) 11:49:47.91:sP9L7wqi
それ人気が低い順にランキングで並べて表示してるだけで、利用者数の絶対値じゃないよ
Smalltalkは約20位でHaskellが約40位だけど、これはSmalltalkとHaskellの間に他の言語が20個あるという意味でしかない

そのリンクの下方にrawdataがあるけど(ttp://www.dataists.com/wp-content/uploads/2010/12/language_ranks1.csv)、
この中で絶対値はtagcountだけで、それだとsmalltalkが189に対しHaskellが1896で10倍の差がある
デフォルトの名無しさん [] 2018/04/07(土) 12:42:55.45:Of9pall5
複数のプログラミング言語を使いこなしてる奴なんて世界でも僅かだろ。
比較する資格すら持たない連中がシェアなるもので一喜一憂するのは何で?
デフォルトの名無しさん [sage] 2018/04/07(土) 12:54:32.48:y0NHVjlZ
そうか?
デフォルトの名無しさん [sage] 2018/04/07(土) 12:58:55.13:/W+SxBIg
GitHubのリポジトリーで直近1ヶ月の開発者の数を比べてみると
こちらもくしくもてGlasgow Haskell Compilerの36名に対しPharo Smalltalkの16名と約半分だった

ttps://github.com/ghc/ghc/pulse/monthly
ttps://github.com/pharo-project/pharo/pulse/monthly
デフォルトの名無しさん [sage] 2018/04/07(土) 13:03:00.34:y0NHVjlZ
そんなデータが役に立つんならDだって16人なんだよなあ
ttps://github.com/dlang/dmd/pulse/monthly
デフォルトの名無しさん [sage] 2018/04/07(土) 13:44:56.97:Ohs7bjSh

"sorabito smalltalk" でググったら、

ベンチャーで最初にいたエンジニアがsmalltalkerでsmalltalkを採用したとか、
そのエンジニア(元CTO)は去年12月に辞めたとか、
いまの採用ページにはsmalltalkに一言も触れてないとか、

色々あったんだろうなって想像できて面白かったわ。ありがとうw
デフォルトの名無しさん [sage] 2018/04/07(土) 14:52:12.96:3aYyVZM2
Smalltalk = Windows 3.1 = D
デフォルトの名無しさん [sage] 2018/04/07(土) 16:15:24.12:Bd8sR+xj
オブジェクト指向言語でメンバ変数やメソッドをpublicにすべきかprivateにすべきかは
長年議論されてきてることだけど、中には

「privateで変数やメソッドを宣言するくらいならその部分をクラスにまとめて外に追い出してしまえばいい」
「洗練されたプログラムは変数・メソッドともにpublicだけで十分」

という意見もあるんだけどこれってどう思う?
デフォルトの名無しさん [] 2018/04/07(土) 16:17:51.83:vVe4gpjb
pythonの方法は合理的
デフォルトの名無しさん [sage] 2018/04/07(土) 16:19:49.34:C4tJt4pN
> 「洗練されたプログラムは変数・メソッドともにpublicだけで十分」
洗練されて無くてもpublicだけで十分といえるので

「洗練されたプログラムである」という判断が別に必要になる
デフォルトの名無しさん [sage] 2018/04/07(土) 16:35:52.31:y0NHVjlZ
プロパティがあるならとりあえずpublicにしといたらいいんじゃない?
デフォルトの名無しさん [sage] 2018/04/07(土) 22:08:27.17:cSksy2F8
publicもprivateも両方とも有るのが良いよ
選択肢が無くなったり少なくなったりすると利用し難くなる事も有るし
使う人のレベルや理解度もまちまちなんだから
staticだらけでやる人がいても構わないし
どちらか一方になって片方が使えなくなる方がやだな
洗練されているかどうかは悦に浸っている人が勝手に浸かっていればいいし
デフォルトの名無しさん [sage] 2018/04/08(日) 06:20:36.36:02MXQevY
テセウスの船

勢い5万以上のスレをメールでお知らせするサービス、実施中!!
憧れボディをGETしたい!その夢、ボニックで!

新着レスの表示

2ch勢いランキング アーカイブ プログラム板ランキング

凡例:

レス番

100 (赤) → 2つ以上レスが付いている
100 (紫) → 1つ以上レスが付いている

名前

名無しさん (青) → sage のレス
名無しさん (緑) → age のレス

ID

ID:xxxxxxx (赤) → 発言が3つ以上のID
ID:xxxxxxx (青) → 発言が2つ以上のID

このページは2ch勢いランキングが作成したアーカイブです。削除についてはこちら