mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-24 04:22:22 +00:00
fix space
This commit is contained in:
parent
f435e89a90
commit
59f26a0144
@ -154,7 +154,7 @@ func BusinessProcess(bi BusinessInstance) {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
直接面向 interface 编程,而不用关心具体的实现了。如果对应的业务在迭代中发生了修改,所有的逻辑对平台方来说也是完全透明的。
|
面向interface编程,不用关心具体的实现。如果对应的业务在迭代中发生了修改,所有的逻辑对平台方来说也是完全透明的。
|
||||||
|
|
||||||
## 5.8.4 interface的优缺点
|
## 5.8.4 interface的优缺点
|
||||||
|
|
||||||
@ -236,7 +236,7 @@ func main() {
|
|||||||
|
|
||||||
所以interface也可以认为是一种编译期进行检查的保证类型安全的手段。
|
所以interface也可以认为是一种编译期进行检查的保证类型安全的手段。
|
||||||
|
|
||||||
## 5.8.5 table-driven 开发
|
## 5.8.5 表驱动开发
|
||||||
|
|
||||||
熟悉开源lint工具的同学应该见到过圈复杂度的说法,在函数中如果有if和switch的话,会使函数的圈复杂度上升,所以有强迫症的同学即使在入口一个函数中有switch,还是想要干掉这个switch,有没有什么办法呢?当然有,用表驱动的方式来存储我们需要实例:
|
熟悉开源lint工具的同学应该见到过圈复杂度的说法,在函数中如果有if和switch的话,会使函数的圈复杂度上升,所以有强迫症的同学即使在入口一个函数中有switch,还是想要干掉这个switch,有没有什么办法呢?当然有,用表驱动的方式来存储我们需要实例:
|
||||||
|
|
||||||
@ -267,4 +267,6 @@ func entry() {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
table driven 的设计方式,很多设计模式相关的书籍并没有把它作为一种设计模式来讲,但我认为这依然是一种非常重要的帮助我们来简化代码的手段。在日常的开发工作中可以多多思考,哪些不必要的 switch case 可以用一个字典和一行代码就可以轻松搞定。
|
表驱动的设计方式,很多设计模式相关的书籍并没有把它作为一种设计模式来讲,但我认为这依然是一种非常重要的帮助我们来简化代码的手段。在日常的开发工作中可以多多思考,哪些不必要的switch case可以用一个字典和一行代码就可以轻松搞定。
|
||||||
|
|
||||||
|
当然,表驱动也不是缺点,因为需要对输入key计算哈希,在性能敏感的场合,需要多加斟酌。
|
||||||
|
Loading…
x
Reference in New Issue
Block a user