Home Digital WorldFormazione Oncode University: la formazione in stream…ing

Oncode University: la formazione in stream…ing

by Psydis
Oncode University

Seguendo il trend giornalistico, un bel titolo clickbait pubblicizza l’improbabile Oncode University, progettino settimanale in Java per continuare in maniera progressiva la formazione del mio stage ormai vicino al termine. In effetti l’avevo anticipato settimana scorsa. Quello che non avrei mai pensato è che ne venisse fuori un bel progettino complesso ricco di insidie e problemi dovendolo strutturare senza un database d’appoggio.

Fattore persistenza

Finora mi sono sempre appoggiato ad Hibernate per accedere ai dati che mi occorrevano. Non mi sono mai premurato di creare classi che dovessero contenere virtualmente molte informazioni per poter rimanere in memoria senza una persistenza fisica, anche fosse su file. Qui dallo staff, ai docenti, ricercatori, studenti, corsi, lezioni … tutto andava strutturato in maniera coerente per poter passare parametri da una classe all’altra senza inutili e pesanti doppioni nelle proprietà. La ridondanza delle stesse porterebbe infatti ad un’inutile saturazione della memoria e ad un sistema davvero poco performante.

UML

Il grafico UML di Oncode University  questa volta, seppur abbastanza complesso, sono riuscito a strutturalo nella versione base in tempi ragionevoli, probabilmente anche perchè conoscendo un po’ il mondo universitario, la logica era molto più diretta nella mia testa. In realtà una volta riportato nel codice ho dovuto aggiungere due classi intermedie, infatti una volta scritto l’appello con gli esami parziali nel libretto, non avevo modo di segnare i voti parziali. Di contro non potevo lasciare i voti dell’appello nella sua classe, altrimenti tuti avrebbero avuto gli stessi voti.

JUnit Test

Il coverage dei test questa volta è stato più minuzioso e preciso, cercando di percorrere tutti i rami possibili per limitare al minimo i bug, fino a controllare anche i voti minimi o i CFU necessari alla laurea breve o specialistica tramite una classe Util apposita con tutte le costanti hardcoded.

GitLab

Per la prima volta abbiamo cominciato anche a lavorare in maniera più professionale con GitLab, utilizzando la strategia di merge dei branch per scambiarci le versioni riviste e corrette. Finora non mi era molto chiara la potenzialità di tale metodo, ma risulta davvero essere vincente anche nel piccolo per mantere versioni e progressi dei progetti salvati e pronti per ogni evenienza.

Class Diagram

Occasione comunque ghiotta per provare IntelliJ Ultimate e tutte le sue features aggiunte, principalmente in questo caso il Class Diagram UML automatico delle classi scritte, con le relativa relazioni. Sono curioso di provarlo a questo punto anche con Spring Boot, considerando che la versione Community non lo supporta se non solo a livello Maven.

Classe Stream

E come da titolo, Oncode University: la formazione in stream…ing, veniamo alla parte più interessante della settimana: l’utilizzo della classe Stream in Java 11 per lavorare meglio con le List del mio progetto. Lo Stream Java (java.util.Stream) rappresenta una sequenza di elementi sui cui eseguire operazioni intermedie o terminali in serie o in parallelo. Le terminali generano un risultato di un determinato tipo mentre le intermedie un nuovo Stream su cui invocare altre operazioni dando vita ad una catena di chiamate a metodi. Qui Alessandro Rossignoli mi ha aperto un modo nuovo, facendo ridurre il codice e semplificando notevolmente la leggibilità dello stesso. La possibilità di eseguire operazioni con lamda in maniera ricorsiva senza aggiunte di get o strani equals comprime nettamente il codice , ma contestualmente tiene nel contempo sotto controllo l’esistenza di un risultato e la gestione della sua mancanza soltanto con un pezzo di chain aggiunta alla fine.

Cooming soon …

Ieri ho definitivamente preso in mano il progettino sui PLC, ma siccome potrebbe essere una cosa più “croccante” ed è ancora in fase embrionale, mi prenderò il tempo per annotare i dettagli quando tutto sarà più concreto. Sicuramente si tornerà alle Web API e Spring, anche se ancora non è chiaro quale sarà l’input e output dei dati …

0 comment
0

You may also like

Leave a Comment


The reCAPTCHA verification period has expired. Please reload the page.