Я привык разделять операторы точкой с запятой из Java, поэтому, естественно, я делаю это и в коде Scala. Я также чувствую, что код легче читать, потому что очевидно, где заканчивается одно утверждение, а другое начинается. Но много раз, когда я публикую часть кода Scala на SO, код редактируется только для удаления точек с запятой.
- Я должен использовать точки с запятой или нет? Существуют ли «официальные» руководящие принципы или стиль кодирования?
- Есть ли случаи, когда требуются точки с запятой, иначе код неоднозначен?
coding-style
scala
Петр Пудлак
источник
источник
Ответы:
Официально «правильного» способа сделать это не существует, но большинство практиков опускают точки с запятой везде, где могут (именно поэтому многие люди рефлекторно удаляют точки с запятой).
Язык старается изо всех сил заставить вас забыть о необходимости прекращать операторы вообще. К сожалению, это не совсем удачно, поэтому существуют различные сложные ситуации, в которых точки с запятой или дополнительный набор скобок, или подобные «подсказки» необходимы, чтобы избежать нежелательной семантики. Такие ситуации почти достаточно редки, и обычно вам не нужно думать о них. Различаются мнения о том, означает ли это, что вы должны акцентировать внимание на обороне (это то, что я думаю) или никогда не акцентировать внимание, пока не столкнетесь с неприятностями (так думает большинство пользователей). В конечном счете, это зависит от того, идентифицируете ли вы себя как изменника или образцового гражданина.
источник
Насколько вы хотите понимать языки, которые вы используете? Хотите поиграть в свои сильные стороны или нет? Синтаксис Scala поддерживает понятный и лаконичный код; Несколько крайних случаев, когда использование этого преимущества вызывает проблемы для анализатора Scala, поучительны (то есть вы узнаете больше о Scala, узнав и узнав, как их избежать), и постепенно исправляются (например, суффиксная запись ). Защитное использование точки с запятой может означать, что вам никогда не придется узнавать об этих проблемах, но вы действительно считаете это хорошей вещью? Исправления этих проблем обычно имеют другие последствия, но вы упустите эти возможности.
Другое соображение заключается в том, что, как признает Килиан, большинство разработчиков Scala по умолчанию опускают точки с запятой. Как вы ожидаете работать с чужим кодом, если вы сами избегаете использовать идиоматическую Scala? Вы найдете это намного сложнее, чем нужно.
Я не могу особо подчеркнуть, что эти функции парсера Scala были выбраны для поощрения чистого, повторно используемого и функционального (в смысле fp) кода. Взять в качестве примера синтаксический оператор инфикса; это побуждает разработчиков предоставлять классам простые, одноцелевые методы, которые хорошо сочетаются друг с другом. Библиотека коллекций Scala показывает, насколько красиво это работает. Разработчики классического языка Java, которые принимают это, будут стремиться развивать лучшие привычки и новые взгляды на свой код. Те, кто придерживается всех этих знакомых точек и скобок, пропустят. Я утверждаю, что это также верно для тех, кто слишком робок, чтобы отказаться от точки с запятой.
источник