【发布时间】:2009-06-09 07:41:29
【问题描述】:
我遇到的情况可能看起来很可笑,但我还没有找到足够好的解决方案。为了简化问题,问题是这样的,假设您有一个像 Manufacturer 这样的对象,它具有 countryname 属性(例如 car.Manufacturer.CountryName),并且您希望确保 countryname 属性不能有重复或拼写错误或其他错误。
它基本上是一个字符串属性,但字符串可以是我不想要的任何东西。一个对象似乎有点矫枉过正,而一个枚举意味着如果要添加新国家或要更改现有国家,我必须重新编译。
我可以在 GUI 中轻松控制它,但我需要在应用程序代码中控制它。所以我有一个对象,其属性可以是字符串、对象或枚举(或其他),我无法决定使用哪个。所以我的选择是这样的:
a) 在 GUI 中控制它,不要在应用程序代码中检查它,冒着获得“非法”国家名称的风险。
b) 制作一个对象(国家/地区)并使用它,这有点矫枉过正并使代码更加复杂,但我可以完全控制重复项和所有这些内容。
c) 使用枚举并希望我不必经常重新编译。它简单有效,但却是一个静态的解决方案。
d) 使用有效国家名称的内部字符串列表,并将 CountryName 作为字符串属性,并确保根据该字符串对其进行验证。我得到验证并且 CountryName 只是一个简单的字符串,但是如果我更改有效国家名称的内部字符串怎么办?我必须编写代码来重新验证程序中的所有制造商对象,以确保它们仍然具有有效的国家名称。
我不完全确定拥有有效的国家名称有多重要,但我越想这个,我就越意识到我处于灰色地带。一个对象或结构太多了,一个枚举太静态了,一个字符串太简单了。
我在这里可能完全把事情复杂化了,但是当你进入对象、字符串和枚举的灰色地带时,我真的很想知道该怎么做,或者更确切地说是如何思考。
谢天谢地! 哈尔
【问题讨论】: