staticおじさん(読み:すたてぃっくおじさん)とは、2010年に@ITに「実はオブジェクト指向ってしっくりこないんです![1]」
と投稿して炎上したおじさんのことである。
staticおじさんが爆誕した2010年ごろのIT土方界隈ではJavaを中心としたオブジェクト指向が主流であり
「なんでもかんでもオブジェクト指向」という風潮があった。
このためstaticおじさんは多勢に無勢でボロクソに叩かれる結果となり、さらにはプログラミングそのものの
話を飛び出してオブジェクト指向推進派による学歴差別などに発展したすえに無事炎上した。
それからわずか数年後、staticおじさんの主張に「極力static変数は使わない」「関数ポインタを多用する」
というコーディング規約を加えた「関数型プログラミング」がJavaScript界隈を中心に爆発的に流行し、
その流れに乗るかたちでこれら規約を半ば強制する仕様の「関数型プログラミング言語」も多数登場するなど
世界的に一大ブームになった。
ちなみにstaticおじさんの主張と非常に酷似したものが、staticおじさんの登場より遥か昔、インターネットを
支える中核技術である「IP」のRFC(仕様書)にも「階層化の有害性」として書かれていたりする。
また、海外でも同様の主張を面白おかしく書いた「Bjarne Stroustrup インタビュー」なる怪文書が出回り、
こちらも大炎上した。
https://monobook.org/wiki/%E3%82%B9%E3%82%BF%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E3%81%8A%E3%81%98%E3%81%95%E3%82%93
探検
なぜ「staticおじさん」は叩かれたのか?
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2019/02/08(金) 15:18:48.58ID:pS5scTjj287デフォルトの名無しさん
2019/04/15(月) 15:31:15.66ID:mM0ZEu/B インスタンス
コールスタックに実引数以外にインスタンスのアドレス積む
フィールドアクセスにアドレスの計算が必要
スタティック
コールスタックには実引数のみで良い
フィールドアクセスはダイレクトなアクセスでOK
satanic的にstaticはfantastic!!
コールスタックに実引数以外にインスタンスのアドレス積む
フィールドアクセスにアドレスの計算が必要
スタティック
コールスタックには実引数のみで良い
フィールドアクセスはダイレクトなアクセスでOK
satanic的にstaticはfantastic!!
288デフォルトの名無しさん
2019/04/15(月) 19:18:49.56ID:dnOkKB7K >>286
Google Hit Hider by Domainっていうuserscriptで検索結果から消してる
Google Hit Hider by Domainっていうuserscriptで検索結果から消してる
289デフォルトの名無しさん
2019/04/15(月) 20:37:29.25ID:Q9ByXEDM290デフォルトの名無しさん
2019/05/18(土) 13:49:08.45ID:J0miZ/5C perlあたりの時代だと手書きhtmlサイトだけだったのでperlの学習効率は高かった
今はblog化されてて、perl時代より学習効率が落ちてる
今はblog化されてて、perl時代より学習効率が落ちてる
291デフォルトの名無しさん
2019/06/18(火) 06:20:31.75ID:3nOE2mBA プログラム板にキチガイ降臨中!botに一晩も反応する異常さ
一般人(学校恩師)に殺害予告をしているのでスレ建て通報してください。
https://mevius.5ch.net/test/read.cgi/tech/1559872586/
142 名前:a4 ◆700L1Efzuv 投稿日:2019/06/18(火) 05:29:55 ID://qVkzO
>>141
名古屋の人な 俺ね、君の問題を大橋先生と混ぜないことにする。つまりね、
片桐孝洋のことをボコろうと思う。普通に顎の骨を折る。これくらいで警察来るか?
一般市民とかさ、普通にさ、俺らの秘密なんだけどさ、日本人なんて復活ねーから。
一般人(学校恩師)に殺害予告をしているのでスレ建て通報してください。
https://mevius.5ch.net/test/read.cgi/tech/1559872586/
142 名前:a4 ◆700L1Efzuv 投稿日:2019/06/18(火) 05:29:55 ID://qVkzO
>>141
名古屋の人な 俺ね、君の問題を大橋先生と混ぜないことにする。つまりね、
片桐孝洋のことをボコろうと思う。普通に顎の骨を折る。これくらいで警察来るか?
一般市民とかさ、普通にさ、俺らの秘密なんだけどさ、日本人なんて復活ねーから。
292デフォルトの名無しさん
2019/08/28(水) 16:31:00.84ID:mS+vHE7R >>19
性的女子高校生
性的女子高校生
293デフォルトの名無しさん
2020/06/22(月) 15:51:05.78ID:khT4bacP 阪神タイガース居酒屋みたいなものがあればいいのか。
Ruby居酒屋 Rubyディすると即退場
Java居酒屋
K&R C居酒屋
うーむ。K&R居酒屋は、開店しても閉店まで客一人とかだから誰もやらんな
となると、客が多くきそうな、旬なおっPython居酒屋が一押しか。
Ruby居酒屋 Rubyディすると即退場
Java居酒屋
K&R C居酒屋
うーむ。K&R居酒屋は、開店しても閉店まで客一人とかだから誰もやらんな
となると、客が多くきそうな、旬なおっPython居酒屋が一押しか。
294デフォルトの名無しさん
2020/06/22(月) 15:51:05.86ID:khT4bacP 阪神タイガース居酒屋みたいなものがあればいいのか。
Ruby居酒屋 Rubyディすると即退場
Java居酒屋
K&R C居酒屋
うーむ。K&R居酒屋は、開店しても閉店まで客一人とかだから誰もやらんな
となると、客が多くきそうな、旬なおっPython居酒屋が一押しか。
Ruby居酒屋 Rubyディすると即退場
Java居酒屋
K&R C居酒屋
うーむ。K&R居酒屋は、開店しても閉店まで客一人とかだから誰もやらんな
となると、客が多くきそうな、旬なおっPython居酒屋が一押しか。
295デフォルトの名無しさん
2020/06/22(月) 15:55:14.35ID:mmpBZ73b cobol居酒屋ないのか
296デフォルトの名無しさん
2020/06/22(月) 17:35:45.94ID:5VJoOXgM おっパブ パイソン学園。
297デフォルトの名無しさん
2020/07/04(土) 12:56:47.56ID:3Z3LdE0t Java居酒屋は最初の一杯無料っぽい
298デフォルトの名無しさん
2020/07/26(日) 17:33:08.78ID:r0UUx6Fs そりゃクラスライブラリ使うだけならいいけど
自分で作るとなると本命の処理以外の
無駄なモノあれこれ書かされるだけだからなw
自分で作るとなると本命の処理以外の
無駄なモノあれこれ書かされるだけだからなw
299デフォルトの名無しさん
2021/06/06(日) 16:36:17.54ID:XQfgI5eT >>293
BaslerのMVカメラ使う時のライブラリがPypylonて名前だったのを脈絡なく思い出した
BaslerのMVカメラ使う時のライブラリがPypylonて名前だったのを脈絡なく思い出した
300デフォルトの名無しさん
2021/07/19(月) 21:30:25.28ID:Yaij3Qmg 酷い作りのクラスだと引数ではなくメンバ変数に値をセットしてメソッド呼び出しとかあるからな。
わかるかボケ
わかるかボケ
301デフォルトの名無しさん
2021/07/19(月) 23:13:13.39ID:7DxAXQZB 「週休3日・下限年収1000万」採用ツイートが話題に! “日本のエンジニア安く買い叩かれ過ぎ問題”に一石を投じた起業家の願い
https://type.jp/et/feature/11257
ネクスウェイ、週休4日制・1日3時間勤務選択できる勤務体系を導入
https://news.mynavi.jp/article/20191217-940849/
週休4日OK、介護などと両立も SMBC日興が導入へ
https://www.asahi.com/articles/ASMDJ4HD3MDJULFA01K.html
ルネサス、週休3日制導入へ 連休明けから5000人対象
https://www.nikkei.com/article/DGXMZO58462290U0A420C2TJ2000/
土日と「水曜」は休日! ベンチャー企業が「週休3日制」を導入してよかったコト
https://www.j-cast.com/2019/07/21363088.html?p=all
2020年4月より「週休3日制」を導入。テックカンパニー化に向け、好循環を生み出すエンジニアリング組織へ
https://prtimes.jp/main/html/rd/p/000000096.000016431.html
「週休3日」でバズった、無人コンビニ「600」はどんな会社か
https://media.moneyforward.com/articles/3394
週休3日制を導入した企業が学んだ7つの教訓とは?
https://gigazine.net/news/20200712-7-lessons-four-day-workweek/
「給料が倍になるよりうれしい」経営が導入に踏み切った、エンジニアの週休3日制とは
https://www.excite.co.jp/news/article/ds_journal_dsjournal19991/
週休3日制を採用している企業一覧
https://www.k-society.com/recruit/list_of_companies_allow_a-four-day-workweek/
https://type.jp/et/feature/11257
ネクスウェイ、週休4日制・1日3時間勤務選択できる勤務体系を導入
https://news.mynavi.jp/article/20191217-940849/
週休4日OK、介護などと両立も SMBC日興が導入へ
https://www.asahi.com/articles/ASMDJ4HD3MDJULFA01K.html
ルネサス、週休3日制導入へ 連休明けから5000人対象
https://www.nikkei.com/article/DGXMZO58462290U0A420C2TJ2000/
土日と「水曜」は休日! ベンチャー企業が「週休3日制」を導入してよかったコト
https://www.j-cast.com/2019/07/21363088.html?p=all
2020年4月より「週休3日制」を導入。テックカンパニー化に向け、好循環を生み出すエンジニアリング組織へ
https://prtimes.jp/main/html/rd/p/000000096.000016431.html
「週休3日」でバズった、無人コンビニ「600」はどんな会社か
https://media.moneyforward.com/articles/3394
週休3日制を導入した企業が学んだ7つの教訓とは?
https://gigazine.net/news/20200712-7-lessons-four-day-workweek/
「給料が倍になるよりうれしい」経営が導入に踏み切った、エンジニアの週休3日制とは
https://www.excite.co.jp/news/article/ds_journal_dsjournal19991/
週休3日制を採用している企業一覧
https://www.k-society.com/recruit/list_of_companies_allow_a-four-day-workweek/
302デフォルトの名無しさん
2021/07/19(月) 23:27:28.02ID:O+CllEm4 OOPが嫌なら使わなければいい
彼はそれを実践した
それだけのこと
彼はそれを実践した
それだけのこと
303デフォルトの名無しさん
2021/07/20(火) 04:37:58.44ID:pyjXm/pu もう終わってしまったRubyにしがみついてるような連中が叩いていただけ
304デフォルトの名無しさん
2021/07/20(火) 06:08:43.60ID:9FCE6Fta SE WORLD システムエンジニアの世界 IT技術
http://wonderfulsky.web.fc2.com/index.html
「実はオブジェクト指向ってしっくりこないんです」とその時代 | SE WORLD ブログ版
https://ameblo.jp/kenchaz/entry-12599678479.html
「実はオブジェクト指向ってしっくりこないんです」から10年 | SE WORLD ブログ版
https://ameblo.jp/kenchaz/entry-12599341144.html
http://wonderfulsky.web.fc2.com/index.html
「実はオブジェクト指向ってしっくりこないんです」とその時代 | SE WORLD ブログ版
https://ameblo.jp/kenchaz/entry-12599678479.html
「実はオブジェクト指向ってしっくりこないんです」から10年 | SE WORLD ブログ版
https://ameblo.jp/kenchaz/entry-12599341144.html
305デフォルトの名無しさん
2021/07/20(火) 08:38:10.17ID:Oy48Jhl6 >>304
言ってることはまとも、叩いてた人の方がヤバい
言ってることはまとも、叩いてた人の方がヤバい
306デフォルトの名無しさん
2021/07/20(火) 09:14:26.24ID:2ecX9oPq >>300
OpenGLですね判ります
OpenGLですね判ります
307デフォルトの名無しさん
2021/07/20(火) 09:15:14.00ID:2ecX9oPq308デフォルトの名無しさん
2021/07/27(火) 21:47:43.34ID:LjFMyt/8 0749−43−7194
そうかに指示出されて非通知かけてくんな死ね
そうかに指示出されて非通知かけてくんな死ね
309デフォルトの名無しさん
2021/08/06(金) 15:17:12.55ID:ejJCz0w7310デフォルトの名無しさん
2021/08/06(金) 15:29:34.57ID:NNYkMP36 文章よく読んだが良い
311デフォルトの名無しさん
2021/08/07(土) 00:13:47.52ID:rXkekRAR 「staticおじさん」が本当に欲しかったもの
private
private
312デフォルトの名無しさん
2021/08/07(土) 00:46:28.56ID:tnPFBmrK いいや?
313デフォルトの名無しさん
2021/08/07(土) 15:29:34.57ID:zzL21uSy むしろstaticおじさんの原文だとクラスのメンバ変数とメソッドをpublic staticを推奨してるのだが。
314デフォルトの名無しさん
2021/08/07(土) 17:30:06.10ID:nvw/+Fhk ASP.NETのライブラリ使ってれば事足りる仕事しかしてなければ
staticだけで良いと思うだろうしそんな人にstaticだからダメだというのは
野暮だと思うけどなあ
staticだけで良いと思うだろうしそんな人にstaticだからダメだというのは
野暮だと思うけどなあ
315デフォルトの名無しさん
2021/08/08(日) 11:34:22.24ID:+ND78RnS public staticにして、クラス利用者がクラス変数呼びまくってるんだぜ?
カプセル化されてないクラスメンバのstatic変数とか、グローバル変数宣言した構造体となんの違いがあるんだ...。
カプセル化されてないクラスメンバのstatic変数とか、グローバル変数宣言した構造体となんの違いがあるんだ...。
316デフォルトの名無しさん
2021/08/08(日) 13:48:08.90ID:9M/UErff そうなの? staticおじさんのソースコードみたことあるの?
317デフォルトの名無しさん
2021/08/08(日) 13:52:35.46ID:UvnbNG8C singletonクラスなら普通
318デフォルトの名無しさん
2021/08/08(日) 15:23:23.77ID:+ND78RnS staticおじさんの炎上元ネタ記事
https://el.jibun.atmarkit.co.jp/minagawa/2010/04/post-ebc4.html
>「メンバー関数をstatic宣言すればインスタンス宣言をしなくてもいい」ということ知ってからは、メンバー関数を従来のファンクションのように使っている。共有変数も、pubulic static宣言していまう。したがってプロパティなんて作らない。
って書いてあるゾ
https://el.jibun.atmarkit.co.jp/minagawa/2010/04/post-ebc4.html
>「メンバー関数をstatic宣言すればインスタンス宣言をしなくてもいい」ということ知ってからは、メンバー関数を従来のファンクションのように使っている。共有変数も、pubulic static宣言していまう。したがってプロパティなんて作らない。
って書いてあるゾ
319デフォルトの名無しさん
2021/08/08(日) 16:09:39.05ID:9M/UErff >>318
コメントで
> ですから必然的にstatic public で定義された変数はサーバー名とかデータベース名とか初期化パラメータとしてしか意味がないものになります。
とも言ってるからreadonlyのものに限られるんじゃないかな
コメントで
> ですから必然的にstatic public で定義された変数はサーバー名とかデータベース名とか初期化パラメータとしてしか意味がないものになります。
とも言ってるからreadonlyのものに限られるんじゃないかな
320デフォルトの名無しさん
2021/08/08(日) 18:19:40.45ID:ZzxWVxwD >>319
本文にもそれ書けよwってstaticおじさんに言いたいが...それはそれでまずいな。
プログラミングするのなら、必ず「状態」をどこかで持たないとだが、
本来のやり方
1.クラス(インスタンス)に属性を持たせる
メンバ変数をstaticにすることで、上記手段で状態を持つことをstaticおじさんは否定してる。そうなると...
他のやり方
2. グローバル変数
3. ユーザーに定義させる
4.クラス(staticメンバ)に状態を持たせる
くらいしか、状態を持つ手段がなくなるけど、そこから4.のやり方もreadonlyにすることで否定したら、2 or 3しか関数に状態を持たせる手段が無くなる。
初期化パラメータしか意味がないものをstaticにすると言うのなら、初期化パラメータ以外の意味を持つ状態変数はどう定義するんだよって感じだな。
本文にもそれ書けよwってstaticおじさんに言いたいが...それはそれでまずいな。
プログラミングするのなら、必ず「状態」をどこかで持たないとだが、
本来のやり方
1.クラス(インスタンス)に属性を持たせる
メンバ変数をstaticにすることで、上記手段で状態を持つことをstaticおじさんは否定してる。そうなると...
他のやり方
2. グローバル変数
3. ユーザーに定義させる
4.クラス(staticメンバ)に状態を持たせる
くらいしか、状態を持つ手段がなくなるけど、そこから4.のやり方もreadonlyにすることで否定したら、2 or 3しか関数に状態を持たせる手段が無くなる。
初期化パラメータしか意味がないものをstaticにすると言うのなら、初期化パラメータ以外の意味を持つ状態変数はどう定義するんだよって感じだな。
321デフォルトの名無しさん
2021/08/08(日) 18:42:54.75ID:9M/UErff そうなることがないんだと思うよ
Webアプリの処理をすべてコントローラに書けばローカル変数だけで事足りるわけだし
.NETのライブラリ使うだけで生きてきた人なんだよ
Webアプリの処理をすべてコントローラに書けばローカル変数だけで事足りるわけだし
.NETのライブラリ使うだけで生きてきた人なんだよ
322デフォルトの名無しさん
2021/08/08(日) 18:46:00.61ID:9M/UErff 引数や戻り値、ローカル変数で事足りるものをインスタンス変数にして
状態依存作りまくりの地獄オブジェクト指向を見てきた僕からすると
staticおじさんの方がよほど健全
状態依存作りまくりの地獄オブジェクト指向を見てきた僕からすると
staticおじさんの方がよほど健全
323デフォルトの名無しさん
2021/08/08(日) 19:02:54.91ID:+ND78RnS >>322
でも、.NET FrameworkやASP.NET自体はオブジェクト指向で作られてるよね?
そして、その.NETには状態を持ってるよね?
なんで自作のクラスはオブジェクト指向開発しては駄目で、ライブラリは許されるの?
そもそも貴方が嫌がってるコードって本当にオブジェクト指向?
ドメインモデル貧血症なクラスや、神クラスの間違いじゃないの?
でも、.NET FrameworkやASP.NET自体はオブジェクト指向で作られてるよね?
そして、その.NETには状態を持ってるよね?
なんで自作のクラスはオブジェクト指向開発しては駄目で、ライブラリは許されるの?
そもそも貴方が嫌がってるコードって本当にオブジェクト指向?
ドメインモデル貧血症なクラスや、神クラスの間違いじゃないの?
324デフォルトの名無しさん
2021/08/08(日) 19:04:50.02ID:+ND78RnS325デフォルトの名無しさん
2021/08/08(日) 19:07:46.40ID:9M/UErff >>323
それはそうだろけど
staticおじさんは.NETのフレームワークの充実したライブラリがあれば
自分でオブジェクト作る必要ないって立場だと思うよ
ドメインモデル貧血症も神クラスもオブジェクト指向だよね
設計の良し悪しはあれどオブジェクト指向だよ
それはそうだろけど
staticおじさんは.NETのフレームワークの充実したライブラリがあれば
自分でオブジェクト作る必要ないって立場だと思うよ
ドメインモデル貧血症も神クラスもオブジェクト指向だよね
設計の良し悪しはあれどオブジェクト指向だよ
326デフォルトの名無しさん
2021/08/08(日) 19:09:00.59ID:9M/UErff >>324
カプセル化は属性と操作を一体化することなのでカプセル化は破られてないよ
別のメソッドを先に呼ばないと次のメソッドは正常に動作しないみたいな
作りになってたんだよね、そういう意味での状態依存
カプセル化は属性と操作を一体化することなのでカプセル化は破られてないよ
別のメソッドを先に呼ばないと次のメソッドは正常に動作しないみたいな
作りになってたんだよね、そういう意味での状態依存
327デフォルトの名無しさん
2021/08/08(日) 19:17:41.03ID:ZzxWVxwD https://en.m.wikipedia.org/wiki/Anemic_domain_model
ここ読め
The fundamental horror of this anti-pattern is that it's so contrary to the basic idea of object-oriented designing
ドメインモデル貧血症はオブジェクト指向の設計思想に反したアンチパターンだ。
そもそも、自分で勝手に考えた最悪のパターンとstaticおじさんの主張を比較する意味がわからない
オブジェクト指向 vs staticおじさん で比較したいのなら、最良のオブジェクト指向 vs 最良のstaticおじさん(みながわけんじ氏)の主張に基づくコードで比べるべき。
ここ読め
The fundamental horror of this anti-pattern is that it's so contrary to the basic idea of object-oriented designing
ドメインモデル貧血症はオブジェクト指向の設計思想に反したアンチパターンだ。
そもそも、自分で勝手に考えた最悪のパターンとstaticおじさんの主張を比較する意味がわからない
オブジェクト指向 vs staticおじさん で比較したいのなら、最良のオブジェクト指向 vs 最良のstaticおじさん(みながわけんじ氏)の主張に基づくコードで比べるべき。
328デフォルトの名無しさん
2021/08/08(日) 19:18:17.69ID:9M/UErff 引数で渡せばいい値をインスタンス変数にセットしてメソッド呼んで戻り値として返せば良い値を
インスタンス変数にセットしてたりしたなあ
オブジェクト指向の入門書は僕も色々読んだけど、オブジェクト指向のメソッドは必ずインスタンス変数を操作しないと
いけないと書いてあるのもあったし、とにかくなんでもかんでもオブジェクトにするのが成功の秘訣だと
書いてあるのもあった
本を読む素直で意識の高いアホほど地獄オブジェクト指向に陥る印象だわ
ここの人たちは性格がひねくれてるから問題ないだろうけどさ
インスタンス変数にセットしてたりしたなあ
オブジェクト指向の入門書は僕も色々読んだけど、オブジェクト指向のメソッドは必ずインスタンス変数を操作しないと
いけないと書いてあるのもあったし、とにかくなんでもかんでもオブジェクトにするのが成功の秘訣だと
書いてあるのもあった
本を読む素直で意識の高いアホほど地獄オブジェクト指向に陥る印象だわ
ここの人たちは性格がひねくれてるから問題ないだろうけどさ
329デフォルトの名無しさん
2021/08/08(日) 19:21:38.54ID:9M/UErff >>327
僕の経験的にはドメインモデル貧血症が悪いとは思えない
君は誰かがそう言ってるからそうなんだと思ってるだけでドメインモデル貧血症で困ったこと経験なんてないっしょ
staticおじさんの文脈ではオブジェクト作る必要がない状況なんだからオブジェクト指向との
比較はやるまでもないことだと思うよ
僕の経験的にはドメインモデル貧血症が悪いとは思えない
君は誰かがそう言ってるからそうなんだと思ってるだけでドメインモデル貧血症で困ったこと経験なんてないっしょ
staticおじさんの文脈ではオブジェクト作る必要がない状況なんだからオブジェクト指向との
比較はやるまでもないことだと思うよ
330デフォルトの名無しさん
2021/08/08(日) 19:23:35.19ID:+ND78RnS >>328
> 引数で渡せばいい値をインスタンス変数にセットしてメソッド呼んで戻り値として返せば良い値を
> インスタンス変数にセットしてたりしたなあ
それ、完全にドメインモデル貧血症だゾ
それをオブジェクト指向と見なすこと自体変だし、オブジェクト指向と見なすにしても、なぜ、オブジェクト指向のやっては駄目なパターンをやってオブジェクト指向を批判するのかわからないゾ
> 引数で渡せばいい値をインスタンス変数にセットしてメソッド呼んで戻り値として返せば良い値を
> インスタンス変数にセットしてたりしたなあ
それ、完全にドメインモデル貧血症だゾ
それをオブジェクト指向と見なすこと自体変だし、オブジェクト指向と見なすにしても、なぜ、オブジェクト指向のやっては駄目なパターンをやってオブジェクト指向を批判するのかわからないゾ
331デフォルトの名無しさん
2021/08/08(日) 19:28:47.64ID:9M/UErff >>330
そうなの? 僕が知ってるドメインモデル貧血症は
属性と操作が一体化してないものだけど
> 引数で渡せばいい値をインスタンス変数にセットしてメソッド呼んで戻り値として返せば良い値を
> インスタンス変数にセットしてたりしたなあ
これはそれとは違うから、ドメインモデル貧血症ではないと僕は思ってる
いうなれば構造化プログラミング未経験症ってところかと
ダメな設計も簡単にできるダメなオブジェクトも簡単に作れる
これがオブジェクト指向の功罪だよ
そうなの? 僕が知ってるドメインモデル貧血症は
属性と操作が一体化してないものだけど
> 引数で渡せばいい値をインスタンス変数にセットしてメソッド呼んで戻り値として返せば良い値を
> インスタンス変数にセットしてたりしたなあ
これはそれとは違うから、ドメインモデル貧血症ではないと僕は思ってる
いうなれば構造化プログラミング未経験症ってところかと
ダメな設計も簡単にできるダメなオブジェクトも簡単に作れる
これがオブジェクト指向の功罪だよ
332デフォルトの名無しさん
2021/08/08(日) 19:33:47.70ID:ZzxWVxwD333デフォルトの名無しさん
2021/08/08(日) 19:34:19.56ID:9M/UErff 例がないとわからんねちょっと待って
334デフォルトの名無しさん
2021/08/08(日) 19:36:06.82ID:9M/UErff335デフォルトの名無しさん
2021/08/08(日) 19:37:13.14ID:9M/UErff 構造化プログラミング未経験症はこれ
class A {
int value;
int result;
String msg;
void execute() {
phase1();
phase2();
phase3();
return msg;
}
void phase1() {
value = 1;
}
void phase2() {
result = value * 2;
}
void phase3() {
msg = "result = " + result;
}
}
class A {
int value;
int result;
String msg;
void execute() {
phase1();
phase2();
phase3();
return msg;
}
void phase1() {
value = 1;
}
void phase2() {
result = value * 2;
}
void phase3() {
msg = "result = " + result;
}
}
336デフォルトの名無しさん
2021/08/08(日) 19:41:10.89ID:ZzxWVxwD DTOはO/Rマッパー等を使う時に利用するデザインパターンだが、ドメインモデル貧血症はアンチパターン。
まぁ、さっき示した具体的なコードがDTOと言えばそうなんだけど...用途の間違えたDTO。
まぁ、さっき示した具体的なコードがDTOと言えばそうなんだけど...用途の間違えたDTO。
337デフォルトの名無しさん
2021/08/08(日) 19:42:27.12ID:9M/UErff DTOをモデルという名前で呼ぶからドメインモデルとごっちゃになるのかもわからんね
DTOはDTO
ドメインモデルはDTOとは違うよ
ドメインモデル貧血症はこんなところかな
class Calc {
int calc(Person p) {
return p.Sarary * 2;
}
}
DTOはDTO
ドメインモデルはDTOとは違うよ
ドメインモデル貧血症はこんなところかな
class Calc {
int calc(Person p) {
return p.Sarary * 2;
}
}
338デフォルトの名無しさん
2021/08/08(日) 19:47:56.60ID:9M/UErff 君は具体的にどういう経験をしてドメインモデル貧血症がよくないと思ったのか教えてくれる?
僕はないんだよね、Calcというモデルで計算がしやすくなることもあるし
ドメインモデル貧血症はただのレッテル貼りにしか思えない
僕はないんだよね、Calcというモデルで計算がしやすくなることもあるし
ドメインモデル貧血症はただのレッテル貼りにしか思えない
339デフォルトの名無しさん
2021/08/08(日) 19:52:43.20ID:ZzxWVxwD >>337
ドメインモデルとデータが違うのはその通り。
悪かった。真面目にコードを書く。
class Box {
public int Height { get; set; }
public int Width { get; set; }
}
これがドメインモデル貧血症
class Box {
public int Height { get; }
public int Width { get; }
public Box(int height, int width) {
if (height <= 0) {
throw new ArgumentOutOfRangeException(nameof(height));
}
if (width <= 0) {
throw new ArgumentOutOfRangeException(nameof(width));
}
Height = height;
Width = width;
} public int Area() {
return Height * Width;
}
}
これがオブジェクト指向
スマホのお陰で改行が狂ってるかもだが。
ドメインモデルとデータが違うのはその通り。
悪かった。真面目にコードを書く。
class Box {
public int Height { get; set; }
public int Width { get; set; }
}
これがドメインモデル貧血症
class Box {
public int Height { get; }
public int Width { get; }
public Box(int height, int width) {
if (height <= 0) {
throw new ArgumentOutOfRangeException(nameof(height));
}
if (width <= 0) {
throw new ArgumentOutOfRangeException(nameof(width));
}
Height = height;
Width = width;
} public int Area() {
return Height * Width;
}
}
これがオブジェクト指向
スマホのお陰で改行が狂ってるかもだが。
340デフォルトの名無しさん
2021/08/08(日) 20:00:06.55ID:ZzxWVxwD341デフォルトの名無しさん
2021/08/08(日) 20:00:12.30ID:9M/UErff どちらもオブジェクト指向だよね
BoxにAreaメソッドがあるか否かの違いしかないので
あった方が便利なら追加すれば良いと思うけど
やはりドメインモデル貧血症がダメだとは思えない
BoxにAreaメソッドがあるか否かの違いしかないので
あった方が便利なら追加すれば良いと思うけど
やはりドメインモデル貧血症がダメだとは思えない
342デフォルトの名無しさん
2021/08/08(日) 20:03:30.34ID:ZzxWVxwD >>340
次は2個目のクラスだ。
まぁ、できる事は少ないが、これはクラスを利用する意義はある。
値をセットするだけではなく、Box(箱)クラスの名に恥じない機能、面積取得機能が備わってるから。
つまり、これだけでBoxクラスを使う価値が出てくるわけだ。
...という話なんだ。うん、それだけ。
次は2個目のクラスだ。
まぁ、できる事は少ないが、これはクラスを利用する意義はある。
値をセットするだけではなく、Box(箱)クラスの名に恥じない機能、面積取得機能が備わってるから。
つまり、これだけでBoxクラスを使う価値が出てくるわけだ。
...という話なんだ。うん、それだけ。
343デフォルトの名無しさん
2021/08/08(日) 20:03:44.77ID:9M/UErff >>340
Boxクラスはデータを表してるってことでしょ
なら何もしなくて正解だし何かしてくれる方が扱いづらい
Boxクラスの計算するクラスを作ればいい
どういう計算が必要かはドメインによって変わってくるでしょ
そうして作られたクラスが本当のドメインモデルだよ
Boxクラスはデータを表してるってことでしょ
なら何もしなくて正解だし何かしてくれる方が扱いづらい
Boxクラスの計算するクラスを作ればいい
どういう計算が必要かはドメインによって変わってくるでしょ
そうして作られたクラスが本当のドメインモデルだよ
344デフォルトの名無しさん
2021/08/08(日) 20:06:41.61ID:ZzxWVxwD >>341
じゃ聞くけど、貴方は前者のBoxクラス渡されても困らないの?
何もできないよ?
俺!Boxクラスのロジック実装します!あなたはBoxを使う処理を書いて!と分業したとき、俺があなたに前者Boxクラスを渡して、面積計算や座標変換(回転等)計算などの処理はそっちでやってください!とか言われたらどうです?
じゃ聞くけど、貴方は前者のBoxクラス渡されても困らないの?
何もできないよ?
俺!Boxクラスのロジック実装します!あなたはBoxを使う処理を書いて!と分業したとき、俺があなたに前者Boxクラスを渡して、面積計算や座標変換(回転等)計算などの処理はそっちでやってください!とか言われたらどうです?
345デフォルトの名無しさん
2021/08/08(日) 20:07:10.24ID:9M/UErff >>342
面積が必要なかったら無駄なクラスだしなあ
どうして面積を得るのかがわからないと価値があるかどうかはわからないよ
面積を使って何をするのっていう情報がないからドメインモデルではなくて
ただのデータだと思った
面積が必要なかったら無駄なクラスだしなあ
どうして面積を得るのかがわからないと価値があるかどうかはわからないよ
面積を使って何をするのっていう情報がないからドメインモデルではなくて
ただのデータだと思った
346デフォルトの名無しさん
2021/08/08(日) 20:09:16.92ID:9M/UErff >>344
すごく困るBoxクラスが欲しいと僕は言ってるわけじゃないから
そういうの渡されてもすごく困ると思う
え、なんで? って思う
> 俺!Boxクラスのロジック実装します!あなたはBoxを使う処理を書いて!と分業したとき、
> 俺があなたに前者Boxクラスを渡して、面積計算や座標変換(回転等)計算などの処理は
> そっちでやってください!とか言われたらどうです?
頭おかしいのかなって思う
すごく困るBoxクラスが欲しいと僕は言ってるわけじゃないから
そういうの渡されてもすごく困ると思う
え、なんで? って思う
> 俺!Boxクラスのロジック実装します!あなたはBoxを使う処理を書いて!と分業したとき、
> 俺があなたに前者Boxクラスを渡して、面積計算や座標変換(回転等)計算などの処理は
> そっちでやってください!とか言われたらどうです?
頭おかしいのかなって思う
347デフォルトの名無しさん
2021/08/08(日) 20:11:49.06ID:ZzxWVxwD >>344
あと、リアルプログラミングってまじで分業するからな。
俺がBoxクラスを使わせるのは貴方だけではない。他の開発者も使う。
そんな最中、getter.setterしかなかったら、皆、どんな反応すると思う?
こういうライブラリレベルで使い勝手の良いコードを隅々まで書くのが俺の開発現場。
あと、リアルプログラミングってまじで分業するからな。
俺がBoxクラスを使わせるのは貴方だけではない。他の開発者も使う。
そんな最中、getter.setterしかなかったら、皆、どんな反応すると思う?
こういうライブラリレベルで使い勝手の良いコードを隅々まで書くのが俺の開発現場。
348デフォルトの名無しさん
2021/08/08(日) 20:12:15.37ID:9M/UErff あ、でも面積計算クラスや座標変換クラスでまとめるのは場合によってはありかもね
僕はそういうドメインモデル貧血症は良いと思ってる立場だから、それはありですね
僕はそういうドメインモデル貧血症は良いと思ってる立場だから、それはありですね
349デフォルトの名無しさん
2021/08/08(日) 20:12:43.82ID:ZzxWVxwD >>346
へぇ。じゃ、前者のテストコード書いてよ。
へぇ。じゃ、前者のテストコード書いてよ。
350デフォルトの名無しさん
2021/08/08(日) 20:14:56.40ID:9M/UErff >>347
そうなの? Boxクラスが出てくるあたりゲームプログラマの人?
僕はBtoBの業務アプリが主だけど、分業するときってクラス単位じゃなくて
アクターとか機能とか大きな単位で分けるから、何言ってるのかよくわからない
そうなの? Boxクラスが出てくるあたりゲームプログラマの人?
僕はBtoBの業務アプリが主だけど、分業するときってクラス単位じゃなくて
アクターとか機能とか大きな単位で分けるから、何言ってるのかよくわからない
351デフォルトの名無しさん
2021/08/08(日) 20:29:21.22ID:ZzxWVxwD >>348
> 僕はそういうドメインモデル貧血症は良いと思ってる立場だから、それはありですね
分かってくれてありがとう。
でも、年のために言うと、ドメインモデル貧血症は前者の例ね。
まぁ、言葉の定義より、どんなコードの書き方が役に立つかの方が重要なんだけど...どうしても、staticおじさん論争になると言葉の定義は外せないのが辛いところ...。
> 僕はそういうドメインモデル貧血症は良いと思ってる立場だから、それはありですね
分かってくれてありがとう。
でも、年のために言うと、ドメインモデル貧血症は前者の例ね。
まぁ、言葉の定義より、どんなコードの書き方が役に立つかの方が重要なんだけど...どうしても、staticおじさん論争になると言葉の定義は外せないのが辛いところ...。
352デフォルトの名無しさん
2021/08/08(日) 20:38:17.38ID:ZzxWVxwD あと、ごめんなさい。>>349は無視してください。
353デフォルトの名無しさん
2021/08/08(日) 20:43:52.37ID:I3k2xDDQ 世に出ているservlet, jsp, spring とかの本では
APIとしてはオブジェクト指向が登場するけど
プログラムを書く側はオブジェクト指向を意識して書いてないぞ
APIとしてはオブジェクト指向が登場するけど
プログラムを書く側はオブジェクト指向を意識して書いてないぞ
354デフォルトの名無しさん
2021/08/08(日) 20:52:42.99ID:9M/UErff >>351
なんか誤解してるような気がするんだけど
Boxに面積の計算を持たせない前者の例で、面積の計算を面積計算クラスにまとめると
ドメインモデル貧血症になるけどそれはありだよねっていうのが僕が言いたかったことだよ
計算は僕が携わっているドメインだと結構変わるのよ、顧客満足のためだったり
法律のためだったり世の中の情勢に配慮したりとかで、その場合は個々のデータに
計算をもたせるよりも計算だけを行うようモデリングしたほうが都合がよかったりする
ドメインモデル貧血症にはなるけどシステムとしてはそちらの方が適切だからそうすることもある
君は分業することを例にドメインモデル貧血症がダメだといったけど、それは
コミュニケーションの問題だと思うんだよね、自分は面積の計算を実装してもらいたくて
相手は面積の計算を実装しなくて良いと思ってたというコミュニケーションミスだと思うんだよね
そういうコミュニケーションで解決するべき問題をオブジェクト指向の問題にするべきではないと思うよ
なんか誤解してるような気がするんだけど
Boxに面積の計算を持たせない前者の例で、面積の計算を面積計算クラスにまとめると
ドメインモデル貧血症になるけどそれはありだよねっていうのが僕が言いたかったことだよ
計算は僕が携わっているドメインだと結構変わるのよ、顧客満足のためだったり
法律のためだったり世の中の情勢に配慮したりとかで、その場合は個々のデータに
計算をもたせるよりも計算だけを行うようモデリングしたほうが都合がよかったりする
ドメインモデル貧血症にはなるけどシステムとしてはそちらの方が適切だからそうすることもある
君は分業することを例にドメインモデル貧血症がダメだといったけど、それは
コミュニケーションの問題だと思うんだよね、自分は面積の計算を実装してもらいたくて
相手は面積の計算を実装しなくて良いと思ってたというコミュニケーションミスだと思うんだよね
そういうコミュニケーションで解決するべき問題をオブジェクト指向の問題にするべきではないと思うよ
355デフォルトの名無しさん
2021/08/08(日) 21:03:19.91ID:hJWAYL03 ドメインモデル貧血症ってアンチパターンでしょ
356デフォルトの名無しさん
2021/08/08(日) 21:07:42.89ID:hJWAYL03 初めて聞いた言葉だから自信ないけど、
オブジェクト指向設計のアンチパターン
貧血ドメインモデル(英語版)ビジネスロジックが欠けたドメインモデル。オブジェクトは属性と振る舞いを持たなければならないので、オブジェクト指向プログラミングではない
ってwikiに書いてあった
(よく意味を理解していない)
オブジェクト指向設計のアンチパターン
貧血ドメインモデル(英語版)ビジネスロジックが欠けたドメインモデル。オブジェクトは属性と振る舞いを持たなければならないので、オブジェクト指向プログラミングではない
ってwikiに書いてあった
(よく意味を理解していない)
357デフォルトの名無しさん
2021/08/08(日) 21:10:07.64ID:9M/UErff >>353
ドメインモデルが必要なほど複雑な要件は入門書では扱われないからね・・・
現実は要件がころころ変わることに対応しないといけなかったりで
オブジェクト指向をきちんと理解して実践してると助かることはままある
リクエストごとに処理をごりごり書いたトランザクションスクリプトで十分なことは多いし
フレームワークが提供してるライブラリで処理を完結できるほどフレームワークの機能が
充実してきてることもあるんじゃないかな
ドメインモデルが必要なほど複雑な要件は入門書では扱われないからね・・・
現実は要件がころころ変わることに対応しないといけなかったりで
オブジェクト指向をきちんと理解して実践してると助かることはままある
リクエストごとに処理をごりごり書いたトランザクションスクリプトで十分なことは多いし
フレームワークが提供してるライブラリで処理を完結できるほどフレームワークの機能が
充実してきてることもあるんじゃないかな
358デフォルトの名無しさん
2021/08/08(日) 21:14:34.79ID:9M/UErff >>355
ドメインモデル貧血症はマーチン・ファウラーという猥褻顔のおっさんがアンチパターンと言ってて
そのおっさんが言うんならそうなんだろと思考停止で鵜呑みにしてる人がほとんどで
実際にプログラム書いてみるとドメインモデル貧血症はそんなに悪くない
スリムドメインモデルと言い換えて風評被害をなくしたい、ご協力よろしくお願いします
ドメインモデル貧血症はマーチン・ファウラーという猥褻顔のおっさんがアンチパターンと言ってて
そのおっさんが言うんならそうなんだろと思考停止で鵜呑みにしてる人がほとんどで
実際にプログラム書いてみるとドメインモデル貧血症はそんなに悪くない
スリムドメインモデルと言い換えて風評被害をなくしたい、ご協力よろしくお願いします
359デフォルトの名無しさん
2021/08/08(日) 21:19:34.66ID:9M/UErff これまでの話をまとめると、staticおじさん良いよねってこと
360デフォルトの名無しさん
2021/08/08(日) 21:32:38.03ID:pp984S8L スレタイさん「なんでstaticおじさんは叩かれたの?」
361デフォルトの名無しさん
2021/08/08(日) 21:38:00.74ID:9M/UErff 叩いた人がアホだったんだと思う
とくにAC/DCって人はstaticおじさんが悪くなるように物事を解釈して
議論をダメにしてると思った
とくにAC/DCって人はstaticおじさんが悪くなるように物事を解釈して
議論をダメにしてると思った
362デフォルトの名無しさん
2021/08/08(日) 21:40:51.43ID:+ND78RnS >>359
> これまでの話をまとめると、staticおじさん良いよねってこと
嘘だゾ
さっき、ドメインモデル貧血症はオブジェクト指向ではないvsオブジェクト指向だ、で衝突しているのを見てたゾ
どこにも、staticおじさんを褒めてる要素がなかったゾ
しかも、オブジェクト指向でも何でもないプログラムをオブジェクト指向のアンチパターンとして紹介して論破されてるところ見たゾ
> これまでの話をまとめると、staticおじさん良いよねってこと
嘘だゾ
さっき、ドメインモデル貧血症はオブジェクト指向ではないvsオブジェクト指向だ、で衝突しているのを見てたゾ
どこにも、staticおじさんを褒めてる要素がなかったゾ
しかも、オブジェクト指向でも何でもないプログラムをオブジェクト指向のアンチパターンとして紹介して論破されてるところ見たゾ
363デフォルトの名無しさん
2021/08/08(日) 21:44:29.81ID:9M/UErff >>362
落ち着きなよ、全部君の気のせいだよ、はい論破
落ち着きなよ、全部君の気のせいだよ、はい論破
364デフォルトの名無しさん
2021/08/08(日) 21:47:48.86ID:+ND78RnS >>363
ひょ?
ひょ?
365デフォルトの名無しさん
2021/08/08(日) 21:56:01.48ID:pp984S8L366デフォルトの名無しさん
2021/08/08(日) 21:56:21.01ID:pp984S8L ではないか?
367デフォルトの名無しさん
2021/08/08(日) 22:21:42.85ID:9M/UErff 揚げ足取りばかりのコメントに東工大の圧力で対抗するのは適切だよ
368デフォルトの名無しさん
2021/08/08(日) 22:24:05.28ID:9M/UErff 東北大学で情報工学学んで東工大の大学院に入ったとしたらすごい経歴だな
369デフォルトの名無しさん
2021/08/08(日) 22:24:34.16ID:9M/UErff うらやましいただただうらやましい
370デフォルトの名無しさん
2021/08/09(月) 17:36:30.11ID:jzl3UTNH 東京工業大学の汚点になるから、こんなボケたジジイを持ち上げるのやめて欲しい。
371デフォルトの名無しさん
2021/08/09(月) 17:41:06.81ID:vbsnYimc staticおじさんはSIerに仕事発注する立場でありながら自分でシステム構築もしてるようだな
エンジニアの理想じゃん
エンジニアの理想じゃん
372デフォルトの名無しさん
2021/08/26(木) 23:21:57.42ID:Engbmk1d アラン・ケイがオブジェクト指向という言葉を作って
オブジェクト指向のプログラミング言語Smalltalkを作った
日本IBMはSmalltalkのスペシャリストを集めてSmalltalkを使って
オブジェクト指向のシステムを作ろうとしたけど失敗した
長野オリンピックや九州医大病院のシステムだ
結局それらはVBで作られた
最強の組織、最強の言語、最強のオブジェクト指向を使っても
できなかったことがVBならできた
このことから僕たちは学ばないといけないよね
オブジェクト指向のプログラミング言語Smalltalkを作った
日本IBMはSmalltalkのスペシャリストを集めてSmalltalkを使って
オブジェクト指向のシステムを作ろうとしたけど失敗した
長野オリンピックや九州医大病院のシステムだ
結局それらはVBで作られた
最強の組織、最強の言語、最強のオブジェクト指向を使っても
できなかったことがVBならできた
このことから僕たちは学ばないといけないよね
373デフォルトの名無しさん
2021/08/26(木) 23:23:09.43ID:Engbmk1d 過剰なオブジェクト指向は破綻を招くのじゃなかろうかと
374デフォルトの名無しさん
2021/08/27(金) 12:18:26.30ID:+wfLaYar375デフォルトの名無しさん
2021/08/27(金) 13:37:11.91ID:eJGjxOi5 staticおじさんもデザインパターン厨もどっちも嫌なんだよ〜ん
376デフォルトの名無しさん
2021/09/02(木) 20:23:52.17ID:tjtHyeAD 俺は全部日本語で書くおじさんだけど叩かれる?
DDDとかもう古いかな
DDDとかもう古いかな
377デフォルトの名無しさん
2021/09/02(木) 21:47:04.83ID:IZWicv0z 日本固有の業務用語は変数名をローマ字で書いちゃう
378デフォルトの名無しさん
2021/09/03(金) 07:24:47.29ID:FhIZBaS/ ローマ字じゃない
ガチで日本語の業務用語書く
ガチで日本語の業務用語書く
379デフォルトの名無しさん
2021/09/03(金) 07:27:46.76ID:FhIZBaS/ 小規模スマホアプリならstaticで良いよね
他のオブジェクトと協調なんてしないから状態の奪い合いなんて起こらない
他のオブジェクトと協調なんてしないから状態の奪い合いなんて起こらない
380デフォルトの名無しさん
2021/09/03(金) 08:35:21.37ID:6uQ/qiqA Enumを全角の日本語にすることはある
気は進まないが英語やローマ字だと可読性が低すぎてバグに繋がりそうなとき
気は進まないが英語やローマ字だと可読性が低すぎてバグに繋がりそうなとき
381デフォルトの名無しさん
2022/04/09(土) 07:24:05.51ID:BCdBtInS 言うほど悪い人じゃなかったよね(´・ω・`)
一理はあったし、かわいそう(´・ω・`)
一理はあったし、かわいそう(´・ω・`)
382デフォルトの名無しさん
2022/05/01(日) 09:16:15.43ID:nmGekSHA 一理とは
383デフォルトの名無しさん
2022/05/01(日) 13:16:06.40ID:aS2zfgOp ぱっとしない家系
384デフォルトの名無しさん
2023/06/08(木) 21:44:07.44ID:nNz5ov89 メソッドもメンバ変数もstaticにしてインスタンス化を不要にするが何故駄目なのかようやく分かったよ
ホラ吹きプログラマーに流されて擁護したことが恥ずかしくなってきた
ホラ吹きプログラマーに流されて擁護したことが恥ずかしくなってきた
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- サナエノミクスについて力説 積極的な財政出動で「所得増える 消費マインド上がる 税収増える」片山さつき財務大臣 ★3 [少考さん★]
- 中国軍機のレーダー照射1週間 駆け引き続く 中国、米のレッドライン模索 日本、米以外の同志国とも連携探る 米は対立から距離置く★2 [ぐれ★]
- 鈴木農相「おこめ券はお米しか買えないわけではない。例えば卵、味噌、しょうゆ、こうした購入に利用可能」 ★4 [Hitzeschleier★]
- 山里亮太、フィリピンに子ども食堂を建設 「偽善者」「日本の子どもを助けるべき」の声があっても活動を続ける理由 [Anonymous★]
- 【芸能】粗品、日本テレビに苦言 客のレベルが「かなり低い。あいつら分かってない」「拍手したいだけやねん」 [冬月記者★]
- 橋下徹氏「総理なら岡田さんに何を聴かれても耐えてほしかった」 高市首相の台湾有事めぐる答弁に# [jinjin★]
- 女の子ってマッサージされてる時にオナラしたくなったらどうすんの?
- この時期にJKじゃないのにミニスカ奴ってメンヘラ率何%??
- 君たちのクリスマスの予定
- イヨォ~!!チンポチンポチンポ♪
- フランダースの犬を見たんだが
- この女がいいねと君が言ったから12月24日はレイプ記念日
