overusing-getters-and-setters

Overusing getters and setters

说起getters 和setters我个人感觉在java中十分常见,由于java是纯面向对象语言,所以经常会将某些字段定义为private然后使用getter 和setter进行操作该priavte字段。但是在Go语言中我在很多源码中并没有看到gettersetter,而是直接操作struct中的字段。除非该字段被设置为当前包可见。

首先说明:

Go不强制使用gettersetter,在标准库中也不强制使用。但是gettersetter具有一些优点:

  • 封装了字段的设置与获取行为,允许在获取或者设置过程中添加新的行为(验证字段,返回计算值等)
  • 隐藏了内部表示

Go语言如何使用gettersetter呢?

​ 如果我们要为balance字段设置gettersetter,那么我们的getter方法应该是Balance()而不是GetBalance()

​ 而setter应该命名为SetBalance

如果我们的gettersetter就只是简单的取值,赋值,那么没有必要为该字段设置gettersetter

只有当我们的gettersetter方法有有意义时才使用,遵循go语言的设计哲学

简单。