根据最佳实践,我应该在哪里放置用于GUI测量的JavaFX常量?

时间:2017-09-17 13:04:57

标签: java class javafx constants standards

编辑:我已经看过这个帖子:What is the best way to implement constants in Java?了。他们似乎关注的是你是否应该使用带常量的接口。如果他们没有被全班使用,我想知道我应该把它放在哪里。

如果我正在设计使用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;
    ...
}

当然,我可能会把我的公共变量(如果有的话)放在那些变量上。我也可能也把不稳定的私人也放在一起。

但是,这意味着我在函数的顶部有一些小常量。我有两个问题:

1 - 经常被忽略

罗伯特·C·马丁谈到有时程序员会如何评论"嘈杂"评论。这些评论是如此无用,最终被读者忽略了。我觉得这也适用于用于测量和位置的常数blob。

2 - 大部分功能都没有使用它们

引用马丁先生,这次:

  

类应该有少量的实例变量。类的每个方法都应该操纵这些变量中的一个或多个。通常,方法操作的变量越多,该方法对其类的内聚性就越强。每个方法使用每个变量的类是最大的内聚。

他后来说,当然,很难达到最大的凝聚力,只要课程尽可能具有凝聚力,那就没关系。

但是,用于测量的常数不会破坏这种凝聚力,如果它们是由类本身而不是由它的函数实例化的那么?

函数作用域的

不是用类对它们进行实例化,而应该让它们成为像这样的函数变量:

public class foo {
    private void initGUI() {
        final double WIDTH = 100;
        final double HEIGHT = 100;
        final double PADDING = 10;
        ...
    }
}

这样做会违背我所教授的内容(但我的老师过去在某些事情上被证明是错误的。)

有些人告诉我做一个"测量" class并将所有常量放在plubic static个变量中。但是我反对这一点,因为这意味着每次我想添加一个测量时我依赖于那个类,并且我会有一个充满无关变量的类。

那么,在处理JavaFX中用于测量的常量时,遵循的最佳实践(或标准)是什么?

2 个答案:

答案 0 :(得分:1)

常量类结构是最佳实践之一

保持您的命名约定足够可读,这样您就不会需要单独的常量类。

始终尝试实施 K eep I t S 实施 S tupid和 D on R epeat Y 我们自己

相关主题

What is the best way to implement constants in Java?

答案 1 :(得分:0)

在我看来,一切都与维护和可读性有关。为了弄清楚某些事情是否有益,我曾经问过自己以下问题:

  1. 此更改是否会提高可读性?为什么?
  2. 我将来或其他人会进行任何进一步的更改吗?如果是这样,我该怎么做才能让这些变化更容易?
  3. 添加太多不必要的常量会增加类的大小,而且更多的是“噪音”。现在在上面关于GUI常量的例子中,我的观点更像是50-50。我喜欢用我的GUI常量做到这一点,但只有当我的班级很小时。因此,如果类体很大,我习惯于删除常量并创建一个默认构造函数,将它们作为常量而不是全局变量初始化,我这样做的唯一原因是增加可读性,因为有人可以轻松地折叠构造函数的代码和噪音消失了。

    最后,我认为最重要的是对你和你的团队有什么好处。即使你曾经将它们初始化为全局变量或其他什么,当你作为一个团队工作时,你倾向于适应团队的编程风格选择而不是你想要的“最佳”。