Eheh :)

Pero', ripensandoci... analizzando bene la situazione la violazione del
contratto compareTo / equals e' sicuramente grave ma a mio parere ancora di
piu' il fatto che stavo infilando della logica di presentazione in un
oggetto di business. Un accoppiamento fra presentazione e dominio e' una
delle cose piu stupide che puoi fare se vuoi avere un buon design.

Introduce infatti certamente tre su quattro dei sintomi di un design
sbagliato:

   - *fragilita': a fronte di un cambiamento il sistema si rompe in posti
   inaspettati* (i..e. cambio giustamente la compareTo perche' la peer
   review di Simon mostra che ho fatto una minchiata col contratto ma le
   console cominciano a visualizzare informazioni a muzzo)
   - *rigidita': a fronte di un cambiamento devo cambiare il sistema in
   posti multipli * (i.e. cambio giustamente la compareTo ma poi devo
   cambiare la console UI e poi la Web UI che pero' poi mi richiede di
   cambiare le API che mi richiedono di cambiare la logica di composizione,
   sul server ma anche sul thin client, ecc.ecc.)
   - *viscosita': a fronte di un cambiamento sara' piu' facile mettere un
   hack che mettere in piedi il design corretto* (i.e. cambio giustamente
   la compareTo ma poi faccio piu' in fretta sbattere qua' e la' sort() a
   muzzo invece di mettere la logica nel posto giusto).

Qui trovate il paper originale di Zio Bob sull'argomento se vi interessa,
la trovo sempre molto attuale:
https://fi.ort.edu.uy/innovaportal/file/2032/1/design_principles.pdf
Disponibile per un talk se serve :) ma devo organizzare il viaggio
dall'ESTERO!!! (sempre se ci rimangano gli aerei qui in UK)

+coesione e -coupling per tutti!!!
Ciao,

    Bruno

p.s.
Intenzionalmente non ho divagato sul quarto principio cosi magari chi non
li conosce ha la spinta di curiosita' per leggersi il paper :)

On Wed, 27 Mar 2019 at 16:53, Angelo Marlo [email protected]
[it-torino-java-jug] <[email protected]> wrote:

>
>
> Ciao,
> questi errori in genere si fanno quando si lavora TROPPO all'estero ;-)
>
> Saluti
>
> Il giorno lun 25 mar 2019 alle ore 17:30 bruno bossola [email protected]
> [it-torino-java-jug] <[email protected]> ha scritto:
>
>>
>>
>> Hai implementato `compareTo() == 0` diversamente da `equals()`?
>>
>>
>>> Ovviamwnte si, contratto violato... ero cosi' preso da fare le cose
>> belle ordinate a video che mi sono perso le basi! L'ho detto, mi sembra,
>> che e' stato  il momento dumb della settimana :)
>>
>> Ciao,
>>
>>     Bruno
>>
>> 
>

Reply via email to