samadio / SDM_exam

1 stars 0 forks source link

class AuxiliaryPrintBoard separation #22

Closed samadio closed 4 years ago

samadio commented 4 years ago

https://github.com/samadio/SDM_exam/blob/4f9bd63dbe04b7bfbf40815280e090f44f1912d0/src/main/java/dotsandboxes/io/DotsAndBoxesOutput.java#L105

Questa classe potrebbe essere divisa in due: la prima AuxiliaryPrintBoardClass con tutti i metodi (resi statici) e la seconda Indentation che avrebbe solo il metodo indent (statico anch'esso). Nella pratica, cambierebbe molto poco.

Pro: -Leggibilita' e chiarezza -Trasparenza di mettere in classi diversi metodi che si occupano concettualmente di cose lievemente diverse (i primi metodi si occupano di aiutare a stampare in modo coerente, il metodo indent e' "accessorio" per rendere piu' bello visivamente il risultato)

Con: sembra un po' eccessivo distinguere due classi che alla fine si occupano comunque del Print della Board e di cui una avrebbe un solo metodo

Opinioni?

federico-camerota commented 4 years ago

Ritengo possa aver senso creare una classe separata, metti BoardPrinter, in cui vi sia un metodo printBoard che fa cio che al momento fa il metodo printBoard di OutputManager. In questo modo il manager si occupa veramente solo di gestire l'output e la stampa vera e propria la fa BoardPrinter. In questo modo lasciare indent in BoardPrinter non mi sembrerebbe sbagliato, tutti i metodi diventerebbero privati tranne printBoard e non mi sembrerebbe sbagliato lasciare indent in tale classe.

federico-camerota commented 4 years ago

https://github.com/samadio/SDM_exam/blob/457135b876d7a5d53eefede59b428b6db4f6eceb/src/main/java/dotsandboxes/io/DotsAndBoxesOutput.java#L86

Vedi nel mio branch la mia proposta di refactoring.

federico-camerota commented 4 years ago

https://github.com/samadio/SDM_exam/blob/ecbad11cb66fe8b6ef1556331f810c2e43f3b0b3/src/main/java/dotsandboxes/io/DotsAndBoxesOutput.java#L86

Ho aggiunto un'ulteriore livello di separazione tra conversione della board a stringa e stampa della rapresentazione della board