Mmt*_*Bkn 2 java android software-design
使用本地或全局变量更好吗?
假设谈论2000多行android(java)服务类,并且所有服务都在处理'request'对象和类似的共享对象.
如果我将所有内容都设置为本地(保留在函数内部),我需要每次都传递许多变量,或多次覆盖相同的函数.我需要确保对象和子对象也不是null.
如果我将一些变量设置为全局(在整个类中),我可以共享它们,在函数中使用它们.我认为这将使一切变得更容易.
在函数内部定义变量或定义全局变量的好处和坏处是什么?在实践中,在理论上(可读性等).
有建议的方法吗?
谢谢.
总是喜欢本地而不是全球.如果您需要将数据作为多个参数传递,那么就这样吧.至少那时你明确地说明了你的功能所依赖的数据.拥有太多参数肯定是个问题,但将其中一些作为全局变量卸载并不是答案.
如果您依赖全局变量,那么某些数据的来源可能并不明确.如果全局变量是可变的,一旦你开始尝试调试一个困难的问题,你就会弄得一团糟,因为当某些全局变量被修改时可能并不明显.
注意虽然不可变的常量全局变量也不错.如果你有许多函数需要的常量(例如PI),那么将它设置为全局是有意义的.不可变常数不会受到上述缺点的影响,因为它们不能改变.
您编写了 2000 多行服务类。你完成了项目。凉爽的 !现在一个月后,你收到了一个错误报告,需要修复它。
让我们来看看 2 种不同的情况:
您又回到了服务代码上。你看到func1()使用globalVariabl1. 好的,但现在它的价值是多少?它是如何变化的?谁globalVariabl1在谈到这个功能之前改变了?所有这些突变的顺序是什么?你不会知道。弄清楚这一切将是相当困难的。
你回到你的代码,看到它func0()获取了一些东西,然后将它func1(param1)作为参数传递给。您清楚地知道数据是什么,它是如何到达这里的。
在什么情况下更容易解决错误?大多数情况下,CASE 2 会让它变得更容易。
局部变量
局部变量总是会帮助你。即使您编写代码并使用局部变量,调用语句本身也会告诉您该函数依赖于该特定数据。它可以帮助你小心你所传递的东西。
全局变量
全局变量在代表state类/对象的时候是可以的,甚至当它们是常量时(通常应该都是大写字母)。当您只需要频繁访问该值时,它们也可以很好,并且您知道该变量在您使用它时将始终被初始化(例如在 onCreate() 中初始化它)
| 归档时间: |
|
| 查看次数: |
4609 次 |
| 最近记录: |