为什么在 Swift 中需要避免 C 风格的 /*... */ 注释?

tim*_*man 1 comments swift

我读过这份Swift 风格指南,它显然是基于 Apple 自己的 Swift 库风格:

“非文档注释始终使用双斜杠格式 (//),而不是 C 样式块格式 (/* ... */)。”

为什么不要对多行使用 C 风格注释很重要?

Ale*_*ica 5

我认为单行注释有一些好处(// ) 比多行注释 (/* */称这些“C 风格”并没有真正意义,因为两种风格在 C 中都有效) 更容易切换。

\n\n
    \n
  1. 单行注释更容易插入/删除,因为大多数 IDE 都有切换它们的快捷方式。在 Xcode 中,它是\xe2\x8c\x98+/默认为
  2. \n
  3. 多行注释会带来更多不一致的机会。应该使用其中哪一个?

    \n\n
  4. \n
  5. 使用单行注释对注释部分进行更改会更容易。比较:

    \n\n
  6. \n
  7. 这在 Swift 中不是问题,但在 C 中,多行注释是不可嵌套的。假设您有一个函数,其中包含多行注释。但是您想暂时注释掉该函数(无论出于何种原因,只是一个例子)。如果两个注释都是多行,则无法编译。此代码无效:

    \n\n
    /*        // This "/*" is treated as the start of a comment block\n/*        // This "/*" is commented, thus ignored.\n*/        // This "*/" is treated as the end of the comment block\n*/        // This "*/" tries to close the comment block, but it\'s not in a comment block. This is invalid.\n
    Run Code Online (Sandbox Code Playgroud)\n\n

    然而,Swift 没有这个问题。我想解析器有一个它跟踪的内部“注释块嵌套级别”。每一次/*都会增加它,每一次*/都会减少它。仅当“注释块嵌套级别”返回到 时,注释块才会关闭0

  8. \n
\n\n

这并非无用

\n\n

然而,这并不意味着多行注释在 Swift 中没有用处。当我玩弄一行的子表达式时,我经常使用它们。例如,如果我有这个函数调用:

\n\n
someFunction(someValue + 1, someOtherParam)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我可以看到没有它的函数的行为方式+ 1我可以在没有使用块注释的

\n\n
someFunction(someValue /* + 1 */, someOtherParam)\n
Run Code Online (Sandbox Code Playgroud)\n\n

仅使用单行注释实现相同的目标需要我执行以下操作:

\n\n
someFunction(someValue // + 1\n        , someOtherParam)\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者引入一个临时局部变量:

\n\n
let incrementedValue = someValue // + 1\nsomeFunction(incrementedValue, someOtherParam)\n
Run Code Online (Sandbox Code Playgroud)\n\n

两者都不那么好。

\n