본문 바로가기
애자일(Agile)개발방법론

[1]개발 표준-좋은 C# 코드 작성하기(Write better C#/.Net code)

by swconsulting 2015. 2. 23.

많은 개발자들은 좋은 코드를 작성하기를 원합니다. 하지만 의외로 어렵게 생각하거나 어떻게 해야 좋은 코드를 작성하는지 모르는 개발자들이 있습니다. 그래서 어떻게 하면 쉽게 빠르게 좋은 코드를 작성하는지 설명해 보겠습니다.


참고로 이글은 제 경험과 CodeProject(Some practices to write better C#/.NET code) 를 참고 해서 작성했습니다.


[간단한 테스트]

FizzBuzz 샘플 코드를 한번 보도록 하죠. 여러분들은 1~100까지 숫자를 출력하면서 그중 매 3번째 마다는 "Fizz"를 출력하고 5번째 마다는 "Buzz"를 출력하고 둘 다인 경우(3번째, 5번째)에는 "FizzBuzz"를 출력하고 그외 경우는 그대로 숫자를 출력하는 프로그램을 작성한다고 가정해 봅시다.


Step1)

        public void Test()

        {

            for (int i = 1; i < 101; i++)

            {

                if (i % 3 == 0 && i % 5 == 0)

                {

                    Console.WriteLine("FizzBuzz");

                }

                else if (i % 3 == 0)

                {

                    Console.WriteLine("Fizz");

                }

                else if (i % 5 == 0)

                {

                    Console.WriteLine("Buzz");

                }

                else

                {

                    Console.WriteLine(i);

                }

            }

        }


간단하게 잘 작성했습니다. 하지만 뭔가 부족한거 같습니다.

좀더 코드를 잘 작성해 볼까요?


Step2)

public void Check()

{

   for (int i = 1; i <= 100; i++)

   {

       string output = "";

       if (i % 3 == 0) { output = "Fizz"; }

       if (i % 5 == 0) { output = output + "Buzz"; }

       if (output == "") { output = i.ToString(); }

       Console.WriteLine(output);

   }

}


step1 보다 간결하게 보기가 좋습니다. 개인적으로 함수에서 코드 라인 수를 최대 50라인 넘지 않는 것을 좋아 합니다.

하지만 step1 코드를 한번더 생각하고 if에 대해서 1줄에 표시한거 밖에 없는거 같습니다. 


Step3)

그럼 정말로 코드를 작성 잘 해 볼까요~


public void DoFizzBuzz()

{

   for (int number = 1; number <= 100; number++)

   {

       var output = GetFizzBuzzOutput(number);

       Console.WriteLine(output);

   }

}


private static string GetFizzBuzzOutput(int number)

{

   string output = string.Empty;

   if (number%3 == 0)

   {

       output = "Fizz";

   }

   if (number%5 == 0)

   {

       output += "Buzz";

   }

   if(string.IsNullOrEmpty(output))

   {

       output = number.ToString();

   }

   return output;

}


위 코드를 보면 로직은 step2와 동일하지만 가장 크게 다른 점은 함수를 분리해서 가독성을 높인 점입니다.

즉, 출력하는 부분(UI)과 실제 로직(Business Logic)을 처리하는 부분을 함수로 분리하고 함수 이름을 가독성 있도록 작성한 것이 좋은 코드입니다.  정리하면 step1, step2 처럼 작성을 하게되면 차후에 코드 수정 및 확장하는데 어려움이 따릅니다. 그래서 코드를 작성을 하기전에 가능한 분리하는 습관을 가져야 합니다.



좋은 코드는 아래 3가지를 준수해야 합니다.

 

  • 코드를 쉽게 작성하고, 수정하고, 확장할 수 있어야 합니다.
  • 코드가 명확하게 이야기 하듯이 의미가 전달되어야 합니다.
  • 코드가 일정한 품질을 수치적으로 가지고 있어야 합니다.

 


참고 URL : http://www.codeproject.com/Articles/539179/Some-practices-to-write-better-Csharp-NET-code