Есть несколько преимуществ, которые я вижу в пользу однострочных комментариев (//
) по сравнению с многострочными комментариями (/* */
), так как называть их "C -стиль" не имеет смысла, поскольку оба стиля допустимые в C) легче переключать.
- Однострочные комментарии легче вставлять / удалять, потому что большинство IDE имеют ярлык для их переключения. В Xcode это ⌘ + / по умолчанию.
Многострочные комментарии предоставляют больше возможностей для несогласованности. Какой из них следует использовать?
Этот подход компактен, но нарушает горизонтальное выравнивание A
/* A
B
C */
Этот подход сохраняет выравнивание элементов без изменений, но тратит пространство по вертикали:
/*
A
B
C
*/
Этот подход сохраняет выравнивание элементов без изменений и не занимает слишком много дополнительного вертикального пространства
/*
A
B
C */
Это худший из двух миров, я бы не советовал.
/* A
B
C
*/
Это просто лучше во всех отношениях. Выравнивание не повреждено. Дополнительное горизонтальное пространство не тратится впустую.
// A
// B
// C
В комментируемый раздел легче вносить однострочные комментарии. Сравните:
С однострочными комментариями это всего лишь одно действие по удалению ведущих //
s в соответствующих местах До:
// A
// B
// C
После:
// A
// B
C // Just had to remove the leading "//" here
Для многострочных комментариев требуется «вырезать» */
в конце и вставить его в новом конце. Два действия.
До:
/*
A
B
C
*/
После:
/*
A
B
*/ // 1. had to insert "*/" here
C // 2. had to remove "*/" from the end
Это не проблема в Быстро, но в C многострочные комментарии не являются вложенными. Предположим, у вас есть функция, которая содержит многострочный комментарий. Но вы хотите временно закомментировать эту функцию (по какой-то причине, просто пример). Если оба комментария состоят из нескольких строк, это не скомпилирует. Этот код недействителен:
/* // This "/*" is treated as the start of a comment block
/* // This "/*" is commented, thus ignored.
*/ // This "*/" is treated as the end of the comment block
*/ // This "*/" tries to close the comment block, but it's not in a comment block. This is invalid.
Однако Swift не имеет этой проблемы. Я предполагаю, что у парсера есть внутренний "уровень вложенности блока комментариев", который он отслеживает. Каждый /*
увеличивает его, а каждый */
уменьшает. Блок комментариев закрывается только тогда, когда «уровень вложенности блока комментариев» возвращается к 0
.
Это бесполезно
Однако это не означает что многострочные комментарии не используются в Swift. Я часто использую их, когда играю с подвыражением строки. Например, если у меня есть вызов этой функции:
someFunction(someValue + 1, someOtherParam)
Я могу видеть, как функция ведет себя без этого + 1
, используя комментарий к блоку:
someFunction(someValue /* + 1 */, someOtherParam)
Достижение того же, используя только однострочные комментарии потребовали бы от меня сделать что-то вроде:
someFunction(someValue // + 1
, someOtherParam)
или ввести временную локальную переменную:
let incrementedValue = someValue // + 1
someFunction(incrementedValue, someOtherParam)
Ни один из них не является столь же приятным.