2. 추상화 계층 (2) 클래스, 인터페이스, 마이크로서비스 아키텍쳐(msa)
·
🤓 기술 학습 & 공부 기록/컴퓨터 일반
📚책 정보 - 좋은 코드, 나쁜 코드 (2022) - 톰 롱 (구글 소프트웨어 엔지니어) 지음 📝2장: 추상화 계층 1. null 값 및 의사코드 규약 2. 왜 추상화 계층을 만드는가? 3. 코드의 계층 4. 마이크로서비스는 어떤가? 📍클래스의 이상적인 크기 1. 줄 수 - 300줄 이내 2. 응집력(cohesion) - 한 클래스의 모든 멤버들이 얼마나 잘 속해있는지 순차적 응집력 - A -> B 순서로 요소들이 필요할 때 (한 요소의 출력이 다른 요소의 입력에 필요) - 예) 커피 원두를 갈고 -> 추출이 가능 기능적 응집력 - 한 가지 작업을 위해서 필요한 요소들 모두가 잘 모여 있는 것 - 예) 케이크 만들기 -> 반죽, 케이크 틀, 넓은 접시 등 3. 관심사의 분리(separation of co..
2. 추상화 계층 (1) 계층, API, 함수
·
🤓 기술 학습 & 공부 기록/컴퓨터 일반
📚책 정보 - 좋은 코드, 나쁜 코드 (2022) - 톰 롱 (구글 소프트웨어 엔지니어) 지음 📝2장: 추상화 계층 1. null 값 및 의사코드 규약 2. 왜 추상화 계층을 만드는가? 3. 코드의 계층 4. 마이크로서비스는 어떤가? 📍상위 수준의 문제 ~ 하위 수준의 문제 어떤 디바이스에서 유저가 서버로 메시지를 보낼 수 있는 기능을 만든다고 가정할 때, 상위 수준의 문제 - HTTP를 통해 서버로 메시지 전송 (어떻게?) 알고 있어야 할 하위 문제 (상위 문제에서 도출됨) - HTTP 연결 열기 - 문자열 메시지 보내기 - HTTP 연결 닫기 알 필요 없는 하위 문제 (상위 문제에서 도출됨) - 전송할 수 있는 형식으로 보낼 메시지 문자열 직렬화 (파싱) - HTTP 프로토콜 조작 - TCP 연결 -..
1. 코드 퀄리티
·
🤓 기술 학습 & 공부 기록/컴퓨터 일반
📚책 정보 - 좋은 코드, 나쁜 코드 (2022) - 톰 롱 (구글 소프트웨어 엔지니어) 지음 📝1장: 코드 품질 1. 코드는 어떻게 소프트웨어가 되는가 2. 코드 품질의 목표 3. 코드 품질의 핵심 요소 4. 고품질 코드 작성은 일정을 지연시키는가? 📍주석의 역할 - 주석은 그 코드가 무슨 일을 하는지가 아니라, 그 코드가 왜 거기 있는지를 설명해야 한다 📍코드 퀄리티를 나누는 것은 - 객관적으로 코드의 품질을 평가하려면, 코드를 통해 달성하려는 것(본질적인 목표) 에 대해 생각해야 함 - 본질적인 목표에 도움이 되면 고품질의 코드, 방해가 되면 저품질의 코드 📍코드를 작성할 때 목표로 삼을 4가지 1. 기본적으로 코드가 잘 작동해야 함 2. 코드는 작동이 멈추면 안된다 - 현재는 잘 돌아가지만, 미래..
<객체지향의 사실과 오해> 2.이상한 나라의 객체
·
🤓 기술 학습 & 공부 기록/컴퓨터 일반
1. 객체지향과 인지 능력📍 객체지향이 직관적인 이유는 객체지향이 인간의 기본적인 인지 능력에 기반을 두고 있기 때문- 인간은 세상을 자율적이고 독립적인 객체들로 분해할 수 있는 기본적인 인지 능력을 갖고 있다- 그리고 객체지향 개념도 이 인간의 인지 능력에 기반한다- 객체: 인간이 분명하게 인지하고 구별할 수 있는 물리적인 또는 개념적인 경계를 지닌 어떤 것- 객체지향 패러다임도 현실 세계와 마찬가지로, 인간(개발자)이 인지할 수 있는 다양한 소프트웨어 객체들이 모여 이루어져 있다는 믿음에서 출발- 하지만, 객체지향의 목적이 현실 세계를 모방하는 것은 아니다 (현실 세계의 객체와 소프트웨어 세계의 객체는 전혀 다름)예)- (현실 세계)사람이 직접 주문 금액을 계산- (객체지향) 주문 객체가 자신의 금..
<객체지향의 사실과 오해> 1.협력하는 객체들의 공동체
·
🤓 기술 학습 & 공부 기록/컴퓨터 일반
1. 협력하는 사람들📍 커피 공화국의 아침역할, 책임, 협력이 모든 곳에 존재예) 카페에서- 캐시어: 손님에게 커피가 준비됐음을 알리는 역할- 손님: 커피를 받아서 돌아가는 역할 📍 요청과 응답으로 구성된 협력요청- 손님 -> 캐시어: 커피 주문 요청- 캐시어 -> 바리스타: 커피 제조 요청 응답- 바리스타 -> 캐시어: 커피 제조 완료 응답- 캐시어 -> 손님: 커피 준비 완료 응답  📍 역할과 책임역할: 어떤 협력에 참여하는 특정한 사람이 협력 안에서 차지하는 책임이나 임무예)- 손님: 커피를 주문하는 임무- 캐시어: 손님으로부터 주문을 받는 임무- 바리스타: 주문된 커피를 제조할 책임 역할은 책임을 내포- 예) 범죄자를 검거할 책임을 거부하면 경찰이 아니다 역할의 특징 4가지1) 여러 사람이 ..
프로그래머의 뇌 - 8. 명명을 잘하는 방법
·
🤓 기술 학습 & 공부 기록/컴퓨터 일반
프로그래머의 뇌 (펠리너 헤르만스 지음) 📍목차 1장 | 코드 더 잘 읽기 1. 코딩 중 겪는 혼란에 대한 이해 2. 신속한 코드 분석 3. 프로그래밍 문법 빠르게 배우기 4. 복잡한 코드를 읽는 방법 2장 | 코드에 대해 생각하기 5. 코드를 더 깊이있게 이해하기 6. 코딩 문제해결을 더 잘하려면 7. 생각의 버그 3장 | 좋은 코드 작성하기 8. 명명을 잘하는 방법 📍이름이 중요한 이유 ✅식별자에는 타입, 변수, 메서드, 함수 등이 있으며, 식별자 이름이 중요한 이유는 대표적으로 4가지가 있다 1. 이름은 코드베이스의 상당 부분을 차지 예) 200만 줄의 코드에서 토큰의 33%, 문자열의 72%가 식별자에 해당 2. 코드 리뷰 시 이름의 역할 - 코드 리뷰 때도 식별자 이름이 자주 언급됨 - 평균적으..