<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-774153985827709461</id><updated>2012-02-16T15:31:11.136+06:00</updated><title type='text'>Tiemoon on software craftsmanship</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ztiemoon.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774153985827709461/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ztiemoon.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tiemoon</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-774153985827709461.post-582392152735642575</id><published>2010-02-22T22:44:00.000+06:00</published><updated>2010-02-22T22:44:33.595+06:00</updated><title type='text'>TDD (Test Driven Development) and ATDD (Acceptance Test Driven Development)</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 11px;"&gt;&lt;h3 class="UIIntentionalStory_Message" data-ft="{&amp;quot;type&amp;quot;:&amp;quot;msg&amp;quot;}" style="color: #333333; font-size: 13px; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; overflow-x: hidden; overflow-y: hidden; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="UIStory_Message"&gt;On 14th-Feb-2010, I have presented a technical session on TDD @ &lt;a href="http://www.basis.org.bd/"&gt;BASIS &lt;/a&gt;SoftExpo 2010. To get the presentation file and video tutorial you can go to the following links.&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;span class="UIStory_Message"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="UIStory_Message"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;a href="http://www.slideshare.net/tiemoon/overview-on-tdd-test-driven-development-atdd-acceptance-test-driven-development"&gt;Presentation file.&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;a href="http://www.viddler.com/explore/tiemoon/videos/1/"&gt;Video tutorial on 'Create a simple calculator in TDD approach&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;a href="http://www.viddler.com/explore/tiemoon/videos/2/"&gt;Video tutorial on 'Pet shop in TDD approach (part1)&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;a href="http://www.viddler.com/explore/tiemoon/videos/4/"&gt;Video tutorial on 'Pet shop in TDD approach (part2)&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;a href="http://www.viddler.com/explore/tiemoon/videos/5/"&gt;Video tutorial on 'Calculator in ATDD approach&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774153985827709461-582392152735642575?l=ztiemoon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ztiemoon.blogspot.com/feeds/582392152735642575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ztiemoon.blogspot.com/2010/02/tdd-test-driven-development-and-atdd.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774153985827709461/posts/default/582392152735642575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774153985827709461/posts/default/582392152735642575'/><link rel='alternate' type='text/html' href='http://ztiemoon.blogspot.com/2010/02/tdd-test-driven-development-and-atdd.html' title='TDD (Test Driven Development) and ATDD (Acceptance Test Driven Development)'/><author><name>Tiemoon</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774153985827709461.post-3768004434760462233</id><published>2009-10-07T18:11:00.001+07:00</published><updated>2009-10-07T19:33:18.994+07:00</updated><title type='text'>Introducing Object Oriented Concept</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;div style="text-align: left;"&gt;In this section you will learn about ‘How to think in Object Oriented way’.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Objectives&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;After completing this unit you should be able to:&lt;br /&gt;* Think the real world in object oriented way&lt;br /&gt;* Understand what really object and class means&lt;br /&gt;* Describe what are attributes and responsibilities of an object.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Topics&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In this unit, you will learn about the following topics:&lt;br /&gt;* What’s wrong with starting of Object Oriented Programming&lt;br /&gt;* Philosophy of OOP&lt;br /&gt;* Mapping Object Oriented Thoughts to Object Oriented Programming&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;What’s wrong with starting of Object Oriented Programming&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Unfortunately most of the people start Object Oriented Programming (OOP) jumping into a language book like C++, Java or C# etc. But it’s not a good start at all. Staring with OOP language book, you may learn writing package/namespace, class, object, interface, etc. But writing class, interface, object etc. does not guarantee good software design. OOP is totally useless if you can’t use this concept for good software design. So, what should to know first? What should you know before starting with an OOP book?&lt;br /&gt;&lt;br /&gt;First of all you should know: what’s an object and how to think in OO (Object Oriented) way.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Philosophy of OOP&lt;/b&gt;&lt;br /&gt;Yes, Starting of Object Oriented Programming is of course the concept of object.&lt;br /&gt;And this concept is really simple. Ok, I am starting to speak about it. Before starting, I am requesting you to forget everything about programming, database design, software design i.e. all kinds of software engineering and programming language details for some couple of minutes (not forever!!).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Everything can be an object &lt;/b&gt;&lt;br /&gt;Look around you, what you see ALL ARE OBJECTS. You may see computer, chair, table, pen, air cooler, carpet etc, all these are objects. Why they are object? Pretty simple, they have some related attributes and some related activities. How? Ok, just think about computer, it has processor, RAM, hard drive, keyboard, mouse, etc. all these things are the attributes of computer. Now, what’re the activities of a computer? It has a lot: it runs antivirus program, displays information, accepts your requests and executes these properly. All these are the activities of computer. So, computer is an object. Same way you will get the attributes and activities of chair, table, etc. So, to be an object, something should have attributes and/or should have activities. Finally, from the above discussion, we can draw a conclusion: &lt;br /&gt;&lt;br /&gt;Everything can be an object.&lt;br /&gt;&lt;br /&gt;How it is possible? Is it possible that any event, like war or raining, singing, thinking etc (which is not visible) can be object? The answer is YES. These can be objects also. Think, raining has attributes: is it drizzling or “cats and dogs”? Singing can be an object if you consider, in which frequency-range it is sung?&lt;br /&gt;&lt;br /&gt;‘Name’ – is it an attribute or an object? Its totally depends on problem domain. See, if you thinking about a banking solution then customer ‘Name’ will be an attribute of customer. But if it a business from where you can purchase the ‘Name’ of your new-born baby then ‘Name’ will be an object to this business. Because ‘Name’ has meaning, length, etc.&lt;br /&gt;&lt;br /&gt;Note: In some OOP books, authors may use data instead attribute and responsibility (I personally think its better term) instead of activity.&lt;br /&gt;&lt;br /&gt;Object’s data and responsibility depend on problem domain&lt;br /&gt;If I tell you and your friend to find out the data and activity of customer object, suppose, you get customer with name, email, phone attributes and purchase, bargain activities. At the same time your friend may get customer with first name, middle name, last name, gender, credit card attributes and open account activity.&lt;br /&gt;&lt;br /&gt;Why it happens? It happens because you and your friend were on different platform with different point of view. You think about the customer of a grocery store whereas your friend thinks about the customer of a bank. But you both are right. Nothing goes wrong with it.&lt;br /&gt;&lt;br /&gt;So, object and its data, its responsibility totally depends on problem domain.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is class?&lt;/b&gt;&lt;br /&gt;Class is the blue print of object. Suppose, I say Johnny, Mary and Russell are students. Here, Johnny, Mary and Russell are objects and Student is the class. More specifically, Student is the class with name attributes and there are three student objects whose names are Johnny, Mary and Russell.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_fLm6ldA8eu0/SsxjE0OYtgI/AAAAAAAAASU/F0NyK3ggISA/s1600-h/Object.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_fLm6ldA8eu0/SsxjE0OYtgI/AAAAAAAAASU/F0NyK3ggISA/s400/Object.bmp" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Walkthrough 1: Mapping Object Oriented Thoughts to Object Oriented Programming&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;To make our conception more clear, now we will try to make a small application. Of course, we will try it Object Oriented way.&lt;br /&gt;&lt;br /&gt;Let’s start. Suppose our considering problem domain as follows:&lt;br /&gt;“………User wants to get full name and reverse full name providing first name, middle name and last name of a person.”&lt;br /&gt;&lt;br /&gt;We will identify the objects first. Here, we will get ‘Person’ object as follows:&lt;br /&gt;Person&lt;br /&gt;Has first name&lt;br /&gt;Has middle name&lt;br /&gt;Has last name&lt;br /&gt;&lt;br /&gt;Can tell its full name&lt;br /&gt;Can tell its reverse name&lt;br /&gt;&lt;br /&gt;Now we will implement this in C# (VS 2008, DotNet 3.5), an OOP language.&lt;br /&gt;&lt;br /&gt;Steps:&lt;br /&gt;1. Start Microsoft Visual Studio 2008&lt;br /&gt;2. Click File&amp;gt;New&amp;gt;Project&lt;br /&gt;&lt;br /&gt;You will see the following window. Select ‘Class Library’ template, give a meaningful name and select your preferable location.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_fLm6ldA8eu0/SsxjYmaDzAI/AAAAAAAAASc/-sIi6PE5tfA/s1600-h/OOPWalkthrough1-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_fLm6ldA8eu0/SsxjYmaDzAI/AAAAAAAAASc/-sIi6PE5tfA/s400/OOPWalkthrough1-1.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;3. Click ‘Ok’ Button&lt;br /&gt;4. In Solution Explorer, you will see Class1.cs file. Delete this file.&lt;br /&gt;5. Select project (not solution) OOPWalkThrough1 and Click right button. Then Click on Add&amp;gt;Class from the popup menu. You will get following window.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_fLm6ldA8eu0/Ssxj0m2NzkI/AAAAAAAAASk/yvAt5v0NhR8/s1600-h/AddPerson.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_fLm6ldA8eu0/Ssxj0m2NzkI/AAAAAAAAASk/yvAt5v0NhR8/s400/AddPerson.bmp" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;6. Remind we have found an object, ‘Person’ in our problem domain. Here we will give ‘Person.cs’ in Name as a file name.&lt;br /&gt;7. Click ‘Add’ button and you will see the following code&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin-left: .5in; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="color: blue; font-family: 'Courier New';"&gt;using&lt;/span&gt;&lt;span style="font-family: 'Courier New';"&gt; System;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .5in; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .5in; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="color: blue; font-family: 'Courier New';"&gt;namespace&lt;/span&gt;&lt;span style="font-family: 'Courier New';"&gt; OOPWalkThrough1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .5in; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New';"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .5in; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Person&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .5in; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .5in; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .5in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Here, Person is a class. &lt;br /&gt;&lt;br /&gt;8. Now update the Person class as follows:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none; text-indent: .5in;"&gt;&lt;span style="color: blue; font-family: 'Courier New'; font-size: 10pt;"&gt;namespace&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt; OOPWalkThrough1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none; text-indent: .5in;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Person&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; firstName;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; middleName;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; lastName;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; GetMyFullName()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; firstName + &lt;span style="color: #a31515;"&gt;" "&lt;/span&gt; + middleName + &lt;span style="color: #a31515;"&gt;" "&lt;/span&gt; + lastName;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; GetMyReverseName()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; reverseName = &lt;span style="color: #a31515;"&gt;""&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; fullName = GetMyFullName(); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;for&lt;/span&gt; (&lt;span style="color: blue;"&gt;int&lt;/span&gt; index = fullName.Length - 1; index &amp;gt;= 0; index--)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; reverseName += fullName[index];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; reverseName;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New'; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Have a look inside the Person class. Compare the identified object (Person) with the Person class.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_fLm6ldA8eu0/SsxkLNh68QI/AAAAAAAAASs/kKzj5vLNE7M/s1600-h/DomainObjToClass.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_fLm6ldA8eu0/SsxkLNh68QI/AAAAAAAAASs/kKzj5vLNE7M/s400/DomainObjToClass.bmp" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;You see data of Person are represented by attributes and responsibilities are represented by methods. So any object creates from Person class will represent our domain object, Person.  &lt;br /&gt;&lt;br /&gt;9. Now add another class in this project. Here file name will be EntryPoint.cs (or any meaningful name you like) and write Main() method inside this class as follows:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="color: blue; font-family: 'Courier New';"&gt;namespace&lt;/span&gt;&lt;span style="font-family: 'Courier New';"&gt; OOPWalkThrough1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New';"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;EntryPoint&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; &lt;st1:place w:st="on"&gt;Main&lt;/st1:place&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;Person&lt;/span&gt; personObj = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Person&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; personObj.firstName = &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; personObj.middleName = &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; personObj.lastName = &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; fullName = personObj.GetMyFullName();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; reverseName = personObj.GetMyReverseName();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Full Name: "&lt;/span&gt; + fullName);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Reverse Form: "&lt;/span&gt; + reverseName);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: 'Courier New';"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here, we will create a Person object, personObj from Person class using the following line:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: #2b91af; font-family: 'Courier New'; font-size: 10pt;"&gt;Person&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt; personObj = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Person&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Then assign some data to the attributes of personObj as follows:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin-left: .5in; mso-layout-grid-align: none; text-autospace: none; text-indent: .5in;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;personObj.firstName = &lt;span style="color: #a31515;"&gt;"James"&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none; text-indent: .5in;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; personObj.middleName = &lt;span style="color: #a31515;"&gt;"Lucas"&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; personObj.lastName = &lt;span style="color: #a31515;"&gt;"Scott"&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New'; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Finally, ask personObj to tell it’s full name and reversed-name and get it:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: blue;"&gt;string&lt;/span&gt; fullName = personObj.GetMyFullName();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; reverseName = personObj.GetMyReverseName();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;10. To make the project executable, we need to change the project properties. Select the project, click right button, select Properties from pop-up menu; you will get the following tab to change project properties. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_fLm6ldA8eu0/Ssxkgjil5JI/AAAAAAAAAS0/1pTKbyxHsjw/s1600-h/ChangeProjectProperties.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_fLm6ldA8eu0/Ssxkgjil5JI/AAAAAAAAAS0/1pTKbyxHsjw/s400/ChangeProjectProperties.bmp" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Select Output Type as Console Application and Startup object as OOPWalkThrough1.EntryPoint.&lt;br /&gt;&lt;br /&gt;11. Run the application and you will the output:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_fLm6ldA8eu0/SsxkqR7bf4I/AAAAAAAAAS8/TH3PhTFH5bA/s1600-h/Output.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_fLm6ldA8eu0/SsxkqR7bf4I/AAAAAAAAAS8/TH3PhTFH5bA/s320/Output.bmp" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;12. To take input from user you need to change the Main() method. Replace these three lines:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin-left: .5in; mso-layout-grid-align: none; text-autospace: none; text-indent: .5in;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;personObj.firstName = &lt;span style="color: #a31515;"&gt;"James"&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none; text-indent: .5in;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; personObj.middleName = &lt;span style="color: #a31515;"&gt;"Lucas"&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; personObj.lastName = &lt;span style="color: #a31515;"&gt;"Scott"&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;with the following three lines&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;personObj.firstName = &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; personObj.middleName = &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .25in;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; personObj.lastName = &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.ReadLine();&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Important Note &lt;/b&gt;&lt;br /&gt;Here, to keep the example simple, I’ve violated encapsulation (keep the data public) principle. Discussion has been started with a pretty simple use case and identification of domain object. Somebody may not agree with the process. But I think its better way to start Object Oriented Concept.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774153985827709461-3768004434760462233?l=ztiemoon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ztiemoon.blogspot.com/feeds/3768004434760462233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ztiemoon.blogspot.com/2009/10/basic-oop-concept-and-implementation.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774153985827709461/posts/default/3768004434760462233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774153985827709461/posts/default/3768004434760462233'/><link rel='alternate' type='text/html' href='http://ztiemoon.blogspot.com/2009/10/basic-oop-concept-and-implementation.html' title='Introducing Object Oriented Concept'/><author><name>Tiemoon</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_fLm6ldA8eu0/SsxjE0OYtgI/AAAAAAAAASU/F0NyK3ggISA/s72-c/Object.bmp' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774153985827709461.post-3696433691037117469</id><published>2009-09-03T17:41:00.021+07:00</published><updated>2009-09-03T18:02:07.555+07:00</updated><title type='text'>Sufferings with switch smell</title><content type='html'>&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: black;"&gt;Introduction&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black;"&gt;In my first blog, &lt;a href="http://ztiemoon.blogspot.com/2009/08/using-enum-in-c-for-smart-coding.html"&gt;Using enum in C# for smart coding&lt;/a&gt;, described code snippets suffer with switch smell. So, here, I am explaining what the switch smell is, what’s wrong with it and how to avoid it?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black;"&gt;Most of the time, our source code suffers with several bad smells. Authors of a great book, &lt;a href="http://www.amazon.com/Refactoring-Improving-Design-Existing-Code/dp/0201485672"&gt;Refactoring: Improving the Design of Existing Code&lt;/a&gt;, explain these smells with refactoring techniques. Here, I try to explain how switch smell introduces unnecessary complexity, reduces flexibility and leaves a class with vague responsibilities (from caller’s point of view).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;br /&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;/span&gt;Code Explanation&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black;"&gt;In the following two samples (&lt;/span&gt;&lt;span style="color: black; font-family: 'Monotype Corsiva';"&gt;Sample 1&lt;/span&gt;&lt;span style="color: black;"&gt; &amp;amp; &lt;/span&gt;&lt;span style="color: black; font-family: 'Monotype Corsiva';"&gt;Sample 2&lt;/span&gt;&lt;span style="color: black;"&gt;), I have written a class, Calculator which can perform four basic arithmetic operation addition, subtraction, division and multiplication on two numbers.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;Note: Here all code snippets are written in C#.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="font-family: 'Monotype Corsiva'; font-size: large;"&gt;&lt;span style="font-size: 17px;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Monotype Corsiva'; font-size: large;"&gt;&lt;b&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;u&gt;&lt;span style="font-family: 'Monotype Corsiva'; font-size: 13pt;"&gt;Sample 1:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="color: blue; font-family: 'ɼourier New\'';"&gt;public&lt;/span&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt; &lt;span style="color: blue;"&gt;enum&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Operation&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Add,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Subtract,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Multiply,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Divide&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;}&lt;span style="color: blue;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="color: blue; font-family: 'ɼourier New\'';"&gt;public&lt;/span&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Calculator&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;double&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; Calculate(&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;double&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; firstNo, &lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;double&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; secondNo, &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-size: x-small;"&gt;Operation&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; operation)&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;switch&lt;/span&gt; (operation)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;Operation&lt;/span&gt;.Add:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; (firstNo + secondNo);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Operation&lt;/span&gt;.Subtract:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; (firstNo - secondNo);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Operation&lt;/span&gt;.Multiply:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; (firstNo * secondNo);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Operation&lt;/span&gt;.Divide:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; (firstNo / secondNo);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;default&lt;/span&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;throw&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ArgumentException&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;"Incorrect Argument"&lt;/span&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;u&gt;&lt;span style="font-family: 'Monotype Corsiva'; font-size: 13pt;"&gt;Sample 2:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="color: blue; font-family: 'ɼourier New\'';"&gt;public&lt;/span&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Calculator&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;double&lt;/span&gt; Add(&lt;span style="color: blue;"&gt;double&lt;/span&gt; firstNo, &lt;span style="color: blue;"&gt;double&lt;/span&gt; secondNo)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; (firstNo + secondNo);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;double&lt;/span&gt; Subtract(&lt;span style="color: blue;"&gt;double&lt;/span&gt; firstNo, &lt;span style="color: blue;"&gt;double&lt;/span&gt; secondNo)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; (firstNo - secondNo);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;double&lt;/span&gt; Multiply(&lt;span style="color: blue;"&gt;double&lt;/span&gt; firstNo, &lt;span style="color: blue;"&gt;double&lt;/span&gt; secondNo)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; (firstNo * secondNo);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;double&lt;/span&gt; Divide(&lt;span style="color: blue;"&gt;double&lt;/span&gt; firstNo, &lt;span style="color: blue;"&gt;double&lt;/span&gt; secondNo)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; (firstNo / secondNo);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;}&lt;/span&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: #2b91af; font-family: 'Courier New';"&gt;Calculator&lt;/span&gt;&lt;span style="color: black;"&gt; of &lt;/span&gt;&lt;span style="color: black; font-family: 'Monotype Corsiva';"&gt;Sample 1&lt;/span&gt;&lt;span style="color: black;"&gt; provides these functionalities with its &lt;/span&gt;&lt;span style="font-family: 'Courier New';"&gt;Calculate()&lt;/span&gt;&lt;span style="color: black;"&gt; method whereas &lt;/span&gt;&lt;span style="color: #2b91af; font-family: 'Courier New';"&gt;Calculator&lt;/span&gt;&lt;span style="color: black;"&gt; of &lt;/span&gt;&lt;span style="color: black; font-family: 'Monotype Corsiva';"&gt;Sample 2&lt;/span&gt;&lt;span style="color: black;"&gt; has four methods for four specific functionalities.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black;"&gt;In &lt;/span&gt;&lt;span style="color: black; font-family: 'Monotype Corsiva';"&gt;Sample 1&lt;/span&gt;&lt;span style="color: black;"&gt;, I introduce switch statement inside &lt;/span&gt;&lt;span style="font-family: 'Courier New';"&gt;Calculate()&lt;/span&gt;&lt;span style="color: black;"&gt; method to distinguish the request of client code whether it (client request) wants to add, subtract, multiply or divide. On the other hand, in &lt;/span&gt;&lt;span style="color: black; font-family: 'Monotype Corsiva';"&gt;Sample 2&lt;/span&gt;&lt;span style="color: black;"&gt;, as each functionality is implemented in separate method I haven’t bothered with condition-checking (switch statement).&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: 'Monotype Corsiva'; font-size: large;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;/span&gt;Comparison&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black;"&gt;Now, the question is: Which class is better than other one?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black;"&gt;From design point of view Calculator is responsible for four &lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;distinct&lt;/i&gt;&lt;/b&gt; arithmetic operations, so it should have four methods in implementation level.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black;"&gt;In &lt;/span&gt;&lt;span style="color: black; font-family: 'Monotype Corsiva';"&gt;Sample 1&lt;/span&gt;&lt;span style="color: black;"&gt;, &lt;/span&gt;&lt;span style="color: #2b91af; font-family: 'Courier New';"&gt;Calculator&lt;/span&gt;&lt;span style="color: black;"&gt; has only a single method, &lt;/span&gt;&lt;span style="font-family: 'Courier New';"&gt;Calculate()&lt;/span&gt;&lt;span style="color: black;"&gt; which perform four arithmetic operations. As a result it represents poorly &lt;a href="http://blogs.agilefaqs.com/2008/11/08/self-documenting-code-example/"&gt;self-documentation&lt;/a&gt; and introduces unnecessary complexity. It suffers with switch smell. As a result &lt;/span&gt;&lt;span style="color: #2b91af; font-family: 'Courier New';"&gt;Calculator&lt;/span&gt;&lt;span style="color: black;"&gt; responsibilities is not concrete here. So, caller of the &lt;/span&gt;&lt;span style="font-family: 'Courier New';"&gt;Calculate()&lt;/span&gt;&lt;span style="color: black;"&gt; method has to decide what it (caller) wants from &lt;/span&gt;&lt;span style="font-family: 'Courier New';"&gt;Calculate()&lt;/span&gt;&lt;span style="color: black;"&gt; method by setting the parameter.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black;"&gt;On the other hand, in &lt;/span&gt;&lt;span style="color: black; font-family: 'Monotype Corsiva';"&gt;Sample 2&lt;/span&gt;&lt;span style="color: black;"&gt;, interface of &lt;/span&gt;&lt;span style="color: #2b91af; font-family: 'Courier New';"&gt;Calculator&lt;/span&gt;&lt;span style="color: black;"&gt; is clearer and also it is self-documented.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black; font-family: 'Monotype Corsiva';"&gt;Sample 2&lt;/span&gt;&lt;span style="color: black;"&gt; is more flexible than &lt;/span&gt;&lt;span style="color: black; font-family: 'Monotype Corsiva';"&gt;Sample 1&lt;/span&gt;&lt;span style="color: black;"&gt;. Suppose if I want to provide another functionality to add three numbers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black;"&gt;For &lt;/span&gt;&lt;span style="color: black; font-family: 'Monotype Corsiva';"&gt;Sample 2&lt;/span&gt;&lt;span style="color: black;"&gt;, I quickly write overload &lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;Add()&lt;/span&gt;&lt;span style="color: black;"&gt; method as follows with reusability.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="color: blue; font-family: 'ɼourier New\'';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'ɼourier New\'';"&gt;public&lt;/span&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt; &lt;span style="color: blue;"&gt;double&lt;/span&gt; Add(&lt;span style="color: blue;"&gt;double&lt;/span&gt; firstNo, &lt;span style="color: blue;"&gt;double&lt;/span&gt; secondNo, &lt;span style="color: blue;"&gt;double&lt;/span&gt; thirdNo)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; Add(Add(firstNo, secondNo), thirdNo);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'ɼourier New\'';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black;"&gt;But what’s for &lt;/span&gt;&lt;span style="color: black; font-family: 'Monotype Corsiva';"&gt;Sample 1&lt;/span&gt;&lt;span style="color: black;"&gt;? &amp;nbsp;:-((. I have to follow some ugly and stupid ways to implement this functionality which introduces more complexity, code repetition, procedural thoughts etc.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: 'Monotype Corsiva'; font-size: large;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;More..&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: black;"&gt;In &lt;a href="http://www.amazon.com/Refactoring-Improving-Design-Existing-Code/dp/0201485672"&gt;Refactoring: Improving the Design of Existing Code&lt;/a&gt;&lt;/span&gt;, Authors explain this problem (&lt;span style="font-family: 'Monotype Corsiva';"&gt;Sample 1&lt;/span&gt;)&amp;nbsp; under bad small of switch statement and also show several ways (‘Replace type code with Subclasses’, ‘Replace type code with State/Strategy’, ‘Replace Parameter with Explicit Method’ how to refactor this smell. At the same time, authors describe ‘Parameterize Method’ which seems reverse of our discussion.&lt;/div&gt;&lt;span style="font-family: 'Monotype Corsiva'; font-size: large;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;Conclusion&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Each method of a class should represents a single activity, must be concrete and self-documented. One more activities in a single method (by switch smell) or one activity in several methods (I will discuss it another day) introduces complexicity and ambiguous interface, hinders changes, intencifies duplication and leave the class poorly self-documented.&lt;span style="font-family: 'ɼourier New\'';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774153985827709461-3696433691037117469?l=ztiemoon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ztiemoon.blogspot.com/feeds/3696433691037117469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ztiemoon.blogspot.com/2009/09/sufferings-with-switch-smell.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774153985827709461/posts/default/3696433691037117469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774153985827709461/posts/default/3696433691037117469'/><link rel='alternate' type='text/html' href='http://ztiemoon.blogspot.com/2009/09/sufferings-with-switch-smell.html' title='Sufferings with switch smell'/><author><name>Tiemoon</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774153985827709461.post-5759235579886996345</id><published>2009-08-18T21:09:00.000+07:00</published><updated>2009-08-23T11:45:33.388+07:00</updated><title type='text'>Using enum in C# for smart coding</title><content type='html'>&lt;div class="MsoNormal" style="margin-left: .5in;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 100%;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="font-family: Georgia; font-size: 130%;"&gt;&lt;span style="font-size: 16px;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: 'Courier New'; font-size: 100%;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="font-family: Georgia; font-size: 130%;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New'; font-size: 100%;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="font-family: Georgia; font-size: 130%;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New'; font-size: 100%;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="font-family: Georgia; font-size: 130%;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New'; font-size: 100%;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="font-family: Georgia; font-size: 130%;"&gt;&lt;b&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-weight: normal;"&gt;Most of us have written these (Sample 1 &amp;amp; Sample 2) kind of code snippet in our student or even professional life:&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;u&gt;Sample 1 (C# Code):&lt;/u&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="color: blue; font-family: 'Courier New'; font-size: 100%;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="color: black; font-family: Georgia; font-size: 16px;"&gt;&lt;span style="color: blue; font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;string&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt; employeeType = employeeTypeComboBox.Text;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;     &lt;span style="white-space: pre;"&gt; &lt;/span&gt;if&lt;/span&gt; (employeeType == &lt;span style="color: #a31515;"&gt;"Permanent"&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;    &lt;span style="white-space: pre;"&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;        &lt;span style="white-space: pre;"&gt;     &lt;/span&gt;CalculateSalary();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;    &lt;span style="white-space: pre;"&gt; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;else&lt;/span&gt; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (employeeType == &lt;span style="color: #a31515;"&gt;"Worker"&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;    &lt;span style="white-space: pre;"&gt;     &lt;/span&gt;CalculateWages();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;     &lt;span style="white-space: pre;"&gt;     &lt;/span&gt;&lt;span style="color: green;"&gt;// Do nothing&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;u&gt;Sample 2 (C# Code):&lt;span style="-webkit-text-decorations-in-effect: none;"&gt; &lt;/span&gt;&lt;/u&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;string&lt;/span&gt; studentType = studentTypeComboBox.Text;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;if&lt;/span&gt; (studentType == &lt;span style="color: #a31515;"&gt;"Regular"&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;     &lt;span style="white-space: pre;"&gt;     &lt;/span&gt;&lt;span style="color: green;"&gt;// Do Something&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;else&lt;/span&gt; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (studentType == &lt;span style="color: #a31515;"&gt;"Private"&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="color: green;"&gt;&lt;span style="white-space: pre;"&gt;     &lt;/span&gt;// Do Something&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;     &lt;span style="white-space: pre;"&gt;     &lt;/span&gt;&lt;span style="color: green;"&gt;// Do nothing&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 11pt;"&gt;&lt;o:p&gt;  &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-weight: normal;"&gt;In these two samples, user input is taken in a string valriable (&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-weight: normal;"&gt;employeeType /studentType&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;) from a ComboBox and compare the variable with some discrete hard-coded string values (&lt;/span&gt;&lt;span style="color: #a31515; font-size: 10pt;"&gt;&lt;span style="font-weight: normal;"&gt;Permanent/Worker/Regular/Private&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-weight: normal;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-weight: normal;"&gt;What will happen if you type (some of you has faced these sad experiences)  &lt;/span&gt;&lt;span style="color: #a31515; font-size: 10pt;"&gt;&lt;span style="font-weight: normal;"&gt;Parmanent &lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;instead of&lt;/span&gt;&lt;span style="color: #a31515; font-size: 10pt;"&gt;&lt;span style="font-weight: normal;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #a31515; font-size: 10pt;"&gt;&lt;span style="font-weight: normal;"&gt;Permanent&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt; in Sample 1? Definitely, CalculateSalary() method will be not called and even program doesn’t show you any error message (any compile error).  In best case, You will find out this problem during development and fix it immediately. But in worst case this problem arises after demployment&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: #993366;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #993366;"&gt;&lt;span style="font-weight: normal;"&gt;Is there any solution where my typo will be detected earliar and show me a compile error?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: #339966;"&gt;&lt;span style="font-weight: normal;"&gt;Yes. Try emun.&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;See Sample Code 3, the more smart version of Sample code 1. Here you have no typo option.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;u&gt;Sample Code 3&lt;/u&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;u style="text-decoration: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 13px;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;enum&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;EmployeeType&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;     &lt;span style="white-space: pre;"&gt;     &lt;/span&gt;Permanent,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;     &lt;span style="white-space: pre;"&gt;     &lt;/span&gt;Worker&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: Georgia; font-size: 16px;"&gt;&lt;span style="color: blue; font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;string&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt; employeeType = employeeTypeComboBox.Text;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;if&lt;/span&gt; (employeeType == &lt;span style="color: #2b91af;"&gt;EmployeeType&lt;/span&gt;.Permanent.ToString())&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;     &lt;span style="white-space: pre;"&gt;     &lt;/span&gt;CalculateSalary();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;else&lt;/span&gt; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (employeeType == &lt;span style="color: #2b91af;"&gt;EmployeeType&lt;/span&gt;.Worker.ToString())&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;     &lt;span style="white-space: pre;"&gt;     &lt;/span&gt;CalculateWages();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;     &lt;span style="white-space: pre;"&gt;     &lt;/span&gt;&lt;span style="color: green;"&gt;//Do Nothing&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-weight: normal;"&gt;Believe me still you have chance to improve the code quality of Sample Code 3. Just see the Sample Code 4, I have wipe out all kinds of string variable from Sample Code 3.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;u&gt;Sample Code 4:&lt;/u&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="color: #2b91af; font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;EmployeeType&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt; selectedEmployeeType = &lt;span style="white-space: pre;"&gt; &lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;EmployeeType&lt;/span&gt;)&lt;span style="color: #2b91af;"&gt;Enum&lt;/span&gt;.Parse(&lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;EmployeeType&lt;/span&gt;), &lt;span style="white-space: pre;"&gt; &lt;/span&gt;employeeTypeComboBox.Text);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="color: blue; font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;if&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt; (selectedEmployeeType == &lt;span style="color: #2b91af;"&gt;EmployeeType&lt;/span&gt;.Permanent)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;      &lt;span style="white-space: pre;"&gt;     &lt;/span&gt;CalculateSalary();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="color: blue; font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;else&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (selectedEmployeeType == &lt;span style="color: #2b91af;"&gt;EmployeeType&lt;/span&gt;.Worker)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;      &lt;span style="white-space: pre;"&gt;     &lt;/span&gt;CalculateWages();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="color: blue; font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;     &lt;span style="white-space: pre;"&gt;     &lt;/span&gt;&lt;span style="color: green;"&gt;//Do Nothing&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;} &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-weight: normal;"&gt;Even, as your input comes from employeeTypeComboBox, don’t write hard-coded string in it’s item list, rather do it:&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;employeeTypeComboBox.DataSource = &lt;span style="color: #2b91af;"&gt;Enum&lt;/span&gt;.GetNames(&lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;EmployeeType&lt;/span&gt;));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 48px;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;So, why enum?&lt;/b&gt;&lt;br /&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: normal;"&gt;a)&lt;/span&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;      &lt;/span&gt;&lt;span style="font-weight: normal;"&gt;To improve code clarity&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: normal;"&gt;b)&lt;/span&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;      &lt;/span&gt;&lt;span style="font-weight: normal;"&gt;Make the code easier to maintain&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: normal;"&gt;c)&lt;/span&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;      &lt;/span&gt;&lt;span style="font-weight: normal;"&gt;Getting error at earlier stage&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .75in; mso-list: l1 level1 lfo1; tab-stops: list .75in; text-indent: -.25in;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;Note:&lt;/b&gt;&lt;br /&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: normal;"&gt;a)&lt;/span&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;      &lt;/span&gt;&lt;span style="font-weight: normal;"&gt;You can define enum inside or outside of class, but not inside of method or property.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: normal;"&gt;b)&lt;/span&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;      &lt;/span&gt;&lt;span style="font-weight: normal;"&gt;The list of names contained by a particutar type of enum called enumerator list.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-weight: 800;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;More About enum:&lt;/b&gt;&lt;br /&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: normal;"&gt;a)&lt;/span&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;      &lt;/span&gt;&lt;span style="font-weight: normal;"&gt;If you want you can keep value with each name in enumerator list. Example:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="color: blue; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt;"&gt;        &lt;span style="color: blue;"&gt;enum&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Priority&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;        {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp; Critical = 1,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp; Important = 2,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-size: 17px;"&gt;&amp;nbsp;&amp;nbsp;M&lt;span style="font-size: 10pt;"&gt;edium = 3,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-size: 17px;"&gt;&lt;span style="font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp; Low = 4&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-size: 17px;"&gt;&lt;span style="font-size: 10pt;"&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-size: 17px;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-size: 17px; font-weight: normal;"&gt;You will get this value by type casting to the related type.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-size: 17px;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-size: 17px; font-weight: normal;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: blue; font-size: 10pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: 'courier new';"&gt; priorityValue = (&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-family: 'courier new';"&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;) &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-family: 'courier new';"&gt;Priority&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;.Medium;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new'; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-size: 17px;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-size: 17px; font-weight: normal;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="font-family: Georgia; font-size: 17px;"&gt;&lt;span style="font-weight: normal;"&gt;b)&lt;/span&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;      &lt;/span&gt;&lt;span style="font-weight: normal;"&gt;Another nice thing, you can easily iterate through enumerator list.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-size: 17px;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-size: 17px; font-weight: normal;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="font-family: Georgia; font-size: 17px;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: blue; font-size: 10pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;foreach&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;(&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-family: 'courier new';"&gt;Priority&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt; priority &lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-family: 'courier new';"&gt;in&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-family: 'courier new';"&gt;Enum&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;.GetValues(&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-family: 'courier new';"&gt;typeof&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;(&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-family: 'courier new';"&gt;Priority&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;)))&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;         {&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;nbsp;&amp;nbsp; MessageBox&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;.Show(priority.ToString());&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="font-family: Georgia; font-size: 17px; font-weight: normal;"&gt;or even&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue; font-size: 8pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;for&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 8pt;"&gt;&lt;span style="font-family: 'courier new';"&gt; (&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-family: 'courier new';"&gt;Priority&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt; prio = &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-family: 'courier new';"&gt;Priority&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;.Low; prio &amp;gt;= &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-family: 'courier new';"&gt;Priority&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;.Critical; prio--)&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;         {&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;nbsp;&amp;nbsp; MessageBox&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;.Show(prio.ToString());&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Georgia; font-size: large;"&gt;&lt;span style="font-size: 17px; font-weight: 800;"&gt;Conclusion:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Georgia; font-size: large;"&gt;&lt;span style="font-size: 17px;"&gt;You should avoid string operation (specially comparison) because it decreases&amp;nbsp;readability&amp;nbsp;and introduces opacity. But using enum you can increase code readability, discover bugs in design time and keep your code more easy to maintain. So, Instead of string operation we should use enum (where applicable) &amp;nbsp;as described in this discussion.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774153985827709461-5759235579886996345?l=ztiemoon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ztiemoon.blogspot.com/feeds/5759235579886996345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ztiemoon.blogspot.com/2009/08/using-enum-in-c-for-smart-coding.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774153985827709461/posts/default/5759235579886996345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774153985827709461/posts/default/5759235579886996345'/><link rel='alternate' type='text/html' href='http://ztiemoon.blogspot.com/2009/08/using-enum-in-c-for-smart-coding.html' title='Using enum in C# for smart coding'/><author><name>Tiemoon</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry></feed>
