Microsoft .NET Code Analysis: Use nameof() To Retrieve the Parameter Name

In many of the codebases I review when I join a new project, I often come across code that throws exceptions, like the example below from one of these projects:

public TextSample(string text)
{
    if (text == null)
    {
        throw new ArgumentNullException("text");
    }
    
    Text = text;
}

While this code functions as intended, consider what could occur if someone were to rename the parameter but inadvertently overlook changing the parameter name when throwing the exception. To mitigate this issue, it’s advisable to utilize nameof() instead, as demonstrated in the example below:

throw new ArgumentNullException(nameof(text));

Now, if the parameter name undergoes a change through refactoring, it will automatically update in the line where the exception is thrown. The nameof() expression serves to obtain the name of a variable, type, or member as a string constant. Furthermore, it can be employed to retrieve the name of a type instead of resorting to typeof().Name. Utilizing nameof() offers performance benefits since the name is generated during the build process, rather than at runtime.

This is related to violation IDE0082 & IDE0280 and this is how I have it setup in my .editorConfig:

dotnet_diagnostic.IDE0082.severity = warning
dotnet_diagnostic.IDE0280.severity = warning

Summary

While reviewing the Entity Framework codebase I utilized for this article, I discovered 70 occurrences where the code needs to be fixed.

For further guidance and insights, I highly recommend obtaining a copy of my book, “Rock Your Code: Coding Standards for Microsoft .NET” available on Amazon.com. Additionally, to explore more performance tips for .NET, I encourage you to acquire the 3rd edition of “Rock Your Code: Code & App Performance for Microsoft .NET” also available on Amazon.com.

To analyze your code using the same settings I used in these articles, I encourage you to incorporate my EditorConfig file. It can be found at the following link: https://bit.ly/dotNetDaveEditorConfig. I update this file quarterly, so remember to keep yours up to date as well. I hope you will check out my OSS project Spargine by using this link: https://bit.ly/Spargine.

Please feel free to leave a comment below. I would appreciate hearing your thoughts and feedback.

Pick up any books by David McCarter by going to Amazon.com: http://bit.ly/RockYourCodeBooks

One-Time
Monthly
Yearly

Make a one-time donation

Make a monthly donation

Make a yearly donation

Choose an amount

$5.00
$15.00
$100.00
$5.00
$15.00
$100.00
$5.00
$15.00
$100.00

Or enter a custom amount

$

Your contribution is appreciated.

Your contribution is appreciated.

Your contribution is appreciated.

DonateDonate monthlyDonate yearly

If you liked this article, please buy David a cup of Coffee by going here: https://www.buymeacoffee.com/dotnetdave

© The information in this article is copywritten and cannot be preproduced in any way without express permission from David McCarter.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.