Un autre développeur nous a suggéré de magasin une sélection des jours de la semaine, 7-chaîne de caractères de 1 et de 0, c'est à dire "1000100" pour le lundi et le vendredi. J'ai préféré (et fortement recommandé) d'une solution avec un Drapeaux enum et les opérations bit à bit, je pense que c'est une façon plus propre de faire cela, et il devrait être plus facile à comprendre pour les autres développeurs.
[Flags()]
public enum Weekdays : int
{
Monday = 1,
Tuesday = 2,
Wednesday = 4,
Thursday = 8,
Friday = 16,
Saturday = 32,
Sunday = 64
}
Cependant, comme j'ai commencé à mettre en œuvre une solution d'exemple, j'ai réalisé que peut-être la simple chaîne de caractères approche était plus facile après tout: Certainement la bit-chaîne est de plus évident que "17" si vous êtes juste en regardant les données. Et je trouve que le C# les opérations bit à bit contre-intuitif et extrêmement détaillé:
Weekdays workDays = Weekdays.Monday | Weekdays.Tuesday;
if ((workDays & Weekdays.Monday) == Weekdays.Monday)
{...}
Bien sûr, cela pourrait être enveloppé bien dans les méthodes d'extension, mais ensuite, nous avons subitement à la fin avec au moins le même nombre de lignes de code comme avec la chaîne-de la solution, et j'ai du mal à argumenter en faveur de la bit-à-bit de code est plus facile à lire.
Cela étant dit, je voudrais aller avec des drapeaux enum et les opérations bit à bit. Les principaux avantages que je peux penser sont
- De meilleures performances
- Moins d'espace nécessaire pour le stockage
Alors, comment puis-je vendre de l'or au niveau du bit solution à mes collègues? Devrais-Je? Quels sont les autres avantages de l'utilisation de cette méthode sur les chaînes? Après avoir terminé l'exemple de projet, j'ai trouvé que l'équipe a encore opté pour la chaîne à la solution. J'ai besoin d'un peu mieux/plus d'arguments. Pourquoi devriez-vous utiliser les Drapeaux des enums, plutôt que de simples bits-chaînes?