如何编写不依赖"全局"变量的类?

Joe*_*oel 13 oop global-variables

当我在大学学习第一门编程课程时,我们被告知全局变量是邪恶的,应该不惜一切代价避免(因为你可以快速开发出令人困惑和不可维护的代码).第二年,我们学习了面向对象的编程,以及如何使用类创建模块化代码.

我发现每当我使用OOP时,我都会使用类的私有变量作为全局变量,它们可以(并且)被类中的任何函数读取和修改.这并不是真正与我坐在一起,因为它似乎引入了全球变量在C等语言中遇到的相同问题.

所以我想我的问题是,如何停止用"全局"变量编写类?假装我用函数式语言写作会更有意义吗?我的意思是让所有函数都使用参数和返回值,而不是直接修改类变量.如果我需要设置任何字段,我可以只取功能的输出并分配它而不是让函数直接执行.这似乎可以使更多可维护的代码,至少对于更大的类.什么是常见做法?

Rob*_*vey 16

我发现每当我使用OOP时,我都会使用类的私有变量作为全局变量,即它们可以(并且)被类中的任何函数读取和修改.

这是完全可以接受的.

变量仅限于您的类,因此它们不是"全局的".

请参阅封装.

  • @Joel - 这就是问题,如果你的课程很大,那么应用程序的一般设计可能会出现问题. (11认同)

Han*_*son 11

我同意类成员变量有时会在某些方面感觉像全局变量.我发现重要的是保持类很小,然后每个变量只能从有限的几个地方访问.如果您只有几个庞大的类,则成员变量和全局变量之间的差异有时会受到限制.

传递太多参数有时也是一个问题,如果你急于避免所有成员变量,你可能很容易得到太多的参数,使代码难以遵循.