内容简介:今天我给大家介绍下我使用Go语言做项目的一些心得,实际项目由于涉及公司代码,所以我这里开发了一个通用的模版项目gobox-demo代码:https://github.com/goinbox/gobox-demo我见过的大多数项目,都喜欢把controlelr和action放到一个代码文件中,项目功能越多,文件就越长,
今天我给大家介绍下我使用 Go 语言做项目的一些心得,实际项目由于涉及公司代码,所以我这里开发了一个通用的模版项目 gobox-demo
用于说明。
gobox-demo代码:https://github.com/goinbox/gobox-demo
项目组织
├── conf // 项目配置文件目录 │ ├── http // httpserver(nginx)相关配置 │ │ ├── general │ │ └── ssl │ ├── rigger // rigger配置 │ │ └── tpl │ └── server ├── logs // 项目log文件目录 ├── src // 里面放置go代码 │ └── gdemo // 相当于本项目的命名空间的概念 │ ├── conf // 解析项目配置 │ ├── controller // mvc中的controller │ │ └── api // api子系统的controller、action │ │ ├── demo // DemoController │ ├── errno // 项目的错误码 │ ├── gvalue // 项目中用到的一些全局变量 │ ├── idgen // id生成器,当前有个 mysql 的实现 │ ├── main // 里面都是main函数,即程序执行入口 │ │ └── api // api子系统的main │ ├── misc // 一些零碎的东西 │ ├── svc // mvc中的svc层 │ │ ├── demo // DemoSvc │ └── vendor // 里面防止第三方包 │ ├── github.com │ │ ├── garyburd │ │ ├── goinbox │ │ └── go-sql-driver │ └── gopkg.in │ └── mgo.v2 ├── tmp // 项目临时文件目录 └── tools // 一些用到的 工具 脚本
controller和action的组织
我见过的大多数项目,都喜欢把controlelr和action放到一个代码文件中,项目功能越多,文件就越长,
实际中这样做会给开发和维护带来很大的不利,所以我把他们拆开,每个action作为一个代码文件,这样很清晰:
controller/ ├── api // api子系统下的controller和action │ ├── base.go // api子系统的base │ ├── demo // DemoController │ │ ├── add.go // AddAction │ │ ├── base.go // DemoController的base │ │ ├── del.go // DelAction │ │ ├── edit.go // EditAction │ │ ├── get.go // GetAction │ │ └── index.go // IndexAction └── base.go // 通用base
svc的组织
svc/ ├── base.go // 通用base ├── demo // 组织DemoSvc │ ├── demo.go │ └── demo_test.go ├── redis_base.go // 提供基础 redis 操作 ├── sql_base.go // 提供基础 sql 操作 └── sql_redis_bind.go // 常用的以redis为cache + mysql存储的操作
其它
其它的一些包中都放置了线上最常用到的一些工具,我的原则向来是追求精简,团队没用到的功能就不添加。
另外,一些涉及到公司内部的代码,例如上线操作无法放到这里展示,但都是会有单独的目录去组织这些。
总之一句话,我力求做到项目组织合理,命名清晰,层次分明,希望让大家从项目的组织结构上就能判断出哪部分功能放在哪里,任何会让人有歧义的地方都要改善。
结束语
应用编程课已经全部讲完了,希望我的经验对大家有帮助,本人能力有限,有认识不当的地方还请指正,谢谢大家!
以上所述就是小编给大家介绍的《应用编程基础课第五讲:Go项目实践》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 应用编程基础课第四讲:Go编程实践
- 应用编程基础课第三讲:Go编程基础
- 应用编程基础课第三讲:Go编程基础
- Web 应用架构基础课
- URLOS应用开发基础课——Docker基础镜像Alpine入门教程
- 项目管理 101 基础课:如何制定有效的计划?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
在线进制转换器
各进制数互转换器
RGB CMYK 转换工具
RGB CMYK 互转工具