C代码纯度

前端之家收集整理的这篇文章主要介绍了C代码纯度前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在C环境工作:
a)我们禁止使用异常
b)是应用/数据服务器代码,用于评估不同类型的请求

我有简单的类封装服务器操作的结果,也是内部使用的很多功能.

class OpResult
{
  .....
  bool succeeded();
  bool Failed(); ....
  ... data error/result message ...
};

当我尝试使所有的功能都小而简单时,就会出现很多这样的块:

....
OpResult result = some_(mostly check)function(....);
if (result.Failed())
  return result;
...

问题是,使宏观看起来像这样吗?

#define RETURN_IF_Failed(call) \
  {                            \
    OpResult result = call;    \
    if (result.Failed())       \
      return result;           \
  }

我明白有人可以称之为讨厌,但有更好的方法吗?
你会建议什么其他方法处理结果和避免很多的膨胀代码

解决方法

这是一个权衡.您正在交易代码大小来模糊逻辑.我更喜欢将逻辑保留为可见.

我不喜欢这种类型的宏,因为它们打破Intellisense(在Windows上)和程序逻辑的调试.尝试在函数中的所有10个返回语句上放置一个断点,而不是检查,只是返回.尝试逐步浏览宏中的代码.

最糟糕的一点是,一旦你接受这一点,很难反对一些程序员喜欢用于常见的迷你任务的30行怪物宏,因为他们澄清了事情.我已经看到代码,其中不同的异常类型由四个级联宏处理,导致源文件中的4行,宏实际上扩展到> 100条真线.现在,你是否减少代码膨胀?不可以用宏来容易地说出来.

反对宏的另一个一般论据即使在这里并不明显适用,也是能够将它们嵌套在难以破译的结果上,或传递引起奇怪但可编译的参数的参数.在使用参数两次的宏中使用x.我总是知道我在哪里站立的代码,我不能说一个宏.

编辑:我应该补充的一个意见是,如果你真的重复这个错误检查逻辑一遍又一遍,也许在代码中有重构机会.不是一个保证,但更好的方法减少代码膨胀,如果它适用.查找重复的调用序列,并将公共序列封装在自己的函数中,而不是解决每个调用如何单独处理.

原文链接:https://www.f2er.com/c/111049.html

猜你在找的C&C++相关文章