Почему нужно избегать C -style / * ... * / комментариев в Swift? - PullRequest
1 голос
/ 04 апреля 2020

Я прочитал это Руководство по стилю Swift, которое, по-видимому, основано на собственном стиле библиотеки Apple Swift:

'В комментариях, не связанных с документацией, всегда используется формат double-sla * sh ( //), никогда не используйте формат блока C (/ * ... * /). '

Почему важно не использовать комментарии в стиле C для нескольких строк?

Ответы [ 2 ]

4 голосов
/ 04 апреля 2020

Есть несколько преимуществ, которые я вижу в пользу однострочных комментариев (//) по сравнению с многострочными комментариями (/* */), так как называть их "C -стиль" не имеет смысла, поскольку оба стиля допустимые в C) легче переключать.

  1. Однострочные комментарии легче вставлять / удалять, потому что большинство IDE имеют ярлык для их переключения. В Xcode это + / по умолчанию.
  2. Многострочные комментарии предоставляют больше возможностей для несогласованности. Какой из них следует использовать?

    • Этот подход компактен, но нарушает горизонтальное выравнивание A

      /* A 
      B
      C */
      
    • Этот подход сохраняет выравнивание элементов без изменений, но тратит пространство по вертикали:

      /*
      A
      B
      C
      */
      
    • Этот подход сохраняет выравнивание элементов без изменений и не занимает слишком много дополнительного вертикального пространства

      /*
      A
      B
      C */
      
    • Это худший из двух миров, я бы не советовал.

      /* A
      B
      C
      */
      
    • Это просто лучше во всех отношениях. Выравнивание не повреждено. Дополнительное горизонтальное пространство не тратится впустую.

      // A
      // B
      // C
      
  3. В комментируемый раздел легче вносить однострочные комментарии. Сравните:

    • С однострочными комментариями это всего лишь одно действие по удалению ведущих // 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
      
  4. Это не проблема в Быстро, но в 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)

Ни один из них не является столь же приятным.

4 голосов
/ 04 апреля 2020

Хотя у меня нет конкретного ответа для вас, основное различие между ними заключается в удобстве, на мой взгляд.

Я думаю, что Swift Style Guide сказал из-за простого удобства.

что я имею в виду под этим ?, если вы выделите несколько строк и нажмете (cmd + /), он закомментирует / раскомментирует все выделенные строки (раскомментирует выделенные строки, только если он в формате "//")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...