V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
q397064399
V2EX  ›  问与答

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

  •  
  •   q397064399 · 2017-04-09 16:53:28 +08:00 · 1946 次点击
    这是一个创建于 2822 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Java

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

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

    10 条回复    2017-04-09 21:32:33 +08:00
    q397064399
        1
    q397064399  
    OP
       2017-04-09 17:23:44 +08:00
    已找到方法,采用定制序列化即可,,
    q397064399
        2
    q397064399  
    OP
       2017-04-09 17:23:51 +08:00
    结贴
    Coande
        3
    Coande  
       2017-04-09 17:31:37 +08:00 via Android
    @q397064399 分享一下咯
    q397064399
        4
    q397064399  
    OP
       2017-04-09 17:38:07 +08:00
    @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  
       2017-04-09 17:52:26 +08:00
    @JSONField(serialize = false)写在 get 方法上 fastjson.
    jackson 好像是 @JsonIgnore ,没用过。
    gexyuzz
        6
    gexyuzz  
       2017-04-09 18:01:51 +08:00
    不如采用 dto 传输
    q397064399
        7
    q397064399  
    OP
       2017-04-09 19:08:36 +08:00
    @gexyuzz #6 dto 得重新建立个对象吧,,那样不是要 put get 一遍了
    wohenyingyu02
        8
    wohenyingyu02  
       2017-04-09 20:22:55 +08:00 via iPhone
    有时候有重复代码质量反而更好吧……
    pippo
        9
    pippo  
       2017-04-09 21:26:14 +08:00
    @wohenyingyu02
    嗯,跨服务可以适当违反 DRY 。
    wc951
        10
    wc951  
       2017-04-09 21:32:33 +08:00 via Android
    jackson 的 jsonview 注解
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   985 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:58 · PVG 04:58 · LAX 12:58 · JFK 15:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.