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/