从导出的函数返回未导出的类型是否被认为是不好的风格?
使用它后,我通常会发现它只会带来问题。
一个更好的问题可能是:什么时候从导出的函数返回未导出的类型是一个好主意。
最佳答案
我要说的是,从导出的函数返回未导出的变量没有错。根据定义,这就是访问器。
就是说,我只会在每次需要访问未导出变量的情况下都需要执行某些逻辑的情况下执行此操作。
编辑:
希望我能理解您提出的问题。
如果您有未导出的type user struct{}
并以NewUser()
返回,那么是否适合您的用例?如果是这样,则这是一种工厂设计模式,如果您不希望第三方开发人员直接创建user
类型对象,则在Go中很有用。这样,您的“构造函数”或“工厂”是获取新实例的唯一位置。
那么,这是“坏风格”吗?我会说这取决于需要克服哪些挑战。