Reshaper Live Templates for validating arguments

I strongly agree with the ‘contract‘ mataphor in API design, hence my interest in Spec# (that I’ve blogged about before).

To assist in this and to eliminate the tedium of writing argument checks, I’ve created 3 Resharper Live Templates. These check for

These templates are called arg, argnull and argempty respectively.

Resharper 1.5 doesn’t allow importing or exporting of Live Templates from the GUI. They are however stored in an XML file at %userprofile%Application DataJetBrainsReSharperUserSettings.xml. Below is a chunk of XML that must be placed under the TemplateManagerTemplates node. If you have any others, please let me know!

<Template text=”if( TYPETYPEEXPRESSIONEXPRESSION )&#xA; throw new ArgumentException( @&quot;Cannot ACTIONACTION as the value passed was invalid. Please provide a valid value.&quot;, @&quot;TYPETYPE&quot; ) ;&#xA;” shortcut=”arg” description=”Throws an ArgumentException” kind=”livetemplate” reformat=”false” fileMask=”” context=”Everywhere” fileContext=”CSharp” enabled=”False” id=”1723695683″>

<Variables>

<Variable name=”TYPE” expression=”variableOfType(&quot;System.Object&quot;)” initialRange=”0″ />

<Variable name=”EXPRESSION” expression=”constant(&quot; != 1&quot;)” initialRange=”0″ />

<Variable name=”ACTION” expression=”constant(&quot;PERFORM AN ACTION&quot;)” initialRange=”0″ />

</Variables>

</Template>

<Template text=”if( TYPETYPE == null || TYPETYPE.Length == 0 )&#xA;throw new ArgumentNullException( @&quot;TYPETYPE&quot;, @&quot;Cannot ACTIONACTION as the value passed was null or empty. Please provide a valid non null value.&quot; ) ;&#xA;” shortcut=”argempty” description=”Throws an ArgumentNullException when a string is null or empty” kind=”livetemplate” reformat=”true” fileMask=”” context=”Everywhere” fileContext=”CSharp” enabled=”False” id=”1705884294″>

<Variables>

<Variable name=”TYPE” expression=”variableOfType(&quot;System.String&quot;)” initialRange=”0″ />

<Variable name=”ACTION” expression=”constant(&quot;PERFORM AN ACTION&quot;)” initialRange=”0″ />

</Variables>

</Template>

<Template text=”if( TYPETYPE == null )&#xA;throw new ArgumentNullException( @&quot;TYPETYPE&quot;, @&quot;Cannot ACTIONACTION as the value passed was null. Please provide a valid non-null value.&quot; ) ;&#xA;” shortcut=”argnull” description=”Throws an ArgumentNullException” kind=”livetemplate” reformat=”true” fileMask=”” context=”Everywhere” fileContext=”CSharp” enabled=”False” id=”1497171628″>

<Variables>

<Variable name=”TYPE” expression=”variableOfType(&quot;System.Object&quot;)” initialRange=”0″ />

<Variable name=”ACTION” expression=”constant(&quot;PERFORM AN ACTION&quot;)” initialRange=”0″ />

</Variables>

</Template>

🙏🙏🙏

Since you've made it this far, sharing this article on your favorite social media network would be highly appreciated 💖! For feedback, please ping me on Twitter.

Leave a comment

Comments posted here will go into a moderation queue and the owner of the site will be notified via Slack. Once approved, it will be pulled into the content and the site will be regenerated and deployed.

Read about how this works.

Published