Hasty Briefsbeta

双语

The Vertical Codebase

8 days ago
  • #software-architecture
  • #developer-experience
  • #codebase-structure
  • 作者反对按类型(组件、钩子、类型、工具)分组的水平代码库结构,因为这会将相关代码按领域分离,随着代码库增长,导致导航和维护变得困难。
  • 水平结构增加了认知负担并降低了内聚性,因为需要一起变更的代码不在一起,导致可扩展性差和可发现性问题,例如Sentry代码库在顶级组件目录中有超过200个文件。
  • 提出的替代方案是垂直结构,代码按领域或功能(例如src/widgets/)而非技术类型分组,这与团队所有权和逻辑分组一致,以提高内聚性并减少不必要的耦合。
  • 垂直分组需要周密组织,通常与路由或页面关联,并可能涉及为共享组件(如PageFilters)创建单独的垂直模块,通过清晰的公共接口管理依赖关系和强制边界。
  • 实施垂直结构可能涉及使用工具,如带pnpm工作区的monorepo、eslint-plugin-boundaries或Nx来强制依赖关系和定义公共接口,但需要更多沟通和努力以避免重复并确保正确的分组。