Qual è un buon caso d'uso per scala? [chiuso]

8

In un progetto corrente abbiamo impostato la build in modo da poter mixare Java e Scala. Mi piacerebbe usare più Scala nel nostro codice per rendere il codice più leggibile e conciso. Nel processo imparate anche la lingua passando le funzioni reali.

Quindi ho intenzione di usare Scala per alcune classi per mostrare i suoi benefici e convincere altri sviluppatori a cercare di usare anche Scala.

Per un server web basato sul riposo o un programma in generale, quale tipo di strutture del codice si prestano allo stile di programmazione funzionale di Scala.

    
posta Usman Ismail 14.11.2012 - 06:52
fonte

4 risposte

4

Un esempio tipico se si desidera illustrare la concisione del codice funzionale potrebbe utilizzare le raccolte e le relative operazioni. Per esempio. considera una classe Customer e un metodo che crea un elenco ordinato di nomi di clienti da un elenco di clienti.

Ecco l'implementazione Java:

class Customer
{
    String name;

    ... // Other attributes.
}

List<String> sortedCustomerNames(List<Customer> customers)
{
    List<String> names = new ArrayList<String>();

    for (Customer customer : customers)
        names.add(customer.name);

    Collections.sort(names);

    return names;
}

Versione Scala:

class Customer(val name: String, /* ... other attributes */)

def sortedCustomerNames(customers: List[Customer]): List[String] =
  customers.map(c => c.name).sorted

Nota

La concisione in termini di sequenze di tasti non è sempre una buona misura della qualità del codice e della manutenibilità.

Inoltre, in generale, non consiglierei di passare da Java a Scala solo perché Scala è più recente. Se la maggior parte dei membri del team ha più familiarità con Java, il team sarà molto più produttivo con Java rispetto a Scala (o qualsiasi altro linguaggio di programmazione che non conoscono bene).

Ho imparato Scala nel mio tempo libero da circa due anni, e solo di recente (dopo aver frequentato un corso online) ho avuto la sensazione di poter essere più produttivo in Scala di quanto lo sia io in Java. Prima di raggiungere questo punto, non avrei considerato l'utilizzo di Scala per la produzione.

    
risposta data 14.11.2012 - 11:45
fonte
3

Per tutti, ovunque sia possibile o per niente, basta usare Java. In questo modo ciò funzionerà correttamente. Stavo facendo questi esperimenti molto tempo fa, ma in tempi successivi si riscrive tutto in uno o due (per mantenere alcune cose se non si può fare in un'altra lingua) lingue solo per chiarezza.

Se puoi dichiarare la classe più breve in 2 righe di codice, non è un vantaggio che tu non debba usare la lingua per questa "caratteristica". Ad esempio, puoi anche scrivere codice funzionale bello in xxx lines e spendere il tempo e forse nello stesso tempo puoi scriverlo in stile OOP in xxx + 150 righe in yyy-2hours con prestazioni perfomance (chissà). Quello che voglio dire è che non è possibile dire "questa parte sarà migliore su Scala" e "questa parte su Java". In fase di sviluppo non devi scoprire caratteristiche, secondo me, devi solo sviluppare senza mescolare e pensare alla logica generale anziché all'implementazione in linguaggio X o Y ecco perché, a mio parere, per chiarezza e produttività devi scegliere la lingua per progetto invece che per funzionalità .

    
risposta data 14.11.2012 - 08:31
fonte
2

Sospetto che si tratti di quanto siano bravi i programmatori del team e quanto siano disposti a imparare cose nuove.

Scala è molto più conciso ed espressivo, ma ugualmente più complesso. Qualsiasi programmatore che possa fare un buon uso delle astrazioni di alto livello che offre potrà piacergli ed essere più produttivo al suo interno e non vorrà mai tornare al livello semplificato di Java. Ma un programmatore che non è abile nelle astrazioni di alto livello o semplicemente non vuole imparare non lo capirà mai.

Inoltre, non penso che dovresti usare qualche caso su misura per Scala. Inizia a scrivere il prototipo e vedrai se è più produttivo o meno. Dovrebbe essere più produttivo per tutto che valga la pena cambiare.

E sicuramente non mescolerei le lingue ad eccezione di usare le librerie scritte nell'altra. Inizia la prototipazione in Scala, guarda come va e scegli l'una o l'altra.

    
risposta data 14.11.2012 - 15:27
fonte
-2

Nella mia esperienza (dichiaratamente limitata), il caso d'uso che ho visto di più è usarlo per ottenere un senso di superiorità e compiacimento nei confronti dei tuoi colleghi che spediscono effettivamente le cose e / o nascondere i tuoi limiti incolpando il "antiquato" e inelegante "linguaggio che sei" costretto "a usare al posto del nuovo hotness;)

    
risposta data 14.11.2012 - 08:42
fonte

Leggi altre domande sui tag