模块化开发、容器化开发

使用微服务架构或 Mono Repo 架构中的问题

拆包不合理

一、类型的定义

(如 Typescript 中的 interface、type,或者请求/响应,参数/返回等 DTO),不应当放置到一个底层的通用包中。这样会导致一处业务修改,联动项目代码、底层包代码需要修改,然后需要发布包、更新依赖版本等,非常麻烦。

同时,大部分的类型定义是不具备复用的可能的。比如数据库 Schema,会有一些多余的不可操作的字段,如 id、时间戳、状态等,所以在 create 方法中,传入的参数,可能是 Partial<SchemaEntity>(也可能会有一些生成字段之类的特殊情况)。在接口请求参数中,更是会和数据库 create 方法的参与差异很大,比如说密码,用户输入是明文,存到数据库中是密文 + SALT。等等。返回值亦是如此。

为减少重复代码量和修改,和保证结构的稳定性,可以参考 TypeScript Handbook 中的一些小技巧:

阅读更多

2016.4.1 不要当傻瓜

不要让自己当傻瓜

在研发团队中,有两种常见类型的傻瓜。一种是一心钻技术,技术再深,在产品中无用武之地;另一种是一心构想理想化的产品,产品再宏大,无法被现有技术实现。

技术不是万能的,所有的技术都需要落地为产品,才能创造价值。技术就像是高楼之根基,得打下去,楼才能稳固;但却没有人能看到根基的样子。技术也像是内裤,得穿在身上,但不能逢人就扒出来展示一番。之所以会有鼓吹人人都是产品经理,却没有人推崇人人都是技术经理,人人都是架构师,人人都是算法工程师,就是这样的一个道理。

阅读更多