In einem aktuellen Projekt haben wir den Build so eingerichtet, dass wir Java und Scala mischen können. Ich möchte mehr Scala in unserer Codebasis verwenden, um den Code lesbarer und prägnanter zu machen. Lernen Sie dabei auch die Sprache, indem Sie reale Funktionen übergeben.
Daher plane ich, Scala für einige Klassen zu verwenden, um seine Vorteile zu demonstrieren und andere Entwickler davon zu überzeugen, sich auch mit Scala zu befassen.
Für einen rastbasierten Webserver oder ein Programm im Allgemeinen, welche Art von Codestrukturen eignen sich für den funktionalen Programmierstil von Scala.
Antworten:
Ein typisches Beispiel, wenn Sie die Prägnanz des Funktionscodes veranschaulichen möchten, könnte Sammlungen und deren Operationen verwenden. Betrachten Sie beispielsweise eine Klasse
Customer
und eine Methode, die aus einer Kundenliste eine sortierte Liste von Kundennamen erstellt.Hier ist die Java-Implementierung:
Scala-Version:
HINWEIS
Die Prägnanz in Bezug auf Tastenanschläge ist nicht immer ein gutes Maß für die Codequalität und Wartbarkeit.
Außerdem würde ich im Allgemeinen nicht raten, von Java zu Scala zu wechseln, nur weil Scala neuer ist. Wenn die meisten Teammitglieder mit Java besser vertraut sind, ist das Team mit Java viel produktiver als mit Scala (oder einer anderen Programmiersprache, die sie nicht gut kennen).
Ich lerne Scala seit ungefähr zwei Jahren in meiner Freizeit und habe erst kürzlich (nach dem Besuch eines Online-Kurses) das Gefühl, dass ich in Scala produktiver sein kann als in Java. Bevor ich diesen Punkt erreicht habe, hätte ich nicht in Betracht gezogen, Scala für die Produktion zu verwenden.
quelle
Conciseness in terms of keystrokes is not always a good measure of code quality and maintainability
Besonders beim Codieren in Perl.Stream
: Sie können komplexe Breitensuchen zuerst in einem Lösungsraum durchführen, bis Sie auf eine Lösung stoßen (z. B. einen Pfad von einem bestimmten Objekt zu einem anderen mit bestimmten Einschränkungen finden). Ich weiß nicht, ob dies für Sie relevant ist.Für alle, wo immer es möglich ist oder für nichts, verwenden Sie einfach Java. Auf diese Weise funktioniert dies vernünftig. Ich habe solche Experimente vor langer Zeit gemacht, aber in späteren Zeiten schreibst du alles nur aus Gründen der Klarheit in eine oder zwei Sprachen um (um einige Dinge zu behalten, wenn dies nicht in einer anderen Sprache möglich wäre).
Wenn Sie die Klasse in 2 Codezeilen als kürzer deklarieren können, ist dies kein Vorteil. Sie dürfen für diese "Funktion" keine Sprache verwenden. Zum Beispiel können Sie auch schönen Funktionscode in xxx Zeilen schreiben und yyy Zeit verbringen, und vielleicht können Sie ihn gleichzeitig im OOP-Stil in xxx + 150 Zeilen in yyy-2 Stunden Zeit mit Leistungsvorteil schreiben (wer weiß). Was ich sagen möchte ist, dass es nicht möglich ist zu sagen "dieser Teil wird auf Scala besser sein" und "dieser Teil auf Java". In der Entwicklung dürfen Sie keine Features entdecken. Meiner Meinung nach müssen Sie nur ohne Mischen entwickeln und über allgemeine Logik nachdenken, anstatt sie in Sprache X oder Y zu implementieren. Aus diesem Grund müssen Sie meiner Meinung nach aus Gründen der Klarheit und Produktivität die Sprache für das Projekt auswählen für Funktion .
quelle
Ich vermute, das hängt davon ab, wie gut die Programmierer im Team sind und wie sehr sie bereit sind, neue Dinge zu lernen.
Scala ist viel prägnanter und ausdrucksvoller, aber ebenso komplexer. Jeder Programmierer, der die angebotenen Abstraktionen auf hoher Ebene gut nutzen kann, wird es mögen und darin produktiver sein und niemals wieder auf die vereinfachte Java-Ebene zurückkehren wollen. Aber ein Programmierer, der nicht gut in Abstraktionen auf hohem Niveau ist oder einfach nicht lernen will, wird es nie bekommen.
Ich denke auch nicht, dass Sie Fälle verwenden sollten, die speziell auf Scala zugeschnitten sind. Schreiben Sie einfach den Prototyp hinein und Sie werden sehen, ob er produktiver ist oder nicht. Es sollte produktiver sein, wenn alles einen Wechsel wert ist.
Und ich würde die Sprachen definitiv nicht mischen, außer Bibliotheken zu verwenden, die in den anderen geschrieben sind. Starten Sie das Prototyping in Scala, sehen Sie, wie gut es läuft, und wählen Sie das eine oder andere aus.
quelle
Nach meiner (zugegebenermaßen begrenzten) Erfahrung besteht der Anwendungsfall, den ich am häufigsten gesehen habe, darin, ein Gefühl der Überlegenheit und Selbstgefälligkeit gegenüber Ihren Kollegen zu entwickeln, die tatsächlich Dinge versenden, und / oder Ihre Einschränkungen zu verbergen, indem Sie den "Antiquierten und Uneleganten" die Schuld geben. Sprache, die du "gezwungen" hast, anstelle der neuen Schärfe zu verwenden;)
quelle