使用错误代码或不使用错误代码

时间:2010-12-11 06:44:08

标签: localization coding-style

所以,我一直在研究一个新的项目,今天有一个同事向我提出我的异常,甚至返回的错误消息都应该完全本地化。我想也许这是一个好主意,但他说我应该只错误返回错误代码。我个人不喜欢错误代码的想法很多,因为它往往会让其他程序员

  1. 要重新使用不合适的错误代码,因为他们不想添加另一个错误代码
  2. 他们倾向于使用错误的错误代码,因为可能会有如此多的定义。
  3. 所以我的问题是其他人如何处理这种情况呢?我愿意接受各种建议,包括那些认为错误代码可行的建议。

3 个答案:

答案 0 :(得分:3)

根据您的编码语言,可能存在文化差异?

例如,在Java中,数字错误代码使用不多......


关于例外情况,我认为这只是一种技术工具。 重要的是,您的消息针对的是用户或开发人员。 对于用户来说,本地化消息非常重要,如果出现多种语言,或者能够在不重新编译的情况下更改消息(在客户端之间进行自定义,以适应不断变化的用户需求......)。


在我的项目中,我们的文化是使用(java)枚举来处理所有固定值集合。 错误也不例外。 错误的枚举可以提供:

  • 强类型(您无法将其他内容传递给期望错误代码的方法)
  • 简单本地化(一个简单的实用方法可以自动找到与每个对应的消息,使用例如“SimpleClassName”。“INSTANCE_NAME”模式;您还可以在每个枚举上公开getMessage()方法,将实现委托给你的实用方法)
  • 验证您的本地化文件(您的单元测试可以循环代码和文件中的每种语言,并查找所有不匹配的值)
  • 错误级别functionnality(我们使用与日志记录相同的级别:致命,错误,警告;然后很容易实现日志记录决策!)。
  • 为了便于其他开发人员找到相应的错误,我们使用了几个枚举(可能在同一个包中),根据其技术或功能域对错误进行分类。

解决您的两个问题:

  1. 添加一个只需要在枚举中添加一个实例,并在本地化文件中添加一条消息(但如果忘记,测试可以捕获后面的内容)。
  2. 通过在几个枚举中进行分类,可能还有javadoc,它们会被引导使用正确的错误。

答案 1 :(得分:3)

我不会使用错误代码进行本地化。可能有充分的理由使用错误代码(例如,能够测试发生了哪种特定类型的错误),但本地化不是这些原因之一。相反,对于异常,使用与其余消息本地化相同的框架。例如。如果你在其他地方使用gettext,也可以在异常中使用它。这将使译者的生活更轻松。

答案 2 :(得分:2)

您可以在例外中包含错误代码,从而充分利用这两者。

旧式函数返回错误代码的一个常见错误原因是在继续后续代码之前未能检查错误代码。不能隐式忽略异常。消除错误来源是一件好事。

错误代码允许:

  • 调用代码以区分不同类型的错误。
  • 在非UI非本地化代码中发生错误时由UI组件构造的消息。
  • 编写用户文档或故障排除指南时可能有用的代码中的错误列表。

我发现一些有用的指南:

  • 只有UI体系结构层构造并向用户本地化消息。
  • 当非UI层通过异常传达错误时,这些可能会在构造消息时携带错误代码和对UI有用的其他字段。
  • 在Java中,当在UI层Enum中定义错误代码时,可以通过枚举器本身访问错误消息格式字符串。它们可能包含错误中携带的其他数据的符号。
  • 在Java中,在原始语言的格式字符串中包含格式说明符中的参数索引,以便翻译人员可以在本地化消息中移动动态数据。