将一个 dto 更改为另一个
Changing one dto to another
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class GenerateDaByContextDto {
private String cNumber;
private BusinessContext businessContext;
private String zCode;
private String yCode;
private String xCode;
private String event;
public GenerateContentDto toGenerateContentDto() {
return GenerateContentDto.builder()
.businessContext(businessContext)
.event(event)
.build();
}
}
我正在做代码审查,当我想知道这样更改 DTO 是否可以?
需要的是一些方法有 GenerateContentDto
作为参数,它可以从代码中的 GenerateDaByContextDto
DTO 获取。
还有其他选择可以让它变得更好吗?关于 SRP
规则好吗?
我简化了 DTOs
字段。
您可以将 @Getter
,@Builde
r,@AllArgsConstructo
r,@NoArgsConstructor
替换为 @Data
这是更好的方法
@Data
public class GenerateDaByContextDto {
private String cNumber;
private BusinessContext businessContext;
private String zCode;
private String yCode;
private String xCode;
private String event;
/*
public GenerateContentDto toGenerateContentDto() {
return GenerateContentDto.builder()
.businessContext(businessContext)
.event(event)
.build();
}
*/
}
严格来说,这是基于意见并取决于项目。
但是让我们记住single responsibility principle。 DTO 负责层之间的数据保存,而不是转换。我更喜欢有一个简单的转换器,方法如下:
public class GenerateDaByContextDtoConverter {
public GenerateContentDto convert(GenerateDaByContextDto source) {...}
}
出于同样的原因,通常 DTO 是不可变的。您可以使用 lombok 的 @Value
注释。
多一种解决方案可能是组合,如果它符合业务逻辑:
class GenerateDaByContextDto {
private GenerateContentDto generateContentDto;
...
}
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class GenerateDaByContextDto {
private String cNumber;
private BusinessContext businessContext;
private String zCode;
private String yCode;
private String xCode;
private String event;
public GenerateContentDto toGenerateContentDto() {
return GenerateContentDto.builder()
.businessContext(businessContext)
.event(event)
.build();
}
}
我正在做代码审查,当我想知道这样更改 DTO 是否可以?
需要的是一些方法有 GenerateContentDto
作为参数,它可以从代码中的 GenerateDaByContextDto
DTO 获取。
还有其他选择可以让它变得更好吗?关于 SRP
规则好吗?
我简化了 DTOs
字段。
您可以将 @Getter
,@Builde
r,@AllArgsConstructo
r,@NoArgsConstructor
替换为 @Data
这是更好的方法
@Data
public class GenerateDaByContextDto {
private String cNumber;
private BusinessContext businessContext;
private String zCode;
private String yCode;
private String xCode;
private String event;
/*
public GenerateContentDto toGenerateContentDto() {
return GenerateContentDto.builder()
.businessContext(businessContext)
.event(event)
.build();
}
*/
}
严格来说,这是基于意见并取决于项目。
但是让我们记住single responsibility principle。 DTO 负责层之间的数据保存,而不是转换。我更喜欢有一个简单的转换器,方法如下:
public class GenerateDaByContextDtoConverter {
public GenerateContentDto convert(GenerateDaByContextDto source) {...}
}
出于同样的原因,通常 DTO 是不可变的。您可以使用 lombok 的 @Value
注释。
多一种解决方案可能是组合,如果它符合业务逻辑:
class GenerateDaByContextDto {
private GenerateContentDto generateContentDto;
...
}