新公司没有assert判断,全用case,判断语句一长,代码超级难看,故自己写了个宏去替换。
% 原代码结构
check() ->
case A > B of
false -> {false, err};
true ->
case A > C of
false -> {false, err};
true ->
case A > D of
false -> {false, err};
true ->
case A > E of
false -> {false, err};
true ->
....
end
end
end
需要判断的条件如果多起来,case不断拉长,代码结构就很难看
% 现代码结构
-define(ASSERT(Ret, Code), (
case Ret of
true -> ok;
false -> throw(Code)
end
)).
check() ->
try
?ASSERT(A > B, err),
?ASSERT(A > C, err),
?ASSERT(A > D, err),
?ASSERT(A > E, err),
...
catch
_:Code -> {false, Code}
end.
这样改,需要判断的条件再多也不怕了