Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 每个类定义错误代码的利弊是什么?_Oop - Fatal编程技术网

Oop 每个类定义错误代码的利弊是什么?

Oop 每个类定义错误代码的利弊是什么?,oop,Oop,在创建模块的过程中,我面临着一个难题:每个类应该在内部定义自己的错误代码,还是应该定义模块范围内的错误代码 到目前为止,赞成和反对意见是一致的,但我倾向于定义每类错误: 1: 或: 2-2: typedef枚举\u TResult { EOk, 每一天, 埃尔巴德帕兰, 埃尔蒂梅奥特, 每个人都给工程师喂食 }TResult; 根据您的经验,对于任何一种方法,什么是成功的秘诀?我认为这取决于您希望用户如何使用该系统。如果您有对多个类有意义的错误代码,则可以将它们放在“全局”级别,采用某种组织良

在创建模块的过程中,我面临着一个难题:每个类应该在内部定义自己的错误代码,还是应该定义模块范围内的错误代码

到目前为止,赞成和反对意见是一致的,但我倾向于定义每类错误:

1:

或:

2-2:

typedef枚举\u TResult
{
EOk,
每一天,
埃尔巴德帕兰,
埃尔蒂梅奥特,
每个人都给工程师喂食
}TResult;

根据您的经验,对于任何一种方法,什么是成功的秘诀?

我认为这取决于您希望用户如何使用该系统。如果您有对多个类有意义的错误代码,则可以将它们放在“全局”级别,采用某种组织良好的格式(例如,按概念分组的错误代码)。如果您的类都返回自己的自定义错误代码,我会在类级别对它们进行更多的定义。

我认为这取决于您希望用户如何使用系统。如果您有对多个类有意义的错误代码,则可以将它们放在“全局”级别,采用某种组织良好的格式(例如,按概念分组的错误代码)。如果您的类都返回它们自己的自定义错误代码,我会在类级别上对它们进行更多的定义。

如果您需要其他类中的相同错误代码,请分别定义它们。你需要提前做一点计划。您现在可能不需要它们,但将来可能会创建一个需要类似或相同错误代码的类


否则,最好让他们在同一个班。这将有助于维护源代码和错误代码。这将使阅读和理解代码变得更容易。

如果您需要其他类中的相同错误代码,请分别定义它们。你需要提前做一点计划。您现在可能不需要它们,但将来可能会创建一个需要类似或相同错误代码的类


否则,最好让他们在同一个班。这将有助于维护源代码和错误代码。这也会使阅读和理解代码变得更容易。

对于每类错误代码,我要评论的一件事是,由于同一代码根据类的不同会有不同的含义,因此您无法编写单个错误记录器(或至少不容易编写)

也就是说,两种方法都可以使用。具有具有常见错误的全局枚举:

enum GlobalErrors {
   EOk = 0,
   EErrOutOfMemory,
   // etc.
   EFreeErrorCodeBase
};
然后在课堂上你可以有:

class Something {
    enum ClassErrors {
       EErrCantInitialize = EFreeErrorCodeBase,
       EErrCorruptedData,
       // etc.
    };
...
};

这为全局错误代码提供了一个位置,并确保类错误代码不会与全局错误代码重叠(这是由编译器维护的)。

对于每类错误代码,我要说明的一点是,您无法编写单个错误日志(或者至少不容易编写)由于相同的代码根据类的不同会有不同的含义

也就是说,两种方法都可以使用。具有具有常见错误的全局枚举:

enum GlobalErrors {
   EOk = 0,
   EErrOutOfMemory,
   // etc.
   EFreeErrorCodeBase
};
然后在课堂上你可以有:

class Something {
    enum ClassErrors {
       EErrCantInitialize = EFreeErrorCodeBase,
       EErrCorruptedData,
       // etc.
    };
...
};

这为全局错误代码提供了一个位置,并确保类错误代码不会与全局错误代码重叠(这由编译器维护)。

我认为存在于类外部的有意义的命名状态代码枚举是一个不错的选择。通过这种方式,他们谈论的是他们的地位,而不是一个类的实现,这个类无疑会发生变化,或者其职责可能会扩展到一个以上的类

typedef enum _DatabaseErrorCodes {
   ConnectionFailure = 0,
   Timeout,
   InvalidParameters
} DatabaseErrorCodes;

typedef enum _CommonErrorCodes {
   NullArgument = 0,
   SystemOutOfMemory,
   FeedThePenguin
} CommonErrorCodes;

课程流动性太强,容易改变。将错误代码绑定到特定类似乎是一种耦合,没有任何明显的优势。我认为(理想情况下)状态代码应该能够独立存在并具有意义。

我认为存在于类外部的有意义的命名状态代码枚举是一个不错的选择。通过这种方式,他们谈论的是他们的地位,而不是一个类的实现,这个类无疑会发生变化,或者其职责可能会扩展到一个以上的类

typedef enum _DatabaseErrorCodes {
   ConnectionFailure = 0,
   Timeout,
   InvalidParameters
} DatabaseErrorCodes;

typedef enum _CommonErrorCodes {
   NullArgument = 0,
   SystemOutOfMemory,
   FeedThePenguin
} CommonErrorCodes;
课程流动性太强,容易改变。将错误代码绑定到特定类似乎是一种耦合,没有任何明显的优势。我认为(理想情况下)状态代码应该能够独立存在并具有意义