后端代码工程

"配置"

Posted by yueLng on 2017-03-30

“Yeah It’s on. ”


配置文件

  1. 程序内内置配置项的初始默认值
  2. 配置文件中的配置项值可以覆盖(override)程序内配置项的默认值。
  3. 命令行选项和参数值具有最高优先级,可以override前两层的配置项值。

错误处理

golang内置两种错误处理方式,error与panic,error是逻辑上程序可控制可预见的错误,而panic则相对于error是比较严重的错误。在通常的项目中如果不是复杂的错误处理,可以直接使用errors.New(“”)返回错误。如果是大型系统则需要自身发展一套错误处理机制,扩展error是个不错的选择,毕竟error是只包含有Error函数的interface。panic一般会用类似于断言编程思想上,如果这里出错,我们并不希望程序能够正确执行正确,而是把错误不断地往上层抛,直到某一层级调用了recover能够处理这一异常,golang语言提供一种defer机制,就是在函数流程走完后必须执行defer 定义的函数,惯用的方法是defer与recover结合,保证进程不会奔溃,示例代码如下

1
2
3
4
5
6
7
8
func panic_test() {
defer func(){
if err := recover(); err != nil {
fmt.Println(err)
}
}()
panic("I am an error ....")
}

在项目中,通常会定义status、message作为错误描述,示例代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
type ServerError interface {
error
Status() int32
Message() string
}
type serverError struct {
status int32
message string
}
// 错误定义,可以通过定义文件自动生成
// errCode可以由具体的业务逻辑指定
const (
OK = 0 // OK
// [-1, -99] 不同的模块取值不同
ERR_SYSTEM = -2 // 系统错误
}
var StatusCode_message = map[int]string{
OK: "OK",
ERR_SYSTEM: "系统错误",
}

TODO

  1. 关于缓存
  2. 理解需求、服务拆分与组合
  3. 关于通信
  4. 关于存储
  5. 关于命名(没有好名字的项目不开发~)

参考