我要硬编码吗?

时间:2019-02-24 01:33:44

标签: java hardcoded

我是新的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); 

    }

3 个答案:

答案 0 :(得分:2)

硬编码是将数据封装在您的代码中。因此,是的,特别是对于枚举中相对大量的信息,这将是合格的。

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

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

答案 1 :(得分:1)

如果您查看strict definition,则嵌入在代码中而不是存储在程序外部的所有数据都是硬编码的。因此,可以假设您确实在进行硬编码,例如enum定义中包含字符串。

在我看来,按照标准惯例,enums中的值和其他静态数据出现在代码中并非没有道理。您应该使用常量为常量数据赋予含义。例如,而不是:

int rate = 60;

使用:

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

在审查您的代码时,我会不理会enum,但是也许您需要在您的"book"中解释第一个键dictionary

答案 2 :(得分:1)

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