Closed samadio closed 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.
Vedi nel mio branch la mia proposta di refactoring.
Ho aggiunto un'ulteriore livello di separazione tra conversione della board a stringa e stampa della rapresentazione della board
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?