Quindi ho un programma il cui scopo è prendere i file di testo e analizzarli in un formato binario che un sistema integrato comprende. Tuttavia, il formato di testo che ho ereditato che devo analizzare è sufficientemente complesso che dopo aver refactoring la routine parse
principale mi rimane una classe con più di 50 metodi che quasi tutti assomigliano a parseChannel
, parseWCommand
, parseVCommand
, parsePCommand
, parseLoop
, parseHex
, parseInt
, ecc. ecc.
Inutile dire che la classe, dalla sua dichiarazione, sembra enorme e scoraggiante.
Tuttavia, i metodi per interfacciarsi con la classe sono estremamente semplici, solo parse
(compila il testo, calcola le dimensioni compilate) e link
(correggi i puntatori una volta che la posizione in memoria è nota, restituisci la finalizzazione dati binari non elaborati). In realtà, per l'utente la classe non ha praticamente nessun'altra ragione per l'esistenza oltre a quelle due funzioni, ma nella dichiarazione di classe c'è così tanta roba apparentemente inutile che è difficile persino vedere che cosa dovrebbe fare. C'è una situazione simile in corso con il numero piuttosto grande di membri dei dati che, ancora una volta, sono inutili a tutto tranne i metodi interni della classe che hanno bisogno di loro di parlarsi, anche se non so se questo è un problema.
Ho preso in considerazione l'idea di creare una classe separata esclusivamente per l'analisi utilizzata nel metodo parse
, ma mi sembra strano creare una classe completamente separata che viene utilizzata solo in un singolo metodo in una singola classe. Sembra un po '... superfluo, immagino? E non so nemmeno se questo sta attaccando il problema giusto.
Credo che alla fine, ecco cosa sto chiedendo:
- Questa classe apparentemente enorme è effettivamente un problema? Non penso che sia rigorosamente un "oggetto dio", ma appare superficialmente come uno.
- Se si tratta di un problema, quali sono i metodi migliori per risolverlo?