V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
3kkkk
V2EX  ›  程序员

关于接口设计原则和设计模式

  •  
  •   3kkkk · 2022-07-12 10:56:42 +08:00 · 2641 次点击
    这是一个创建于 863 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大家在日常开发中会遵守设计原则,和用设计模式去实现业务吗?
    10 条回复    2022-07-13 10:07:55 +08:00
    privatetan
        1
    privatetan  
       2022-07-12 11:13:04 +08:00
    看什么接口了 。普通增删改查类 一把梭,核心功能类接口可以适当使用设计模式实现。
    Leviathann
        2
    Leviathann  
       2022-07-12 11:30:46 +08:00
    设计模式,是一种交流语言
    lanlanye
        3
    lanlanye  
       2022-07-12 14:29:53 +08:00 via iPhone
    接口需要有设计规范,我一般参考 Google Cloud 的。

    设计模式看情况,个人认为过早抽象是种灾难,但确实也有一些决策需要在项目开始之前就做好。
    tramm
        4
    tramm  
       2022-07-12 14:46:56 +08:00
    操心这么多干嘛, 慢慢迭代 :P

    只要弄好可维护性, 降低耦合, 后期随便咋改都不怕.
    jamel
        5
    jamel  
       2022-07-12 15:38:38 +08:00
    有地址不,求分享
    jamel
        6
    jamel  
       2022-07-12 15:38:49 +08:00
    @lanlanye 有地址不,求分享
    mingl0280
        7
    mingl0280  
       2022-07-12 15:57:57 +08:00 via Android
    需要协作的类会先设计好接口,面向接口开发,如果没有需要就不会加设计模式。
    yuanmomo
        8
    yuanmomo  
       2022-07-12 19:06:44 +08:00
    我自己设计接口的规范:

    1. 接口是否使用签名
    2. 接口是否有超时时间
    3. 接口是否需要幂等性
    4. 是否要过滤重复请求
    5. 接口是否需要包含一些 debug 参数(仅仅在测试环境使用),比如:是否验证签名,是否验证超时时间,是否过滤重复请求,是否打印指定日志等等,主要目的是测试环境排错,生产环境的请求回放,压力测试等等
    6. 接口可以新增参数,但是必须要向前兼容旧的接口
    7. 接口尽量保持简单,同时降低耦合性,接口复用性
    8. 接口参数哪些必要,哪些不必要,不必要参数设置默认值
    9. 响应接口必要字段:code ,message ,timestamp ,result/data/value
    10. 响应结果的 JSON 结构,优先使用非 Map 结构( key 固定)


    暂时想到这么多,可能还有些其它的,这个就要根据具体的场景来选择了。
    PPing520
        9
    PPing520  
       2022-07-13 06:05:30 +08:00
    @yuanmomo 楼主说的接口应该是语言层的接口( class / interface )设计
    qsnow6
        10
    qsnow6  
       2022-07-13 10:07:55 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1175 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:11 · PVG 02:11 · LAX 10:11 · JFK 13:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.