본문 바로가기
반응형

OOP4

TypeScript 환경에서 class-transformer 적극적으로 사용하기 요즘 같이 분산 환경이 적극적으로 도입 되고 있는 시기에는 꼭 프론트엔드가 아니더라도 백엔드 환경에서도 외부의 HTTP API를 호출하는 일은 당연한 일입니다. 그래서 HTTP API (저는 Rest API라는 단어는 선호하진 않습니다. 어차피 규약 지키고 있는 경우가 거의 없거든요) 를 통해 원격 서버에서 JSON 객체를 읽어오는 작업을 자주 하게 되는데요. 응답으로 넘어온 JSON 객체는 리터럴 객체이지 클래스의 인스턴스가 아닙니다. Axios를 비롯해서 Got 등 NodeJS & TypeScript 환경에서 자주 사용하는 HTTP API 중 어느 것도 클래스의 인스턴스를 응답으로 넘겨주진 않습니다. Spring이나 닷넷등의 다른 백엔드 프레임워크를 사용해본 분들이라면 여기서 이상한 괴리감을 느낄 수.. 2021. 11. 24.
자바 공화국 오늘 교보에서 주문한 단위 테스트 책을 받았다. Xunit 테스트 패턴 책 (번역이 별로다 ㅠ) 이후에 테스트와 관련해서는 되게 오랫만에 본 재밌는 책이여서 이건 우리팀 위키에 정리해서 공유해야겠다는 생각이 들었다. 이 생각으로 최근의 채용 과정을 떠오르게되니 조금 우울해졌다. 과제형 프로젝트를 채용 과제로 삼으면서 많은 분들의 프로젝트 결과물도 보고, 관련해서 면접도 본다. 면접에서 과제에 대한 코드리뷰를 하다보면 지원자분들이 항상 물어보는게 있다. "피드백 주신 그걸 좀 더 깊게 배우려면 어떤 책이나 영상을 보면 되나요?" 이 질문을 항상 받는데, 대답해주기가 애매하다. 왜냐면 우리나라의 대부분의 좋은 개발 컨텐츠가 Java를 기반으로 나왔기 때문이다. (우리 회사는 NodeJS이고, 지원자분 역시 .. 2021. 10. 24.
객체지향 (Object Oriented) 디자인 (Design) 여기서 이야기하는 디자인은 코드 설계와 동일하게 봐도 무방하다. 디자인이 왜 중요한가? 요즘의 웹 애플리케이션 개발에서는 디자인에 대한 지식이 없더라도, 원하는 바대로 작동하는 웹 애플리케이션을 만들 수 있다. 특히나 최근의 언어들은 문법이 너무나 친절하여 자신의 생각을 순차적으로 정리만 할 수 있다면 누구나 원하는 웹 애플리케이션을 만들 수 있다. 작은 규모의 웹 애플리케이션에서는 이렇게 디자인을 전혀 고려하지 않고, 기능 구현에만 신경써도 문제는 없다. 아니, 아예 좋지 못한 디자인이라해도 문제가 되지 않는다. 객체간의 복잡한 관계, 계층화 되지 않은 구조 등 모듈화가 전혀 없어도 개발자의 머릿속에 모든 것들을 담아두고 개발을 할 수 있기 때문이다. 반대로 얘기하면 특정 누군가만 손댈수 있고, 그 사.. 2021. 8. 13.
Public / Private 인터페이스 여기서의 인터페이스란 class, interface, abstract class 등에서 이야기하는 interface 가 아니다. 서로 다른 객체간에 어떤 것들을 사용할 수 있을지에 대한 명세를 이야기한다. Method, Function 등이 모두 포함된다. (위 2개 그림은 모두 동일한 원 (클래스)를 가지고 있으며, 화살표 (의존)만 다르다.) 똑같은 클래스들을 가지고, 누구는 첫번째처럼 얼기설기 얽혀있는 구조로 모든 객체가 서로 연결된 구조를 만들고, 누구는 두번째처럼 각 클래스들이 전달 하는 메세지와 관계가 명확하게 드러내도록 만든다. 이렇게 차이 나는 이유는 클래스가 하는 일에만 집중하고, 무엇을 드러내고, 무엇을 숨길지에 대해 전혀 고려하지 않았기 때문이다. 첫번째는 이를 전혀 고려하지 않아서 .. 2021. 7. 28.

728x90