10장: 코드 추가에 대한 두려움 떨쳐내기

10장: 코드 추가에 대한 두려움 떨쳐내기

코드 추가가 두려운 경우는 비현실적인 목표나 코드가 비용을 추가해서이다

불확실성 받아들이기: 위험 감수

겁을 먹으면 효과적으로 일할 수 없다. 지식을 구축하는 가장 효과적인 방법은 실험이지만 거기에는 요기가 필요하다

두려움 극복을 위한 스파이크 사용

스파이크는 자신감과 함께 첫 번째 실제버전을 더 좋게 만드는 데 사용할 수 있는 지식을 제공한다

이해관계자는 제품이 코드나 기능이 아니라 지식이라는 것을 인지할 필요가 있다

낭비나 위험에 대한 두려움 극복을 위한 사용 시간 비율 지정

비기능적 요구사항에 개발자 시간의 20%를 할당할것

불완전성에 대한 두려움 극복을 위한 점진적 개선

가면 증후군은 스스로 자격이 없는 사람으로 간주하여 누군가 자신을 사기꾼으로 폭로할까 봐 두려워하는 것

개발자의 삶에 맞춘 최적화

복사 및 붙여넣기가 속도에 미치는 영향

코드복제시 고려해야할 사항

  • 코드를 공유하면 코드가 사용되는 모든 위치에 영향을 미치기 쉽다
  • 전역적인 동작 변경 속도가 높다는 것은 코드의 여러 다른 위치에 동시에 영향을 줄수 있다

복사된 코드는 완전히 분리되므로 한곳을 위해 다른 곳을 손상시킬 위험이 없기 때문에 실험과 변경이 더 안전 하다

확장성을 통한 추가에 의한 변경

코드를 추가하는 또 다른 방법은 확장성을 이용하는것

  • 우발적 복잡성 : 도메인에 관련 되지 않은 복잡성
  • 본질적 복잡성 : 도메인으로 부터 상속된 일부 복잡성

추가에 의한 변경으로 이전 버전과의 호환성 확보

어떤 버전이 최신 버전인지 쉽게 알 수 있도록 일관된 명명 체계를 사용하는 것이 좋다

기능 토글(켜기/끄기)로 추가에 의한 변경

기능 토글의 이면에 있는 개념 : 최소 요구사항은 컴파일이 되어야 된다

‘추상화를 통한 분기’로 추가에 의한 변경

클래스로 타입 코드 대체 패턴을 사용해서 추상화를 통한 분기를 사용한다

참조