3. 코드 계약
·
✒️Notes
📚책 정보 - 좋은 코드, 나쁜 코드 (2022) - 톰 롱 (구글 소프트웨어 엔지니어) 지음 📝3장: 다른 개발자와 코드 계약 1. 자신의 코드, 다른 개발자의 코드 2. 코드 계약 📍자신의 코드, 다른 개발자의 코드 - 프로젝트는 자신의 코드와 다른 개발자의 코드가 어우러져 만들어진다 - 내가 만든 코드는 남이 만든 코드에 의존하며, 반대도 마찬가지이다. 팀 프로젝트 관점에서 코드를 작성할 때 고려할 3가지 1. 자신에게 명백하다고 해서 다른 사람에게도 명백한 것은 아니다 - 코드를 만든 사람과, 만들어진 코드를 보는 사람 간 고민의 시간 차이가 날 수 밖에 없음 - 코드의 사용법, 역할, 히스토리 등을 주석으로 작성하는 것은 나쁘지 않다 2. 다른 개발자는 무의식중에 여러분의 코드를 망가뜨릴 수 있..
2. 추상화 계층 (2) 클래스, 인터페이스, 마이크로서비스 아키텍쳐(msa)
·
✒️Notes
📚책 정보 - 좋은 코드, 나쁜 코드 (2022) - 톰 롱 (구글 소프트웨어 엔지니어) 지음 📝2장: 추상화 계층 1. null 값 및 의사코드 규약 2. 왜 추상화 계층을 만드는가? 3. 코드의 계층 4. 마이크로서비스는 어떤가? 📍클래스의 이상적인 크기 1. 줄 수 - 300줄 이내 2. 응집력(cohesion) - 한 클래스의 모든 멤버들이 얼마나 잘 속해있는지 순차적 응집력 - A -> B 순서로 요소들이 필요할 때 (한 요소의 출력이 다른 요소의 입력에 필요) - 예) 커피 원두를 갈고 -> 추출이 가능 기능적 응집력 - 한 가지 작업을 위해서 필요한 요소들 모두가 잘 모여 있는 것 - 예) 케이크 만들기 -> 반죽, 케이크 틀, 넓은 접시 등 3. 관심사의 분리(separation of co..
2. 추상화 계층 (1) 계층, API, 함수
·
✒️Notes
📚책 정보 - 좋은 코드, 나쁜 코드 (2022) - 톰 롱 (구글 소프트웨어 엔지니어) 지음 📝2장: 추상화 계층 1. null 값 및 의사코드 규약 2. 왜 추상화 계층을 만드는가? 3. 코드의 계층 4. 마이크로서비스는 어떤가? 📍상위 수준의 문제 ~ 하위 수준의 문제 어떤 디바이스에서 유저가 서버로 메시지를 보낼 수 있는 기능을 만든다고 가정할 때, 상위 수준의 문제 - HTTP를 통해 서버로 메시지 전송 (어떻게?) 알고 있어야 할 하위 문제 (상위 문제에서 도출됨) - HTTP 연결 열기 - 문자열 메시지 보내기 - HTTP 연결 닫기 알 필요 없는 하위 문제 (상위 문제에서 도출됨) - 전송할 수 있는 형식으로 보낼 메시지 문자열 직렬화 (파싱) - HTTP 프로토콜 조작 - TCP 연결 -..
1. 코드 퀄리티
·
✒️Notes
📚책 정보 - 좋은 코드, 나쁜 코드 (2022) - 톰 롱 (구글 소프트웨어 엔지니어) 지음 📝1장: 코드 품질 1. 코드는 어떻게 소프트웨어가 되는가 2. 코드 품질의 목표 3. 코드 품질의 핵심 요소 4. 고품질 코드 작성은 일정을 지연시키는가? 📍주석의 역할 - 주석은 그 코드가 무슨 일을 하는지가 아니라, 그 코드가 왜 거기 있는지를 설명해야 한다 📍코드 퀄리티를 나누는 것은 - 객관적으로 코드의 품질을 평가하려면, 코드를 통해 달성하려는 것(본질적인 목표) 에 대해 생각해야 함 - 본질적인 목표에 도움이 되면 고품질의 코드, 방해가 되면 저품질의 코드 📍코드를 작성할 때 목표로 삼을 4가지 1. 기본적으로 코드가 잘 작동해야 함 2. 코드는 작동이 멈추면 안된다 - 현재는 잘 돌아가지만, 미래..
값vs타입, 원시 타입
·
✒️Notes/📕공부기록
📚 책 정보 - 우아한 타입스크립트 with 리액트 (2023) - 우아한 형제들 웹프론트개발그룹 지음 📝 목차 - 값vs타입 - 원시 타입 📍값vs타입 값 공간과 타입 공간의 이름은 서로 충돌하지 않음 - 타입과 변수를 같은 이름으로 정의할 수 있음 (타입스크립트 type 문법은 컴파일 시 제거되기 때문) type Developer = { isWorking: true }; const Developer = { isTyping: true }; // OK ES6의 class 문법은 값과 타입으로서 동시에 사용됨 - 타입스크립트에서는 클래스를 타입 어노테이션으로 사용 가능 - 자바스크립트에서는 런타임에서 객체로 변환되어 자바스크립트의 값으로 사용됨 class Developer { name: string; do..
구조적 타이핑, 구조적 서브타이핑, 덕 타이핑
·
✒️Notes/📕공부기록
📚 책 정보 - 우아한 타입스크립트 with 리액트 (2023) - 우아한 형제들 웹프론트개발그룹 지음 📝 목차 - 구조적 타이핑 - 구조적 서브 타이핑 📍구조적 타이핑 아래 코드에서는 비슷하면서 서로 다른 타입이 호환된다. 타입스크립트는 구조로 타입을 구분하기 때문. (다른 언어였으면 타입 이름이 다르면 호환 불가) interface Dog { age: number; } interface Man { age: number; } let sundance = { age: 10 }; let kim = { age: 30 }; sundance = kim; // ok kim = sundance; // ok 📍구조적 서브타이핑 타입스크립트에서 타입은 집합의 개념이기 때문에, 특정 값이 string or number 타..
프로그래머의 뇌 - 8. 명명을 잘하는 방법
·
✒️Notes/📕공부기록
프로그래머의 뇌 (펠리너 헤르만스 지음) 📍목차 1장 | 코드 더 잘 읽기 1. 코딩 중 겪는 혼란에 대한 이해 2. 신속한 코드 분석 3. 프로그래밍 문법 빠르게 배우기 4. 복잡한 코드를 읽는 방법 2장 | 코드에 대해 생각하기 5. 코드를 더 깊이있게 이해하기 6. 코딩 문제해결을 더 잘하려면 7. 생각의 버그 3장 | 좋은 코드 작성하기 8. 명명을 잘하는 방법 📍이름이 중요한 이유 ✅식별자에는 타입, 변수, 메서드, 함수 등이 있으며, 식별자 이름이 중요한 이유는 대표적으로 4가지가 있다 1. 이름은 코드베이스의 상당 부분을 차지 예) 200만 줄의 코드에서 토큰의 33%, 문자열의 72%가 식별자에 해당 2. 코드 리뷰 시 이름의 역할 - 코드 리뷰 때도 식별자 이름이 자주 언급됨 - 평균적으..
프로그래머의 뇌 - 7. 생각의 버그
·
✒️Notes/📕공부기록
프로그래머의 뇌 (펠리너 헤르만스 지음) 📍목차 1장 | 코드 더 잘 읽기 1. 코딩 중 겪는 혼란에 대한 이해 2. 신속한 코드 분석 3. 프로그래밍 문법 빠르게 배우기 4. 복잡한 코드를 읽는 방법 2장 | 코드에 대해 생각하기 5. 코드를 더 깊이있게 이해하기 6. 코딩 문제해결을 더 잘하려면 7. 생각의 버그 📍왜 2번째 프로그래밍 언어가 1번째 보다 쉬울까? ✅전이(transfer) 이미 배운 지식이 다른 영역에서 유용하게 사용됨 근거리 전이 : 자바와 C# 처럼 가까운(비슷한) 영역 사이의 지식이 전이 원거리 전이 : C와 파이썬처럼 먼 영역 사이의 지식의 전이 => 근거리 전이가 일어날 가능성이 더 높다 ✅LTM에 저장된 프로그래밍 지식이 새로운 프로그래밍 개념을 배우는데 도움이 되는 형태 ..