10장: 코드 추가에 대한 두려움 떨쳐내기
코드 추가가 두려운 경우는 비현실적인 목표나 코드가 비용을 추가해서이다
불확실성 받아들이기: 위험 감수
겁을 먹으면 효과적으로 일할 수 없다. 지식을 구축하는 가장 효과적인 방법은 실험이지만 거기에는 요기가 필요하다
두려움 극복을 위한 스파이크 사용
스파이크는 자신감과 함께 첫 번째 실제버전을 더 좋게 만드는 데 사용할 수 있는 지식을 제공한다
이해관계자는 제품이 코드나 기능이 아니라 지식이라는 것을 인지할 필요가 있다
낭비나 위험에 대한 두려움 극복을 위한 사용 시간 비율 지정
비기능적 요구사항에 개발자 시간의 20%를 할당할것
불완전성에 대한 두려움 극복을 위한 점진적 개선
가면 증후군은 스스로 자격이 없는 사람으로 간주하여 누군가 자신을 사기꾼으로 폭로할까 봐 두려워하는 것
개발자의 삶에 맞춘 최적화
복사 및 붙여넣기가 속도에 미치는 영향
코드복제시 고려해야할 사항
- 코드를 공유하면 코드가 사용되는 모든 위치에 영향을 미치기 쉽다
- 전역적인 동작 변경 속도가 높다는 것은 코드의 여러 다른 위치에 동시에 영향을 줄수 있다
복사된 코드는 완전히 분리되므로 한곳을 위해 다른 곳을 손상시킬 위험이 없기 때문에 실험과 변경이 더 안전 하다
확장성을 통한 추가에 의한 변경
코드를 추가하는 또 다른 방법은 확장성을 이용하는것
- 우발적 복잡성 : 도메인에 관련 되지 않은 복잡성
- 본질적 복잡성 : 도메인으로 부터 상속된 일부 복잡성
추가에 의한 변경으로 이전 버전과의 호환성 확보
어떤 버전이 최신 버전인지 쉽게 알 수 있도록 일관된 명명 체계를 사용하는 것이 좋다
기능 토글(켜기/끄기)로 추가에 의한 변경
기능 토글의 이면에 있는 개념 : 최소 요구사항은 컴파일이 되어야 된다
‘추상화를 통한 분기’로 추가에 의한 변경
클래스로 타입 코드 대체 패턴을 사용해서 추상화를 통한 분기를 사용한다