学生の頃オブジェクト指向にハマって継承を繰り返していた後輩が泣きついてきた時にあの人が現れて解決した話

レベル高い
141
垂木いすゞ @Isuzu_T

このアカウントは誰向きでもありません。発言を読んだことに起因する不快感に関して当アカウントは責任を負いかねます。フォロー・リムーブ・リプライはご自由に。挨拶不要。反応するかは気分次第です。このアカウントはエロ、愚痴、政治、アニメ実況、不謹慎ジョーク、その他一切の言動を自重しません。サイバーイグアナ氏フォロー中

垂木いすゞ @Isuzu_T

学生の頃の話だ。 当時、僕が所属していたプログラミングサークルの後輩が、オブジェクト指向にはまっていた。僕はオブジェクト指向がなんなのかよくわからず、構造体に毛の生えたような使い方しかしていなかったのだが、後輩は継承にドハマリし、あらゆるコードで継承を使っていた。

2021-02-23 17:07:05
垂木いすゞ @Isuzu_T

「継承って使いすぎると良くないって聞くけどね」 僕はそう言ったが、聞き齧りなので理由は説明できなかった。なので後輩も当然納得せず、継承を駆使したコードをひたすらに追求していた。 たしかに、そのコードは短かった。

2021-02-23 17:08:44
垂木いすゞ @Isuzu_T

だが、ある日その後輩の進捗がぴたりと止まってしまった。どうしたのかと尋ねると、ちょっと変更を入れたら動かなくなった、という。 えてして、そう言う時は本人だけがうっかり気づけなかったつまらないことが原因なものだ。そう思い、コードを見せてもらった僕は仰天した。

2021-02-23 17:14:26
垂木いすゞ @Isuzu_T

からまりあう継承は、もはや木構造ではなく、網だった。 ひとつのメソッドを呼び出すだけでどれだけの親クラスを参照するのかわからない。 苦労して挙動を解析しても、今度は変更していいのかわからない。 クラスは網の中にがっちりと組み込まれ、いずこともしれない場所から呼び出されているからだ。

2021-02-23 17:20:33
垂木いすゞ @Isuzu_T

こんな状態では確かに少しの変更が全体の破綻を招くだろう。継承を乱用してはいけないというのはこういうことだったのか。僕はそう思ったが、すでに遅かった。 「せんぱああああああい。助けてくださあああああい、せんぱああああああい」 この世のものとは思えない悲鳴に、僕は死を覚悟した

2021-02-23 17:22:17
垂木いすゞ @Isuzu_T

「破あ!」 突然、声とともに、青白い光弾が後輩とコードに叩きつけられる! 後輩は吹っ飛んで倒れ、コードは継承を多用しない形にリファクタリングされた。寺生まれで霊感の強いTさんだった。

2021-02-23 17:25:41
垂木いすゞ @Isuzu_T

「継承に取り憑かれていたようだな。危ないところだった。単に字面上似てるコードを片っ端から共通化しなかったか? 自分が対象をどうモデル化しているか、モデルにはどんな変更がありうるか、どんな変更があっても必ず同じ動きになっていてほしいところはどこか、それを考えて使わなきゃだめだぜ」

2021-02-23 17:26:36
垂木いすゞ @Isuzu_T

Tさんは文字通りつきものが落ちたらしい後輩にそう言うと帰っていった。 寺生まれってすごい。改めてそう思った。

2021-02-23 17:27:19

さすが寺生まれのTさん

村ショウ @murasyoublog

@Isuzu_T ITにも強い寺生まれのTさん…

2021-02-24 07:31:24
4473 @44KLK

@Isuzu_T 寺生まれのTさんまたこうして出会えるなんて

2021-02-24 10:57:36
Tom魚、ショアブリを釣るもの @bisisats

@Isuzu_T TさんのTはITのTだった!? 参考になります

2021-02-24 12:21:07
ポロロッカ @pororocca3776

@Isuzu_T 寺生まれのTさんにこのITの時代にまた会えるとは

2021-02-24 12:53:42
rero @rero_carnelian

@bisisats @Isuzu_T 文脈から判断すると、寺のTだと解釈するのが妥当なんやな。

2021-02-24 12:59:14

プログラミング的な話

Daiki @pythonism_

@Isuzu_T LSPの原則にそってなかったのですかね… その結果、Open closed principle にも逆らうような感じになったのも要因なのですかね… Tさん…

2021-02-24 12:28:50