lunedì 15 agosto 2011

Come Scala ha cambiato il mio modo di pensare al mio codice Java


Alcune persone sostengono la loro lingua preferita come unica via verso l'illuminazione e la produttività in modo aumenta la gamma di percentuali a due cifre rispetto a un'altra lingua nella stessa categoria. Io non ci credo. (E 'probabilmente vero quando si confrontano le cose come Java e Assembler, ma pochi lo fanno così)
Ce ne sono altri che indicano la lingua non ha importanza, almeno non tra linguaggi come Scala e Java. Penso che si sbagliano pure. Il motivo è: Anche se in realtà non uso Scala durante il mio lavoro di giorno lo fa sulla mia codifica Java. Ecco alcune delle cose che ho notato.
  • Apprezzo immutabilità. Ero a conoscenza da tempo dei benefici di immutabilità. Ma in Java utilizzando le strutture di dati immutabili è così goffo che ho usato solo questo approccio in piccole aree, come gli oggetti di valore piuttosto semplice. Ma ora ho trovato la mia auto più spesso tentati di utilizzare una struttura immutabile dati anche per le cose relativamente complesso.
  • Un sacco di piccole classi. Le classi a Scala sono di piccole dimensioni incredibili. E 'facile scrivere una pagina di codice con una mezza dozzina di classi in esso se si conta la' classe ',' oggetto 'e' tratto 'parole chiave e ancora di più quando si guarda a ciò che il compilatore crea Scala dalle chiusure e simili. Anche se la creazione di una classe è un lavoro molto più in Java mi ritrovo a pensare molto rigoroso sul principio di responsabilità singola, con conseguente più classi più piccole, che sono più facili da testare.
  • Pensare più in DSL. Scala è grande per la creazione di DSL interno. Un sacco di librerie di utilizzare questo approccio per la progettazione di loro API e lo faccio nei miei progetti poco pure. Java è abbastanza inutile per la DSL. Ma ci sono cose che puoi fare. Anche se si tratta di cose semplici come metodo di concatenamento. Io uso che molto ultimamente, soprattutto quando il test è interessato, perché qui leggibilità del codice è ancora più importante poi con codice normale.
  • Ho praticamente rinunciato Generics Java. Dopo aver visto ciò che è possibile con un sistema di buon tipo, anche quando il codice compilato viene eseguito sul JVM stessa come Java, mi ha fatto vedere anche le gravi limitazioni sui generics di Java. Prima che mi tendeva a pensare proprio a me solo chi è stupido. Anche se questa assunzione è spesso vero. Molte cose ho cercato di fare in passato con i Generics Java semplicemente non può funzionare, perché Java manca la potenza necessaria (ad esempio, covarianza e controvarianza). Così ho goccia generici da mio codice appena più di un parametro di tipo viene coinvolto.
Quindi, andare avanti e imparare una nuova lingua. Anche se non è possibile utilizzare nel vostro lavoro normale. Hai ancora impareranno cose utili. Ma attenzione. Potrei anche farti odiare parti del tuo lavoro di giorno:
Davvero, davvero odio virgola, primitive, gli array e API collezione senza funzioni di ordine superiore. E la commutazione ad Archi è uno scherzo.


Nessun commento:

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.