Java:偶尔使用的对象是否应该作为类成员包含在内?



我有一个类CodeText如下:

public class CodeText{
private char type;
private int textCode;
//Other members
}

有时,如果Symbol对象引用CodeText对象时出现错误,我需要"记录"该Symbol,以便CodeText"知道"发生错误时谁在引用它。

目前,我将另一个成员"relatedSymbol"添加到类CodeText中,如下所示,但感觉像是一个丑陋的设计。

public class CodeText{
private char type;
private int textCode;
private Symbol relatedSymbol;
//Other members
}

我不确定以上是否可以改进。任何建议不胜感激。

编辑:抱歉我没有提供足够的背景信息。 我的目标如下: 对于类CodeTexttextCode值会根据类型进行调整。 例如,如果类型是"I"(表示立即),则textCode保持不变; 如果类型为"E"(表示外部),则应重新计算textCode,然后引用外部Symbol的地址。

但有时,textCode的值可能是错误的。例如,如果类型为"E",但值为textCode分 对于非法Symbol,则应记录此错误CodeText并且对象应"知道"它试图引用哪个Symbol

有时,如果 Symbol 对象引用 代码文本对象,我需要"记录"该符号,以便代码文本 "知道"发生错误时谁在引用它。

如果您的目标是记录/跟踪错误,那么将导致Symbol的错误混合到现有的CodeText类中不是一个好主意,这将破坏单一责任原则(查看此处),因此您可能需要另一个类似ErrorRecorder类,如下所示,其唯一职责是记录错误。

public class ErrorRecorder {
private final CodeText codeText;
private final Symbol relatedSymbol;
private final LocalDateTime errorCreatedDateTime;
public ErrorRecorder(CodeText codeText, Symbol relatedSymbol,
LocalDateTime errorCreatedDateTime) {
super();
//Add some validations to the fields
this.codeText = codeText;
this.relatedSymbol = relatedSymbol;
this.errorCreatedDateTime = errorCreatedDateTime;
}
//Add getters
}

如果你想把它们分开,你可以有一个另一个对象来记录这样的错误

public class ReferenceError {
private CodeText codeText;
private Symbol symbol;
//Other members
}

或者如果您真的不需要录制其他任何内容,则只需使用Pair<CodeText, Symbol>

然后,您可以将它们保留在列表中List<ReferenceError>List<Pair<CodeText, Symbol>>

如果您需要为同一代码文本记录多个错误,甚至是Map<CodeText, Symbol[]>

相关内容

最新更新