るぅもも園営業部-多趣味おやぢの動物事情-

アカビタイムジオウム情報メイン。ペット情報、IT技術や料理等いろんなことを書きまくっています。

【IT技術】アップキャストの利点ってなに?

time 2016/06/14

【IT技術】アップキャストの利点ってなに?

おかしいなぁ……。これ、去年の新人研修の問題で出したはずなんだけどなぁ。
先日、2年目の子から、掲題の質問を受けました。

sponsored link

簡単に言えば、「子は親になれるよ」という概念です。

何がよいかっていうと、以下のような利点があります

プログラムの正規化ができる
→ 一部のロジックのテストが非常にシンプルになる
→ ノンコーディングで機能の追加ができる
というような感じです。

たとえば、親クラス

があったとして、子クラスが以下と仮定します。

とあったと仮定した場合、普通に考えたら、
以下のような処理となると思います。

同じような処理がいっぱいあり、細かいAやらBやらの転記で、
バグが生まれやすいという悲しいソースになっています。

アップキャストを使うことで、少しだけシンプルにできます。

つまり、子は親になれるよ、という特性を利用することで、
newするタイミングで、作成元を親とすることで、
同じような処理を複数回書く必要がなくなります。

ですが、上記パターンですと、もし、ChildDが追加された場合、
プログラムを直さなければいけません。
しかし、クラスを動的にNewすることで、処理を汎用化できます。

 

上記ロジックは、classNameと同じクラス名のオブジェクトのインスタンスを動的生成します。
なので、引数を変えるだけで、Parentを親に持つクラスであれば、自動実行される、
という算段です。

これにより、本メソッドは基本的にメンテナンスフリーとなりますし、
テストもif文が少ないため、非常に簡単にできます。

ただし、制約として

・指定するclassNameと実クラス名は大小文字を含めて同じにする必要がある、
・「リフレクション」という技法を利用しているため、やや処理速度は遅くなる

等の問題はあります。クラス設計や性能設計における、重要なポイントとなりますので、
どこで何を使うか、という見極めをできるようになると、
実装の幅が広がると思います。

sponsored link

コメント

  • 素晴らしいです解説ありがとうございます。

    ってかその2年目の子にはデザインパターンを再度叩き込む必要ありかと思うのですが・・・

    とはいえね、土方的な方々には関係無い話なのでアレですな。
    少なくともこの質問をくれる子は見込みありっぽいですが
    ※物覚えが良い悪いはこの際度返し。ってか質問にこなかったんだよ、俺がやった新人教育

    一番最後のコードはアレですな、フレームワークを自作する方々じゃないと板に付かないかと。

    たまにはクイックハックじゃない壮大なコードを書いてみようかな?
    仕事じゃ無いと実用コードは書き捨ててリファクタリングってのがマイスタイルなのでね。

    by yas0083 €2016年6月14日 10:16

    • 実情は2年目の子が1年目の子に質問されて答えられなくて、私のところに来た、なんですけども……。

      デザインパターンもなぁ、本質をちゃんと理解していないと頭に入らないのですよねぇ。
      一番最後は、完全にフレームワーク作成者指向ですね、確かにw

      私も仕事以外なら書き捨てだなぁ

      by 葉月 要 €2016年6月15日 09:46

  • > 実情は2年目の子が1年目の子に質問されて答えられなくて、私のところに来た、なんですけども……。
    1年目の子の方が素養がある感じですか?

    たかだか1、2年の子にデザインパターンでんでんはまだ早く、業務に耐えるコード
    * 可読性 => 既存のコードのルールに合わせる
    * 保守性 => 特化させすぎ無い、モジュール分割の徹底
    * 保全生 => リファクタリングできるように最低限のユニットテストのコードを書かせる
    ができれば私ゃ満点だと思うのですがいかがでしょうか???

    その点だと1年目だった原田さんは私的にはパーフェクトに見えましたが。

    まぁ、プログラマって
    * 職業プログラマ、プログラミングは食べる為の種でしかな
    * プログラミングバカ、コーディングが楽しくて楽しくてしょうがない。ライフワーク
    があって、前者の方々は伸び代少ないと思うのですよ。

    他人の書いたコード(この場合必然的に先輩の書いたコード)をひたすら読み込んで「脳内トレース」がちゃんと
    できる子は間違いなく伸びます。

    >一番最後は、完全にフレームワーク作成者指向ですね、確かにw
    ってか、これはプログラミングバカ(褒め言葉)な方々です。
    ハック(Not クラック)って言葉が好きたまら無い人たち。
    他言語を3つ以上嗜んでい無いと理解しにくい領域かと

    最近だと関数型言語の概念しってるだけで夢広がりングですが。

    > 私も仕事以外なら書き捨てだなぁ
    仕事以外には絶対にコーディングし無い方々もいるどで残念ながら師匠も「プログラミングバカ」ですな。
    エイリアスでハッカー予備軍。早くウィザード(グル)になりたいですね(はぁと)

    by yas0083 €2016年6月17日 09:08

    • んー。私はコーディングが好き、というわけではなく、何かを達成するための手段としてにコーディングしているだけなので、
      手段が違えば別にコーディングじゃなくてもいいわけなのです。なので、「プログラミングバカ」の畑とはちょっと違いますねぇ。

      > 可読性
      残念ながらメソッド名すら工夫できない子が多いこの世の中。デザインパターなんてとてもとても

      by 葉月 要 €2016年6月21日 09:28

  • > んー。私はコーディングが好き、というわけではなく、何かを達成するための手段としてにコーディングしているだけなので、
    > 手段が違えば別にコーディングじゃなくてもいいわけなのです。なので、「プログラミングバカ」の畑とはちょっと違いますねぇ。
    いえいえ、「無ければ作る」精神の人は残念ながら「こっち側の人間」です、手の施し用がありません、手遅れです。

    > 残念ながらメソッド名すら工夫できない子が多いこの世の中。デザインパターなんてとてもとても
    大手でもやってるそうですが、新人研修で「リーダブルコード」の朗読会&勉強会をするそうです。
    プロとして10年選手の方でもこのあたりが「甘々」で「前にならえでクソコード」連発する人もいるので一旦時間を作って「みんなで」やると良いと思いますよ。

    私自身は今、ライフワークとしてコーディングしてますけど。
    柵の無い、「自由な発想と度量だけで」突き進むコーディングは至高です。
    某所にあげているプロジェクトはカメラ監視を最初期実装としていてすでに我が家で動いてます。

    師匠の家の場合はムツゴロウ王国真っ青な「ペット」たちのライフログ作りとか、ソーラーパネルの監視とか、家庭菜園の害獣撃退用とか使い道が多そうですね。
    興味があれば声をかけてくださいまし。

    以上、CM兼ステマ兼勧誘でした。

    by yas0083 €2016年6月23日 00:59

    • いやいや、なければつくる、はITだけにとどまらないから違います!(末期

      カメラ監視は実は構想にあったりなかったり・・・!!

      by 葉月 要 €2016年6月23日 09:57

  • カメラ監視は意外と最近アツイかもですね。
    とりあえず動体検知したければ motion 使えば大概のことできますよ。
    パラメータ調整は色々難儀してくださいまし。

    この辺りのノウハウはいまチャージ中なので近々公開予定です。
    師匠の家の鳥さん達にGPS+Wifiドングル持たせて脱走してもらうのはどうでしょうか?
    アクションカムもあれば良い映像が撮れそうですね。

    きっと、師匠の今まで与えた「無償の愛」できっとホームへ帰ってきてくれるはずですです。

    by yas0083 €2016年6月25日 23:45

down

コメントする




このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

ペット

雑記

ランキング

amazon

このブログを書いている人

葉月 要

葉月 要

SE歴13年。 Webでもクラサバでもなんでもござれのオールラウンダー。 Java、C#、ExcelVBA等の言語から、DynamicsCRM、Salesfroceなども手掛ける。 洞察、検証から最適解を探そうとする合理主義的かつ動物好き 文章作成や技術相談などがありましたらクラウドワークス等でお受けいたします。 連絡はこちらまでkaname_connect☆rulumomo.ddo.jp



sponsored link

検索