Uploaded image for project: 'Ymir'
  1. Ymir
  2. YMIR-280

*[ymir-extension] Converterのメソッド構成の見直し

XMLWordPrintable

    • Type: Icon: Improvement Improvement
    • Resolution: Fixed
    • Priority: Icon: Major Major
    • 1.0.1
    • Affects Version/s: 1.0.0
    • Component/s: ymir-extension
    • None

      【概要】
      現状、何をオーバーライドすればいいのかわかりにくい。
      補完の絞り込みがしづらいメソッドになっている(Copyで始まるメソッドが多いなど)

      【環境】
      Mac OS X
      Safari
      Java 5.0

      【仕様案】
      o オーバーライド必至なメソッドcopyTo(Entity, DTO)はcopyTo(DTO, Entity)を
       copyDtoToEntity()とcopyEntityToDto()にする。
       → 現状どっちがどっちだかわかりにくいため
       → メソッド名で判断できればメソッドのシグネチャは意識する必要ない

      o ユーザがオーバーライドする想定のメソッドは「_」始まりにする。
       → Pageクラスの良い仕様をこっちにも適用
       → 代表的なのは先述のcopyDtoToEntity()を「_copyDtoToEntity()」に

      o リスト変換とプロパティ個別変換のメソッド名の始まりを違うものに
       → 現状Copyで補完中あまりにメソッドが表示されすぎてわかりづらい
       → プロパティ変換は「Copy」という言葉は使わず別のにするのが良いかと

      o プロパティ個別変換のメソッドで安全なオーバーライドメソッドの提供
       → 現状、CopyMemberNameTo(dto, entity)という形で、結局サブクラスでは
        好きなような変換ができてしまい安全でない
        「String extractMemberNameFromEntity(Entity entity)」
        というような感じのメソッドを作成して、オーバーライド単位を
        狭めた方が安全である。

      o 配列同士の変換メソッドは、プロパティに配列がいなければ出力しない
       → オーバーロードメソッドがたくさん補完されて選びづらい
       → YMIR-279の話とも多少なり関連する

      全体イメージはこんな感じ:

      _copyDtoToEntity(...)
      _copyEntityToDto(...)
      
      reflectMemberNameToDto()
      _extractMemberNameFromEntity()
      
      reflectMemberNameToEntity()
      _extractMemberNameFromDto()
      

      【補足】
      この機能は、将来Ymirの大傑作となる可能性を秘めているので、
      こういった細かいところもこだわった方が良いと考える。

            Assignee:
            skirnir skirnir
            Reporter:
            jflute jflute
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: