关于项目中的错误信息,最好采用哪种结构呢?目前我想到看到的大概是下面两种方案,想问下哪种方案好一点,有没有更好的方案,比如根本不用枚举。
定义一个枚举:
enum ERR
{
ERR_Success = 0,
……
ERR_xxxxFailure = xxx,
ERR_xxxxFailure = xxxx,
};
定义一个 dictionary:
dictionary<int, string>{};
对应存入枚举对应的,报错详细信息。
有些人会将很多函数返回值,定义为 int 或者枚举类型 ERR
int run()
{
……
return ERR_Success;
}
最后在使用的时候
{
if(run() != ERR_Success)
{
……
}
}
有些人会采取 setError 的方式,在其他地方调用 getError
bool run()
{
……
return setError(ERR);
}
bool setError(int value)
{
……
if(value != ERR_Success)
{
return false;
}
return true;
}
string getError()
{
……
return error;
}
最后在使用的时候
{
if(!run())
{
getError();
……
}
}
1
3dwelcome 2022-04-07 17:49:00 +08:00
用枚举挺好的啊,一般 IDE 都支持跳过数字,直接查看对应的英文信息。
有错误,尽量发现,能避免潜在 BUG ,少很多麻烦。 setError 这种就是把 error 深度隐藏起来,如果 setWarning 还能理解,error 就算了吧。 |
2
3dwelcome 2022-04-07 17:49:21 +08:00
有错误,尽早发现
|
3
lmshl 2022-04-07 17:56:35 +08:00
Algebraic Data Types 了解一下,Rust / Scala / Kotlin 都原生支持 ADT ,其他语言也有模拟方案。
|
4
lmshl 2022-04-07 17:59:33 +08:00
|
5
macrorules 2022-04-08 07:23:50 +08:00
用栈比较好吧,fault-tolerant
|
6
mingl0280 2022-04-08 14:34:42 +08:00 via Android
setError 是极其脑瘫的落后设计……那玩意儿相当于保存状态,但是一旦你的状态被覆盖了,找错能找死你。
|