“Yeah It’s on. ”
配置文件
- 程序内内置配置项的初始默认值
- 配置文件中的配置项值可以覆盖(override)程序内配置项的默认值。
- 命令行选项和参数值具有最高优先级,可以override前两层的配置项值。
错误处理
golang内置两种错误处理方式,error与panic,error是逻辑上程序可控制可预见的错误,而panic则相对于error是比较严重的错误。在通常的项目中如果不是复杂的错误处理,可以直接使用errors.New(“”)返回错误。如果是大型系统则需要自身发展一套错误处理机制,扩展error是个不错的选择,毕竟error是只包含有Error函数的interface。panic一般会用类似于断言编程思想上,如果这里出错,我们并不希望程序能够正确执行正确,而是把错误不断地往上层抛,直到某一层级调用了recover能够处理这一异常,golang语言提供一种defer机制,就是在函数流程走完后必须执行defer 定义的函数,惯用的方法是defer与recover结合,保证进程不会奔溃,示例代码如下12345678func panic_test() { defer func(){ if err := recover(); err != nil { fmt.Println(err) } }() panic("I am an error ....")}
在项目中,通常会定义status、message作为错误描述,示例代码如下
|
|
TODO
- 关于缓存
- 理解需求、服务拆分与组合
- 关于通信
- 关于存储
- 关于命名(没有好名字的项目不开发~)
参考
- Golang程序配置方案小结
- the blog of quora
- The Architecture of Open Source Applications
- Why does Quora use MySQL as the data store instead of NoSQLs such as Cassandra, MongoDB, or CouchDB?
- Quora’s Technology Examined
- 项目架构的初略了解
- 软件设计杂谈
- Go Code Review Comments
- effective-go