일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 부자아빠가난한아빠2
- nodejs
- PRISMA
- BOOK
- 스터디
- 북스터디
- nodemailer
- AWS
- 조영호
- googleapis
- validator
- OOP
- UNiQUE
- 퓨처셀프
- Nestjs
- 역행자
- 클린코드
- 오브젝트
- futureself
- 세이노의가르침
- 자청
- Object
- 일상속귀한배움
- 독후감
- typescript
- 객체지향의사실과오해
- Study
- serverless
- Validation
- 개발자
- Today
- Total
목록클린코드 (11)
우당탕탕 우리네 개발생활
책을 통해 공부한 내용을 정리하기 위해 작성하였습니다. 제 개인적인 각색과 의견이 첨가되어 있어 실제 책의 내용과는 차이가 있을 수 있습니다.17장. 냄새와 휴리스틱- 경험상 당연한 플로우의 동작을 구현해야 한다. 당연한 동작을 구현하지 않으면 코드를 읽거나 사용하는 사람이 더 이상 함수 이름만으로 함수 기능을 직관적으로 예상하기 어렵다. 저자를 신뢰하지 못하므로 코드를 일일이 살펴야 한다. - 경계를 올바로 처리해야 한다. 코드는 올바로 동작해야 한다. 너무나도 당연한 말이다. 그런데 우리는 올바른 동작이 아주 복잡하다는 사실을 자주 간과한다. 흔히 개발자들은 머릿속에서 코드를 돌려보고 끝낸다. 자신의 직관에 의존할 뿐 모든 경계와 구석진 곳에서 코드를 증명하려 애쓰지 않는다. 부지런함을 대신할 지름길..
책을 통해 공부한 내용을 정리하기 위해 작성하였습니다. 제 개인적인 각색과 의견이 첨가되어 있어 실제 책의 내용과는 차이가 있을 수 있습니다.14장. 점진적인 개선- (내 생각) 해당 장은 Args 클래스에 대한 첫 작성부터 리팩터링까지의 과정이 디테일하게 기록되어있다. 그렇기에 양이 방대하다. 해당 장을 어떻게 공부하는 것이 내가 인사이트를 많이 얻을 수 있는 방법일까 생각해 봤을 때 우선은 전 과정을 차근차근 읽고 밑줄을 치거나 기록을 하는 방법이라고 생각했다. 공부를 하다 보니 원론적인 해당 클래스에 대한 기능 이해 자체가 부족함을 느꼈다. 그렇기에 메서드의 정확한 기능과 선언된 프로퍼티들의 의도의 파악이 어려웠고 이에 따라 리팩터링 역시 완전한 공감이 어려웠다. 그래서 아래와 같이 Nestjs +..
책을 통해 공부한 내용을 정리하기 위해 작성하였습니다. 제 개인적인 각색과 의견이 첨가되어 있어 실제 책의 내용과는 차이가 있을 수 있습니다.12장. 창발성- 리팩터링 단계에서는 소프트웨어 설계 품질을 높이는 기법이라면 무엇이든 적용해도 괜찮다.응집도 높이기결합도 낮추기관심사 분리하기시스템 관심사를 모듈로 나누기함수와 클래스 크기 줄이기더 나은 이름 선택하기- 코드는 개발자의 의도를 분명히 표현해야 한다. 개발자가 코드를 명백하게 짤수록 다른 사람이 그 코드를 이해하기 쉬워진다. 그래야 결함이 줄어들고 유지보수 비용이 적게 든다.우선, 좋은 이름을 선택한다.둘째, 함수와 클래스 크기를 가능한 줄인다.셋째, 표준 명칭을 사용한다. 예를 들어, 디자인 패턴은 의사소통과 표현력 강화가 주요 목적이다. 클래스가..
책을 통해 공부한 내용을 정리하기 위해 작성하였습니다. 제 개인적인 각색과 의견이 첨가되어 있어 실제 책의 내용과는 차이가 있을 수 있습니다.11장. 시스템- 시스템 제작과 시스템 사용을 분리하라. 소프트웨어 시스템은 (애플리케이션 객체를 제작하고 의존성을 서로 '연결'하는) 준비 과정과 (준비 과정 이후에 이어지는) 런타임 로직을 분리해야 한다. public getService(): Service { if (service === null) { service = new MyServiceImpl(...); // 모든 상황에 적합한 기본값일까? } return service;}- 위 방법은 초기화 지연(Lazy Initialization) 혹은 계산 지연(Lazy Evaluati..
책을 통해 공부한 내용을 정리하기 위해 작성하였습니다. 제 개인적인 각색과 의견이 첨가되어 있어 실제 책의 내용과는 차이가 있을 수 있습니다.10장. 클래스- 클래스 체계. 클래스를 정의하는 표준 자바 관례에 따르면, 가장 먼저 변수 목록이 나온다. 정적(static) 공개(public) 상수가 있다면 맨 처음에 나온다. 다음으로 정적 비공개(private) 변수가 나오며, 이어서 비공개 인스턴스 변수가 나온다. 공개 변수가 필요한 경우는 거의 없다. 변수 목록 다음에는 공개 함수가 나온다. 비공개 함수는 자신을 호출하는 공개 함수 직후에 넣는다. 즉, 추상화 단계가 순차적으로 내려간다. 그래서 프로그램은 신문 기사처럼 읽힌다. - 캡슐화. 변수와 유틸리티 함수는 가능한 공개하지 않는 편이 낫지만 반드시..
책을 통해 공부한 내용을 정리하기 위해 작성하였습니다. 제 개인적인 각색과 의견이 첨가되어 있어 실제 책의 내용과는 차이가 있을 수 있습니다.7장. 오류 처리- 먼저 강제로 예외를 일으키는 테스트 케이스를 작성한 후 테스트를 통과하게 코드를 작성하는 방법을 권장한다. 그러면 자연스럽게 try 블록의 트랜잭션 범위부터 구현하게 되므로 범위 내에서 트랜잭션 본질을 유지하기 쉬워진다. - 확인된 예외는 OCP를 위반한다. 확인된 예외는 캡슐화를 깨버린다.-> (부연 설명) OCP란 기능 추가에는 열려있고, 기능 수정에는 닫혀있어야 함을 나타내는 객체지향의 대표적인 원칙이다. 매번 어떤 요구사항이 있을 때마다 객체의 특정 메서드를 수정해야한다면 그건 OCP를 위반한다고 볼 수 있다. 기존 기능들을 그대로 유지하..
책을 통해 공부한 내용을 정리하기 위해 작성하였습니다. 제 개인적인 각색과 의견이 첨가되어 있어 실제 책의 내용과는 차이가 있을 수 있습니다.4장. 주석- (내 생각) 코드는 영어를 기반으로 되어 있다. 영어를 유창하게 사용할 수 있는 사람들과 상대적으로 그러지 못한 사람들에게 다가오는 좋은 네이밍의 편안함은 정도가 다르다. 영어가 모국어가 아닌 나라들에서는 좀 더 주석에 관대해져야 하는 부분들이 있지 않을까 생각해본다. 간단한 영어 문장조차 해석하기 버거워하는 동료에게 "이정도는 정말 자세하게 잘 작성한 네이밍이니 공부해서라도 익숙해져주길 바래" 라고 일종의 무언의 압박을 주는 편이 맞는 걸까? 그렇다면 또 이러한 동료들을 위해 매 함수들마다 친절하게 모국어로 주석을 일일이 달아줘야 하는가? 물론 저자..
책을 통해 공부한 내용을 정리하기 위해 작성하였습니다. 제 개인적인 각색과 의견이 첨가되어 있어 실제 책의 내용과는 차이가 있을 수 있습니다.0장. 들어가면서- 깨끗한 코드를 작성하는 방법은 배우기 어렵다. 단순히 원칙과 패턴을 안다고 깨끗한 코드가 나오지 않는다. 고생을 해야 한다. 스스로 연습하고 실패도 맛봐야 한다. 남들이 시도하다 실패하는 모습도 봐야한다. 그들이 넘어지고 일어서는 모습도 봐야한다. 결정을 내리느라 고민하는 모습, 잘못된 결정으로 대가를 치르는 모습도 봐야한다. - 이 책을 읽는 동안 마음 고생할 준비를 하기 바란다. 비행기 안에서 심심풀이로 읽어보는 기분 좋은 책이 아니다. 열심히, 아주 열심히 독파해야 하는 책이다.1장. 깨끗한 코드- 비유를 하나 들겠다. 자신이 의사라 가정하..