언어

[Coding] 같은 내용이 중복되는 함수의 현명한 사용법

돌멩이수프 2022. 5. 3. 11:31
728x90

c#으로 작성된 내용입니다.

 

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Add(int a, int b, string name, int time)
        {
            int ab = a + b;
            int a_b = a - b;
            Console.WriteLine(ab);
            Console.WriteLine(a_b);
            Console.WriteLine($"a의 이름은 {name} 입니다.");
            Console.WriteLine($"남은 시간은 {time}초입니다.");
        }

        static void Add(int a, int b, string name, float time)
        {
            int ab = a + b;
            int a_b = a - b;
            Console.WriteLine(ab);
            Console.WriteLine(a_b);
            Console.WriteLine($"a의 이름은 {name} 입니다.");
            Console.WriteLine($"남은 시간은 {time}초입니다.");
        }
        static void Main(string[] args)
        {
            Add(1, 2, "바다", 3);
            Add(1, 2, "바다", 3.5f);
        }
    }
}

두 개의 함수 Add는 time의 자료형이 각각 int, float인 것 외에는 함수 내용 상 차이가 없다.

이럴 때 각 함수에 모든 내용을 다 겹쳐서 쓰기에는 많은 단점이 생긴다. 불필요한 메모리 공간을 차지하게 되며, 수정사항이 있을 때 한 함수는 수정하고 다른 함수는 지나쳐버리면 오류를 찾아 헤매게 된다.

이런 상황을 피하기 위해서는 먼저 코딩한 함수의 내용을 뒤에 올 함수를 실행시키는 모양으로 수정하면 간편하다.

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Add(int a, int b, string name, int time)
        {
            float _time = (float)time;
            Add(a, b, name, _time);
        }

        static void Add(int a, int b, string name, float time)
        {
            int ab = a + b;
            int a_b = a - b;
            Console.WriteLine(ab);
            Console.WriteLine(a_b);
            Console.WriteLine($"a의 이름은 {name} 입니다.");
            Console.WriteLine($"남은 시간은 {time}초입니다.");
        }
        static void Main(string[] args)
        {
            Add(1, 2, "바다", 3);
            Add(1, 2, "바다", 3.5f);
        }
    }
}

이런 식으로 간단하게 내용을 수정해주면 보기에도 깔끔하고 수정도 편리한 함수가 만들어진다.

728x90