2009-04-21 10 views
6

Estoy buscando escribir una pequeña biblioteca de Scala para tener una idea de su modelo de programación Actor.¿Las bibliotecas de Scala siguen la misma convención de dominio invertido para nombrar paquetes como Java?

En el código de ejemplo que he encontrado, algunas bibliotecas usan el dominio invertido (por ejemplo, org.foo.bar) para paquetes y algunas no (por razones de brevedad).

¿Es aconsejable que las bibliotecas Scala utilicen las mismas convenciones de nomenclatura de paquetes que Java? De manera más general, ¿hay alguna buena sugerencia de estilo de codificación de Scala como Python con PEP 8?

Sí, probablemente poniendo carro delante del caballo, pero me parece que puedo tener una idea decente para un idioma también ver algunas de las convenciones que han sacudido a cabo.

Gracias

Respuesta

8

Lift, uno de los proyectos más grandes en Scala, utiliza la convención de nombres de dominio invertida, que en realidad tiene mucho sentido, ya que Scala y Java pueden interoperar, es lógico pensar que querrías mantener las cosas lo menos dolorosas posible, y realmente no puedo pensar en ninguna ventaja valiosa de hacerlo de otra manera.

+0

Gracias, ver cómo está estructurado el ascensor me ayuda a comprender mejor los paquetes/módulos. La convención de dominio invertido está bien, pero he estado usando Python el tiempo suficiente para apreciar las jerarquías de paquete más planas. La capacidad de alias de las importaciones parece ser una buena solución para las raras circunstancias en las que se produce una colisión del espacio de nombres, aunque es cierto que no resuelve completamente el problema. –

+0

Consulte http://www.drmaciver.com/2009/07/how-packages-work-in-scala/ para ver un ejemplo de un posible problema. Sin embargo, tiene sentido seguir la norma Java. – mauhiz

2

Scala básicamente hereda la mayoría de las convenciones de Java (en casi todo). Hay algunas excepciones a esto. Por ejemplo, Scala "captadores y definidores" se hacen realmente de la siguiente manera:

class Person { 
    private var _name: String = _ 

    def name = _name 

    def name_=(s: String) { 
    _name = s 
    } 
} 

En caso de duda, pedir prestado la convención de Java, Ruby o Haskell (en ese orden de preferencia). Con respecto a los paquetes, la respuesta es "sí", los paquetes de Scala se nombran utilizando la convención de dominio invertido.

Cuestiones relacionadas