我目前正在开发一个简单的Java游戏,有几种不同的模式.我扩展了一个主要的Game类,将主要逻辑放在其他类中.尽管如此,主要的游戏类仍然非常沉重.
在快速浏览一下我的代码后,其中大部分是Getters and Setters(60%),而其余部分则是游戏逻辑真正需要的.
一些谷歌搜索声称Getters和Setters是邪恶的,而其他人声称他们是良好的OO练习和伟大的程序所必需的.
所以我该怎么做?应该是哪个?我应该为我的私人变量更改我的Getters和Setter,还是应该坚持使用它们?
所以我知道有很多关于getter和setter的问题,但我找不到与我的问题完全相同的东西.我想知道人们是否根据不同的语言改变了get/set的使用.我开始学习C++,并被教导使用getter和setter.这就是我的理解:
在C++(和Java?)中,变量可以是公共的也可以是私有的,但我们不能混合使用.例如,我不能拥有一个只能在类中更改的只读变量.它可以全部公开(可以读取和更改),也可以全部是私有的(无法读取,只能在课堂内更改).由于这个(以及可能的其他原因),我们使用getter和setter.
在MATLAB中,我可以控制变量的"setaccess"和"getaccess"属性,这样我就可以将事物设为只读(可以直接访问属性,但不能覆盖它).在这种情况下,我不觉得我需要一个getter因为我可以做class.property.
此外,在Python中,它被认为是"Pythonic",不使用getter/setter,只在需要时才将东西放入属性中.我真的不明白为什么在Python中使用所有公共变量都可以,因为这与我在使用C++时所学到的相反.
我只是好奇其他人的想法是什么.你会为所有语言使用getter和setter吗?您是否只将它用于C++/Java并在MATLAB和Python中直接访问(这是我目前正在做的)?第二种选择被认为是不好的吗?就我的目的而言,我只是指简单的getter和setter(只返回/设置值,不做任何其他事情).
谢谢!