C代码纯度

C代码纯度,第1张

概述我正在C环境工作: a)我们禁止使用异常 b)是应用/数据服务器代码,用于评估不同类型的请求 我有简单的类封装服务器 *** 作的结果,也是内部使用的很多功能. class OpResult{ ..... bool succeeded(); bool failed(); .... ... data error/result message ...}; 当我尝试使所有的功能都小而简单时, 我正在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.我总是知道我在哪里站立的代码,我不能说一个宏.

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

总结

以上是内存溢出为你收集整理的C代码纯度全部内容,希望文章能够帮你解决C代码纯度所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1256779.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存