본문으로 바로가기

  

 

코드 품질을 높이는 것은 개발 과정에서 매우 중요하고 기본적인 원칙들이 존재합니다. 무조건 따라야 하는 것은 아니지만, 품질이 좋은 코드는 유지보수가 쉽고 버그가 적게 발생하며 향후 기능 추가나 변경이 용이합니다. 따라서 이번 글에서는 코드 품질을 높이는 방법과 이유에 대해서 포스팅하겠습니다. 

 

 

[고품질 코드 작성은 일정을 지연시키는가?]

단기적으로 보면 고품질 코드를 작성하는 데 시간이 더 걸릴 수 있습니다. 하지만 한 번 사용하고 버릴 시스템이 아닌 좀 더 중요한 소프트웨어를 개발하고 있다면, 일반적으로 고품질 코드를 작성하는 것이 중장기적으로는 개발 시간을 단축해 줍니다.

 

코드 품질을 고려하지 않고 먼저 떠오르는 대로 코딩하면 처음에는 시간을 절약할 수 있습니다. 그러나 이런 코드는 머지않아 취약하고 복잡한 코드베이스로 귀결될 것이며, 점점 더 이해하기 어렵고 추론할 수 없는 코드가 될 것입니다. 새로운 기능을 추가하거나 버그를 수정하는 것이 점점 더 어려워지고 시간도 더 많이 걸리는데, 이는 작동하지 않는 코드를 처리하고 재설계해야 하기 때문입니다. 결과적으로 고품질 코드를 작성하면 처음에는 시간이 오래 걸리지만, 중장기적으로는 개발 시간이 단축되는 경우가 많습니다.

 

 

[개발 원칙]

1. KISS (Keep It Simple Stupid)

- KISS 원칙은 코드를 간단하게 유지하고 복잡성을 피하라는 원칙입니다.

- 불필요한 복잡성을 추가하지 말고, 최대한 단순하게 해결할 수 있는 방법을 찾아야 합니다.

- 간결하고 이해하기 쉬운 코드는 유지보수가 쉽고 버그를 찾기 쉽게 만듭니다.

 

2. YAGNI (You Aren't Gonna Need It)

- YAGNI 원칙은 불필요한 기능이나 코드를 추가하지 말라는 원칙입니다.

- 현재의 요구사항을 충족하는데 필요한 것만 개발하고, 미래에 필요할 것 같은 기능이나 코드는 지양합니다.

- 불필요한 기능을 추가하면 코드가 복잡해지고 유지보수가 어려워질 수 있습니다.

 

3. DRY(Dont' Repeat Yourself)

- DRY 원칙은 중복을 피하라는 원칙으로, 동일한 코드를 반복해서 작성하지 말라는 내용을 담고 있습니다.

- 중복된 코드는 유지보수를 어렵게 만들고, 코드 변경 시에 여러 곳을 수정해야 하는 문제가 발생할 수 있습니다.

- 공통된 기능은 함수나 클래스로 추상화하여 재사용하도록 노력해야 합니다.

 

 

[변수﹒함수﹒모듈 원칙]

1. 의미 있는 변수와 함수명 사용

- 변수, 함수, 클래스 등의 이름은 명확하고 의미 있게 지어야 합니다.

- 의미 없는 함수, 변수명은 해당 기능을 파악하는데 시간이 걸리게 하여 생산성을 떨어트리는 가장 큰 요인이 됩니다.

 

2. 작은 함수와 모듈 사용

- 함수와 모듈을 최대한 작게 유지하면 좋습니다.

- 함수는 한 가지 일만 해야 하며, 모듈은 관련된 기능을 그룹화해야 합니다.

- 큰 함수와 큰 모듈의 문제점은 상대적으로 범용성이 떨어지는 편입니다. 반면에 작은 함수와 작은 모듈은 코드를 재사용하기 쉽게 만들어주기 때문에, 개발 규모가 커질수록 코딩 시간을 비약적으로 단축시키는데 큰 도움이 됩니다.

 

 

[마무리 원칙]

1. 유닛 테스트와 테스트 주도 개발 (TDD)

- 코드를 작성할 때 유닛 테스트를 작성하고, 테스트 주도 개발(TDD, Test-driven development) 원칙을 따르면 좋습니다.

* TDD를 도입하는 과정에서는 초기에 개발 속도가 느려질 수 있습니다. 개발과 동시에 테스트 케이스를 작성하고 이를 통과시키는 작업은 추가적인 시간과 노력을 필요로 하기 때문입니다. 그러나 이러한 초기 투자는 중장기적인 관점에서 보면 큰 이점을 가져다줄 수 있습니다.

처음에 시간을 들여 테스트 케이스를 작성하고 개발하는 것은 코드의 품질을 높이고, 버그를 사전에 찾아내어 수정할 수 있는 기회를 제공합니다. 이는 프로젝트가 진행됨에 따라 유지보수 비용을 줄여주고, 향후 변경사항에 대한 자신감을 부여합니다. 또한, 코드의 안정성과 신뢰성이 향상되어 품질이 높은 소프트웨어를 개발하는 데 도움이 됩니다. 단기적으로는 시간이 추가로 소요되지만, TDD를 통해 개발된 안정적인 코드는 향후 변경사항에 대응하기 쉬우며, 결국 전체적인 개발 생명주기에서의 이점이 더 크다고 볼 수 있습니다.

 

2. 예외 처리

- 적절한 예외 처리를 통해 프로그램의 안정성을 높입니다.

- 예외 처리는 예상치 못한 상황에 대비하여 코드를 견고하게 만듭니다.

 

3. 코드 리뷰

- 코드리뷰를 통해 다른 사람의 관점에서 코드를 볼 때, 버그나 개선점을 발견할 수 있습니다.

- 만약 코드 리뷰를 같이할 사람이 없는 경우, TDD를 이용해서 자가 코드 리뷰를 하는 차선책도 존재하니 참고하시면 좋습니다.