2

我是一名新的 CS 专业学生,我正在努力理解一些概念,尤其是硬编码。

如果我有如下程序,这是硬编码吗?

抱歉,如果我没有正确提出问题

public class Dictionary {
enum Book {
        Noun1("Book [noun] : A set of pages."),
        Noun2("Book [noun] : A written work published in printed or electronic form."),
        Verb1("Book [verb] : To arrange for someone to have a seat on a plane."),
        Verb2("Book [verb] : To arrange something on a particular date.");
        private String value;

        Book(String s) { this.value = s; }

        public String getValue() { return value; }
    }

public static void main(String[] args) {

    List<String> bookList = new ArrayList<String>();
    for (Book bookValues : Book.values()) {
        bookList.add(bookValues.getDefinition());

    Map<String, Object> dictionary = new HashMap<>();
    dictionary.put("book",bookList); 

    }
4

4 回答 4

3

硬编码是将数据封装在代码中。所以,是的,特别是在枚举中信息量相对较大的情况下,这将是合格的。

另一种方法是将数据存储在代码之外(例如,在文本文件中)并将该数据加载到您的代码中。

因此,在您的示例代码中,您可以将字典定义移动到文件中,然后在运行时加载它。然后数据将不再被硬编码。

于 2019-02-24T01:43:02.920 回答
1

如果您查看严格的定义,则嵌入代码中而不是存储在程序外部的任何数据都是硬编码的。因此,您可以证明您确实是硬编码enum,例如您的定义中有字符串。

在我看来,就标准实践而言,enums代码中存在值和其他静态数据并非不合理。您应该使用常量来为常量数据赋予意义。例如,而不是:

int rate = 60;

利用:

static final int CYCLES_PER_SECOND = 60;
...
int rate = CYCLES_PER_SECOND;

查看您的代码,我会留下一个单独的,但也许您enum需要解释."book"dictionary

于 2019-02-24T01:43:23.303 回答
1

让我们想基本上回答你的问题。想象一下,您在构建该代码后正在生成一个包;像战争文件。

关键问题是:“如果我需要更改我的一个变量的值,(例如;您的代码中的“书籍名词”句子),我是否需要复制我的包?”

如果你真的需要每次都生产包装;是的,你是硬编码。

于 2019-02-24T01:58:12.037 回答
1

此代码的使用仅限于类中存在的数据。这是硬编码。

于 2019-02-24T02:14:41.900 回答