Go语言(golang)包设计哲学/原则与项目结构组织最佳实践

本文总结了Go语言的包设计哲学,强调明确包的目的、提高可用性和可移植性。建议避免使用如`util.helper`、`common`这类模糊的包名,保持包的独立性和简洁性。项目结构方面,区分应用项目和套件项目,推荐使用`cmd`、`internal`和`vendor`目录进行组织。`internal`目录下的包不应被外部引用,`platform`目录可存放内部通用逻辑。公共库不应直接打印日志,以允许调用者自定义日志处理。
摘要由CSDN通过智能技术生成

总结下Go的package设计哲学

  1. 明确目的
    • 在准备设计一个包之前,我们需要明确它的目的。
    • 包的命名就必须明确体现其目的,而不仅仅是为了存放代码。像标准库的io,http,fmt这些包名就很好,而像util.helper,common这种命名就是反面教材。
  2. 可用性
    • 想想使用这个包的人真正的需求,包的使用一定要直观、简单。
    • 在不断迭代开发、优化、完善的时候,不能让引用这个的程序出错。
    • 防止出现需要类型断言具体类型的需求。
    • 让单个包的代码量简化到最少,减少bug,易于掌控。
  3. 可移植性
    • 始终追求最高可移植性。
    • 如果包合理实用,就不要过多在意其它人的意见,没有适合所有人的完美的包。
    • 不要让包成为单一依赖点(即所有其它包都依赖它),每个包都有自己的设计目的,可能多个包会有重复的类型,即便重复定义也不要让包成为单一依赖点,这是API设计原则。

项目结构组织的最佳实践

有两种类型的项目,一种是生成可运行程序的项目(application project),另一种是专门用于被其它项目引用的套件项目(kit project)。
对于套件项目,结构组织根据实际项目用途而定,而对于可运行程序的项目,用这样的结构:
├── cmd
├── internal
└── vendor

vendor存放依赖包,internal存放本项目内部使用的包,cmd存放可运行的程序的代码,如果该项目有多个可运行程序,可以在cmd下建子目录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值