Элементы стиля Scala? [закрытый]

Одним словом: нет. Единственный способ расширить изображение с эти <img> тег. Необходимо будет быть творческими.

Это раньше было верно в 2008, когда ответ был записан. Сегодня современная поддержка браузеров background-size, который решает эту проблему. Остерегайтесь этого, IE8 не поддерживает его.

43
задан Peter Mortensen 11 July 2013 в 13:22
поделиться

4 ответа

Наличие нескольких классов и объектов внутри одного файла считается хорошим тоном в Scala, если классы тесно связаны.

Хотя это и не обязательно, тип, возвращаемый методом - именованная функция, объявленная для признака, класса или объекта - ожидается, что она будет объявлена ​​для не приватных методов. Пробелы ожидаются после : , но не перед ним.

//  methods declared on a class, trait or object
def length: Int = ...
def multiply(other: Foo): Foo = ...

def hypotenuse(a: Double, b: Double): Double = {
  //  function inside a method, so effectively private
  def square(x: Double) = x * x

  math.sqrt(square(a) + square(b))
}

В точечной нотации между ключевыми словами и скобками должны быть пробелы, но не между именем метода и следующей скобкой. Для обозначения операторов, похоже, не существует общепринятого стиля в отношении скобок - или того, когда использовать эту нотацию, если на то пошло, но в такой нотации ожидаются пробелы вокруг не буквенно-цифровых методов.

//  keywords
if (foo) ...

//  dot notation
foo.doSomething(bar)

//  operator notation
foo doSomething bar
foo + bar

В исключительных случаях при объединении строк с + , рекомендуемый стиль - не использовать пробелы вокруг него. Например:

//  concatenate strings
println("Name: "+person.name+"\tAge: "+person.age)

Объявления, которые могут быть однострочными, должны быть однострочными, если вложенность не очевидна.

//  one-liners
lazy val foo = calculateFoo
def square(x: Int) = x * x

Методы, которые не ожидают параметров и не имеют побочных эффектов, должны быть используется без скобок, за исключением методов Java, которые предполагается использовать в скобках. Методы без параметров с побочными эффектами должны использоваться в круглых скобках.

//  without side-effects
val x = foo.length
val y = bar.coefficient

//  with side-effects
foo.reverse()

Ожидается, что объявления, содержащие одно выражение, не будут заключены в фигурные скобки, если это невозможно из-за других синтаксических соображений. Заключение выражения в круглые скобки для включения многострочных выражений допустимо, но я видел мало пользы от этого.

//  single-line expression
def sum(list: List[Int]): Int = if (!list.isEmpty) list reduceLeft (_ + _) else 0

//  multi-line expression
val sum = (
  getItems
  reduceLeft (_ + _)
)

В for-complation, поддержание генераторов и условий по вертикали, выровненных по вертикали, кажется принятым стилем. Что касается yield , я видел, что он выровнен с для и с отступом.

//  for-comprehensions
val squares =
  for (x <- numbers)
    yield x * x

// Curly brackets-style identation
val cells = for {
  x <- columns
  y <- rows
  if x != y
} yield Cell(x, y)

// Parameter-style identation
val cells = for (x <- columns;
                 y <- rows;
                 if x != y)
            yield Cell(x, y)

Также принят стиль для вертикального выравнивания параметров объявления класса.

Говоря об отступах, принятым соглашением является два пробела.

Фигурные скобки должны начинаться на одной строке объявления и заканчиваться вертикально, выровненными с этой строкой.

//  another example
def factorial(n: Int): Int = {
  def fact(n: Int, acc: Int): Int = n match {
    case 0 => acc
    case x => fact(x - 1, x * acc)
  }

  fact(n, 1)
}

Для процедур - функции. чей возвращаемый тип - Unit - ожидаемый стиль должен был заключаться в том, чтобы не указывать тип метода и знак равенства:

//  procedures
def complain {
  println("Oh, no!")
}

Некоторые люди думают, что этот стиль подвержен ошибкам, однако, поскольку пропущенный знак равенства изменит функцию, возвращающую что-то иное, кроме Unit в процедуру.

Идентификаторы записываются в верблюжьем регистре (например: identifiersHaveHumps ), как в Java. Имена полей, параметров методов, локальных переменных и функций начинаются со строчной буквы. Классы, признаки и типы начинаются с заглавной буквы.

В отличие от соглашения Java, имена констант. В Scala обычно используется стандартный регистр верблюда, начинающийся с заглавной буквы. Например, Pi , а не PI , XOffset, а не X_OFFSET . Этому правилу обычно следует любой синглтон. Представление констант и синглтонов таким образом имеет практические последствия для совпадения регистра:

import scala.Math.Pi

val pi = Pi // this identifier will be shadowed by the identifier in the function below

def isPi(n: Double): Boolean = n match {
  case Pi => println("I got a true Pi."); true
  case pi => println("I got "+pi+" and bounded it to an identifier named pi."); false
}

Имена пакетов начинаются со строчной буквы. Это особенно полезно при различении в операторе импорта того, что является пакетом, а что нет. В предыдущем примере Math не является пакетом (это синглтон), так как он начинается с заглавной буквы.

Использование символа подчеркивания - _ - не рекомендуется, так как этот символ имеет много специальных значений в Scala. Эти правила для идентификаторов можно найти на страницах 141 и 142 книги «Программирование на Scala», авторы Odersky, Spoon & Venners

. Прямо сейчас я не могу вспомнить другие ситуации, но не стесняйтесь просить разъяснений по конкретным вопросам. Некоторые из этих правил были четко сформулированы, другие больше согласованы сообществом. Я пытался не учитывать свои собственные предпочтения, но, возможно, у меня ничего не вышло.

Что еще более важно, возможно, на самом деле нет единого соглашения. Одна из причин этого может заключаться в том, что Scala привлекает людей из самых разных слоев общества, таких как знатоки функционального языка, программисты Java и энтузиасты Web 2.0.

Использование символа подчеркивания - _ - не рекомендуется, так как этот символ имеет много специальных значений в Scala. Эти правила для идентификаторов можно найти на страницах 141 и 142 книги «Программирование на Scala», авторы Odersky, Spoon & Venners

. Прямо сейчас я не могу вспомнить другие ситуации, но не стесняйтесь просить разъяснений по конкретным вопросам. Некоторые из этих правил были четко сформулированы, другие больше согласованы сообществом. Я пытался не учитывать свои собственные предпочтения, но, возможно, у меня ничего не вышло.

Что еще более важно, возможно, на самом деле нет единого соглашения. Одна из причин этого может заключаться в том, что Scala привлекает людей из самых разных слоев общества, таких как знатоки функционального языка, программисты Java и энтузиасты Web 2.0.

Использование символа подчеркивания - _ - не рекомендуется, так как этот символ имеет много специальных значений в Scala. Эти правила для идентификаторов можно найти на страницах 141 и 142 книги «Программирование на Scala», авторы Odersky, Spoon & Venners

. Прямо сейчас я не могу вспомнить другие ситуации, но не стесняйтесь просить разъяснений по конкретным вопросам. Некоторые из этих правил были четко сформулированы, другие больше согласованы сообществом. Я пытался не учитывать свои собственные предпочтения, но, возможно, у меня ничего не вышло.

Что еще более важно, возможно, на самом деле нет единого соглашения. Одна из причин этого может заключаться в том, что Scala привлекает людей из самых разных слоев общества, таких как знатоки функционального языка, программисты Java и энтузиасты Web 2.0.

так как этот символ имеет много специальных значений в Scala. Эти правила для идентификаторов можно найти на страницах 141 и 142 книги «Программирование на Scala», авторы Odersky, Spoon & Venners

. Прямо сейчас я не могу вспомнить другие ситуации, но не стесняйтесь просить разъяснений по конкретным вопросам. Некоторые из этих правил были четко сформулированы, другие больше согласованы сообществом. Я пытался не учитывать свои собственные предпочтения, но, возможно, у меня ничего не вышло.

Что еще более важно, возможно, на самом деле нет единого соглашения. Одна из причин этого может заключаться в том, что Scala привлекает людей из самых разных слоев общества, таких как знатоки функционального языка, программисты Java и энтузиасты Web 2.0.

так как этот символ имеет много специальных значений в Scala. Эти правила для идентификаторов можно найти на страницах 141 и 142 книги «Программирование на Scala», авторы Odersky, Spoon & Venners

. Прямо сейчас я не могу вспомнить другие ситуации, но не стесняйтесь просить разъяснений по конкретным вопросам. Некоторые из этих правил были четко сформулированы, другие больше согласованы сообществом. Я пытался не учитывать свои собственные предпочтения, но, возможно, у меня ничего не вышло.

Что еще более важно, возможно, на самом деле нет единого соглашения. Одна из причин этого может заключаться в том, что Scala привлекает людей из самых разных слоев общества, таких как знатоки функционального языка, программисты Java и энтузиасты Web 2.0.

Одерски, Спун и Веннерс.

Прямо сейчас я не могу вспомнить другие ситуации, но не стесняйтесь просить разъяснений по конкретным вопросам. Некоторые из этих правил были четко сформулированы, другие больше согласованы сообществом. Я пытался не учитывать свои собственные предпочтения, но, возможно, у меня ничего не вышло.

Что еще более важно, возможно, на самом деле нет единого соглашения. Одна из причин этого может заключаться в том, что Scala привлекает людей из самых разных слоев общества, таких как знатоки функционального языка, программисты Java и энтузиасты Web 2.0.

Одерски, Спун и Веннерс.

Прямо сейчас я не могу вспомнить другие ситуации, но не стесняйтесь просить разъяснений по конкретным вопросам. Некоторые из этих правил были четко сформулированы, другие больше согласованы сообществом. Я пытался не учитывать свои собственные предпочтения, но, возможно, у меня ничего не вышло.

Что еще более важно, возможно, на самом деле нет единого соглашения. Одна из причин этого может заключаться в том, что Scala привлекает людей из самых разных слоев общества, таких как знатоки функционального языка, программисты Java и энтузиасты Web 2.0.

Что еще более важно, возможно, на самом деле нет единого соглашения. Одна из причин этого может заключаться в том, что Scala привлекает людей из самых разных слоев общества, таких как знатоки функционального языка, программисты Java и энтузиасты Web 2.0.

Что еще более важно, возможно, на самом деле нет единого соглашения. Одна из причин этого может заключаться в том, что Scala привлекает людей из самых разных слоев общества, таких как знатоки функционального языка, программисты Java и энтузиасты Web 2.0.

45
ответ дан 26 November 2019 в 22:58
поделиться

Это очень важный вопрос. Как правило, стиль Scala, кажется, подхватывается просто общением с другими членами сообщества Scala, чтением исходного кода Scala и т. Д. Это не очень помогает новичкам в языке, но указывает на то, что это своего рода стандарт де-факто существует (как выбрано мудростью масс). В настоящее время я работаю над полностью реализованным руководством по стилю для Scala, которое документирует выбранные сообществом соглашения и лучшие практики. Однако а) он еще не закончен, и б) я еще не уверен, что мне разрешат опубликовать его (я пишу его для работы).

Чтобы ответить на ваш второй вопрос (вроде): в общем, каждый класс / черта / объект должен получить свой собственный файл, названный в соответствии с соглашениями об именах Java. Однако, в ситуациях, когда у вас есть много классов, которые разделяют одну общую концепцию, иногда проще (как в краткосрочной, так и в долгосрочной перспективе) поместить их все в один файл. Когда вы это сделаете, имя файла должно начинаться с строчной буквы (все еще camelCase) и описывать общую концепцию.

2
ответ дан 26 November 2019 в 22:58
поделиться

Мне не очень важен типичный стиль, который используют многие программисты Scala, поэтому я просто применяю тот же стандарт, который использовал бы в C #, Java или особенно JavaScript.

Scala может быть очень выразительным, но использование незнакомого формата увеличит ваш барьер для входа. Особенно с учетом внутренних DSL , которые не могут иметь «Стандарт».

Итак, я прошу сделать все, чтобы ваш код был более читабельным для вас и вашей команды.

2
ответ дан 26 November 2019 в 22:58
поделиться

Теперь существует полное руководство по стилям Scala, предложенное сообществу . Это еще даже отдаленно не официально, но это единственная (насколько мне известно) кодификация принятых сообществом соглашений.

12
ответ дан 26 November 2019 в 22:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: