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

■ このスレッドは過去ログ倉庫に格納されています
1uy ◆e6.oHu1j.o
垢版 |
2016/07/09(土) 00:35:13.95ID:Mn3UGZ+O
前スレ
オブジェクト指向システムの設計 171 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1465636703/
2017/01/08(日) 10:35:35.87ID:uhuLxfGv
> 物事をシンプルに考えていくと自然とOOPにたどり着く

逆だろうね
物事を自分のおつむの程度にしかとらえられない人間がようやくたどり着いたのが>>227が書てるOOPもどき
この程度の理解の人間がOOPを真に理解してそのメリットを引き出せているとはとうてい思えない
2017/01/08(日) 10:35:39.50ID:jdkn79Su
>>229
残念ながらこれもOOPがらみでよく見られる光景
追い詰められてならまだしもわりと最初のほうからこれだもんね
さらにそれにしたってそれすらを長文でぐだぐだと…推して知るべし
2017/01/08(日) 11:28:11.39ID:TXqGgIea
2chの長文すら読めないオジサンって、普段技術書読まないんですかあ?
2017/01/08(日) 11:45:15.83ID:kab+ZCih
技術書ってクソばかりじゃないですか
2017/01/08(日) 12:53:03.81ID:MJfiP+Ss
>>226
デストラクタはOOPと同時ですよ
2017/01/08(日) 13:04:04.65ID:TNnQVUnB
protectedっていつ使うんですかぁ?中途半端じゃないですかぁ?
2017/01/08(日) 13:07:40.60ID:TXqGgIea
継承やUTで簡単に使えるようにするため
privateは全てprotectedにしろと言われたことあったわ
2017/01/08(日) 13:23:09.13ID:kab+ZCih
継承っていう仕組みがクソ。疎結合とはなんだったのかって気分にしてくれる。
2017/01/08(日) 13:34:11.82ID:kab+ZCih
OOPのメリットとして吹聴される要素の8割はクソ。
カプセル化はクソ(めんどくさい)
継承はクソ(親子のねっとりしたつながりがキモイ)
多態は野ぐそ(多態のための汎化、インタフェース抽出とか勘違いも甚だしい。保守性に逆行している)
俺OOP使ってこんな曲芸できます案件多すぎクソ。
2017/01/08(日) 13:38:11.45ID:tl4nBuMM
葡萄に手が届かない狐さんのたわごと
2017/01/08(日) 14:08:24.06ID:TXqGgIea
>>239
車輪的再発明すきそう
2017/01/08(日) 14:08:45.35ID:XDbKIsfA
OOPみたいな簡単な仕組みも理解できない人って可哀想
もっと体動かすだけとか根性あればなんとかなる仕事に転職しないの?
2017/01/08(日) 14:17:09.32ID:+qBxgbmJ
OOPは本当に簡単で短絡的な思考のすえたどり着く結論だからね
オブジェクトに操作が内包されているというのは
まるで利権主義で、縦割り行政で、日本的といえる
自分の仕事しかしないし、利権はぜった他人に渡さない
利権という物質的なオブジェクトにすべてが紐づいていて整理されている

まぁ実用面では便利な部分もあるんだが
外でOOPサイコーとかいうと人格を疑われかねない
本音と建て前でこっそり使うものだ
2017/01/08(日) 15:26:35.22ID:TXqGgIea
OOPを無くした人類はどこへ向かうのか
245236
垢版 |
2017/01/08(日) 15:47:12.81ID:TNnQVUnB
オブジェクト指向を用いるメリット
「ラクして、楽しく、良いもの」を作れる

スッキリJavaより抜粋
2017/01/08(日) 16:12:47.12ID:TXqGgIea
「ラクして、楽しく、良いもの」を作れる
オブジェクト指向登場後のソフトウェア業界は
さぞかし良い世界になったんだろなあ
2017/01/08(日) 16:19:04.51ID:kab+ZCih
とてつもなく良い世界にはなってる。
2017/01/08(日) 16:46:50.39ID:XDbKIsfA
簡単になりすぎて捌ける規模が大きくなったから
逆に要求が膨れ上がって結局辛い世になってる気もするが
まあCOBOLとかやらされるよかマシかな
2017/01/08(日) 16:51:03.49ID:hENayCqC
オブジェクト志向言語使っててもアホが考えた社内規約とやらとヘボいフレームワークで全く楽にならねえw
2017/01/08(日) 17:26:00.28ID:XDbKIsfA
>>249
あーわかる
なぜか規約もフレームワークも手続型っぽいんだよな
2017/01/08(日) 19:34:42.91ID:oIuk3BCz
オブジェクト指向の利点って明確にならないね
2017/01/08(日) 21:51:12.89ID:tl4nBuMM
そういやこのスレって、どんな話題で始まったんだっけ?
「オブジェクト指向の利点を明確にする」
だったっけ?
2017/01/08(日) 22:30:47.12ID:oIuk3BCz
>>252
まずメリットが明確にならないとやる意味もわからなくてさ
2017/01/08(日) 23:00:17.73ID:iT+T8lZs
>>251
俺も最近正直そう思うようになった

最初の頃:おぶじぇくとしこう?
途中:OOP!ポリモ!デザパタ本!OOSC本!
その後:関数型?関数と変数だったら変数散らかるんじゃないんけ!
そののち:意外と関数型記述性ある!不思議と短く書けるなんやこれ!
しばらくして:いや?非OOPでも意外と書けた!
 OOP-OOPLというより大事なんは単にモジュール性や!直交性や!
 徹底してインタフェースと実装のシンプルさを保つことや!
今:そんでOOPのメリットって何なんやろな?
2017/01/08(日) 23:23:47.58ID:XDbKIsfA
そういう本質的に重要な事を記述しやすいってところだろ?
2017/01/08(日) 23:34:45.33ID:oIuk3BCz
>>255
え?
全然意味わかんない
2017/01/08(日) 23:40:45.17ID:XDbKIsfA
>>256
そのうちわかるよ
2017/01/08(日) 23:49:40.92ID:Y13a86EN
でたw
「そのうち」としか答えない相手から聞き出せることはもう無い
2017/01/08(日) 23:58:45.01ID:GQKjgtEl
>>254
要するに編集方針の違いでしかないんだよ。
出来るやつが書けばどれでもどうとでもなる。
それだけ。
それよりOAOO/DRY/メトリックス(トポロジー)の方が重要。
2017/01/09(月) 00:35:10.65ID:XasE0eMK
ソースのどこに記述するか?って方式の話でしかないよね
ボタン1を押したときの処理Aはオブジェクト指向で記述しようがそれ以外で記述しようが
ソースのどこかに記述しなければならない
オブジェクト指向ってのはつまるところその様式美



別にどこだっていいじゃん( ´∀`)b
2017/01/09(月) 01:00:59.79ID:Dm7q6S9e
そしてウンポコPのペチプァみたいなゴミ屑コードができあがる
2017/01/09(月) 07:16:32.07ID:MB0kUoDj
そのボタン1は、UIコントロールの基底クラスを継承するというOOPで作られてるとは思うけど
まぁだからといって使う側がOOPに従わなきゃならん、ということにはならないな

ボタン1を使いながら「OOPなんて不要!」と言ってるとしたらアホだとは思うが
2017/01/09(月) 07:18:15.57ID:XasE0eMK
>>262
話の主旨もわからず回答とかおめでてーな
2017/01/09(月) 10:27:05.05ID:VxLyi546
イベントハンドラの引数に押されたボタンのid渡すコード見るたびに
せっかくのオブジェクト指向が台無しになってる感はある。
2017/01/10(火) 22:51:34.90ID:drzFW1uA
クソコードハラスメントって概念を提唱したい
書いた本人が意図する、しないにかかわらず、相手が不快に思い、
相手が自身の尊厳を傷つけられたと感じるようなクソコードを指します。

糞レベル1. 汚いコードだなぁと思う
糞レベル2. 汚すぎて読むのためらう
糞レベル3. どうしたらこうなっちゃうのか理解不能
糞レベル4. なぜこれを人に見せたのか理解不能
2017/01/11(水) 00:22:47.67ID:GtOiWPCh
大概書いた奴は既に現場にいないという現実

某糞PHPの糞保守案件でガチで撲殺してやりたいコードあったわ
2017/01/11(水) 00:55:08.27ID:t4W503XG
自社で保守する仕事なら綺麗に書くけど
同業他社が保守するなら難解な方がいいだろ
足を引っ張って競争が優位になる
2017/01/11(水) 00:58:40.69ID:p4WB0UzK
無駄
2017/01/11(水) 00:58:42.43ID:GtOiWPCh
>>267
こんなんだから凋落してくんだよジャップランド土人が
2017/01/11(水) 01:03:37.68ID:t4W503XG
アベノミクスで不景気だしどこも余裕がない
毎日残業で安月給じゃそりゃ人格も歪んでくる
2017/01/11(水) 01:06:16.95ID:1SbN3a75
>>265
その全てをパスしているが動かないコードと
その全てを満たしているが動くコードの
どちらを持っていくかと言われたら迷わず糞を持っていく俺
2017/01/11(水) 01:20:12.02ID:GtOiWPCh
>>271
動くなんて大前提だよ
そんなんだから脳みそまで糞まみれなんだよボケナス
殺すぞ
2017/01/11(水) 06:50:15.75ID:1SbN3a75
>>272
動いた上でさらに付加する価値だろ?
そんなの省かれるに決まってるだろ
いい加減テメェのこだわりは重要じゃねぇって気付けよ
274デフォルトの名無しさん
垢版 |
2017/01/11(水) 12:29:20.79ID:1hmax6h/
結論が出た様です
>>265のセンスのない造語の使用は却下されました
妥当な結果でしょう
2017/01/11(水) 22:20:40.95ID:R6uUA9rB
仕様が無いのになぜ動いていると言えるのか。
2017/01/11(水) 22:53:40.84ID:SOQiv9G3
動いてるとも動いてないとも言えない
これが波動関数ってやつさ
2017/01/11(水) 23:44:57.82ID:GtOiWPCh
>>275
仕様がない=動作が正=動いている
2017/01/11(水) 23:53:04.21ID:SOQiv9G3
仕様がないつまり未定義
つまり何が起こってもおかしくない
パルプンテ状態
2017/01/12(木) 08:29:14.43ID:D/kCxt4Z
Cの悪口はやめろ
2017/01/14(土) 20:38:16.71ID:2kEkn3lr
初期化以降はリードオンリーとするフィールドint barがある場合
class Foo {
private int bar;
public Foo(int bar) {this.bar = bar;}
public int getBar() {return bar;} // ゲッターだけ公開
}
↑こうするより↓こうしたほうが色々気持ちよくない?
class Foo {
public final int bar; // C#ではfinalのかわりにreadonly
public Foo(int bar) {this.bar = bar;}
}
どうよ?
2017/01/14(土) 21:48:54.83ID:YGCVk3Sf
>>280
C#ならプロパティ使えばよくね
2017/01/14(土) 21:56:28.41ID:rLoB6nGZ
>>281
Java脳だから仕方ない
2017/01/14(土) 23:11:55.85ID:/w8IJdhk
C#は、自動プロパティの初期化もできるようになったしな
2017/01/15(日) 09:41:20.06ID:h+wxmfZm
OOPでフィールドを丸出しなんてはしたないことはやめてください
2017/01/15(日) 19:09:57.72ID:L9FFXvsx
>>284
それに対する俺の考えはこう
・あるものが不変で良いなら不変にしておきたい
・不変であるのならメソッドを経由しなくていい
・フィールドをpublicにしておける言語がある理由もそこらへんじゃないのかなっ
どう?
「OOPで〜」に対する返事にはなってないかもしれないけど
2017/01/15(日) 19:25:01.82ID:h+wxmfZm
フィールドは実装
実装を晒しては行けない
2017/01/15(日) 19:43:31.26ID:0NZmkTyB
オブジェクト指向的にはプロパティへのアクセスはメッセージに限定してカプセル化としたいんじゃないかなぁ?
って思う
288285
垢版 |
2017/01/15(日) 20:03:27.72ID:zmg1eHAc
元の主張はいったん置いとくけど

>>286 >>287
そういうOOPLがあったらいいのにね(あるかどうかは知らない)
それはそれでスッキリすると思うよ

あとクラス図なんかにフィールド含まれてるのすら嫌だもん
>>286的理由で
インタフェースで考えていたいレベルに実装が飛び出てるのが嫌だしダメだと思う
2017/01/15(日) 20:05:23.89ID:kU0DmNyE
そういうOOPLってのは
フィールドをpublicに出来ない言語って意味ね
2017/01/15(日) 23:28:22.35ID:W9Vj9w+K
ま、はしかみたいなものだね
OOの美学みたいな考えがあるんだろうけど
よくよく考えると大した概念ではないし、本質的でもない
多くのOOPはマルチメソッドをサポートしていないので
二つのオブジェクトに跨る処理をどちらに書こうかという
問題にぶち当たるし、得てしてそういった複数のオブジェクトに跨がる処理が
そのプログラムの本質的な部分であったりもするからね
プログラムの簡単な部分に関しては簡単に書ける、それがOOP
2017/01/15(日) 23:55:46.52ID:W9Vj9w+K
OOはどちらかといえばデータ構造に基づいた設計手法で
(あ、クラスはデータじゃなくて機能って言う人もいるだろうが
データに対する機能を提供している側面があるので・・)
空間に基づいた設計手法といえるが
当然、時間に基づいた考え方というのもあり得て
プログラムの本質が手続きであり、命令を上から順番に実行していくものだとするなら
こちらのほうが本題かもしれなく、少なくとも何がどの順で実行されるか
良くわからないという事態だけは避けなければならない
あまり自律的なオブジェクトを設計してはダメってこと
AがBのメソッドを呼んで、その中で今度はBがAのメソッドを呼び出す・・・
ということは避けなければならない
なぜならAがBのメソッドを呼び出したとき、Aは処理の途中であり
その状態でBがAのメソッドを呼び出すのは危険だから
デッドロックの危険性もある
オブジェクト同士がメッセージをパッシングし合い、まるで生態系のように振る舞い
結果として何らかの機能が提供されるというのは、機能の観点からは遠回りであるし
何がどの順で実行されるかよくわからないという意味で、手続き的には厄介だ
俺たちは何かのシミュレーションがしたいというわけではない
AとBをコミュニケートされるなら、それらの親にあたる部分が仲介すればよく
AとBが直接コミュニケートする必要はない
そうすれば手順が明確になる
オブジェクトとは良きパーツであるべき
2017/01/16(月) 00:16:59.04ID:WtkYzKjH
private Integer id;
private String domain;

String getAccountId() {
return domain + "-" + id.toString() + ;
}

こんな感じで、ゲッタの方が処理挟まないといけんくなったとき、ラクダからちゃう?
でもやっぱaccountId定義してコンストラクタ初期化すれば
やっぱフィールドおっ広げいいかとも思っちゃったり
2017/01/16(月) 06:36:24.60ID:5GH26V/A
リフレクションでめんどくさいからやめろよ
2017/01/16(月) 10:25:44.18ID:Keb10HxT
>>292
それはじめると君の同僚たちもそれに倣って、
結果、画面にもSQLにも業務ロジックにも、至る所に文字列操作が書かれるぞ
連結してaccountId作ったり、accountIdを文字数や正規表現でidとdomainにバラしたり…
2017/01/16(月) 23:15:52.19ID:WtkYzKjH
class User {
private Integer id;
private String domain;

String getAccountId() {
return domain + "-" + id.toString() + ;
}
}

ならええやろ
user.getAccountId()や

至る所で
String aid = user.getDomain() + "-" + user.getId();
こんなんされるよりまし
2017/01/16(月) 23:43:04.52ID:7tn+c1o5
それだと至る所でハイフンでsplitされるって話だろ
AccountId値型を作ろう
2017/03/25(土) 12:41:38.33ID:Hepb4FxQ
instanceおじさんをレイオフする会を発足します
2017/03/26(日) 09:22:55.90ID:BMgG41Fb
本来であればフィールドメンバと引数とわずかばかりのシステムメソッドで処理を完結するのがベストなのだが、
それしようとすると、やりたいことをやるために必要な情報がなかったりして
親の親から引数を渡し直さないとけなくなったりしてそうこうしてるうちに
結局グローバル変数やシングルトン(instance)で便利になったと喜んでしまう性。
2017/03/26(日) 22:59:55.37ID:EKCv78dE
>>295
現時点でCallerには「domain-id」の文字列以外必要ないなら、それでOK
Callerもid or domainが単独で必要ならgetIdやgetDomainもつける

IDだけじゃなくて、たとえばなんかのログインフォームのようにメールアドレスもサポートするならクラス側で承ける
文字列返すかAcccontDataクラスでも作るかは
idの形式があと3つ4つあるか(ついったと顔ブックとなんちゃらinアカでもログインOKみたいな、ならクラス)
or メルアドのみで数年やれるか(なら文字列でサクっと実装しちまえよ)による
2017/04/20(木) 23:17:36.80ID:nIwh3CMn
ワインと豆腐には旅をさせちゃあいけない
という山岡さんの名言がある

俺は変数にも旅はさせてはいけないと思う
つまり、変数はprivateにのみしておいて
それを外に参照させたり渡したりしないうちは安泰だということ
2017/04/21(金) 03:45:03.38ID:vq22u+1l
漫画を引用する様な見識の狭い奴の言う事を誰が本気で聞くのか
語りたい事があるなら自分自身の言葉で語れ
302デフォルトの名無しさん
垢版 |
2017/04/21(金) 12:33:54.90ID:e2S2gBzR
旅をするのは変数ではなく値なんだけどね
2017/04/21(金) 21:12:23.25ID:JwbSy4qm
グロバール変数やめました
シングルトンもやめました
結果、
オブジェクトをたらい回しにしまくりんぐ地獄
2017/04/23(日) 15:03:38.82ID:jdVuS3ql
郵便物が来たってメモはたらい回しでいいけど、
郵便物自体はたらい回しするなよ。
2017/04/23(日) 15:28:16.71ID:mKAZq6VZ
それは郵便物オブジェクトが人間オブジェクトにメッセージパッシングして言ってんの?
2017/04/23(日) 15:45:39.68ID:jdVuS3ql
郵便物オブジェクトは何もしないだろ。
メッセージをパッシングしているのはメッセンジャーさ。
2017/04/23(日) 16:15:44.68ID:mKAZq6VZ
メッセンジャーヴォーイズはどこで何をしてるんだい??
2017/04/23(日) 21:23:18.06ID:mOY43HnC
staticおじさんは今日も元気でした
2017/04/23(日) 22:31:23.91ID:HqNmAyPa
>>308
言葉に気をつけろよ
キャットドア問題の前にお前らはボロ雑巾のように敗れ去っているのだから
2017/04/23(日) 23:16:24.84ID:fe+cTrdN
勝ち負けだったのか
2017/04/23(日) 23:26:57.94ID:HqNmAyPa
>>310
負けは認めるんだな
2017/04/23(日) 23:46:36.74ID:fe+cTrdN
ごめんやけど最近来たから勝負してたところを見たことない
どんな勝負だったの?
2017/04/24(月) 00:08:36.40ID:ix3EvlHl
あとキャットドアって初めて聞いたんだけど何なの?
2017/04/24(月) 00:13:48.70ID:ix3EvlHl
>>キャットドア問題
ググってもAmazonしか出てこない、、、
2017/04/24(月) 00:51:34.45ID:eKiX5mKm
google「オブジェクト指向 キャットドア問題」
で出るな
2017/04/24(月) 01:00:29.18ID:ix3EvlHl
>>315
まじか!
ありがとう、見てみるよ
2017/04/24(月) 01:02:48.58ID:ix3EvlHl
なんか別のスレがヒットするだけなんだけどあってる?
http://itest.2ch.net/test/read.cgi/tech/1491118238/
2017/04/24(月) 06:42:37.83ID:DtGFy1JY
キャットドア問題って何だよ
博識な俺様でも知らんぞ
2017/04/24(月) 19:56:51.33ID:aju9PDoI
それを流行らせようとして必死なやつをどっかのスレで見たわ
放置推奨
2017/04/24(月) 20:17:16.61ID:MN8pW2Am
なんだ
騒ぎ立ててるヤツが居るだけなのね

なんかおもしろい議論があるのかと思って期待してたのにな
2017/04/24(月) 21:31:35.57ID:Fbyj+dPJ
結局、キャットドア問題解決できなかったしね
2017/04/25(火) 10:33:30.83ID:ibd4gvgd
>>315
オブジェクト指向 "キャットドア問題"
9 件 (0.37 秒)
2017/04/25(火) 12:08:14.39ID:5ILiyJO9
キャットドア問題が何を問題にしているのかわからない
合力できるようにDoorOpenerCompositionを定義すれば済む話では?

(new Cat(weight: 5)).can_open(new Door(weight: 4, knob: true)) //=> false
(new Human(weight: 15)).can_open(new Door(weight: 14, knob: true) //=>true
(new Cat(weight: 5)).can_open(new Door(weight: 4, knob: false)) //=> true
(new Cat(weight: 5)).can_open(new Door(weight: 10, knob: false)) //=> false
(new Cat(weight: 4) + new Cat(weight: 3) + new Cat(weight: 5)).can_open(new Door(weight: 10, knob: false)) //=> true
2017/04/25(火) 19:47:55.64ID:sSL6z0RB
staticおじさんは今日も大勝利
2017/04/25(火) 20:11:32.58ID:4og0+rzt
結局どんな勝負なの?
2017/04/25(火) 21:16:26.91ID:qd1hD0YR
>>325
結局、キャットドア問題解決できなかったしね
327
垢版 |
2017/04/25(火) 23:25:27.84ID:RguWTiRy
キャットドアとやらが拠り所なのか…
2017/04/25(火) 23:46:03.28ID:qd1hD0YR
if cat door is open
human begining become
and we will we will goto heaven
2017/04/25(火) 23:57:29.33ID:qaES5lmc
ごめん、それでは理解できない
どんな勝負だったの?
勝利条件やルールは何だったの?
330
垢版 |
2017/04/26(水) 00:00:54.76ID:R2CP97M0
何かの引用のもじりなんだろうか?
ひどい英語に見えるけどなんか意味あるのかな…
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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