q397064399
V2EX  ›  问与答

如何消灭重复代码,提高代码质量

  •  
  •   q397064399 · Apr 9, 2017 · 2430 views
    This topic created in 3403 days ago, the information mentioned may be changed or developed.

    Java

    例如我在 mapper 层 取得了 User bean 对象,但是当前 User 这个模型 里面是自带了 password 字段, 而我目前这个需求是 只要暴露 User 对象的 id name 等少量模型属性, 除了重新建立一个 dto 对象 set get 一遍 ,还有其它办法么? 譬如在 User 模型上 加上一些注解关键字,可以随时开关这个模型的字段 序列化成 JSON 的结果

    表达有点不清晰,,求解。。

    10 replies    2017-04-09 21:32:33 +08:00
    q397064399
        1
    q397064399  
    OP
       Apr 9, 2017
    已找到方法,采用定制序列化即可,,
    q397064399
        2
    q397064399  
    OP
       Apr 9, 2017
    结贴
    Coande
        3
    Coande  
       Apr 9, 2017 via Android
    @q397064399 分享一下咯
    q397064399
        4
    q397064399  
    OP
       Apr 9, 2017
    @Coande #3 https://github.com/alibaba/fastjson/wiki/%E4%BD%BF%E7%94%A8SimplePropertyPreFilter%E8%BF%87%E6%BB%A4%E5%B1%9E%E6%80%A7

    fastjson 可以采用 属性定制过滤器 来过滤字段属性,这样就可以减少重复代码了
    springmarker
        5
    springmarker  
       Apr 9, 2017
    @JSONField(serialize = false)写在 get 方法上 fastjson.
    jackson 好像是 @JsonIgnore ,没用过。
    gexyuzz
        6
    gexyuzz  
       Apr 9, 2017
    不如采用 dto 传输
    q397064399
        7
    q397064399  
    OP
       Apr 9, 2017
    @gexyuzz #6 dto 得重新建立个对象吧,,那样不是要 put get 一遍了
    wohenyingyu02
        8
    wohenyingyu02  
       Apr 9, 2017 via iPhone
    有时候有重复代码质量反而更好吧……
    pippo
        9
    pippo  
       Apr 9, 2017
    @wohenyingyu02
    嗯,跨服务可以适当违反 DRY 。
    wc951
        10
    wc951  
       Apr 9, 2017 via Android
    jackson 的 jsonview 注解
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3175 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 14:07 · PVG 22:07 · LAX 07:07 · JFK 10:07
    ♥ Do have faith in what you're doing.