ちょっとした反抗期。オブジェクト指向のここが嫌いだ。(おちなんてないいい)
わたしはオブジェクト指向と呼ばれるものが比較的好きなほうじゃないかな。
でも嫌いなものもいくつかある。
まず第一に継承。これはきらい。
覚えたてのころなんかは継承しまくって何度も痛い目を見たのでvirtualという単語を見ると胸がドキドキする。
特にデストラクタについているvirtualと=0を見たときはストレスマッハだ。=0を消したくなる。
まぁでも継承はうまく使ってあげればそれなりに付き合っていける。
もっと嫌いなのはカプセル化。
これはもうなんかダメ。だってそもそもclassが嫌い。
デフォルトでprivateなclassよりもpublicなstructがいい。
何もなければ隠しちゃうとか陰湿すぎる。オープン人が私は好きだ。
多分こんなこと言うと教科書のごとく
いろんなところで見えちゃって万が一書き換えられたらどうするの?とか突っ込まれるかもしれない。
でも、私は、たとえばstructの中にメンバ変数が定義されてたとして
いきなりそのメンバにアクセスするようなコードは書いたりしない。
見た瞬間これは罠なんじゃないか?と疑ってかかる。
今まで痛い思いしてたら大体そう。structの変数なんて罠以外の何者でもない。
自分が書いたstructのメンバ変数を、仮に端からprivateに置き換えてもコンパイルエラーはほとんどおきない。
罠には触れたくないからだ。
だったらclassで書けよって?
ごもっともです。
後ひとつ、わたしが日ごろ懐疑的に思うキーワード。ブラックボックス。
よく例として見かけるのが洗濯機。
全自動のボタン押せば、中身の構造が分からなくても洗濯してくれるから便利でしょ
と。
たしかに構造しらなくても使えるのは便利。うん、便利。
でもね。わたしはこれがどうしても洗濯機に見えない。分からない。
中身も知らないんだけど、外見も分からないんだよ。
もし、自分が過去に書いたコード、特にヘッダがぱっと見で何をしているのか分からないなら
ある意味もうブラックボックス化にかなり成功しています。
ただしブラックボックスなのは全体です。
そんなコードを再利用したら大変。
結局細部の構造を調べさせられることになる。余計な手間が増えただけになる。
せめて洗濯機に見えないコードは、『これは洗濯機です。』と書いておくべきだ。
ただ、万が一、未来の自分に対する挑戦状を送りたいなら、これは絶好の機会になりそうだけど。