在创建模块的过程中,我面临着一个进退两难的境地:每个类应该在内部定义自己的错误代码,还是应该定义一个模块范围的错误代码?
到目前为止,利弊齐头并进,但我倾向于定义每个类的错误:
1:
class MyClass
{
public:
typedef enum _TResult {
EOk = 0,
EErrNoMemory,
EErrBadParam,
<...>
} TResult;
TResult DoSomething();
};而不是像这样的东西:
2-1:
#define OK (0)
#define ERR_NO_MEMORY (1)
#define ERR_BAD_PARAM (2)或者:
2-2:
typedef enum _TResult
{
EOk,
EErrNoMemory,
EErrBadParam,
<...>
EErrTimeOut,
EErrFeedThePenguin
} TResult;根据你的经验,任何一种方法的陷阱是什么?
发布于 2009-05-28 06:32:19
关于每个类的错误代码,我要评论的一件事是,由于相同的代码将根据类的不同表示不同的事情,因此您无法编写单个错误记录器(或者至少不容易)。
也就是说,您总是可以同时使用这两种方法。有一个带有常见错误的全局枚举:
enum GlobalErrors {
EOk = 0,
EErrOutOfMemory,
// etc.
EFreeErrorCodeBase
};然后在类中,你可以有:
class Something {
enum ClassErrors {
EErrCantInitialize = EFreeErrorCodeBase,
EErrCorruptedData,
// etc.
};
...
};这为您提供了存放全局错误代码的位置,并确保您的类错误代码不会与全局错误代码重叠(这是由编译器维护的)。
发布于 2009-05-28 06:14:54
我认为这取决于你希望你的用户如何使用系统。如果您有对多个类有意义的错误代码,那么将它们放在一个“全局”级别上是有意义的,以某种组织良好的格式(例如,按概念分组的错误代码)。如果您的类都返回自己的自定义错误代码,我会更多地在类级别定义它们。
发布于 2009-05-28 06:15:14
如果您需要来自其他类的相同错误代码,则分别定义它们。你需要提前做一点计划。您现在可能不需要它们,但将来可能会创建一个需要类似或相同错误代码的类。
否则,最好将它们放在同一个类中。这将有助于源和错误代码的维护。这也将使阅读和理解代码变得更容易。
https://stackoverflow.com/questions/919401
复制相似问题