전체 글 26

내가 느낀 객체지향 프로그래밍에 대해서 (의존성을 중심으로)

객체 지향 프로그래밍은 현실의 중요한 문제를 해결 하기 위한 과정을 배치는 방법이다. 반대로, 절차 지향은 문제 해결 과정을 서술한다. 순서대로 나열된다는 뜻이다. 왜 보통 사람들에게 익숙한 문제를 서술하는 방법을 사용하지 않는 방법이 등장 했을까? 순차적으로 작성하는 방법은 마치 자전거 체인 처럼 부속품 사이에 커다란 의존성이 생긴다. 의존성이 여럿이면 문제를 해결하기 어렵게 한다. 하나의 문제가 아니라 여러개의 문제를 해결해야 하기 때문이다. 반면, 배치 하는 방식을 사용하면 의존이 생기지 않는다. 순차적인 방식보다 문제의 범위를 더 좁힐 수 있다고 생각한다.

자바 2024.04.06

Node.js Event Loop

들어가며 회사에서 Node.js를 레거시로 쓰고있다. 그러나 nodejs에 대해서는 매우 대강 알고 있었다. 그래서 이번 기회에 nodejs의 event loop에 공부하고 적어보려한다 Libuv Node.js의 이벤트 루프는 Libuv를 기반으로 동작한다. https://nodejs.org/ko/docs/guides/dont-block-the-event-loop (노드 공식문서) Libuv는 리눅스에서 epoll를 기반으로 동작한다. 결국은 node js의 이벤트 루프 동작방식을 이해하려면 epoll에 대해서 알아야 한다. epoll 기반지식 epoll를 이해하려면 file descriptor, i/o select function에 대해서 알아야 한다. File descriptor file descri..

서버 2023.07.09

저는 이런 코드가 읽기 힘들더라구..요 ㅜㅠ

가변 변수 사용하기 let, var 처럼 가변 변수는 쓰지 말아주세요... 코드가 어떤 흐름으로 전개되는지 이해하기 어렵습니다 Else문 쓰기 Else문은 코드의 맥락을 이해하기 어렵게 합니다. 최대한 자제 하는것을 추천 합니다! 코드에 들여쓰기 여러번 하기 들여쓰기는 최대 한번만 나오게 해주세요. 이중 삼중으로 겹친 코드는 읽기 어렵습니다.. 람다 줄여쓰기 v.types.map((t) => t.option.name) i.values[i.names.indexOf(t.option.name)] === t.variation.value v, t, i 변수가 무엇인지 아시겠나요??! 최대한 있는 그대로 써주세요! 주석 엄청 많이 달기 주석에 왜 이 코드를 적었는지만 써주세요 ㅜ... 슈퍼 클래스 클래스는 하나의 ..

자바 2023.07.07

소규모 팀에서의 Spring 사용법 (패키지 구조, 테스트 코드를 중심으로)

들어가며 스타트업에서 3년 가량 스프링을 사용해오면서 여러 패키지 구조를 검토하고 사용해봤다. 참고로 이 글은 내가 3년차나 되니까 이렇게 설계하는게 좋으니까 그렇게 해야돼! 이런 글이 절대로 아니다. 지극히 주관적으로 생각했을때 이 구조가 좋더라는 내 생각을 작성한 글이다. 계층형 구조 스프링을 처음 접하면 일반적으로 많이 사용하게 되는 구조다. 스프링 입문 인터넷 강의, 서적 등에서 많이 언급되는 구조다. 계층형 구조의 장점은, 파악하기 쉽다는 것이다. 너무나 익숙하니까... 당연하다. 단점은 카테고리 (패키지)가 적기 때문에 클래스가 많아질 수록 개발 해야 될 클래스를 찾기 어렵다. 도메인형 구조 계층형 구조보다 더 나은 구조 없나?.. 둘러보다 사용해본 구조다. 각각의 도메인 (coupon, me..

서버 2023.07.03