【问题标题】:Is there any reason why c blocks always have the { directly after the ^ and not on a new line?有什么理由为什么 c 块总是在 ^ 之后直接有 { 而不是在新行上?
【发布时间】:2011-01-26 15:56:29
【问题描述】:

我的编码风格是始终将左大括号放在新行上:

int aBoringCFunction()
{
    ...

Apple 曾经遵循这种风格,但更改为将{ 与函数放在同一行。使用块时,Apple 代码总是在 ^ 之后直接有 {:

dispatch_async(dispatch_get_main_queue(), ^{
                   ...

是否有任何理由将我的样式与块一起使用会出现问题?例如:

dispatch_async(dispatch_get_main_queue(), ^
{
    ...

我更喜欢我的风格,但如果它导致块出现问题,那么我将不得不重新考虑它。

澄清

这个问题是关于Blocks extension to the C language。这不是关于牙套的一般问题。问题是 Blocks 扩展是否对代码风格有任何影响。

【问题讨论】:

  • 这不是 C,而是 Objective-C。完全不同的语言。
  • @Tomalak Geret'kal:不,块是 C 语言的扩展。 Objective-C 是 C 的严格超集,因此对 C 的任何添加,例如块,也适用于 Objective-C。 Grand Central Dispatch 是一个 C 库,而不是 Objective-C 库。
  • 请注意,我的问题专门针对 C 块及其与大括号的关系。这不是关于大括号的一般问题!
  • @BenedictCohen:不,C 中的“块”是一堆用大括号括起来的代码。常见示例包括 if 和 while 语句后面的块。
  • @Johannes Schaub:这个问题与 C 语言的 Blocks 扩展有关。是的,问题中有一个 Objective-C 示例,但整个问题与 Blocks 扩展有关。 Objective-C 示例已被删除,因为它会使不熟悉此问题所涉及技术的人感到困惑。

标签: c coding-style objective-c-blocks


【解决方案1】:

两种风格都完全正确;这是风格和偏好的问题。 有问题的唯一方法是,您可能需要遵守 Apple 的约定,具体取决于您的代码适用于谁。因此,在您的作品被接受之前,您可能需要返回并稍微更改格式。

【讨论】:

    【解决方案2】:

    我认为块样本是在模仿 Apple 的标准,仅此而已。您可以将牙套放在您喜欢的任何地方。建议考虑转换,因为在线样品很可能会跟随苹果。而且效果很好。

    【讨论】:

      【解决方案3】:

      这是人们争论最多的与风格相关的事情之一,同时也是最不重要的事情。

      将大括号放在同一行是“K&R”样式,这种样式从一开始就在 C 中使用。将它放在单独的线上可能是当今最常见的。

      但没有证据表明这两种风格中的一种比另一种更好。如果有人争论一种风格而不是另一种风格,那就要求对此事进行科学研究。我还没有看到这样的。

      唯一重要的是代码风格在整个程序中保持一致。如果在团队中作为程序员工作,整个团队应该使用相同的风格。

      【讨论】:

      • Kibitz:即使在“K&R”风格中,函数定义的左大括号也经常单独放在一行。我想这是因为在 K 和 R 时代,函数参数声明放在右括号和左大括号之间,所以这样看起来更整洁。
      【解决方案4】:

      c 编译器并不关心你把括号放在哪里。它的风格我个人讨厌K&R 风格,但真正重要的是你编写代码的编码标准。如果它只是供个人使用,请尽一切可能使代码对您更具可读性。

      【讨论】:

        【解决方案5】:

        传统上,程序员试图使用尽可能少的行,因为在正在使用的终端上一次只能看到 24 行。将 { 放在自己的行上只会浪费屏幕空间。

        现在有了大型高分辨率显示器,我认为这不是一个问题,我和你一样,为了整洁,把牙套放在自己的线上。

        【讨论】:

          【解决方案6】:

          不同的人有非常不同的编码品味。通常,较大的项目带有编码风格指南。例如,KDE 和你一样喜欢它:{ 在下一行。他们还喜欢 if 语句中的空格:

          如果 (this_var > 42)

          我个人认为没有必要。我曾经有一位同事喜欢在每个函数之后有 5 个空白行。对他来说,视觉上的分离很重要。然而,对我来说,我喜欢尽可能多地同时出现在屏幕上。

          没有错。只有空白。

          在我们就共同风格达成一致后(现在已经持续了 10 年),我为一个项目写的最喜欢的提交日志:

          2002-04-20 00:07 哈达克 * 一切: 白色空间,哦,光荣的白色空间。 我们有多棒? 代码很好。 我们很容易就功能达成一致。 真正困扰我们的是什么? 我们看不到的东西。 代码之间的东西。 我们向你的壮丽鞠躬, 因为你无处不在, 万物之间。 你真是虚无。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-04-25
            • 2015-05-31
            • 1970-01-01
            • 1970-01-01
            • 2015-10-04
            • 2011-10-27
            • 2010-10-10
            • 2021-12-26
            相关资源
            最近更新 更多