La mia piattaforma principale (WinAPI) utilizza ancora pesantemente bit per gli stili di controllo ecc. ( esempio ).
Quando introduco i controlli personalizzati, mi chiedo in modo permanente se seguire lo stile o piuttosto usare i singoli bool. Diamoci l'uno contro l'altro:
enum EMyCtrlStyles
{
mcsUseFileIcon = 1,
mcsTruncateFileName = 2,
mcsUseShellContextMenu = 4,
};
void SetStyle(DWORD mcsStyle);
void ModifyStyle(DWORD mcsRemove, DWORD mcsAdd);
DWORD GetStyle() const;
...
ctrl.SetStyle(mcsUseFileIcon | mcsUseShellContextMenu);
vs.
CMyCtrl & SetUseFileIcon(bool enable = true);
bool GetUseFileIcon() const;
CMyCtrl & SetTruncteFileName(bool enable = true);
bool GetTruncteFileName() const;
CMyCtrl & SetUseShellContextMenu(bool enable = true);
bool GetUseShellContextMenu() const;
ctrl.SetUseFileIcon().SetUseShellContextMenu();
Come la vedo io,
Bit stile Pro
- Coerente con la piattaforma
- meno codice della libreria (senza aumentare la complessità), meno posti da modificare per aggiungere un nuovo stile
- codice del chiamante in meno (senza perdere notevole leggibilità)
- più facile da usare in alcuni scenari (ad esempio, ricordare / trasferire impostazioni)
- L'API binaria rimane stabile se vengono introdotti nuovi bit di stile
Ora, il primo e l'ultimo sono minori nella maggior parte dei casi.
Pro singoli booleani
- Gli strumenti di Intellisense e di refactoring riducono lo sforzo "less typing"
- Entità per singolo scopo
- codice più alfabetico (come in "scorre più come una frase")
- Nessuna modifica di paradim per le proprietà non bool
Questi sembrano più moderni, ma anche vantaggi "morbidi". Devo ammettere che la "coerenza della piattaforma" è molto più allettante di quanto potrei giustificare, meno codice può perdere un sacco di qualità è un bel bonus.
1. Cosa preferisci? Soggettivamente, per scrivere la biblioteca, o per scrivere il codice cliente?
2. Qualche (semi) obiettività, studi, ecc.?