해당글은 그림으로 배우는 HTTP & Network 책의 7장 내용의 일부를 요약한 내용입니다. HTTP 는 주로 다음과 같은 약점을 가지고 있다. 이 약점들은 HTTP 만이 아닌, 다른 암호화하지 않은 프토로콜에도 공통되는 문제이다. 평문(암호화 하지 않은) 통신이기 때문에 도청 가능 통신 상대를 확인하지 않기 때문에 위장 가능 완전성을 증명할 수 없기 때문에 변조 가능 1. 평문이기 때문에 도청 가능 HTTP 리퀘스트와 리스폰스 통신 내용은 암호화 되지 않아 평문으로 HTTP 메시지를 보내게 된다. TCP/IP 는 도청 가능한 네트워크 암호화되어 있지 않은 통신에 약점이 있는 이유는 TCP/IP 의 구조의 통신 내용은 전부 통신 경로의 도중에 엿볼 수 있기 때문이다 인터넷은 전 세계를 경유하는 네트워..
조건부 로직은 프로그램을 복잡하게 만드는 주요 원흉이다. 따라서, 이해하기 쉽게 바꾸는 리팩터링이 필요하다. 복잡한 조건문은 10.1 조건문 분해하기 논리적 조합을 명확하게 다듬는 10.2 중복 조건식 통합하기 핵심 로직에 앞서 무언가를 검사해야 할 때 10.3 중첩 조건문을 보호 구문으로 바꾸기 똑같은 분기 로직이 여러 곳에 등장한다면 10.4 조건부 로직을 다형성으로 바꾸기 null 과 같은 특이 케이스의 처리 로직이 거의 똑같다면 10.5 특이 케이스 추가하기 (널 객체 추가하기) 특정 조건일때만 제대로 동작하는 코드가 있는 경우 10.6 어서션 추가하기 제어 플래그를 이용해 코드 동작 흐름을 변경하는 코드는 10.7 제어 플래그를 탈출문으로 바꾸기 10.1 조건문 분해하기 (Decompose Co..
데이터 구조는 프로그램에서 중요할 역할을 수행한다. 따라서, 데이터 구조에만 집중한 리팩터링만 한 묶음 따로 준비한 장이다. 하나의 값이 여러 목적으로 사용된다면 9.1 변수 쪼개기 변수 자체를 없애는게 가장 좋은 해결책일 때 9.3 파생 변수를 질의함수로 바꾸기 레코드나 클래스의 이름을 바꾸고 싶은 경우 9.2 필드 이름 바꾸기 참조인지 값인지 햇갈려 문제가 되는 경우 9.4 참조를 값으로 바꾸기 9.5 값을 참조로 바꾸기 의미를 알기 어려운 리터럴이 보이면 9.6 매직 리터럴 바꾸기 9.1 변수 쪼개기 (Split Variable) 개요 여러 번 대입하는 용도의 수집 변수가 아닌 이상 역할이 둘 이상인 변수가 있다면 쪼개야 한다 여러 용도로 쓰인 변수는 코드를 읽을때 커다란 혼란을 주고 버그를 낳는다..
지금까지는 프로그램 요소를 생성/제거하거나 이름은 변경하는 리팩터링을 다뤘다. 여기에 더해 요소를 다른 컨텍스트(클래스나 모듈 등)로 옮기는 일 역시 리팩터링의 중요한 축이다. 다른 클래스나 모듈로 함수나 필드를 옮길 때 8.1 함수 옮기기 8.2 필드 옮기기 문장을 함수 안이나 바깥으로 옮길 때 8.3 문장을 함수로 옮기기 8.4 문장을 호출한 곳으로 옮기기 같은 함수 안에서 옮길 때는 8.6 문장 슬라이드 하기 한 덩어리의 문장들이 기존 함수와 같은 일을 할 때 8.5 인라인 코드를 함수 호출로 바꾸기 반복문이 단 하나의 일만 수행하도록 보장하는 8.7 반복문 쪼개기 반복문을 완전히 없애 버리는 8.8 반복문을 파이프라인으로 바꾸기 8.1 함수 옮기기 (Move Function) 개요 좋은 소프트웨어..
모듈을 잘 분리하는 가장 중요한 기준은 각 모듈이 자신을 제외한 외부에 드러내지 않아야 할 비밀을 얼마나 잘 숨기느냐에 있다. 대표적인 데이터 구조 캡슐화 7.1 레코드 캡슐화하기 7.2 컬렉션 캡슐화하기 기본형 데이터 캡슐화 7.3 기본형을 객체로 바꾸기 길어진 함수를 쪼개는 7.4 임시 변수를 질의 함수로 바꾸기 추출하기/인라인의 클래스 버전 7.5 클래스 추출하기 7.6 클래스 인라인하기 클래스 사이의 연결 관계를 숨기는 7.7 위임 숨기기 너무 많이 숨길 경우를 위한 반대 기법 7.8 중개자 제거하기 알고리즘을 통채로 바꿔야 할 때 7.9 알고리즘 교체하기 7.1 레코드 캡슐화하기 (Encapsulate Record) 개요 레코드(해시)를 데이터 클래스로 전환하는 리팩터링 해시맵은 다양한 프로그래..
첫번째 카탈로그인 6장에는 가장 기본적이고 많이 사용하는 리팩터링들로 구성되어 있다. 가장 많이 사용하는 리팩터링 6.1 함수 추출하기 6.3 변수 추출하기 반대로 진행하는 리팩터링 6.2 함수 인라인하기 6.4 변수 인라인하기 함수와 변수 최적화 6.5 함수 선언 바꾸기 6.6 변수 캡슐화하기 6.7 변수 이름 바꾸기 6.8 매개변수 객체 만들기 함수를 고수준 모듈로 묶기 6.9 여러 함수를 클래스로 묶기 6.10 여러 함수를 변환 함수로 묶기 모듈의 처리 과정을 명확한 단계로 구분 짓기 6.11 단계 쪼개기 6.1 함수 추출하기 (Extract Function) 개요 가장 많이 사용하는 리팩터링 코드가 하는일을 파악한 다음, 함수로 추출하고 목적에 맞는 이름 붙이는 작업이다 적용 시점 코드가 무슨 일..
- Total
- Today
- Yesterday
- aws fargate
- HTTP
- AWS
- 마틴파울러
- 코드스멜
- 그림으로 공부하는 IT 인프라 구조
- Debug
- 지시의 언어
- 일잘러
- Refactoring
- 그림으로 배우는 HTTP & Network
- 리팩터링이란
- 디버깅
- 위임
- 일 잘하는 사람은 단순하게 말합니다
- https
- SSL
- 박소연
- 안심 첫 문장
- 변경함수
- 제어플래그
- Debugging
- 질의함수
- Debug It! 실용주의 디버깅
- 매개변수화
- 코드악취
- amazon aurora
- 조건부 로직
- 리팩토링
- amazon vpc
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |