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

标签 java class javafx constants standards

编辑:我看过这个帖子: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重复自己

相关话题

What is the best way to implement constants in Java?

关于java - 根据最佳实践,我应该在哪里放置用于 GUI 测量的 JavaFX 常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46264396/

相关文章:

java - 接口(interface)中的静态常量默认为 0 —— 为什么会这样?

java - 从数据库重新加载列表或将其存储为 Parcelable?

java - 当数组长度为 1 时,如何使数组方法返回单个对象?

java - 按住箭头键时 TableView 会变得困惑

java - 有没有办法将我所有重复的 VBox 重新组织到自定义 JavaFX 标签中?

Java 程序打印出 "JAVA_OPTIONS"

java - 该方法不适用于参数

c++ - 运算符重载错误: no match for 'operator>>'

JavaFX 媒体播放器不播放视频

java - 是否有用于创建 XHTML 文档的 Java API?