tangkikodo 最近的时间轴更新
tangkikodo

tangkikodo

V2EX 第 291907 号会员,加入于 2018-02-13 14:40:00 +08:00
今日活跃度排名 26626
从前后端分工的利弊谈起,聊聊这套分工的未来方向
  •  1   
    程序员  •  tangkikodo  •  265 天前  •  最后回复来自 tangkikodo
    32
    面向组合的 API 开发模式 - 以 FastAPI 为例
    Python  •  tangkikodo  •  2024-01-27 11:55:27 AM  •  最后回复来自 tangkikodo
    5
    异步构建嵌套数据的小工具库: pydantic-resolve
  •  1   
    Python  •  tangkikodo  •  2023-06-10 23:41:55 PM
    如果你爱用 FastAPI, 那么这个轮子可能有用处。
    Python  •  tangkikodo  •  2023-04-07 23:27:12 PM  •  最后回复来自 tangkikodo
    3
    tangkikodo 最近回复了
    248 天前
    回复了 Irisxx 创建的主题 程序员 一个接口引发的前后端处理数据标准的思考
    后端组合, 大概率后端自己也不喜欢拼数据所以想偷懒了。

    https://github.com/allmonday/pydantic-resolve-demo 如果是 python 这边的话, 这种需求 pydantic-resolve 一把梭直接就能组合好。
    怎么写(单元)测试?

    要从可测的思考方式来书写代码, 才有“可能”写测试

    在写实现之前,或者实现之后里面套上测试, 否则久了就不会写了

    要懂得常用的 mock 第三方接口的方法, 会构造数据整合查询一起测试

    知道哪些应该写, 哪些没必要

    知道怎么结合 use case 来写

    知道怎么结合 hook 在 commit 之前强制测试跑通

    知道怎么划分出合适的 service 层并覆盖测试, 避免在应用层写无聊的测试

    想到更多了在补充。

    关于只在 service 覆盖测试, 应用利用继承和组合避免测试, 可以参考
    https://github.com/allmonday/composition-oriented-development-pattern/blob/master/src/services/sprint/readme-cn.md
    @fescover
    是的 生态的优势非常重要
    @justdoit123

    gql 的另一个问题是数据结构关联按照什么模式来组织

    如果按照业务模型的方式组织, 那么面向具体的展示层, 很多查到的关联结构要在 UI 上重新做调整。

    如果按照 UI 的需求来组织,那么这个 gql 写起来就很没劲了。。 变成了大号 rest
    @ilvsxk

    bff 如果不是前端去维护的话, 感觉这个 bff 的组织划分就有问题哎。。 (比如现在 node 就是 bff 的绝对优势语言(虽然我不太喜欢

    本质上就是让前端自己组合出所需的数据, 避免不必要的组合逻辑侵入到前端展示层。
    @justdoit123 完全同意

    我觉得这个工具其实不是给前后端对接用的, 围绕着他的 DSL ,明明 语言原生就有的类型, 还得顺着它定义一套类型。 啰嗦了。

    臃肿的请求,前端自己通过查询串联起来许多服务, 导致后端要调整的时候非常被动。

    本来能用一个 client.load_xxx_data 搞定的事情, 还得在前端维护一大串查询, 这是对迭代很不友好的~
    @ilvsxk bff 应该一头受气才对呀~~
    @justdoit123
    前后端都是 ts 技术栈, 就非常丝滑。

    但缺点就是你不能指望啥都用 node 来写吧 ~~

    另外光 trpc 也不能解决如何 高效且可维护地组合数据 这个问题, 如果能在 typescript 里面用

    ```
    class Team {

    member: Member[]
    async resolve_member(loader=MemberLoader) {
    return await loader.load(this.team_id)
    }
    }
    ```

    这样地方法来组合数据, 也会优雅很多的
    @yrj

    调整心态吧, 有句话说“业务逻辑是最不讲逻辑的”

    在没有深度分析的情况下, 写 hard code 反而不失为一种最佳做法。

    如果业务是个比萨斜塔, 代码可能就是“高质量”的定制化支架。 囧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3341 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 11:11 · PVG 19:11 · LAX 04:11 · JFK 07:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.