1.1 좋은 소프트웨어 구조란?

코드를 얼마나 쉽게 변경할 수 있느냐가 코드 설계를 평가하는 척도가 된다.

 

코드를 고치려면 고치려는 부분의 기존 코드를 이해해야 하기 때문에 작업에 관련된 코드의 양을 줄여야 한다.

이 관점에서 보면 커플링이 적은 코드가 곧 좋은 소프트웨어 구조를 만든다.

 

하지만 지나치게 확장성에 신경쓰다 보면 추상화를 위한 보조 코드가 더 많아져 실제 작업 코드를 찾기가 어려워질 수도 있고, 좋은 구조를 유지하는데에도 꾸준한 노력이 필요하기 때문에 비용이 추가적으로 발생할 수도 있다.

 

1.3 성능과 속도

프로그램의 유연성과 성능은 반비례 관계에 있다.

코드를 유연하게 만드는 많은 패턴이 가상함수, 인터페이스, 포인터, 메세지 같은 메커니즘에 의존하는데, 다들 어느정도의 런타임 비용을 요구하기 때문이다.

하지만 유연성이 좋아야 게임을 쉽게 변경할 수 있고, 개발 속도가 빨라진다.

 

최적화 기법은 구체적인 제한을 선호한다. 

ㄴ 인터페이스나 가상함수의 사용을 줄인다.

ㄴ 성능상 비용이 줄어든다.

 

처음에는 코드를 유연하게 유지하다가 기획이 확실해진 다음에 추상 계층을 제거하여 최적화를 진행하는 타협안이 있다.

 

1.4 나쁜 코드의 장점

기획 확인이 필요할때, 필요한 기능만 대강 돌아가도록 하는 코드는 적절하다.

이렇게 만든 버릴 코드는 확실히 버릴 수 있어야 한다.

 

+ Recent posts