我读过这份Swift 风格指南,它显然是基于 Apple 自己的 Swift 库风格:
“非文档注释始终使用双斜杠格式 (//),而不是 C 样式块格式 (/* ... */)。”
为什么不要对多行使用 C 风格注释很重要?
我认为单行注释有一些好处(// ) 比多行注释 (/* */称这些“C 风格”并没有真正意义,因为两种风格在 C 中都有效) 更容易切换。
多行注释会带来更多不一致的机会。应该使用其中哪一个?
\n\n这种方法很紧凑,但扰乱了 A 的水平对齐
\n\n/* A \nB\nC */\nRun Code Online (Sandbox Code Playgroud)这种方法保持元素的对齐完整,但浪费了垂直空间:
\n\n/*\nA\nB\nC\n*/\nRun Code Online (Sandbox Code Playgroud)这种方法保持元素对齐完整,并且不会占用太多额外的垂直空间
\n\n/*\nA\nB\nC */\nRun Code Online (Sandbox Code Playgroud)这是两个世界中最糟糕的,我不会推荐它。
\n\n/* A\nB\nC\n*/\nRun Code Online (Sandbox Code Playgroud)这在各方面都更好。对齐完好无损。没有浪费额外的水平空间。
\n\n// A\n// B\n// C\nRun Code Online (Sandbox Code Playgroud)使用单行注释对注释部分进行更改会更容易。比较:
\n\n对于单行注释,只需执行一个操作即可删除前导//相关位置的前导 s 即可\n之前:
// A\n// B\n// C\nRun Code Online (Sandbox Code Playgroud)\n\n后:
\n\n// A\n// B\nC // Just had to remove the leading "//" here\nRun Code Online (Sandbox Code Playgroud)对于多行注释,它需要你“剪切”*/末尾,然后将其粘贴到新的末尾。两个动作。
前:
\n\n/*\nA\nB\nC\n*/\nRun Code Online (Sandbox Code Playgroud)\n\n后:
\n\n/*\nA\nB\n*/ // 1. had to insert "*/" here\nC // 2. had to remove "*/" from the end\nRun Code Online (Sandbox Code Playgroud)这在 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.\nRun Code Online (Sandbox Code Playgroud)\n\n然而,Swift 没有这个问题。我想解析器有一个它跟踪的内部“注释块嵌套级别”。每一次/*都会增加它,每一次*/都会减少它。仅当“注释块嵌套级别”返回到 时,注释块才会关闭0。
然而,这并不意味着多行注释在 Swift 中没有用处。当我玩弄一行的子表达式时,我经常使用它们。例如,如果我有这个函数调用:
\n\nsomeFunction(someValue + 1, someOtherParam)\nRun Code Online (Sandbox Code Playgroud)\n\n我可以看到没有它的函数的行为方式+ 1我可以在没有使用块注释的
someFunction(someValue /* + 1 */, someOtherParam)\nRun Code Online (Sandbox Code Playgroud)\n\n仅使用单行注释实现相同的目标需要我执行以下操作:
\n\nsomeFunction(someValue // + 1\n , someOtherParam)\nRun Code Online (Sandbox Code Playgroud)\n\n或者引入一个临时局部变量:
\n\nlet incrementedValue = someValue // + 1\nsomeFunction(incrementedValue, someOtherParam)\nRun Code Online (Sandbox Code Playgroud)\n\n两者都不那么好。
\n| 归档时间: |
|
| 查看次数: |
571 次 |
| 最近记录: |