Monthly Archives: March 2012

C# Extension Methods for Clean Coding

I create a nice and easy extension method to make your if statements read nicely.

namespace ExtensionMethods
{
    public static class StringExtensions
    {
        public static bool IsNullOrEmpty(this string input)
        {
            return string.IsNullOrEmpty(input);
        }

        public static bool IsNotNullOrEmpty(this string input)
        {
            return !string.IsNullOrEmpty(input);
        }
    }
}

And below are the unit tests

[TestClass]
    public class StringExtensionIsNullOrEmpty
    {
        [TestMethod]
        public void WillReturnTrueIfTheStringIsNull()
        {
            string input = null;
            var expected = true;

            var result = input.IsNullOrEmpty();

            Assert.AreEqual(expected, result);
        }

        [TestMethod]
        public void WillReturnTrueIfTheStringIsEmpty()
        {
            var input = "";
            var expected = true;

            var result = input.IsNullOrEmpty();

            Assert.AreEqual(expected, result);
        }

        [TestMethod]
        public void WillReturnFalseIfTheStringIsNotEmpty()
        {
            var input = "test";
            var expected = false;

            var result = input.IsNullOrEmpty();

            Assert.AreEqual(expected, result);
        }
    }
[TestClass]
    public class StringExtensionIsNotNullOrEmpty
    {
        [TestMethod]
        public void WillReturnFalseIfTheStringIsNull()
        {
            string input = null;
            var expected = false;

            var result = input.IsNotNullOrEmpty();

            Assert.AreEqual(expected, result);
        }

        [TestMethod]
        public void WillReturnFalseIfTheStringIsEmpty()
        {
            var input = "";
            var expected = false;

            var result = input.IsNotNullOrEmpty();

            Assert.AreEqual(expected, result);
        }

        [TestMethod]
        public void WillReturnTrueIfTheStringIsNotEmpty()
        {
            var input = "test";
            var expected = true;

            var result = input.IsNotNullOrEmpty();

            Assert.AreEqual(expected, result);
        }
    }

And the final usage looks great and reads fluid.

//usuage
            if (input.IsNullOrEmpty())
                doSomethingWithAnEmptyOrNullInput();
            else
                doSomethingWithValidInput();