オブジェクト指向システムの設計 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 テセウスの船
凡例:
レス番
100 (赤) → 2つ以上レスが付いている
100 (紫) → 1つ以上レスが付いている
名前
名無しさん (青) → sage のレス
名無しさん (緑) → age のレス
ID
ID:xxxxxxx (赤) → 発言が3つ以上のID
ID:xxxxxxx (青) → 発言が2つ以上のID
このページは2ch勢いランキング が作成したアーカイブです。削除についてはこちら 。