Riguardo l'organizzazione delle funzioni di utilità di spostamento bit in C ++

4

Sto sviluppando un progetto in C ++ che si occupa della conversione di una rappresentazione di stringa esadecimale ASCII in binario. La classe contiene anche delle utilità per estrarre informazioni dalla stringa.

In questo momento il mio progetto contiene ASCIIUtil.hpp / cpp e Parser.hpp / cpp e sembra che funzioni correttamente. Tuttavia, mi sento come se una classe fosse eccessiva in questa situazione poiché non ho davvero bisogno di un'istanza specifica di ASCIIUtil o Parser, ma piuttosto di accedere ai metodi in quelle classi.

Dovrei:

1) Lascia il codice così com'è?

2) Lascia il codice come è ma rendi statici tutti i metodi?

3) Eliminare del tutto le classi e inserire tutto in un namespace?

4) Qualcos'altro? ...

Mi sento come se la risposta fosse la # 3 dato che potrei conservare i file che ho attualmente, ma rimuovere la sintassi della classe e avvolgerli entrambi in uno spazio dei nomi. Sembra che sarebbe più sensato, ma ho anche alcuni metodi di helper privati che in realtà non voglio essere accessibile agli utenti in futuro.

Grazie in anticipo!

    
posta Petyr Panos 13.07.2016 - 19:31
fonte

1 risposta

3

Non vedo dove sia coinvolto un oggetto concettuale nell'esecuzione di conversioni da stringa a binario. Questo è un processo e l'utilizzo di un oggetto non ha senso nel caso generale.

Detto questo, ci sono motivi per avvolgere un processo in un oggetto. Ma questi hanno principalmente a che fare con stato . Ad esempio, se più esecuzioni del processo aggiorneranno alcuni stati condivisi, forse per accelerare le esecuzioni successive. Oppure, se hai bisogno di costruire e gestire tabelle di stato grandi (dell'ordine di 100 + KB), potresti volere che un oggetto permetta all'utente di gestire l'esistenza di tale stato.

Per la conversione di stringhe, la cosa più vicina a tale stato che potresti avere è una tabella di mappatura da caratteri a cifre esadecimali. E quanto sarebbe grande? Al massimo 32 byte?

Quindi mi sembra che sia meglio farlo come una funzione con scope dei nomi, non un qualche tipo di oggetto.

    
risposta data 13.07.2016 - 21:04
fonte

Leggi altre domande sui tag