我的团队开始在我们的新项目中大摇大摆。我有一个问题,我们应该在应用程序中依赖于如此庞大的实体吗?
例如:
“状态”是SwaggerUser实体的字段,类型为布尔值。确实是 主动和错误均为无效
如果我们直接在整个应用程序中使用SwaggerUser,例如:
if(user.status){
//do something
}else{
//do something else
}
一开始它的效果很好。
几周后,系统发生了变化,“状态”现在变为整数。
0无效,-1被删除,1活跃
现在我们需要使用上面的代码块来重构每个地方,我认为这很糟糕。我们的结构取决于外部事物 因此,我决定编写自己的实体,并使用映射器将数据从Swagger实体映射到我自己的实体,例如:
class SwaggerUser{
//other attributes
boolean status;
}
class MyUser{
Status status;
}
enum Status{
ACTIVE(1), DEACTIVE(0), DELETE(-1)
}
class UserMapper{
public static MyUser map(SwaggerUser swaggerUser){
//code convert here
return myUser;
}
}
现在的代码逻辑可以是这样的:
swith(status){
ACTIVE:
//do smth with active
break;
DEACTIVE:
//do smth with deactive
break;
DELETE:
//do smth with delete
break;
}
我相信,当Swagger的实体更改时,这种方法可以帮助我们保护代码结构免遭破坏。我想分享我的经验,并听取开发人员在处理此案时的经验。如果您有更好的主意,请分享。谢谢