H은행에서 만난 모든 惡의 근원

H은행에서 만난 모든 惡의 근원

이철우

2021년 창구업무를 지원하는 기업전용 프로그램을 H은행에서 보게 되었다. Visual Studio 2008 C#으로 개발되었다고 한다. 아마도 2010~2015년 사이에 탄생하지 않았을까 추측한다. 20세기에 COBOL 등을 필두로 전산분야에서 앞서 나갔던 은행의 실력은 21세기에 어떻게 변했을까 궁금하기도 했다. 결과는 아래와 같다.

void Print(Dictionary<string, string> argument)
{
    var name = argument["Name"];
    var age = int.Parse(argument["Age"]);

    Console.WriteLine($"{name} {age}");
}

대부분의 메서드 매개변수가 '사전’으로 되어 있었다. 구조적 프로그래밍 시절에도 없던 '신기’한 코드가 파일마다 만발하고 있었다.

이것은 적어도 다음과 같이 바꾸어야 한다.

void Print(string name, int age)
{
    Console.WriteLine($"{name} {age}");
}

만약 name, age 쌍을 자주 쓰게 된다면, 다음과 같이 되어야 한다.

void Print(Person person)
{
    Console.WriteLine($"{person}");
}

class Person
{
    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }

    public string Name { get; init; }
    public int Age { get; init; }

    public override string ToString()
    {
        return $"{Name} {Age}";
    }
}

사전 매개변수는 파이선 등의 언어에서도 유행[참고 1]한 듯 하다. 전산 시스템 유지/보수에 돈이 낭비되고 있음을 은행 경영者가 알까?

[참고 1] Taking a dictionary as an argument is the root of all evil

https://www.reddit.com/r/Python/comments/jp0x4d/taking_a_dictionary_as_an_argument_is_the_root_of/

6개의 좋아요

이상과 실무는 또 달라서
모든 코드는 각자의 사연과 역사가 있는 거겠죠

딕셔너리도 어떤 사람은 찬양하는 사람도 있음

딕셔너리 흑마술서

5개의 좋아요

흑마술서라는 표현에서 빵터졌습니다 ㅋㅋㅋ

4개의 좋아요

으아악…

2개의 좋아요

문제없다는건 아니지만 애교수준이네요, 간결해진 코드들의 모습은 비슷하게 수렴하지만, 자유로운 영혼들이 열정적으로 작성한 코드의 품질은 상상을 뛰어넘습니다. 바닥밑에 바닥이예요

4개의 좋아요