개발 도서/Code Complete

25장 코드 튜닝 전략 목차 25.1 성능이랑? 25.2 코드 튜닝 소개 25.3 느리고 비대한 부분 25.4 측정 25.5 반복 25.6 코드 튜닝 단계 요약 코드 튜닝은 좋은 코드와는 거리가 멀 수도 있다. 하지만 성능을 개선하기 위해서 할 수 있는 여러 선택지 중 하나다. 25.1 성능이란? 좋은 코드와 사용자의 만족도는 상관 관계가 거의 없다. 사용자는 이 제품이 얼마나 좋은 코드 및 모듈화로 작성되었는지 궁금하지 않고, 원하는 동작이 깔끔하고 빠르게 작동하는지에 관심을 둔다. 사용자가 느끼는 성능은 개발자가 생각하는 품질과는 다른 경우가 많다. 25.2 코드 튜닝 소개 코드 튜닝은 성능을 향상시키는 가장 효과적인 방법이 아니다. 프로그램 아키텍처, 클래스 설계, 알고리즘 선택이 일반적으로 더 극..
24장 리팩터링 목차 24.1 소프트웨어 진화의 종류 24.2 리팩터링 소개 24.3 구체적인 리팩터링 24.4 안전한 리팩터링 24.5 리팩터링 전략 이번 장은 프로그래밍의 꽃(?)이라 할 수 있는 리팩터링에 대해 다룬다. 그동안 나는 기존 코드를 변경하고, 이를 리팩터링 했다고 생각해왔는데 해킹을 해왔었다는 것을 오늘 알았다... 24.1 소프트웨어 진화의 종류 코드 변경을 통해 소프트웨어는 진화할 수도 있고, 퇴보할 수도 있다. 어떻게 코드를 변경하는지가 소프트웨어의 품질을 크게 좌우한다. 코드를 작성할 때, 이후에 이를 쉽게 변경할 수 있도록 작성해야 한다. 일단 지금 동작하는 코드를 작성한 것이 아닌지 의심을 하는 습관을 갖고, 추후에 이 기능을 수정해야 할 때 이 부분만 수정하면 되는지에 대해..
23장 디버깅 목차 23.1 디버깅 이슈 소개 23.2 결함 발견 23.3 결함 수정 23.4 디버깅에서 심리학적으로 고려해야 할 사항 23.5 디버깅 도구 - 분명한 도구와 그렇지 않은 도구 디버깅은 프로그램에서 발견한 오류의 근본적인 원인을 수정하는 과정이다. 대부분의 프로젝트에서 디버깅이 전체 개발 시간의 50%를 차지한다. 23.1 디버깅 이슈 소개 디버깅을 통해 배울 수 있는 점 개발 중인 프로그램에 관해 배울 수 있다. 자신이 저지른 실수에 관해 배울 수 있다. 자신의 코드를 읽어야 하는 사람의 관점으로부터 코드의 품질에 관해 배울 수 있다. 문제를 해결하는 방법을 배울 수 있다. 결함을 수정하는 방법을 배울 수 있다. 이 책에서는 비효과적인 디버깅 접근 방법에 대해서도 설명하는데 내 이야기를..
22장 개발자 테스트 목차 22.1 소프트웨어 품질에서 개발자 테스트의 역할 22.2 개발자 테스트에 대한 바람직한 접근 방법 22.3 여러 가지 교모한 테스트 방법 22.4 전형적인 오류 22.5 테스트 지원 도구 22.6 테스트를 향상시키는 방법 22.7 테스트 기록을 보존하는 방법 몇 가지 테스트의 종류에 대해 알아보고 이번 장을 시작하자. 단위 테스트: 한 명의 개발자나 팀이 작성한 루틴 또는 클래스를 실행하는 테스트 컴포넌트 테스트: 여러 명의 개발자나 팀이 만든 클래스, 피키지, 컴포넌트 등을 실행하는 테스트 통합 테스트: 두 개 이상의 루틴 또는 클래스, 패키지, 컴포넌트 등이 만들어졌을 때, 이를 결합해서 실행하는 테스트 회귀 테스트: 이전에 실행했던 테스트를 다시 실행하는 것(현재 프로그..
21장 협력 구현 목차 21.1 협력 개발 방법 개요 21.2 짝 프로그래밍 21.3 공식적인 정밀 검토 21.4 여러 가지 협력 개발 방법 소프트웨어의 크기가 커지면서 협력 및 커뮤니케이션의 중요성이 점점 커지고 있다. 소프트웨어의 품질을 향상시키기 위한 협력 프로세스는 어떤 것이 있는지 살펴보도록 하자. 21.1 협력 개발 방법 개요 "협력 구현"은 짝 프로그래밍, 형식적인 정밀 검토, 비형식적인 기술 검토, 문서 읽기와 더불어 개발자들이 코드 작성과 제품 개발에 관련된 다른 작업에 대한 책임을 공유하는 데 사용하는 기법을 가리킨다. 개발자가 자신의 코드의 문제점을 발견하지 못한 것을 다른 사람은 볼 수 있다는 점에서 협력 구현 기법이 생기게 되었다. 대표적인 협력 구현 기법에는 짝 프로그래밍, 정밀..
20장 소프트웨어 품질 목차 20.1 소프트웨어 품질의 특성 20.2 소프트웨어 품질을 향상시키기 위한 기법들 20.3 품질 향상 기법의 상대적 효과성 20.4 품질 보증 활동 시기 20.5 소프트웨어 품질의 일반적인 원칙 20.1 소프트웨어 품질의 특성 이 장을 읽으면서 내가 생각한 저자가 말하고자하는 바는 소프트웨어 품질의 모든 특성을 만족시킬 수는 없지만 품질을 높이는 것이 비용과 시간을 절약할 수 있는 방법은 확실하다는 것이다. 서로 상충하는 특성(대표적으로 정확성과 효율성)들이 존재하기 때문에 완벽한 소프트웨어를 만들 수는 없지만, 모든 품질을 고려해 코드를 구현하는 것이 나에게 훨씬 이득이 될 것이다. 20.2 소프트웨어 품질을 향상시키기 위한 기법들 소프트웨어 품질 향상 프로그램의 몇가지 요..
19장 제어와 관련된 일반적인 이슈 목차 19.1 불린 표현식 19.2 복합문(블록) 19.3 널(Null) 명령문 19.4 지나치게 깊은 중첩 구조 처리 19.5 프로그래밍의 기초: 구조적 프로그래밍 19.6 제어 구조와 복잡성 19.1 불린 표현식 복잡한 표현식을 단순하게 만들기 복잡한 테스트를 새로운 불린 변수를 사용해 부분적인 테스트로 나눠라. 복잡한 표현식을 불린 함수로 옮겨라. 의사결정 테이블을 사용해 복잡한 조건을 대체하라. 불린 표현식을 사용할 때는 최대한 긍정문을 사용하는 것이 이해하기 쉽고, 또한 드모르간의 법칙을 적용해 부정 불린 테스트를 단순화하는 것이 좋다. if (!displayOK || !printerOK) ... 위의 예제를 드모르간의 법칙을 적용하면 아래 코드처럼 바꿀 수 ..
18장 테이블 활용 기법 목차 18.1 테이블 활용 기법에서 일반적으로 고려해야 할 사항 18.2 직접 접근 방식 18.3 인덱스 접근 방식 18.4 단계적 접근 방식 테이블 활용 기법은 어떠한 정보를 이해하기 위해서 논리적인 명령문을 사용하지 않고 테이블에 있는 정보를 검색하는 방식이다. 조건이 간단할 때는 논리적인 명령문이 더 쉽고 직접적이다. 조건문이 복잡해질수록 점점 더 테이블 방식에 끌리게 될 것이다. 18.1 테이블 활용 기법에서 일반적으로 고려해야 할 사항 테이블 기법의 문제점 테이블에 있는 엔트리를 어떻게 참조할 것인가에 대한 질문에 대답할 수 있어야 한다. 직접 접근 인덱스 접근 단계적 접근 테이블에 무엇을 저장할지 설명해야 한다. 18.2 직접 접근 방식 직접 접근 방식은 값들을 배열이..
17장 특이한 제어 구조 목차 17.1 여러 곳에서 반환하는 루틴 17.2 재귀문 17.3 goto 문 17.4 특이한 제어 구조에 대한 관점 17.1 여러 곳에서 반환하는 루틴 return 문 사용 시 참고할 가이드 더 읽기 쉬운 코드를 만들기 위해서 return을 사용하라. 복잡한 오류 처리를 단순화하기 위해서 보호절(루틴 중간에 사용되는 return 이나 exit)을 사용하라. 한 루틴에 있는 리턴의 수를 최소화하라. 17.2 재귀문 재귀 호출 사용 팁 재귀 호출이 중단되는지 확인하라. 무한 재귀 호출을 막기 위해서 안전 카운터를 사용하라. 한 루틴으로 재귀 호출을 제한하라. 스택을 감시하라. 팩토리얼이나 피보나치 수열을 계산하기 위해서 재귀문을 사용하지 말라. 17.3 goto 문 goto 문 사..
16장 반복문 제어 목차 16.1 반복문 종류 선택 16.2 반복문 제어 16.3 반복문을 쉽게 작성하는 법 - 안에서부터 밖으로 16.4 반복문과 배열의 연관성 16.1 반복문의 종류 선택 while 반복문을 사용하는 시기 시작 부분에서 반복의 여부를 판단하는 경우는 우리가 알고 있는 while 반복문을 사용하면 된다. 끝 부분에서 반복의 여부를 판단하는 경우는 do-while 반복문을 사용하면 된다. for 반복문을 사용하는 시기 for 반복문은 비교적 간단한 반복문이 필요할 때 사용한다. for 반복문의 핵심은 반복문의 맨위에서 설정하고 잊어버리면 된다는 점이다. 반복문을 제어하는 부분을 반복문 내부에서 작성할 필요가 없기 때문에 쉽게 사용할 수 있지만 작업 실행 중 반복문을빠져나가야 하는 상황이 ..
Chamy619
'개발 도서/Code Complete' 카테고리의 글 목록 (2 Page)