C# C型安全。什么时候太多了?

C# C型安全。什么时候太多了?,c#,type-safety,C#,Type Safety,我希望从头开始设计和创建一个新的大规模应用程序,并在适当的情况下使用结构的类型安全性。应用程序在类之间确实有大量调用 目前,我希望实现结构来表示Id和不同类型的数字(例如价格和数量),但什么时候会走得太远 谢谢 更新:感谢您提供了何时使用结构的链接,但这并不能回答您何时应该强制执行类型安全。这取决于您正在编写的系统以及“大规模”有多大。为什么?我认为,将系统ID和其他基于值的类型定义为结构不会浪费时间或走得太远。它将帮助定义类型的限制和界限 有太多的String实例被用于各种邪恶的编程构造:

我希望从头开始设计和创建一个新的大规模应用程序,并在适当的情况下使用结构的类型安全性。应用程序在类之间确实有大量调用

目前,我希望实现结构来表示Id和不同类型的数字(例如价格和数量),但什么时候会走得太远

谢谢


更新:感谢您提供了何时使用结构的链接,但这并不能回答您何时应该强制执行类型安全。

这取决于您正在编写的系统以及“大规模”有多大。为什么?我认为,将系统ID和其他基于值的类型定义为结构不会浪费时间或走得太远。它将帮助定义类型的限制和界限

有太多的
String
实例被用于各种邪恶的编程构造:

  • 多值链接,其中和
    id
    添加了数据,因为它简单方便
  • 非预期的不变用法(如知道
    -
    字符)无效,因此将其用于另一个值
像这样的实践将潜入您的系统,因为原始作者从未通过类型构造指定或强制实施这些限制。业务优先级(我们将在明天上线,现在无法更改数据库!)或者甚至懒散的开发实践都会利用您缺乏特定性的优势


将您的值类型定义为值类型,包括使用结构,但要明确其用法并由代码强制执行。

这取决于您正在编写的系统以及“大规模”的大小。为什么?我认为,将系统ID和其他基于值的类型定义为结构不会浪费时间或走得太远。它将帮助定义类型的限制和界限

有太多的
String
实例被用于各种邪恶的编程构造:

  • 多值链接,其中和
    id
    添加了数据,因为它简单方便
  • 非预期的不变用法(如知道
    -
    字符)无效,因此将其用于另一个值
像这样的实践将潜入您的系统,因为原始作者从未通过类型构造指定或强制实施这些限制。业务优先级(我们将在明天上线,现在无法更改数据库!)或者甚至懒散的开发实践都会利用您缺乏特定性的优势


将您的值类型定义为值类型,包括使用结构,但要明确它们的用法并由代码强制执行。

仅对其使用不可变项。没有别的了。结构通常应谨慎使用。特别要注意的是,结构是必须传递值的,而不仅仅是对valueStructure的引用是过时的,应该改用类。良好的设计实践表明模块(.cs)应该限制在大约400到500行代码。一个类可以拆分成多个模块。当两个或多个类共享相同的数据结构时,应使用用作接口的类。如果在类之间有大量的调用,那么也许您应该考虑重新设计类。类不应该互相调用。一个类应该是主类,第二个类应该是从类,因此调用应该是单向的。在您的情况下,beeing而不是type safty有什么好处?Entity Framework 5中也不支持结构。仅对对象使用immuatbles。没有别的了。结构通常应谨慎使用。特别要注意的是,结构是必须传递值的,而不仅仅是对valueStructure的引用是过时的,应该改用类。良好的设计实践表明模块(.cs)应该限制在大约400到500行代码。一个类可以拆分成多个模块。当两个或多个类共享相同的数据结构时,应使用用作接口的类。如果在类之间有大量的调用,那么也许您应该考虑重新设计类。类不应该互相调用。一个类应该是主类,第二个类应该是从类,所以调用应该在一个方向上。在您的情况下,不使用类型安全有什么好处?实体框架5中也不支持结构。