编辑:我看过这个帖子:What is the best way to implement constants in Java?已经。他们似乎关注的是您是否应该使用带有常量的接口(interface)。我想知道如果整个类没有使用常量,我应该将它们放置在哪里。
<小时/>如果我正在设计一个使用 Shape 包 (javafx.scene.shape.[whatever]) 制作的 GUI,我应该如何放置用于调整它们大小的常量变量?
类范围
我被教导常量应该始终位于类的顶部,这会给我这样的东西:
public class Foo extends Group{
private final double WIDTH = 100;
private final double HEIGHT = 100;
private final double PADDING = 10;
...
}
当然,我可能会将我的公共(public)变量(如果有的话)放在这些变量之上。我可能还会添加非常量的私有(private)变量。
但是,这意味着我的函数顶部有这些小块常量。我对此有两个问题:
<小时/>1 - 它们经常被忽略
Robert C. Martin 谈到有时程序员会在“吵闹”的评论中发表评论。这些评论毫无用处,最终会被读者忽略。我觉得这也适用于用于测量和位置的常数 block 。
<小时/>2 - 大多数函数都没有使用它们
这次引用马丁先生的话:
Classes should have a small number of instance variables. Each of the methods of a class should manipulate one or more of those variables. In general the more variables a method manipulates the more cohesive that method is to its class. A class in which each variable is used by each method is maximally cohesive.
他后来说,当然,要达到“最大凝聚力”是相当困难的,只要类(class)尽可能有凝聚力就没关系。
但是,如果用于测量的常量是由类本身而不是由其函数实例化,那么它们不会破坏这种内聚性吗?
<小时/>函数作用域
我应该让它们成为像这样的函数变量,而不是用类实例化它们:
public class foo {
private void initGUI() {
final double WIDTH = 100;
final double HEIGHT = 100;
final double PADDING = 10;
...
}
}
然而,这样做违背了我所受的教育(但我的老师过去在某些事情上被证明是错误的)。
<小时/>有些人告诉我创建一个“Measurements”类,并将所有常量作为公共(public)静态
变量放在那里。然而我反对这一点,因为这意味着每次我想添加测量时我都依赖于该类,并且我将拥有一个充满不相关变量的类。
那么,在处理 JavaFX 中用于测量的常量时要遵循的最佳实践(或标准)是什么?
最佳答案
恒定的类结构是最佳实践之一
保持你的命名约定足够可读,这样你就不需要单独的常量类。
始终尝试实现K深刻IS简单S愚蠢和D不要R重复你自己
相关话题
关于java - 根据最佳实践,我应该在哪里放置用于 GUI 测量的 JavaFX 常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46264396/