gpt4 book ai didi

java - 避免在访问静态表数据以进行条件编程时出现冗余

转载 作者:搜寻专家 更新时间:2023-10-30 22:18:42 24 4
gpt4 key购买 nike

我有以下场景。我的应用程序与包含一些静态表的数据库交互。如果我必须在代码级别主要将静态信息用于条件代码,最好的方法是什么。

例如:我有一个学生数据库,其中包含一个静态表 student_type(表示勤奋、聪明、懒惰等类型)。在代码中,我需要根据 student_type 采取行动。

所以,我的代码应该是这样的

studentTypeId = student.getTypeId(); // student constructed from database
switch (studentTypeId)
{
case HARDWORKING_ID :
// do something
case LAZY_ID :
// do something
break;
}

好吧,在我的代码中,我会使用常量或枚举来存储类型 ID。但是,这不是在代码中复制东西吗,因为我已经在数据库中有了类型 ID。如果数据库中的类型 ID 发生变化,我将不得不在我的枚举中进行相同的更改,这会增加维护工作。有没有更好的方法来实现这一点?

谢谢。

最佳答案

要问的问题是:在数据库中添加该行是否意味着您的 java 发生了变化?如果是,请使用枚举方法,不要担心重复。如果您无论如何都必须更改代码,例如,将新案例添加到您的开关中,那么我通常发现保持简单是个好主意。

studentTypeId = student.getTypeId(); // student constructed from database
switch (studentTypeId)
{
case HARDWORKING_ID :
// do something
case LAZY_ID :
// do something
case SMART_ID : // added smart student, very rare corner case :-)
// do something
break;
}

通常情况下,当您像这样存储静态数据时,数据会受到其他约束,当您更改数据库中的数据时,您必须更改使用该数据的代码。

如果您真的想减少重复,那么您可以按照 Dave Newton 的建议采用完全可插拔的架构。这可以实现为每个 id 的 id -> 类名关系。然后您将实例化该类,并且与每个 id 关联的所有逻辑都将包含在该类中。这并不总是那么容易或不可能。对于您的示例,这很有可能,但除非操作正确,否则这可能会很复杂。

此外,它并不能解决您所有的问题。您仍然需要开发 java、测试它并重新部署新类。所以实际上,您节省的工作量可能很小。

通常更容易接受少量重复并采用简单的解决方案。

关于java - 避免在访问静态表数据以进行条件编程时出现冗余,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7463612/

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