2020-10-23

anond:20201022183852

クラス間でメソッド共通化したいが、継承のように「置換可能性」を考慮したくない、というときのためにMixinやTraitがあるんじゃないのか

mixinもキチガイ刃物だと言いたいんじゃね?

前にな1000行を超えるTraitを使ってるプロダクトを見たことがあったが発狂しそうになったよw

記事への反応 -
  • キチガイに刃物、ゴミプログラマに継承。危険なものは取り上げるべきだ。 オブジェクト指向プログラミングにおける継承は強力な手法であるが、これを正しく使えるプログラマは残...

    • MixinとかTraitとか、継承によらずに機能を共通化するための仕組みが各言語に用意されてるのに、誰も言及していない…

      • なんで罵倒だけついて誰も教えてくれないんだ クラス間でメソッドを共通化したいが、継承のように「置換可能性」を考慮したくない、というときのためにMixinやTraitがあるんじゃないの...

        • クラス間でメソッドを共通化したいが、継承のように「置換可能性」を考慮したくない、というときのためにMixinやTraitがあるんじゃないのか mixinもキチガイに刃物だと言いたいんじゃ...

        • commonとかutil作りそう

      • ↑何にも分かってないやつ

      • アホすぎ ネタで言ってるんじゃなけりゃソースコード書くのやめるべき

    • いわゆるBridgeとAdaptorパターン

      • ブリッジパターンよくわからんから、説明してくれ。アダプタパターンは「継承することで、継承元をラップする」ということはわかったので。

        • よくわからんも何もごく当たり前のオブジェクト指向の使い方だが メンバ変数のオブジェクトに処理を委譲する ポリモーフィズムで具体的なオブジェクトごとに処理を切り替える ...

          • あー、なるほど、ってならないが、元増田は多分わかっているんやろね。ところで本は何使って勉強しましたか?

    • AにBを持たせる class A { private B b; // 実装} AをラップしてBと共通のインタフェースを実装する interface IB { // Bのメソッド}class A implements IB { private A a; // 実装}class B implements IB { ...

    • よし、お前の熱い気持ちしかと受け止めた。バズるのは時間帯が悪かったと思うので、次に投稿するときには夜ご飯ぐらいがいいよ。それでは添削してやろう。 継承はだめ、という主...

      • リスコフの置換原則は、継承したメソッドは上下で型の変化を無くせ、というだけだろ? 全然違う件

        • 入れ替えても「他と同じように」動くクラスを作れって話だよな。 もしかすると型の変化を無くせという一節にその意味が込められているのかもしれないがどう考えても伝わってない。

          • 「型」という言葉が、たとえばCoqのような形式証明や、よくあるHaskellの純粋性などを解説する際に用いられるような 「周辺環境すべての情報を含むもの」 という意味でしたら、「型を...

          • そのつもりで書いたが、分かりにくいか... 次から気をつける。

        • リスコフの置換原則は、もとのクラスと継承したクラスとで、引数かレシーバーの型が T だとすると、継承したクラスはもとのクラスと同じ型を返さないといけないという話だよね?違...

    • 要は、継承より委譲しろ、ってことだな?

    • クラス型オブジェクト指向言語の機能は何でも出来すぎるという意味でgoto文に近いと思う。 gotoが機能的に制限された構造化言語構文に進化したように、デザインパターンをもっと整理...

      • シェルスクリプトとLispに回帰すべきなんですよ。 あらゆるオブジェクトは、リスト、マップ、ラムダ式のような汎用的なデータ構造で表される。 プログラムのすべての機能は互い...

        • 上は Ruby が実現している気がする。下はユニゲージってやつか。どうみてもユニゲージは無理があるが。

          • Erlangがそれに近い Erlang https://www.erlang.org/docs https://www.ymotongpoo.com/works/lyse-ja/ Elixir およびErlangをラップした言語であるElixir https://elixir-lang.org/docs.html https://elixirschool.com/ja/

        • プログラムのすべての機能は互いに独立した(仮想的な)プロセスとして並行に実行され、プロセス間のデータのやり取りにはメッセージングとパターンマッチを用いる。

        • いやLispは最強のオブジェクト指向システムを持ってるんですが。 Lisp界ではハッシュテーブルとクロージャーとマクロがあればオブジェクト指向システムいらねというポールグレアムみ...

          • CommonLispは、とか、Lispの種類を区別しなくていいの?

          • こういう知識ひけらかそうとして読解力の無さ露呈してる奴って本当に滑稽だな。

    • pythonにはinterfaceの概念がないので継承を使わざるをえない場面があるので極力関数定義にしてるわ。 ステートレスなデータを扱う場合は状態を表すデータ型用意して関数でこねくり回す...

      • えーっとね そもそもPythonはダックタイピングだからinterfaceは必要ない

        • そんなんわかってるよ。だからinterfaceの概念ないっていってるじゃん。 イディオムとしてABC使ったとしても継承しか振る舞いの定義方法のやり方がないから何も間違ったこと言ってない...

      • Ruby も同じ。

    • ゴミプログラマは2段を超える階層構造を一般に理解できない

      • つまり、メソッドには一つのことをテーマにしろと?

      • これはマジ 実務で5-6建ての継承書かれてもまともに読めないからやめてほしい 移乗で扱ってくれ どのメソッドがどの継承している中のクラスの実装を動かしてるかなんて読めないよ そ...

    • 継承で馬鹿ルールを思い出した 必ず共通空クラスを継承することっていうルール SIer の大好物ルール オレにとっては未だに意味不明 class Base() {なんか実装してある} class Empty() extends Bas...

      • printデバッグとかに使うんすかね 知らんけど

        • そういうことなんか。勉強になった。 Ruby なんかでも、BasicObject が生まれた契機は、こういう「バグとかチェックするのに便利」なやつなんだろうか?

    • Qiitaのポエムより、何か言ってる感がある分ひでぇ

    • 保守困難個所を作れるなら、つまり自分の有利じゃん その重要な部分が周知されていないのも、明らかに意図されているだろう 今後もそうなんだろうな

    • 多くの場合、後者の方法が、もっと言えば 「AをラップしたクラスA'と、BをラップしたクラスB'を作り、A'とB'に共通のインタフェースを実装する」 のがベストプラクティスではないか。

    • コピペで作れるように使い方わかってる奴がサンプル作りゃええやん 待ってるで

    • こういう過激派がいるプロジェクトは、プログラム的には正しくても事業的には成功しない印象。

    • 完全に正しい多段継承でテンプレートパターン使いすぎて使い勝手最悪のライブラリを見たことがあるのでリスコフが全てだとは思わないかな。 継承より委譲には賛成。 > Aをラップし...

      • なんかわかっている人がきた感じ。 イテレータパターンとオブサーバーパターンは言語に組み込まれた感じがする。Ruby とか見てると。

        • いつの話ししてるんだよお前

          • うーん、2005年ぐらいか? Scala とか出てきたけど、デザインパターンが言語レベルで組み込まれたのは、これぐらいじゃない?Java や Javascript も機能に組み込んだけど。

            • ScalaのTraitは何のためにあるのか教えてくれ

              • さぁ?オレはScala嫌いだから知らんよ。 まぁ、でも多分こんな目的では?という予想はあるよ。 ・もともとは C++ は多重継承ができて、カオスになった。 ・Java が単一継承となり、振...

              • scalaなら関数型ライブラリのcatsにおける型クラス定義がtraitとその多重継承の利用例として良いと思う

    • リスコフの置換原則を満たしていても共通化の仕方が雑だからひどいことになっている継承、というのはいっぱいあるように思う コンポジションのが責務の分割がうまくいくのでコンポ...

      • コンポジット・パターンのことかと思ったけど、委譲のことを言いたいのですね?ぐぐったら、コンポジションを委譲と書いてあったので。

    • 継承は必要だよ。継承がないと多態が表せないから。 馬鹿に継承を扱わせると、仕事している感を醸し出すために継承を活用せざるを得ない。だから、継承はクソに見える。よって、...

    • 難しく考えなくても、クラスAに毛が生えたクラスA'を作る以外に使っちゃダメでいいよ。 GoFにもそう書いてある。

    • ミックスインは継承に入りますか?

    • この辺の継承のアンチパターンとかデザパタの話、JavaとRubyくらいしかそういう本がないのが問題なんじゃないのかね。デザパタ学ぶのにJavaとRuby使いたくねーよ。Pythonでそういうのある...

      • pythonは len(list) でオブジェクト指向じゃない認定されてるから

      • デザパタを勉強する程度なら、どんな言語でもよくね? 大昔のアルゴリズム本とか、実在しない疑似言語とかでコードが書いてあったけど。

        • 概念学ぶなら疑似言語でも知らない言語でもよくて得意な言語に応用できるなら糞プログラマしてねーよ

      • デザインパターンとかいう以前に、ソフトウェア設計の基礎の基礎 こういう当たり前のことをなにか特定の技術だと思ってるのはセンスが無いんだよ 「ビジネスマナーの本読んだけど...

    • 順位 タイトル ブクマ数 日付 ジャンル 備考 1 意識の低いフリーランスの生存戦略 2260 02/26 テクノロジー 2 ケンタッキー初心者...

    • 順位 タイトル ブクマ数 日付 ジャンル 備考 1 意識の低いフリーランスの生存戦略 2260 02/26 テクノロジー 2 ケンタッキー初心者...

    • トップ700 順位 ブクマ数 タイトル 日付 ジャンル 備考 1 2260 意識の低いフリーランスの生存戦略 02/26 テクノロジー 2 2246 ...

    • トップ700 順位 ブクマ数 タイトル 日付 ジャンル 備考 1 2260 意識の低いフリーランスの生存戦略 02/26 テクノロジー 2 2246 ...

    • 順位 ブクマ数 タイトル 備考 1 2260 意識の低いフリーランスの生存戦略 2 2246 ケンタッキー初心者指南 3 1980 100分de名著シリ...

    • 順位 ブクマ数 タイトル 備考 1 2260 意識の低いフリーランスの生存戦略 2 2246 ケンタッキー初心者指南 3 1980 100分de名著シリ...

    • 順位 ブクマ数 タイトル 日付 備考 1 2260 意識の低いフリーランスの生存戦略 02/26 2 1848 プログラミングスクールなんか行かなくてい...

      • トップ500 順位 ブクマ数 タイトル 日付 備考 1 2260 意識の低いフリーランスの生存戦略 02/26 2 2246 ケンタッキー初心者指南 ...

        • パンティー変はないのか

        • 昨日、M区のクライアントのオフィス行ったんです。クライアントのオフィス。 そしたらなんか知らない人がめちゃくちゃいっぱいいたんです。 で、よく見たらなんか垂れ幕下がってて...

        • 月刊増田文学賞も創設してくれやで ワイは妖怪寿司女を推す https://anond.hatelabo.jp/20210112213223

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん