¿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.

  • ¿Por qué mi compilation Kotlin falla utilizando Kotlin-Maven-Plugin?
  • "Error: no se pudo encontrar o cargar principal" O "Clase no encontrada" - con el module de Android (Gradle / IntelliJ)
  • Android: Usando viewPager con navigationDrawer - problema con Fragments
  • Android Kotlin no puede usar list.sort () con lambda
  • No se puede get que SupportMapFragment devuelva nada ... parece ser siempre nulo
  • Kotlin .removeSurrounding no funciona para despojar a Aws cadena de ARN
  • Expresiones de kotlin lambda como parámetro opcional
  • Problemas al upload imágenes a Firebase
  • Cómo destruir un constructor en Kotlin
  • En Kotlin, cómo pasar un fragment a FragmentManager.replace correctamente
  • Kotlin, networkinguce el código duplicado