首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >逻辑思维:使用动态值和静态值来表示数据

逻辑思维:使用动态值和静态值来表示数据
EN

Stack Overflow用户
提问于 2014-01-12 07:24:48
回答 1查看 103关注 0票数 1

我不认为我的问题是正确的,但希望你知道我在问什么。

使用字符串值表示数据库字段(或任何变量)与使用枚举或常量的优缺点是什么?我不是在询问数据类型,而是在后端如何处理它。我将使用LINQ作为示例。

我的想法是,通过使用一个可枚举或常量,它是:易于阅读,确保在值需要更改时兼容,并且该值是硬编码的-so,因此错误由错误引起的可能性较小。另一方面,我真的需要一个具有成员枚举的类/结构,它实质上是查找我想要的值吗?

使用常量

代码语言:javascript
复制
Module Trip
  Public Const OPEN As String = "Open"
  Public Const PENDING_PAYMENT As String = "Pending Payment"
  Public Const CANCELLED As String = "Cancelled"
  Public Const CLOSED As String = "Closed"
End Module

Dim product = From p In db.Payments
       Where p.PaymentId = PaymentId

For Each item In product
  item.Status = PayStatus.PENDING_PAYMENT
Next

使用字符串

代码语言:javascript
复制
Dim product = From p In db.Payments
       Where p.PaymentId = PaymentId

For Each item In product
  item.Status = "Pending Payment"
Next
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-12 16:15:35

正如其中一条注释所述,处理此问题的常见方法是在数据库中使用查找表。在其最简单的形式中,您将有一个类,比方说PaymentStatus

代码语言:javascript
复制
Class PaymentStatus
    Public Property Id As Integer 
    Public Property Name As String 
End Class

Payment将具有引用属性,如

代码语言:javascript
复制
Public Property PaymentStatus As PaymentStatus

这样,您就可以始终从数据库中获得选项,并且永远不会在代码中输入错误。添加选项或更改描述也要容易得多。

例如,如果您决定“取消”需要区分为“被用户取消”(旧状态)和“被系统取消”(由新业务逻辑引入的新状态),那么需要做些什么。您需要一个脚本来将数据库中的所有记录更新为新的字符串(并更改代码,但无论如何都要更改代码)。查找表允许只更新一条记录(并在本例中添加一条新记录)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21072304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档