gpt4 book ai didi

java 正确理解 OOP 概念

转载 作者:太空宇宙 更新时间:2023-11-04 06:11:30 25 4
gpt4 key购买 nike

大家好,我已经搜索了很多,但对我发现的内容并不太满意。希望这是问这个问题的正确地方。

我现在用 Java 做了一小段时间(从 C 开始),并且在掌握如何构建最适合 OOP 的代码方面遇到了问题。

让我们举一个简单的例子:

如果我使用一些预定义的字符串(例如文件路径或错误消息),我当前正在创建一个自己的类,执行以下操作:

private static final String libPath = "\\this\\is\\a\\path\\";
private static final String notFoundMessage = "This hasn't been found";

public static String getLibPath() {
return libPath;
}

public static final String getNotFoundMessage() {
return notFoundMessage;
}

...

创建一个 map ,将所有内容添加到其中并通过 key 获取它会更好吗?还是我做的完全错误?

第二个示例:假设我在某处返回错误字符串

public String getSomething() {
if (something != null) {
return something;
} else {
//handle error, return string below
}
return "I HAVE AN ERROR";
}

在我的程序中的其他任何地方,我都会检查返回值:

if (!string.equals("I HAVE AN ERROR")) {
//do something
}
else {
// handle error
}

这显然是一个糟糕的方法,一旦错误消息发生变化就必须更改代码两次。是的,我可以像在第一个示例中那样定义错误字符串,但由于我对此不满意,所以我进入了死胡同。

很高兴听到您关于如何正确进行 OOP 的一些建议!

最佳答案

第一个示例:

private static final String libPath = "\\this\\is\\a\\path\\";
private static final String notFoundMessage = "This hasn't been found";

public static String getLibPath() {
return libPath;
}

public static final String getNotFoundMessage() {
return notFoundMessage;
}

...

在这种情况下,不需要创建 map 。这是正确的做法。请注意,libPath 最好这样定义:

private static final Path libPath = Paths.get("this", "is", "a", "path");

(类 Path 从 Java 7 开始就存在,当前版本是 Java 8)

第二个示例:

public String getSomething() {
if (something != null) {
return something;
} else {
//handle error, return string below
}
return "I HAVE AN ERROR";
}

否:在 Java 中从不返回错误代码。更喜欢使用异常。

示例:

public class ElementNotFoundException extends Exception {
...
}

public String getSomething() {
if (something == null) {
throw new ElementNotFoundException();
} else {
return something;
}

}

然后,您可以像这样处理异常:

try {
myObject.getSomething();
} catch(ElementNotFoundException e) {
//handle error
}

关于java 正确理解 OOP 概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28670847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com