应用编程基础课第五讲:Go项目实践

栏目: 数据库 · 发布时间: 7年前

内容简介:今天我给大家介绍下我使用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项目实践》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C++ Primer 中文版(第 5 版)

C++ Primer 中文版(第 5 版)

[美] Stanley B. Lippman、[美] Josée Lajoie、[美] Barbara E. Moo / 王刚、杨巨峰 / 电子工业出版社 / 2013-9-1 / CNY 128.00

这本久负盛名的 C++经典教程,时隔八年之久,终迎来史无前例的重大升级。除令全球无数程序员从中受益,甚至为之迷醉的——C++ 大师 Stanley B. Lippman 的丰富实践经验,C++标准委员会原负责人 Josée Lajoie 对C++标准的深入理解,以及C++ 先驱 Barbara E. Moo 在 C++教学方面的真知灼见外,更是基于全新的 C++11标准进行了全面而彻底的内容更新。......一起来看看 《C++ Primer 中文版(第 5 版)》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具