본문 바로가기

개발이모저모

코드 품질

- 코드 품질이 중요한 이유

고품질의 코드는,
1. 신뢰성이 높다
2. 유지보수가 쉽다
3. 버그가 적은 소프트웨어를 생산한다.
코드 품질을 높이는 것들은 소프트웨어가 처음에 만들어지는 방식을 보장하고, 이후 새로운 요구사항이 추가되더라도 처음 방식을 유지하고 할 수 있다. 
좋은 코드가 좋은 소프트웨어를 만들기 위한 유일한 조건은 아니지만, 중요한 조건 중 하나이다.

코드가 고품질이다. 저품질이다  이렇게 정의하는건 주관적인 판단이 될 수 있다. 그래서 객관적으로 고품질이라면 다음과 같은 4가지 목표들이 잘 이루어졌을 것이고 판단할 때 좋은 기준이 될 수 있다.

 

 

- 고품질의 코드가 이루고자 하는 4가지 목표

1. 정상적인 작동을 해야한다.
너무 당연한 이야기 이지만 코딩하는 목적은 문제를 해결하기 위함이다. 예를들어 기능구현, 버그수정, 작업수행과 같은 것이다. 그래서 코드의 첫 번째 목표는 그것이 애초 작성된 목적대로 동작해야 한다는 것이다.

2. 중간에 멈춰서는 안된다.
코드가 실행되어 동작하는 것은 일시적일 수 있다. 코드는 고립된 환경에서 홀로 실행 되는 것이 아니기 때문에 타 시스템이나 호출하는 곳에서의 변경 등 상황이 바뀌면 동작이 멈출 수 있다. 당장 돌아가는 코드를 만들기는 쉽지만, 변화하는 환경과 요구사항에도 불구하고 계속 작동하는 코드를 만드는 것은 어렵다. 코드가 계속 작동하도록 보장해줘야 한다.

3. 변화하는 요구 사항에 적응해야한다.
한번 작성하고 다시는 수정되지 않는 코드는 거의 없다. 비즈니스 환경/사용자 선호/더 이상 유효하지 않는 가정/새로운 기능 추가 등과 같은 요구사항이 계속 변하고 추가되기 때문이다. 앞으로 어떻게 변할 것인지 정확히 알 수 없다. 시간이 지남에 따라 어떻게 변할지 예측하는 것은 불가능하지만 그렇다고 변할 수 있는 자체를 무시하면 안된다. 그래서 변화에 적응성 높은 코드를 작성하기 위해 여러 방법을 사용해 유연하게 대처하도록 해야한다.

4. 이미 존재하는 기능을 또 다시 구현해서는 안된다.
문제를 해결하기 위해 코드를 작성할 때, 일반적으로 큰 문제를 여러 개의 작은 하위 문제로 나눈다. 이미 공통적으로 많이 해결한 기능들이 오픈소스 혹은 라이브러리 등으로 구현된 코드들이 많다. 이걸 해결 하기 위해 따로 개발하기보다 이미 구현된 코드를 재사용하면 좋은 이유들이 있다.
 - 시간과 노력을 절약한다
 - 버그 가능성을 줄여준다
 - 기존 전문 지식을 활용한다
 - 코드 이해가 쉽다.

 

 

- 고품질 코드 작성을 위한 높은 수준에서의 여섯가지 전략

1. 코드의 가독성이 좋아야 한다.
2. 코드는 예측 가능해야 한다.
3. 코드를 오용하기 어렵게 만들어야 한다.
4. 코드를 모듈화 해야한다.
5. 코드를 재사용 가능하고 일반화 할 수 있게 작성해야한다.
6. 테스트가 용이한 코드를 작성하고, 제대로 테스트 해야한다.

 

 

- 고품질 코드 작성은 일정을 지연 시키는것인가?

단기적으로는 고품질 코드를 작성하는 데 시간이 더 걸릴 수 있다. 하지만 고품질 코드를 작성하는 것은 보통 우리 머릿속을 떠오르는 것을 바로 코딩하는 것 보다 조금 더 많은 생각과 노력이 필요하다. 얼마 사용하지 않고 버릴 시스템이 아니라면 일반적으로 고품질 코드를 작성하는 것이 중장기 적으로 개발 시간을 단축해준다.
고품질일 수록 코드의 취약성 대응이나 변화에 대한 대응, 시로운 기능 추가, 버그 수정할 때 코드가 유연하기 때문이다. 생각나는대로 코드를 작성했었다면 스파게티 코드가 되어 수정을 하면 할 수록 이해가 어렵고, 복잡도가 올라가 어려워지고 결국 재설계해야하는 단계까지 이르게 될 것이다.