이번 장에서는 시야를 넓혀 리팩터링 전반에 적용되는 원칙 몇 가지를 이야기하는 시간을 가져보자. 2.1 리팩터링 정의 리팩터링 : [명사] 소프트웨어의 겉보기 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법 리팩터링(하다) : [동사] 소프트웨어의 겉보기 동작은 그대로 유지한 채, 여러 가지 리팩터링 기법을 적용해서 소프트웨어를 재구성하다 수많은 사람이 코드를 정리하는 작업을 모조리 리팩터링이라고 표현하고 있는데, 앞에서 제시한 정의한 방식에 따라 코드를 정리하는 것만이 리팩터링이다. 리팩터링을 동작을 보존하는 작은 단계들을 거쳐 코드를 수정하고, 이러한 단계 들을 순차적으로 연결하여 큰 변화를 만들어내는 일이다. 개별 리팩터링은 아주 작을 수도 있고, 작은 단계 여..
1장은 리팩터링의 진행 절차에 대한 구체적인 예시를 보여주는 리팩터링 맛보기 장이다. 하지만 1장의 읽어보고 내용을 요약하는 게 무의미하다고 보여서 과감히 생략하고... 책을 읽는데 앞서 중요하다고 보이는 서문의 내용 일부를 대신 정리했다. 리팩터링이란 - 리팩터링은 겉으로 드러나는 코드의 기능(겉보기 동작)은 바꾸지 않으면서 내부 구조를 개선하는 방식으로 소프트웨어를 수정하는 과정이다. - 버그가 생길 가능성을 최소로 줄이면서 코드를 정리하는 정제된 방법으로 코드를 작성하고 난 뒤에 설계를 개선하는 일이다. - 예전부터 따르던 소프트웨어 개발 방법은 설계부터 하고 코드를 작성하는 순서다. 하지만 시간이 흐르면서 코드는 수정되고 시스템의 설계에 맞춘 구조는 점차 뒤죽박죽이 되어간다. 공학에 가깝던 코딩 ..
리팩터링 적용 방법을 아는 것과 제때 적용할 줄 아는 것은 다르다. 리팩터링을 언제 시작하고 언제 그만할지를 판단하는 일은 리팩터링의 작동 원리를 아는 것 만큼 중요하다. 그리고 우리는 리팩터링이 필요한 코드들에 일정한 패턴이 있다는 사실을 발견했다. 이를 설명하는데 냄새(악취)란 표현을 사용했다. 하지만 리팩터링을 언제 멈춰야 하는지를 판단하는 정확한 기준을 제시하지 않을 것이다. 우리 경험에 따르면 숙련된 사람의 직관만큼 정확한 기준은 없다. 종료 기준보다는 리팩터링하면 해결할 수 있는 문제의 징후를 제시하겠다. 3.1 기이한 이름 (Mysterious Name) 코드를 명료하게 표현하는데 가장 중요한 요소 하나는 바로 '이름'이다. 함수, 모듈, 변수, 클래스 등은 그 이름만 보고도 각각이 무슨 일..
그림으로 공부하는 IT 인프라 구조 8장 내용 정리 1. 응답과 처리량 시스템 성능 지표에는 응답(Response)과 처리량(Throughput)있다. 응답은 처리 하나당 소요 시간을 의미하며, 처리량은 단위 시간당 처리하는 양을 의미한다. 이 두 가지를 혼동하지 않고 명확히 구별하는 것이 중요하다. 응답시간 : 검색 엔진에서 검색 버튼을 누른 후 결과가 표시되기까지 걸리는 시간 (사용자 관점 지표) 처리량 : 검색 엔진이 초당 받아들이는 사용자 수 (서비스 제공자 관점 지표) 편의점을 예를 들어, 계산대가 두 곳이며, 계산 담당자 두 명의 능력이 동일하다고 가정하고, 고객들이 두 계산대에 균등하게 줄을 서 있다고 하자. 이때 줄의 끝에 선 후 계산이 끝나기까지걸리는 시간이 응답 시간이다. 또한, 한 대..
그림으로 공부하는 IT 인프라 구조 7장 내용 정리 1. 안정성 및 이중화 상용 시스템을 장애로부터 보호하기 위해서 빠트릴 수 없는 구조가 있다. 그것은 바로 안정성과 이중화다. 안정성 이란? 안정성, 고가용성이란, 서비스가 가능한 한 멈추지 않도록 하는 것을 의미한다. 이중화, 감시, 백업 세 가지 수단을 구현해서 이를 실현할 수 있다. 목표 실현수단 고장, 장애에 의한 정지가 발생하지 않을 것 컴포넌트 이중화 고장, 장애가 발생해도 복구할 수 있을 것 고장 ,장애가 발생한 것을 검출할 수 있을 것 컴포넌트 감시 고장, 장애가 발생해도 데이터가 보호될 것 데이터 백업 이중화란? 이중화는 기능을 병렬로 처리하여 하나에 장애가 발생해도 서비스가 지속되게 하는 것이다. (예: 카운터가 여럿인 편의점) 이중화..
마지막 장이다. 이번 장에서는 객체 지향 프로그래밍에서 가장 유명한 특성인 상속을 다룬다. 이는 아주 유용한 동시에 오용하기 쉽다. 더욱이 상속은 발등에 불이 떨어져서야 잘못 됐음을 알아차리는 경우가 많다. 특정 기능을 상속계층구조의 위나 아래로 옮길 때 12.1 메서드 올리기 12.2 필드 올리기 12.3 생성자 본문 올리기 12.4 메서드 내리기 12.5 필드 내리기 계층 사이에 클래스를 추가하거나 제거하는 12.8 슈퍼클래스 추출하기 12.7 서브클래스 제거하기 12.9 계층 합치기 필드값에 따라 동작이 달라지는 코드의 경우 필드를 서브클래스로 대체하고 싶을 때 12.6 타입 코드를 서브클래스로 바꾸기 상속이 잘못된 곳에서 사용되거나 나중에 환경이 변해 문제가 생길 경우 12.10 서브클래스를 위임..
모듈과 함수는 소프트웨어를 구성하는 빌딩 블록이며, API 는 블록들을 끼워 맞추는 연결부다. 이런 API 를 이해하고 사용하기 쉽게 만드는 일은 중요한 동시에 어렵다. 그래서 API를 개선하는 방법을 새로 깨달을 때마다 그에 맞게 리팩터링을해야 한다. 데이터 갱신과 조회가 섞여 있다면 11.1 질의 함수와 변경 함수 분리하기 값 하나 때문에 여러개로 나뉜 함수들은 11.2 함수 매개변수화하기 매개변수가 그저 함수의 동작 모드를 전환하는 용도로만 쓰이면 11.3 프래그 인수 제거하기 데이터 구조가 함수 사이를 건너다니면서 필요 이상으로 분해될 떄 11.4 객체 통째로 넘기기 무언가를 매개변수로 건네 피호출 함수와 호출 함수 중 어디서 판단할지에 관해서는 불변의 진리는 없으니 상황이 바뀔때마다 11.5 질..
해당글은 그림으로 배우는 HTTP & Network 책의 7장 내용의 일부를 요약한 내용입니다. HTTPS 는 HTTP 프로토콜에 암호화, 인증, 완전성 보호를 더하기 위해 사용하는 프로토콜이다. 1. HTTP 에 암호화와 인증과 완전성 보호를 더한 HTTPS HTTP 통신은 암호화되지 않은 평문으로 실시된다. 예를 들면 웹 페이지에서 신용 카드 번호를 입력했을 때 통신이 도청되면 신용 카드 번호를 도청하게 된다. 또한 HTTP 에는 통신 상대의 서버나 클라이언트를 인증하는 수단이 없다. 따라서, 실제로 의도한 통신 상대와 통신하고 있지 않을 가능성과 수신한 메시지가 도중에 변조되어 있을 가능성이 있다. 이러한 문제를 해결하기 위해서는 암호화와 인증과 완전성 보호 같은 구조를 HTTP 에 추가할 필요가 ..
- Total
- Today
- Yesterday
- 일 잘하는 사람은 단순하게 말합니다
- 리팩터링이란
- 질의함수
- 변경함수
- Debug
- Debugging
- https
- 안심 첫 문장
- 조건부 로직
- Debug It! 실용주의 디버깅
- 일잘러
- 그림으로 공부하는 IT 인프라 구조
- 리팩토링
- 지시의 언어
- 코드악취
- 마틴파울러
- Refactoring
- aws fargate
- 디버깅
- 위임
- HTTP
- 그림으로 배우는 HTTP & Network
- AWS
- SSL
- 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 |