Mi trovo costantemente a creare flag all'interno del mio programma C ++, che vengono successivamente controllati per determinare se devo fare qualcosa, e onestamente mi sento un po '"hack-y" nonostante sia una soluzione semplice.
Ad esempio, supponiamo che abbia una funzione:
update_employee_salary(EmployeeList employees_to_update )
update_employee_salary
:
- Si collega al database
- Iterato attraverso tutti i dipendenti in EmployeeList e ottiene il loro stato (retribuito o orario) e crea due distinti elenchi dei dipendenti (hourly_emp, salary_emp)
- Aggiorna il mio employee_data nella cache
- Scrive i dati dei dipendenti nel database
Se il dipendente è un dirigente, voglio generare avvisi / registri che gli stipendi Executive sono stati aggiornati.
Voglio anche assicurarmi che, se per qualche motivo, dopo aver letto dal database, non sono in grado di scrivere sul database, che eseguo il backup di tutto. Per questo motivo, non voglio generare la notifica fino a quando non garantisco che è stata scritta nel database, quindi creerò un flag bool elist_contains_execs che viene controllato dopo che il database è stato aggiornato per generare la notifica.
Mi trovo a fare cose del genere per situazioni di ogni genere, e mi sento disgustato ogni volta che lo faccio, ma spesso mi sembra meglio che iterare attraverso l'elenco una seconda volta per determinare se contiene dirigenti dopo l'aggiornamento del database.
Domanda: l'uso di flag in C ++ si sente hacky a qualcun altro? Oppure accettiamo semplicemente che è spesso una soluzione semplice. Quali sono gli aspetti negativi dell'uso delle bandiere. Ad esempio, può rendere il codice più difficile da mantenere.