エントリーの編集
![loading...](https://b.st-hatena.com/bdefb8944296a0957e54cebcfefc25c4dcff9f5f/images/v4/public/common/loading@2x.gif)
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
![アプリのスクリーンショット](https://b.st-hatena.com/bdefb8944296a0957e54cebcfefc25c4dcff9f5f/images/v4/public/entry/app-screenshot.png)
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
継承は欠陥機能だから使うな
class Hoge(Foo) { // ... } なんてことは論理的にあり得ない。 HogeをFooとみなすかどうかは、一般的に... class Hoge(Foo) { // ... } なんてことは論理的にあり得ない。 HogeをFooとみなすかどうかは、一般的に文脈によるからだ。 だから、Hogeの定義にFooのサブタイプであることが課せられるのはおかしい。 ましてや、Fooの実装がinheritされるのは尚更おかしい。 例をあげよう。 カーテンは家具でもあるし布製品でもある。 しかし、カーテンを家具の一種だとみなすか、布製品の一種だとみなすかは、文脈による。 だから、カーテンの定義にそれが家具であるとか布製品であるとかいう条件が課されるのはおかしい。 インタフェースでも同様である。 また、インタフェースの実装もおかしい。(たとえそれがクラス定義とインタフェース実装が分離された場合、いわゆるProtocolというパターン、であっても) AがBであるとき、AをBとみなす方法は一般的には複数あり、どの方法によるかは文脈に