|
|
1
14
全球常数并不是坏事,只要它们是…
布洛赫在“有效Java”中覆盖“常量接口”与“常数类”问题,并提倡“常数类”方法。您不希望在接口中使用常量的原因是,它诱使客户机类“实现”该接口(以便访问常量,而不使用接口名称前缀它们)。不过,您不应该这样做——接口实际上不是对象功能的接口,而是类的外部类型中固有的编译时便利性。考虑一下:
等级
通过将常量放入类中,并使该类不可实例化,可以通知客户机常量类实际上只是作为子命名空间工作。在C中,您将类标记为
如果您在爪哇编程,并且希望常数不预先用常数类名预先装入,则可以使用
是的,它是稍微多余的,被迫创建一个新的类型,只是有地方放你的常量,但这是一个疣的语言,如Java和C,我们必须处理-我们 有 把我们的常数 在某处 而我们的最佳选择恰好是一个不可实例化的类。 |
|
|
2
25
全局常量是可以的。 全局(非常量)变量是魔鬼的工作。 |
|
|
3
10
全局变量是有问题的,因为它们在模块之间引入了大量不必要的依赖关系。这些依赖性使得调试问题和重用代码变得更加困难。 我想说 真正地 由于同样的原因,全局常量也是有问题的,因此不要让一个名为myglobals的单例常量包含像myglobals.http_success_ok这样的常量,而是将类似常量打包在自己的类中,例如httpstatus.success_ok。 |
|
|
4
5
我认为全局变量的问题在于它们创造了全局状态。全局常量不这样做,但它们确实负责某些无上下文常量,这可能很糟糕。 如果您需要这样的东西,我建议您创建枚举(如果您有int常量),或者为常量创建静态类,这样您就可以为它们提供一些上下文(例如math.pi)。 |
|
|
5
4
我想有一件事没有被提及,那就是更务实的问题。如果您使用的是编译语言,请记住必须重新编译才能更改常量的值。如果这是一个您可能希望经常更改的值,那么您可能还需要考虑配置文件。 |
|
|
6
2
在某些情况下,全局常量是真正保持不变的最佳方式(不仅对于程序的一个构建是恒定的,而且应该在软件产品的整个生命周期以及之后)。 例如,您不希望有几个类分别为pi、e或http_成功声明自己的常量。 另一方面,如果全局变量是可以更改的任意值(例如,由于需求的变化),则全局常量可能会产生许多全局变量的问题。也就是说,如果将这些常量放入配置文件似乎是一个合理的选项,那么它不应该是全局常量。 |
|
|
7
0
全局变量已被广泛认为是一件坏事,一般应予以避免。这就是为什么这么多人对单例模式有异议。全局变量的问题在于它们是可传递的。 |
|
|
simply lemon · python上链表的添加方法 1 年前 |
|
|
Anonymous · 为什么在这个例子中self和类名的用法不同? 1 年前 |
|
|
P N Singh · 在CPP Oops中调用对象而不创建它 1 年前 |
|
|
Muthuraj · 如何创建一个通用工厂来创建某种类型的实例[重复] 1 年前 |
|
|
Andy Votava · 从父类定义调用学生方法 1 年前 |