Django, Node.js, Flask, FastAPI, Express 등등, 스크립팅 언어의 프레임워크를 쓸 때는 API endpoint path의 순서를 조심해야한다. 나같은 경우엔 React와 Django에서 이 순서를 조심하다가 FastAPI에서 이 순서를 간과하여 굉장한 삽질을 해버렸다. 알고보니 대부분의 스크립팅 언어 프레임워크는 리퀘스트가 들어오면 내가 정의한 코드의 순서대로 경로를 매칭한다는 것이다. 즉, 광범위한 path를 코드 제일 위에 위치시키면 그것만 매칭해버린다는 것이다. 아래의 API 코드를 보자. @app.route('/users') def get_users(): ... @app.route('/users/') def get_user(user_id): ... 이 경우엔 /use..
DIP - 의존 역전 원칙(Dependency inversion principle) 고차원 모듈은 저차원 모듈에 의존하면 안 된다. 이 두 모듈 모두 다른 추상화된 것에 의존해야 한다. 추상화된 것은 구체적인 것에 의존하면 안 된다. 구체적인 것이 추상화된 것에 의존해야 한다. 로버트 C. 마틴은 DIP에 대해 이렇게 말했다. 이것만 보면 이 말이 의존 역전 원칙이라는 용어와 잘 맞물리지 않는다. 고차원 모듈은 뭐고 저차원 모듈은 뭐지? 먼저 이것부터 알아보자. 고차원 모듈(High Level Module) : Interface/abstraction 같이 저차원 모듈을 조종하는 모듈 저차원 모듈(Low Level Module) : 고차원 모듈이 일을 할 수 있게 도와주는 작은 모듈들 예를 들어 고차원 모..
객체 지향 설계 5원칙 - SOLID SOLID란? SOLID란 용어는 로버트 C.마틴(aka Uncle Bob)가 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙으로 제시한 원칙을 마이클 페더스가 앞글자만 따서 만들어진 용어이며. 다섯가지 원칙은 다음과 같다. SRP(Single Reponsibility Principle) : 단일 책임 원칙 OCP(Open Closed Principle) : 개방 폐쇄 원칙 LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 ISP(Interface Segregation Principle) : 인터페이스 분리 원칙 DIP(Dependency Inversion Principle) : 의존 역전 원칙 SOLID는 기존의 높은 응집도..
Clean Code 1. 깨끗한 코드 의도를 분명하게 이름을 지으라. 나쁜 예 int d; 좋은 예 int elapsedTimeDate; int daysSinceCreation; 코드의 맥락이 코드 자체에 명시적으로 드러나게 하여 정보를 충분히 제공해야한다. 그릇된 정보를 피하자 일관성을 유지하여 깔끔한 정보를 주자. 미리 정해진 예약어는 피해서 깔끔한 정보를 주자. l과 1, o와 0과 같이 헷갈릴 수 있는 문자를 피하자. 불용어를 쓰지 말자. class라는 이름을 이미 사용하고 있어서 klass라고 하고싶은가? 하지말자. 불용어는 중복이기도 하다. money와 moneyObject가 있다면 무엇을 뒤져야 하는지 헷갈리지않겠는가! 쓰지말자. 발음하기 쉬운 이름을 사용하자. 프로그래밍은 사회활동이다. a..