코딩 컨벤션과 소프트웨어 개발 원칙
728x90
반응형

이런 일이 없도록 해야한다.

 

코딩 컨벤션

코딩 컨벤션(Coding conventions). 그대로 해석하면 코딩 규약이다. NHN 클라우드의 기술 블로그에서는 코딩 컨벤션을 아래와 같이 정의하고 있다.

읽고, 관리하기 쉬운 코드를 작성하기 위한 일종의 코딩 스타일 규약

 

협업으로 개발을 할 때, 각자의 개발 스타일이 다르다보니 서로의 코드를 Merge할 경우에 혼선이 있을 수 있다. 이런 혼선을 막기 위해서 사전에 코딩 컨벤션을 정한다. 코딩 컨벤션을 강제하기 위해서 IDE의 기능을 사용하거나 Lint를 사용하기도 한다. 코딩 컨벤션은 코드 스타일을 정하는 것이기에 코딩 컨벤션을 이야기할 때 스타일이라는 단어가 키워드가 되기도 한다. IntelliJ에서 코딩 컨벤션을 설정할 때 아래와 같은 모습을 볼 수 있다. 이것은 코틀린 코딩 컨벤션을 정하는 방법이다.

 

 

보통 개발 협업할 때, 사전에 정해놓고 하는 경우가 많다. 그렇기에 특정 조직에서는 이런 코딩 컨벤션을 공유하기도 한다. 혹은 공식 문서에 공개되기도 한다.

 

소프트웨어 개발 원칙

이런 코딩 컨벤션을 보게되면 겹치는 내용들이 보인다. 우연을 아닐터. 아마도 소프트웨어 개발 원칙에서 파생된게 아닐까 생각된다. 소프트웨어 개발 원칙은 효율적이고 유지보수 가능한 소프트웨어를 개발하기 위한 체계적인 가이드라인을 제공하기 위해 등장했다. 몇몇 개념은 만든 사람이나 조직을 확인할 수 있지만 그렇지 않은 경우도 있다. 이는 소프트웨어 엔지니어링이 발전하면서 자연스럽게 자리잡아서 그런게 아닐까 싶다. 흔히 3대 원칙이라고 부르는 것을 보자.

 

KISS (Keep it simple, stupid!)

이 원칙의 핵심은 단순함에 있다. Stupid라고 할 정도로 단순하게. 1960년 미 해군이 처음 언급 한 설계 원칙이라고 한다. Kelly Johnson이라는 전투기 엔지니어가 팀에게 몇 가지 공구를 건네주며 이 공구만으로 현장에서 수리할 수 있어야 한다는 과제를 제시하면서 이 원칙을 사용했다. 메세지가 단순해서인지 변형된 문구도 여러개이다. "keep it super simple", "keep it simple, silly", "keep it short and simple". 현재 개발자 사이에서는 코드만 보고도 어떤 목적을 띄는 로직인지 이해할 수 있을 정도로 단순하게 만들어야 유지보수성이 높아진다라고 하면서 이 원칙에 설득력을 높이고 있다. 객체 지향 설계 원칙인 SOLID에서 S(단일책임원칙)와 일맥상통하다.

 

DRY (Don't Repeat Yourself)

개발을 처음 배울 때부터 자주 듣는 얘기다. 중복을 피하라. 단순히 코드뿐만 아니라 목적이나 데이터 등도 여기에 포함된다.  Andy Hunt와 Dave Thomas의 저서인 실용주의 프로그래머에 등장한 개념이다. 모든 지식은 시스템 내에서 하나의 모호하지 않고 권위 있는 단일 표현을 가져야 한다라는 목적을 가진 원칙이다. 

 

YAGNI (You Ain't Gonna Need it)

지금 필요없는 기능을 만들지 말라! 내 생각엔 가장 중요한 원칙이라고 보인다. 불필요한 코드 혹은 데이터가 유지보수 과정에서 불필요한 노동력과 시간을 사용하게 만든다. 익스트림 프로그래밍(XP)에서 등장하는 개념이다. 익스트림 프로그래밍(XP) 소프트웨어 개발 방법론을 만든 사람 중 한명인 Ron Jeffries는 "항상 실제로 필요할 때 구현하고, 필요할 것이라고 예측할 때는 절대로 구현하지 말라."라고 했다.

 


 

개발에 조금이라도 익숙해 졌을 때, 예쁘게 코딩하는 방법에 관심이 생긴다. 그 시점에서 이 원칙들을 들여다보면 도움이 되지 않을까. 관련 자료들을 읽다가 인상깊은 글이 있었다. 이 글을 공유하면서 마무리하겠다.

 

컴퓨터 프로그램의 구조와 해석 중 'Programs should be written for people to read, and only incidectally for machine to execute' 프로그램은 사람들에게 읽히기 위한 목적으로 만들어져야 하고, 우연히 컴퓨터가 실행할 수 있다면 더욱 좋다.

 

참고자료
- 코드 컨벤션
- [Kotlin] 공식 코틀린 코딩 컨벤션 소개
- 코틀린, 이렇게 작성하시면 됩니다
- 소프트웨어 개발 3대 원칙 (KISS, YAGNI, DRY)
- 소프트웨어 개발 원칙들 모음
- 좋은 API Response Body 만들기 (추천👍)

 

.

728x90
반응형