我是新的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);
}
答案 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)
此代码的使用仅限于类内部存在的数据。这是硬编码。