일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- validator
- 조영호
- 북스터디
- 세이노의가르침
- 오브젝트
- 일상속귀한배움
- 개발자
- Object
- 자청
- 독후감
- AWS
- PRISMA
- nodejs
- 역행자
- 퓨처셀프
- Nestjs
- 클린코드
- 부자아빠가난한아빠2
- Validation
- Study
- BOOK
- nodemailer
- serverless
- 객체지향의사실과오해
- 스터디
- googleapis
- typescript
- UNiQUE
- futureself
- OOP
- Today
- Total
목록tech (45)
우당탕탕 우리네 개발생활

클린 코드 스터디를 비교적 최근에 마쳤다. 생에 첫 스터디였고 그 과정에서 우여곡절이 많았었는데 이에 대해 회고를 작성하고 마무리를 했었다.https://github.com/DAC13/STUDY_1_CLEAN_CODE GitHub - DAC13/STUDY_1_CLEAN_CODE: `클린코드`를 공부한 내용들을 나눕니다.`클린코드`를 공부한 내용들을 나눕니다. Contribute to DAC13/STUDY_1_CLEAN_CODE development by creating an account on GitHub.github.com 우연히 기회가 생겨 회사 동료와 함께 북스터디를 진행하기로 했다. 자세한 스터디 룰과 내용은 아래 링크에 있다.https://github.com/Udangtangtang-Driven..
class Logger { error(error: unknown) { this.log(error); } log(arg: unknown) { console.log(arg); }}class Test { private logger = new Logger(); private async doSomethingAsPrivate() { throw new Error('error'); } public async doSomething() { // ... this.doSomethingAsPrivate().catch(this.logger.error); }}function main() { const test = new Test(); test.doSomething();}main();위..

postgresql과 Prisma의 조합으로 compound key unique index 사용을 고민할 때 마주할 수 있는 문제와 이를 partial index를 통해 해결하는 방법을 공유하고자 합니다.배경특정 도메인에 대한 ERD를 구현하는 과정에서 특정 테이블에 대해 2개의 컬럼과 한 개의 nullable 컬럼의 조합으로 unique index를 만들기로 했습니다. 이 과정에서 deletedAt 컬럼(삭제된 Datetime을 기록하는 컬럼)을 nullable로 갖는 soft-delete 방법 역시 사용하기로 했습니다. 2개의 컬럼값과 deletedAt 컬럼이 null값을 갖는 행을 유효한 행으로 보고, deletedAt이 null값이 아닌 행들은 삭제된 데이터로 취급합니다.왜 soft-delete를..
최근 , , 등의 책들을 공부하면서 '추상화', '책임' 이라는 단어들이 뇌리에 박혔다. 객체들의 의사소통은 명확히 분리되어 있는 각자의 책임하에 정해놓은 외부 인터페이스를 통해서만 이뤄지는 것을 원칙으로 한다. 규모가 좀 더 커져 컴포넌트간의 소통, 서비스들간의 소통 역시 마찬가지인 것 같다. 이러한 외부 인터페이스(메서드)의 input(인수)과 output(리턴값)이 구체적이지만 그 외부 인터페이스의 내부 과정(구현)이 어떤식으로 이뤄지는지는 구체적으로 드러내지 않는다. 예를 들어, 캐셔에게 아이스아메리카노를 주문한 고객이 있다고 하자. 고객은 돈을 지불했고 그에 대한 결과로 아이스아메리카노를 캐셔를 통해 받기만 하면 된다. 고객은 캐셔가 아이스아메리카노를 직접 만들든 캐셔가 바리스타에게 주문을 건..

왜 를 공부하기로 결심했나?최근 스터디를 마쳤다. 이 스터디에 대한 기록은 스터디 리포지토리에 남겨 두었다. 는 개발자들이 기본기를 다지기 위해 읽을 수 있는 바이블로 오랫동안 알려져 왔다. 내 주변의 동료들도 대부분 이 책을 공부한 것 같았다. 그동안 묘한 소외감을 느껴왔었는데 드디어 이 책을 공부하게 되었다. 저자인 엉클 밥(로버트 C 마틴)의 오랜 경험과 고민이 녹아있는 철학을 이렇게 저렴하게 경험해도 되나 싶은 마음이 공부하는 내내 들었고 정말 몰입해서 가르침을 받을 수 있었다. 공부하면서 밑줄치고 메모했던 내용들을 블로그에 기록도 해두었다. 와 를 공부하면서 반복적으로 나에게 각인됐던 단어는 바로 '책임'이었다. 코드에서 책임을 분명히 나누는 것은 중요하다. 책임을 제대로 나누지 못한 코드는 ..

책을 통해 공부한 내용을 정리하기 위해 작성하였습니다. 제 개인적인 각색과 의견이 첨가되어 있어 실제 책의 내용과는 차이가 있을 수 있습니다.17장. 냄새와 휴리스틱- 경험상 당연한 플로우의 동작을 구현해야 한다. 당연한 동작을 구현하지 않으면 코드를 읽거나 사용하는 사람이 더 이상 함수 이름만으로 함수 기능을 직관적으로 예상하기 어렵다. 저자를 신뢰하지 못하므로 코드를 일일이 살펴야 한다. - 경계를 올바로 처리해야 한다. 코드는 올바로 동작해야 한다. 너무나도 당연한 말이다. 그런데 우리는 올바른 동작이 아주 복잡하다는 사실을 자주 간과한다. 흔히 개발자들은 머릿속에서 코드를 돌려보고 끝낸다. 자신의 직관에 의존할 뿐 모든 경계와 구석진 곳에서 코드를 증명하려 애쓰지 않는다. 부지런함을 대신할 지름길..

책을 통해 공부한 내용을 정리하기 위해 작성하였습니다. 제 개인적인 각색과 의견이 첨가되어 있어 실제 책의 내용과는 차이가 있을 수 있습니다.14장. 점진적인 개선- (내 생각) 해당 장은 Args 클래스에 대한 첫 작성부터 리팩터링까지의 과정이 디테일하게 기록되어있다. 그렇기에 양이 방대하다. 해당 장을 어떻게 공부하는 것이 내가 인사이트를 많이 얻을 수 있는 방법일까 생각해 봤을 때 우선은 전 과정을 차근차근 읽고 밑줄을 치거나 기록을 하는 방법이라고 생각했다. 공부를 하다 보니 원론적인 해당 클래스에 대한 기능 이해 자체가 부족함을 느꼈다. 그렇기에 메서드의 정확한 기능과 선언된 프로퍼티들의 의도의 파악이 어려웠고 이에 따라 리팩터링 역시 완전한 공감이 어려웠다. 그래서 아래와 같이 Nestjs +..

책을 통해 공부한 내용을 정리하기 위해 작성하였습니다. 제 개인적인 각색과 의견이 첨가되어 있어 실제 책의 내용과는 차이가 있을 수 있습니다.12장. 창발성- 리팩터링 단계에서는 소프트웨어 설계 품질을 높이는 기법이라면 무엇이든 적용해도 괜찮다.응집도 높이기결합도 낮추기관심사 분리하기시스템 관심사를 모듈로 나누기함수와 클래스 크기 줄이기더 나은 이름 선택하기- 코드는 개발자의 의도를 분명히 표현해야 한다. 개발자가 코드를 명백하게 짤수록 다른 사람이 그 코드를 이해하기 쉬워진다. 그래야 결함이 줄어들고 유지보수 비용이 적게 든다.우선, 좋은 이름을 선택한다.둘째, 함수와 클래스 크기를 가능한 줄인다.셋째, 표준 명칭을 사용한다. 예를 들어, 디자인 패턴은 의사소통과 표현력 강화가 주요 목적이다. 클래스가..