Questions tagged «final»

5
在Java中,即使不必使用“ final”作为参数和局部变量也应如此吗?
Java允许将变量(字段/局部变量/参数)标记为final,以防止重新分配到变量中。我发现它对于字段非常有用,因为它可以帮助我快速查看某些属性(或整个类)是否是不可变的。 另一方面,我发现它对局部变量和参数的用处不大,通常我避免将它们标记为final即使它们永远都不会被重新分配(明显的例外,当它们需要在内部类中使用时) 。但是,最近,我遇到了最终可用的代码,我想从技术上讲,它可以提供更多信息。 不再对我的编程风格充满信心,我想知道在final任何地方应用的其他优点和缺点是什么,最常见的行业风格是什么,为什么。
105 java  coding-style  final 

10
为什么“最终”关键字会有用?
似乎Java拥有声明类不可继承的能力,而现在C ++也拥有。但是,根据SOLID中的“打开/关闭”原理,为什么这样做有用?对我来说,final关键字听起来像friend-是合法的,但是如果您使用它,则很可能是设计错误。请提供一些示例,其中不可派生的类将成为优秀的体系结构或设计模式的一部分。
54 java  c++  solid  final 

6
为什么在课堂上使用“最终”真的很糟糕?
我正在重构PHP OOP旧版网站。 我很想开始在“ make it explicit that the class is currently not extended by anything” 类上使用“最终”。如果我去上课,这可能会节省很多时间,我想知道是否可以重命名/删除/修改protected属性或方法。如果我真的想扩展一个类,我可以删除final关键字来解锁它以进行扩展。 即,如果我参加的班级没有子班,我可以通过将班级标记为最终班来记录该知识。下次访问它时,我不必重新搜索代码库以查看它是否具有子代。从而节省了重构期间的时间。 这似乎是一个明智的节省时间的主意。。。。但是我经常读到,只有在极少数/特殊的场合下才应该使类“最终化”。 也许它搞砸了模拟对象的创建,或者有其他我没有想到的副作用。 我想念什么?

2
命名约定:最终字段(非静态)
今天,我与一位同事讨论了finalJava类中字段的命名。 在他的观点中,final字段也应视为常量,因为其值在创建实例后不会更改。 这将导致以下final字段命名约定: public class Foo { private static final String BLA_BLA = "bla"; private final String BAR_BATZ; ... } 在我看来,只有static final字段应被视为常量,而仅字段应final遵循通常的camelCase命名约定。 public class Foo { private static final String BLA = "bla"; private final String barBatz; ... } 现在我有点不确定,因为他是比我经验丰富的程序员,我通常同意他的观点,并认为他是一个非常好的开发人员。 有什么意见吗?
23 java  naming  final 

5
为什么'final'关键字在业界很少使用?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 自从final几年前我发现Java关键字的强大功能以来,它帮助我提高了代码的可读性,因为人们可以轻松地看到什么是只读变量。它也可能对JIT有所帮助,尽管这是非常有限的,但不会造成伤害,尤其是在针对嵌入式设备(例如android平台)时。 但是最重​​要的是,它有助于使设计对更改更健壮,并在其他提交者需要修改代码库时为其提供指导。 但是,在浏览某些JDK源代码时,我从未偶然发现过该关键字,无论是用于类,方法还是变量。这同样适用于我必须审查的各种系统。 有什么原因吗?让一切都从内部变通是常见的设计范式吗?
14 java  final 

3
在C ++中,何时应在虚拟方法声明中使用final?
我知道该final关键字用于防止虚拟方法被派生类覆盖。但是,当我真的应该在方法中使用关键字时,找不到任何有用的示例。更甚者,使用虚拟方法感觉像是一种难闻的气味,因为它不允许程序员将来扩展类。finalvirtualfinal 我的问题是下一个: 当我真的应该final在virtual方法声明中使用时,是否有任何有用的情况?
11 c++  final 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.