In code at work, we have many uses of magic strings like the following code snippet:
if (user.HasRight("Profile.View")) {...}
So there are many places where we pass a string as a parameter to see if the user has a specific right. I don't like that because that generates a lot of magic strings.
What would be a better way of doing it?
Enum, Constant, class ?
Magic strings are string values that are specified directly within application code that have an impact on the application's behavior.
In that specific case, use an Enum. There will be no magic strings and if the Enum changes (in a way that would break the magic strings solution), the app will no longer compile.
public enum ProfilePermissions
{
View,
Create,
Edit,
Delete
}
Then you can simply have:
if(user.HasRight(ProfilePermissions.View)) { }
You could also use a class, but then you limit yourself when it comes to more complex scenarios. For instance, a simple change of the Enumeration to something like:
public enum ProfilePermissions
{
View = 1,
Create = 2,
Edit = 4,
Delete = 8
}
Would allow you to use bitwise operators for more complex permissions (for example, a situation where a user needs either Create or Delete):
if(user.HasRight(ProfilePermissions.Create | ProfilePermissions.Delete));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With