这种编码风格有什么优势吗?

Jee*_*tel 5 c coding-style

|在gestremer matroska demux插件中有这个功能:

gboolean
gst_matroska_demux_plugin_init (GstPlugin * plugin)
{
  /* parser helper separate debug */
  GST_DEBUG_CATEGORY_INIT (ebmlread_debug, "ebmlread",
      0, "EBML stream helper class");

  /* create an elementfactory for the matroska_demux element */
  if (!gst_element_register (plugin, "matroskademux",
          GST_RANK_PRIMARY, GST_TYPE_MATROSKA_DEMUX))
    return FALSE;

  return TRUE;
}
Run Code Online (Sandbox Code Playgroud)

现在gst_element_register()是类型

gboolean            gst_element_register                (GstPlugin *plugin,
                                                         const gchar *name,
                                                         guint rank,
                                                         GType type);
Returns :
    TRUE, if the registering succeeded, FALSE on error
Run Code Online (Sandbox Code Playgroud)

那为什么不用以下方式写呢?

 gboolean
    gst_matroska_demux_plugin_init (GstPlugin * plugin)
    {
      /* parser helper separate debug */
      GST_DEBUG_CATEGORY_INIT (ebmlread_debug, "ebmlread",
          0, "EBML stream helper class");

      /* create an elementfactory for the matroska_demux element */
      return gst_element_register (plugin, "matroskademux",
              GST_RANK_PRIMARY, GST_TYPE_MATROSKA_DEMUX))      
    }
Run Code Online (Sandbox Code Playgroud)

Die*_*Epp 7

它是模式的一部分.

if (!some_function(...))
    return false;
if (!other_function(...))
    return false;

return true;
Run Code Online (Sandbox Code Playgroud)

编写它的人决定不改变模式只是因为只有一个函数调用.最终这是一个品味问题.


hav*_*exz 4

因此,代码没有问题。至少如果有人使用任何提到的片段我不会惩罚。

我认为造成这种情况的原因有以下几点:

  • 最重要的是可读性。现在看那段代码,我知道什么是成功,什么是不成功。因为可能存在 api,其行为相反(即使在 C 中也是如此)。
  • 第二个原因发生在测试期间您想要打印一些日志语句时。现在,如果您直接返回,则无法记录返回值或任何调试信息。您可以说在释放代码后,应该将其删除,但对于下一个版本,您可能必须再次放置调试语句。所以它就留在那里。
  • 第三个原因可能是在开发过程中删除了一些代码。

结论就是我一开始说的。只要代码易于理解就没关系。关于一些优化收益,我认为编译器有足够的智能来处理。