gpt4 book ai didi

java - 最好的结构转换方法

转载 作者:行者123 更新时间:2023-12-01 19:45:14 25 4
gpt4 key购买 nike

如何最好地构造以下代码,使其具有最佳的可读性。

我有一个方法,它接受 Message,然后转换为 MyMessage 对象。

public MyMessage convertToMyMessage(Message message){
MyMessage myMessage = new MyMessage();
myMessage.setId(message.getId() + "1");
...
...
etc
if(message instanceOf TheMessage){
myMessage.setNode((TheMessage)message).getNode2());
...
...
etc - converting from TheMessage to MyMessge
}
}

我不喜欢的部分是 TheMessage 的细节。由于这个方法很长,如何重构它以使其更具可读性。

在我想到的情况下,我不会有很多消息类型,只有 MessageTheMessage,所以我认为重构模式可能有点极端。

我考虑过的一个重构是提取方法

public MyMessage convertToMyMessage(Message message){
MyMessage myMessage = new MyMessage();
myMessage.setId(message.getId() + "1");
...
...
etc
convertTheMessageToMyMessage(myMessage, message);
}

private void convertTheMessageToMyMessage(MyMessage myMessage, Message message){
if(message instanceOf TheMessage){
myMessage.setNode((TheMessage)message).getNode2());
...
...
etc - converting from TheMessage to MyMessge
}
}

这不太好,因为我们在方法范围之外更改了对象。

我必须采取哪些选项才能使该方法更具可读性。

最佳答案

我建议将其外部化到接口(interface)中:

public interface MessageConverter<S, T> {
T convert(S source);
}

如果您真的很聪明,您可以考虑使用 Java JDK 8 functional interfaces 。 Lambda 就以这种方式向您开放。我建议的接口(interface)无非是Function<T, R>以另一个名字。那个可以组合 - 非常有用。

关于java - 最好的结构转换方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53616528/

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