Spesso uso l'utility Booster strong typedef per migliorare la sicurezza dei miei programmi. Per esempio, scrivendo codice come questo:Utilizzo di typedef forte come alternativa più leggera alla libreria Boost Parameter?
BOOST_STRONG_TYPEDEF(int, X)
BOOST_STRONG_TYPEDEF(int, Y)
BOOST_STRONG_TYPEDEF(int, Width)
BOOST_STRONG_TYPEDEF(int, Height)
struct Rect {
Rect(X x, Y y, Width w, Height h);
};
// Usage:
Rect rect(X(10), Y(20), Width(800), Height(600));
La forte typedef qui migliora sia la leggibilità del codice e la sicurezza. (Il compilatore segnala un errore se gli argomenti sono forniti in ordine errato, che non sarebbe stato il caso se gli argomenti erano tutti int
.)
Le mie domande sono:
- è ok per utilizzare BOOST_STRONG_TYPEDEF per questo scopo? (La documentazione è very brief.)
- Ci sono motivi importanti per preferire la libreria dei parametri boost invece?
dipende da cosa intendi per "ok", si compila e viene eseguito presumo, quindi cosa c'è di sbagliato in questo. Vedo la tua logica dietro a questo, ma mi sembra 'sbagliato'. C'è un motivo per cui puoi nominare varaibles e paramaters, quindi avere qualcuno espressamente lanciato lì 'int' su un' Width' solo per passarlo per impostare il parametro 'width' sembra sbagliato. Anche se potrebbe essere utile avere 'set (larghezza w);' ecc. Con solo 'int' non puoi farlo.Il parametro boost – thecoshman
è per argomenti denominati (e anche facoltativi), mentre BOOST_STRONG_TYPEDEF * creerà un nuovo tipo "nome" che sarà sostituibile per il tipo originale ma ancora di tipo distinto *. – Gigi