기술을 기술하다

레거시 코드를 점진적으로 개선한 경험
프로젝트를 이어받다.저는 작년(2019년) 6월 말에 새로운 회사로 이직하였습니다. 첫 번째로 받은 업무는 새롭게 개발 중이던 관리자용 시스템을 이어받아 완성 시키는 것이었습니다. 기존에 개발자 한 분께서 맡아 개발해왔지만, 관리자용 시스템이라 우선순위가 다른 프로젝트들보다 낮아 꽤 오랜 기간 미완성 상태로 남겨졌던 프로젝트였습니다. 그러나, 이미 기존 시스템 기반으로 어느 정도 구현이 된 상태였고 실제 배포되어 일부 기능들은 업무 담당자들이 사용하고 있었습니다. 그렇기에 해당 프로젝트는 이미 작성된 코드량이 꽤 되었죠. 이 ...
AWS도 Setter를 사용하지 않는다
AWS도 Setter를 사용하지 않는다.AWS SDK 버전을 ‘1.11.x’에서 ‘2.x’로최근 회사 프로젝트의 AWS SDK(Java) 버전을 ‘1.11.x’에서 ‘2.x’으로 올리는 작업을 진행하였다.사내 시스템에 다량의 Email을 발송하는 기능이 있는데 실행 시간이 오래 걸렸기 때문에 개선이 필요하였다. 메일 발송 기능은 AWS SES 서비스를 사용하고 있었고 실행 시간을 단축하고자 메일 발송 로직 전체를 비동기로 변경하려고 알아보던 중 AWS SDK 버전이 2.x로 들어서면서 Nonblocking I/O를 지원하는 것...
가볍게 구분하는 개체, 객체, 인스턴스
개체 프로그래밍에서 이르는 모든 요소 OOP에서는 Class의 Instance 객체개체를 취급할 때 주체 측에서 상대적으로 이르는 말 인스턴스추상화 기법 중 분류/인스턴스화(classification/instantiation) 개념으로 접근인스턴스: 추상적인 개념과 구체적인 실체 사이 관계에 초점 참고 https://social.msdn.microsoft.com/Forums/ko-KR/c095ed0e-0f92-4c1b-8251-5950b4a1ca14/ctip-4406052404204913963650752-44061524042...
가상함수와 가상상속
가상 함수배경 및 필요성 비가상함수의 경우 부모 클래스형 포인터로 자식 클래스의 멤버 함수를 호출할 때 컴파일러는 포인터의 자료형을 기준으로 멤버 함수를 호출한다. 즉, 실제 가리키는 객체의 자료형을 기준으로 판단하지 않는다. 자식 클래스에서 부모 클래스 함수를 오버라이딩 했다는 것은, 해당 객체에서 호출되어야 하는 함수의 행위가 바뀐다는 것인데 비가상함수의 경우 이를 지원하지 못한다. 이는 다형성 개념과 충돌된다. 따라서 객체지향에서는 가상 함수라는 개념을 제공한다. 가상 함수를 이용하면 포인터의 자료형을 기반으로 호출대상을...