您应该在哪里存储常用字符串以获取错误消息,通知等?
我曾经把它放到这个有很多const
个字符串的全局类中,但我也看到了一些存储在资源文件中的地方。放在哪里最好的地方?我正在使用.NET btw。
答案 0 :(得分:15)
如果您预计需要将它们换掉,Resx会很方便 - 例如国际化或按实例定制。但是在它们之间手动移动它们并不是很困难。那么:它可能需要改变吗?
我会说:如果你做将它们保存在代码中,尽量保持常量尽可能紧密;例如,如果常量仅与User
个实例相关,请将其放在User
。
同样,赢得改变的事情不应该是一个混乱的resx;例如,一些与数据库中值的含义相关的内部知名字符串...即使 使用resx,也可能不属于resx。
答案 1 :(得分:7)
我想如果您想要翻译/本地化您的产品,那么资源文件将是存储这些文件的最佳位置。
我相信两者都有其他优点/缺点,但那是第一次跳到我脑中的。
答案 2 :(得分:3)
如果它们是您的UI元素(如标题等)的一部分,则将它们放在资源文件中。
如果它们是程序构造的一部分,例如文件前缀,内部错误消息字符串等,则应将它们放在单独的代码文件中。
答案 3 :(得分:3)
任何可以本地化的东西都应该在资源文件中。即使您100%确定,您也永远不需要在资源文件中使用字符串进行本地化,这样可以轻松实现转换。
所以标题,名称,GUI标签,对话文本,错误消息等都属于resx。 立即行动。如果您的应用程序确实需要本地化,未来的开发人员将会感谢您。
现在其他常量更难一点。我不认为有一个很难的&快速规则但通常我尝试将“true”常量定义为const,并根据需要使用尽可能小的范围。通过真正的常量,我的意思是任何不可能在应用程序生命周期范围内改变的东西。我不喜欢将资源文件用于非本地化字符串,因为它往往会破坏封装。例如,必须在本地定义PKDB2函数的require大小。加密对象之外的任何人都不需要知道它是什么。
事情提出了一个相关的话题。任何当前静态但可能在将来发生变化的东西(即使在将来的应用程序版本中)都应该被声明为readonly。这些可以从resx加载,我个人不这样做。 Effectivve C#在第2项中涵盖了这一点。
此外,很大程度上取决于您的公司/团队需要我曾参加过资源文件中没有任何内容的团队,以及团队中的所有内容(即使我觉得应该在本地定义的内容)都保存在资源文件中。
答案 4 :(得分:1)