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:pS5scTjj248デフォルトの名無しさん
2019/03/08(金) 18:33:27.22ID:j3u+c/XL >>247
当たり前じゃないですか
自分が言っているのは「gotoはエラー処理時に便利」「rollackの方が状態管理の煩雑さを軽減できるのでいいのではないか?」という二点であって、それ以上のことは言ってませんよ
当たり前じゃないですか
自分が言っているのは「gotoはエラー処理時に便利」「rollackの方が状態管理の煩雑さを軽減できるのでいいのではないか?」という二点であって、それ以上のことは言ってませんよ
249デフォルトの名無しさん
2019/03/08(金) 18:46:48.30ID:rZq9fJ02 ああ、こういうタイプの人か
250デフォルトの名無しさん
2019/03/08(金) 19:48:05.20ID:bTIRYiKW いやいや、createでエラーが返されたらdestroyする。
それだけだぞ。当然中身なんか知らなくてもいい様にするだろ?
なんで未定義のリソースの心配までしなきゃならないんだ?
全部createしたモジュールから機能を呼ぶだけなのに。
…あ、オブジェクト指向は理解できない人たち?
それだけだぞ。当然中身なんか知らなくてもいい様にするだろ?
なんで未定義のリソースの心配までしなきゃならないんだ?
全部createしたモジュールから機能を呼ぶだけなのに。
…あ、オブジェクト指向は理解できない人たち?
251デフォルトの名無しさん
2019/03/08(金) 20:33:53.95ID:j3u+c/XL あのさあ、人にオブジェクト指向の理解を問う前に不変条件という概念について勉強してくれないかな
class-invariantって聞いたことない?生成失敗は不変条件の構築失敗なんだから破棄処理もクソもないでしょ
前提が成り立ってないんだから
class-invariantって聞いたことない?生成失敗は不変条件の構築失敗なんだから破棄処理もクソもないでしょ
前提が成り立ってないんだから
252デフォルトの名無しさん
2019/03/08(金) 20:58:42.35ID:0ga9HMQd 情報系の学生さんっぽいね君
253デフォルトの名無しさん
2019/03/08(金) 21:33:08.23ID:meEyRQaU goto で一番問題だったのは外で変数を勝手にセットして
ループに飛び込んで、ループ内の変数を勝手に書き換えて
ループから飛び出していく
とかいうコードを当たり前のように書いていたから
変数がどこで書き換えられているのかわからなかったのが
一番の問題
ループに飛び込んで、ループ内の変数を勝手に書き換えて
ループから飛び出していく
とかいうコードを当たり前のように書いていたから
変数がどこで書き換えられているのかわからなかったのが
一番の問題
254デフォルトの名無しさん
2019/03/08(金) 22:04:49.84ID:bTIRYiKW255デフォルトの名無しさん
2019/03/08(金) 22:53:58.68ID:j3u+c/XL 上で言っているのは「要求される前提条件」についての話ですよ?
あなたの上げた例は単にあるリソースの獲得失敗は想定の内である、そのような前提条件を有するシステムが存在するっていうだけです
それとも任意のエラーを許容する、前提条件ゼロのシステムが存在するとでも?
あなたの上げた例は単にあるリソースの獲得失敗は想定の内である、そのような前提条件を有するシステムが存在するっていうだけです
それとも任意のエラーを許容する、前提条件ゼロのシステムが存在するとでも?
256デフォルトの名無しさん
2019/03/08(金) 23:16:55.43ID:j3u+c/XL というか、そもそも不変条件の構築失敗時には死ぬしかないっていう一般論が
リソース獲得時には死ぬしかないという主張に挿げ替えられているのが意味不明ですね
一体どこを読んでそう思ったんですか?皮肉じゃなくて聞きたいですね
そんなこと言ってないつもりですが
リソース獲得時には死ぬしかないという主張に挿げ替えられているのが意味不明ですね
一体どこを読んでそう思ったんですか?皮肉じゃなくて聞きたいですね
そんなこと言ってないつもりですが
257デフォルトの名無しさん
2019/03/09(土) 01:44:23.67ID:jz9xUaFa リソース獲得に失敗した時にできるだけ活かすようにするのか
即時に終了するべきかのかは、「そう簡単に一般化できる結論はない」というのが
c++での例外導入時の議論における結論。
即時に終了するべきかのかは、「そう簡単に一般化できる結論はない」というのが
c++での例外導入時の議論における結論。
258デフォルトの名無しさん
2019/03/09(土) 04:54:46.17ID:EXmOKVNB 居酒屋で愚痴ってればいいのに
ネットで発信したから
ネットで発信したから
259デフォルトの名無しさん
2019/03/09(土) 08:30:21.08ID:RvRucbhc 居酒屋で愚痴る相手もいなかったんでしょ
260デフォルトの名無しさん
2019/03/09(土) 10:09:44.53ID:fkGpFy2T こんなネタで愚痴れる居酒屋があるなら行くわ
261デフォルトの名無しさん
2019/03/09(土) 10:12:12.55ID:aSefnx8y >生成失敗は不変条件の構築失敗なんだから
プログラムのロードはそうだろうけど
プログラムのロードはそうだろうけど
262デフォルトの名無しさん
2019/03/09(土) 11:16:49.71ID:0gt1Zzgm >>260
愚痴るネタが制限されてる居酒屋ってあるの?
愚痴るネタが制限されてる居酒屋ってあるの?
263デフォルトの名無しさん
2019/03/09(土) 12:06:11.88ID:RvRucbhc vimの話をしちゃいけない居酒屋とか作りたい
264デフォルトの名無しさん
2019/03/09(土) 13:56:59.81ID:jz9xUaFa プログラミングbarとか恐ろしく殺伐としてそうw
265デフォルトの名無しさん
2019/03/09(土) 19:27:34.53ID:sW/nhyo2 Ruby使いやPython使いだらけな予感
あとはVBA使い
あとはVBA使い
266デフォルトの名無しさん
2019/03/09(土) 22:11:22.90ID:vm8VmVdo 若い実務者が「オブジェクト指向」というお題目で一致団結してプロジェクトを
進めようという雰囲気のなか、それに水を指すひとが出てくるという状況が発生してきた
実務者は若いので現実に否定されると傷害事件にも発展するかもしれない
そうなると面倒だし統制かける自信がなかったから
代表して大々的に叩いてガス抜きした
みんなウィンウィンだからこれでいいんだろ。若者なんかなにするかわかんないんだから。
進めようという雰囲気のなか、それに水を指すひとが出てくるという状況が発生してきた
実務者は若いので現実に否定されると傷害事件にも発展するかもしれない
そうなると面倒だし統制かける自信がなかったから
代表して大々的に叩いてガス抜きした
みんなウィンウィンだからこれでいいんだろ。若者なんかなにするかわかんないんだから。
267デフォルトの名無しさん
2019/03/09(土) 22:43:52.46ID:kzjDxuXD 片方winしかしてないのにwinwinとは
268デフォルトの名無しさん
2019/03/10(日) 10:26:06.25ID:al/xCIsd まずあの当時の若いエンジニアならオブジェクト指向は当然の前提だからわざわざお題目として唱えない
269デフォルトの名無しさん
2019/03/10(日) 16:36:03.29ID:FM+9nmuq >>268
オブジェクト指向と言っても何をどうしたいのは人それぞれだからな。
オブジェクト指向と言っても何をどうしたいのは人それぞれだからな。
270デフォルトの名無しさん
2019/03/10(日) 19:06:30.25ID:kEGKNzHc その昔インスタンスを一個だけ作って
あとはメソッド=関数のように扱ってるプロジェクトを見たことがある
誰もダメ出ししなかったのかと
あとはメソッド=関数のように扱ってるプロジェクトを見たことがある
誰もダメ出ししなかったのかと
271デフォルトの名無しさん
2019/03/10(日) 19:10:28.71ID:bDFWdxia やり方によっちゃリファクタリングできる余地もあるだろうしstatic変数使うよりかは
少しだけマシかなと。
最近の設計方針としてはオブジェクト指向がどうよりもSOLIDを理解してる方がだいじかなと思う。
SOLID少しバカにしてたけど、かなりコンパクトに要素をまとめた標語になってる気がしてきた。
少しだけマシかなと。
最近の設計方針としてはオブジェクト指向がどうよりもSOLIDを理解してる方がだいじかなと思う。
SOLID少しバカにしてたけど、かなりコンパクトに要素をまとめた標語になってる気がしてきた。
272デフォルトの名無しさん
2019/03/11(月) 04:59:46.90ID:pTTv+VC9 インスタンスが増える可能性があるなら良いんじゃない?
273デフォルトの名無しさん
2019/03/11(月) 05:12:51.52ID:sVkqVhUd Single responsibility principle 単一責任の原則
A class should have only a single responsibility, that is,
only changes to one part of the software's specification should be able to affect the specification of the class.
Open–closed principle 開放・閉鎖原則
"Software entities ... should be open for extension, but closed for modification."
Liskov substitution principle リスコフ置換原則
"Objects in a program should be replaceable with instances of their subtypes
without altering the correctness of that program." See also design by contract.
Interface segregation principle インタフェース分離の原則
"Many client-specific interfaces are better than one general-purpose interface."
Dependency inversion principle 依存性逆転の原則
One should "depend upon abstractions, [not] concretions.
http://developer.wonderpla.net/entry/blog/engineer/oop_solid_s/
A class should have only a single responsibility, that is,
only changes to one part of the software's specification should be able to affect the specification of the class.
Open–closed principle 開放・閉鎖原則
"Software entities ... should be open for extension, but closed for modification."
Liskov substitution principle リスコフ置換原則
"Objects in a program should be replaceable with instances of their subtypes
without altering the correctness of that program." See also design by contract.
Interface segregation principle インタフェース分離の原則
"Many client-specific interfaces are better than one general-purpose interface."
Dependency inversion principle 依存性逆転の原則
One should "depend upon abstractions, [not] concretions.
http://developer.wonderpla.net/entry/blog/engineer/oop_solid_s/
274デフォルトの名無しさん
2019/03/11(月) 10:20:49.00ID:Rz4vOdRL 役割分担がどこまで出来てるかだよな。
オブジェクト指向より前から、機能分担なんてのは普通にやってたし、共通部品化と言う考えもあったしな。
オブジェクト指向より前から、機能分担なんてのは普通にやってたし、共通部品化と言う考えもあったしな。
275デフォルトの名無しさん
2019/03/13(水) 20:12:53.02ID:AiOHxaEO スノッブだよ。スノッブが役割分担とか笑わせる
276デフォルトの名無しさん
2019/03/13(水) 20:35:09.13ID:Kky52x6n じゃあいままで一体なにやって来たんだ。
277デフォルトの名無しさん
2019/03/14(木) 06:57:29.67ID:/hJRNFKz ↓麻生太郎のあの画像
278デフォルトの名無しさん
2019/03/14(木) 11:05:30.46ID:lFrR8Qde スコープの概念が無いだけ
279デフォルトの名無しさん
2019/03/14(木) 12:44:05.36ID:jLkIdUGW 怪奇現象が怖かったから、ほら、怖いだろ?って
後片付け、気が滅入る
後片付け、気が滅入る
280デフォルトの名無しさん
2019/03/17(日) 23:41:55.70ID:qFtY3RGx staticおじさん叩いてる人の何割がSingletonをstatic class的に使ってたのか問題
281デフォルトの名無しさん
2019/03/20(水) 09:26:19.50ID:R+JMdvE0 そんなやつおるの?w
282デフォルトの名無しさん
2019/04/14(日) 10:21:07.07ID:VpFefbBa >>206
ラベル付きのbreakとかcontinueって、スペルを変えたgotoってだけだよな
ラベル付きのbreakとかcontinueって、スペルを変えたgotoってだけだよな
283デフォルトの名無しさん
2019/04/14(日) 11:52:53.79ID:u6Sj11hg284デフォルトの名無しさん
2019/04/15(月) 09:54:01.21ID:gVz3O2O7 www.sejuku.netのゴミさは異常
いい加減な記事ばかりサイトに載せやがって
検索に引っかからないでほしい
いい加減な記事ばかりサイトに載せやがって
検索に引っかからないでほしい
285デフォルトの名無しさん
2019/04/15(月) 10:44:00.27ID:BsGbG3gA 英語の意味検索するときweblio見たいのにalcとかいうゴミサイトが上に来るみたいなもんだなwww
286デフォルトの名無しさん
2019/04/15(月) 13:14:38.74ID:Q9ByXEDM 「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
これもガチで検索結果から消えてほしい
役に立ったためしがない
これもガチで検索結果から消えてほしい
役に立ったためしがない
287デフォルトの名無しさん
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しかなかったら、皆、どんな反応すると思う?
こういうライブラリレベルで使い勝手の良いコードを隅々まで書くのが俺の開発現場。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- サナエノミクスについて力説 積極的な財政出動で「所得増える 消費マインド上がる 税収増える」片山さつき財務大臣 ★3 [少考さん★]
- 中国軍機のレーダー照射1週間 駆け引き続く 中国、米のレッドライン模索 日本、米以外の同志国とも連携探る 米は対立から距離置く★2 [ぐれ★]
- 山里亮太、フィリピンに子ども食堂を建設 「偽善者」「日本の子どもを助けるべき」の声があっても活動を続ける理由 [Anonymous★]
- 鈴木農相「おこめ券はお米しか買えないわけではない。例えば卵、味噌、しょうゆ、こうした購入に利用可能」 ★4 [Hitzeschleier★]
- 【芸能】粗品、日本テレビに苦言 客のレベルが「かなり低い。あいつら分かってない」「拍手したいだけやねん」 [冬月記者★]
- 橋下徹氏「総理なら岡田さんに何を聴かれても耐えてほしかった」 高市首相の台湾有事めぐる答弁に# [jinjin★]
- 女の子ってマッサージされてる時にオナラしたくなったらどうすんの?
- エビデンスとコミットって言いたいところを「エロいんですぼくもっと」って言い間違えるやつなんなの?
- この時期にJKじゃないのにミニスカ奴ってメンヘラ率何%??
- うんこおおおおおおおおおおおおおおおおおおおおおおおお!!!!!!!!!!!!
- イヨォ~!!チンポチンポチンポ♪
- フランダースの犬を見たんだが
