Warum hat kotlin das neue Keyword gelöscht? Es macht es schwieriger, den Unterschied zwischen einem Funktionsaufruf und einer Objektzuordnung zu sehen.
Die Kotlin Kodierungskonventionen stellen klar fest:
- Verwendung von camelCase für Namen (und Unterstrich in Namen vermeiden)
- -Typen beginnen mit Großbuchstaben
- Methoden und Eigenschaften beginnen mit Kleinbuchstaben
Wenn Sie den obigen Anweisungen folgen und constructor
als reguläre Funktion behandeln , die aufgerufen werden kann, d. h. val invoice = Invoice()
, wird das Schlüsselwort new
zu redundant .
Sobald Sie sich mit der Konvention vertraut gemacht haben, ist klar, was ein Code tut.
Tatsächlich haben Sie sogar im Java-Code viele implizite Zuordnungen, die direkt unter einem Methodenaufruf wie Collections.singleton(o)
oder Guavas Lists.newArrayList()
Ich glaube also nicht, dass Ihre Argumentation über die Sichtbarkeit der Zuordnung mit dem Schlüsselwort new
voll gültig ist.
(IMO) Es wurde gemacht, weil es KEINEN echten Unterschied zwischen Funktionen und Objektkonstruktion gibt, d. h. nichts hindert eine Funktion daran, ein Objekt zuzuweisen (was sie oft tun).
Ein gutes Beispiel sind Factory-Funktionen. Diese Funktionen erstellen neue Objekte, aber sie sind in keiner Weise Klassenkonstruktoren.
AFAIK, das Schlüsselwort new
wurde aufgrund einer negativen Erfahrung mit C \ C ++ erstellt, wobei Funktionen, die neue Objekte zurückgeben, speziell markiert werden müssen (durch Namenskonventionen), um nicht (manuell) die Erinnerung. In einer Auto-Memory-Management-Sprache wie Java \ Kotlin ist dies kein Problem.
Einige andere Sprachen haben kein new
Schlüsselwort (Python, Scala, vielleicht Ceylon) und Leute, die zu diesen Sprachen gewechselt haben, scheinen es nie zu verpassen. Ich weiß, dass ich es nicht weiß.
Tags und Links kotlin