¿Por qué Kotlin soltó la palabra key "nueva"?

¿Por qué Kotlin soltó la nueva palabra key? Hace más difícil ver la diferencia entre una llamada de function y una asignación de object.

Los Convenios de Codificación de Kotlin establecen claramente que:

  • uso de camelCase para los nombres (y evitar guiones bajos en los nombres)
  • los types comienzan con mayúsculas
  • methods y properties comienzan con minúsculas

Si sigue lo anterior y trata al constructor como una function normal que se puede llamar, es decir, val invoice = Invoice() la new palabra key se vuelve networkingundante . Una vez que se acomode con la convención, queda claro qué está haciendo un código.

De hecho, incluso en el código Java tendrás muchas asignaciones implícitas que ocurren justo debajo de una llamada a un método como Collections.singleton(o) o Guava's Lists.newArrayList() así que no creo que tu argumento sobre la visibilidad de la asignación sea mejor con el new la palabra key es completamente válida.

(IMO) Se realizó porque NO existe una diferencia real entre las funciones y la construcción del object, es decir, nada impide que una function asigne un object (y a menudo lo hacen).

Un buen ejemplo son las funciones de fábrica. Estas funciones crean nuevos objects, pero de ninguna manera son constructores de classs.

AFAIK, la new palabra key se creó debido a una experiencia negativa con C \ C ++, donde las funciones, devolver objects nuevos, tienen que estar marcadas especialmente (por convenciones de nombres) para no olvidar (liberar) manualmente la memory. En un lenguaje de administración automática de memory como Java \ Kotlin no es una preocupación.

Varios otros idiomas no tienen palabras key new (Python, Scala, tal vez Ceilán) y las personas que han cambiado a esos idiomas nunca parecen perderlo. Sé que no.

  • ¿Cómo declarar parámetro como function sin valor de retorno?
  • ¿Cuál es la forma idiomática de clonar un MutableMap?
  • Anotaciones de Kotlin en properties delegadas
  • Fallo en la entrega del resultado de la actividad
  • ¿Qué configuration regional se usa para las templates de cadena de kotlin?
  • ¿Cómo puedo tener una key compuesta en Kotlin?
  • División de routes en múltiples files
  • ¿Cómo replace webView por webView personalizado?
  • Cómo convertir si expresión a cuando en Kotlin
  • Usar puntos en identificadores xml
  • Intenciones en Kotlin