개발독서/코드품질 4

[켄트 벡의 Tidy First?] 9~16장 - 더 나은 소프트웨어 설계를 위한 32가지 코드 정리법

[Part 1 코드 정리법]09 설명하는 상수 10 명시적인 매개변수11 비슷한 코드끼리 12 도우미 추출 13 하나의 더미 14 설명하는 주석 15 불필요한 주석 지우기 [Part 2 관리]16 코드 정리 구분  Part 1 코드 정리법 09 설명하는 상수 - 리터럴 상수(literal constant)는 상징적인 상수(symbolic constant)로 만들기=> 리터럴 상수? 소스 코드에 기록된 텍스트 표현한 것=> 상징적인 상수? 변수처럼 고정 값 클래스 중 하나를 취할 수 있는 기호를 써서 상수를 정의한 것// 코드정리 전if response.code = 404// 코드정리 후PAGE_NOT_FOUND := 404if response.code = PAGE_NOT_FOUND - 같은 리터럴 상수가..

내 코드가 그렇게 이상한가요 (9장 설계의 건정성)

- [전체] 11가지 경우와 관련해 실제로 겪은 문제 상황이 있었는지?- [전역 변수] '영향 범위를 최소화하도록 설계했지만 중복 코드가 많아진 경우' VS '전역 변수 등의 사용으로 영향 범위가 넓은 경우'?- [메타 프로그래밍] 실제로 메타 프로그래밍이 사용 된 경험? 사용한 이유? 장단점?- [패키지 구조] '기술 중심(계층형) VS 비즈니스 중심(도메인형)', 기술 중심 패키징이 더 효율적인 경우는?  9장 설계의 건전성을 해치는 여러 악마9.1 데드 코드9.2 YAGNI 원칙9.3 매직 넘버9.4 문자열 자료형에 대한 집착9.5 전역 변수9.6 null 문제9.7 예외를 catch하고서 무시하는 코드9.8 설계 질서를 파괴하는 메타 프로그래밍9.9 기술 중심 패키징9.10 샘플 코드 복사해서 붙..

내 코드가 그렇게 이상한가요 (3~4장 클래스 설계 & 불변 활용하기)

성능이 중요한 경우 불변변수가 아닌 가변변수를 사용하라고 하는데, 불변변수가 가변변수보다 성능에 더 좋은 경우는 무엇이 있을지? 메모리 관리불변변수는 한 번 생성되면 변경할 수 없으므로 메모리 관리가 간단합니다. 하지만 가변변수는 값이 변경될 때마다 메모리를 할당하고 해제하는 오버헤드가 발생할 수 있습니다.캐시 일관성불변변수는 값이 변하지 않기 때문에 여러 스레드 간에 안전하게 공유될 수 있습니다. 이는 캐시 일관성을 유지하는 데 도움이 됩니다. 반면 가변변수는 값이 변경될 수 있기 때문에 캐시 일관성을 유지하는 데 추가적인 오버헤드가 발생할 수 있습니다.병렬화불변변수는 여러 스레드 간에 안전하게 공유될 수 있으므로 병렬화를 쉽게 할 수 있습니다. 가변변수의 경우 값이 변경될 때 동기화 메커니즘이 필요할..

내 코드가 그렇게 이상한가요 (1~2장 잘못된 구조의 문제 깨닫기 & 설계 첫걸음)

1장 잘못된 구조의 문제 깨닫기 1.1 의미를 알 수 없는 이름 1.2 이해하기 어렵게 만드는 조건 분기 중첩 1.3 수많은 악마를 만들어 내는 데이터 클래스 1.4 악마 퇴치의 기본2장 설계 첫걸음 2.1 의도를 분명히 전달할 수 있는 이름 설계하기 2.2 목적별로 변수를 따로 만들어 사용하기 2.3 단순 나열이 아니라, 의미 있는 것을 모아 메서드로 만들기 2.4 관련된 데이터와 로직을 클래스로 모으기 1장 잘못된 구조의 문제 깨닫기가독성과 유지보수성!2명 이상 개발 시 필요한 것?프로그램 설계2명 이상 개발 시 코드 작성 방법?가독성: 이해하기 쉬운 코드유지보수정: 코드 추가/수정이 쉬운 코드가독성과 유지보수성이 떨어지는 코드?의미를 알 수 없는 이름중첩이 많은 코드public 변수가 많은 클래스함..