한국어

EDPS

좋은 개발 코드의 8가지 특징 : 핵심은 품질

조회 수 25 추천 수 0 2015.07.20 09:04:14

컴퓨터를 넘어 자동차와 냉장고 등 온갖 일상용품에 소프트웨어가 탑재되면서 '개발 코드'라는 이름 역시 일상의 곳곳에서 쉽게 들을 수 있게 됐다. 그 활용 범위만큼이나 코드들의 특성과 성능 역시 매우 천차만별이다. 소프트웨어 프로그램들은 동일한 목적을 수행하더라도 작성된 코드에 따라 성능 격차를 보인다.

그렇다면 '좋은' 소프트웨어 코드란 어떤 기준으로 정의할 수 있을까? 각자의 선호도와 가치관에 따라 답은 다르겠지만, 그중에서도 공통으로 손꼽히는 의견이 있다. “좋은 코드의 기준이란 무엇인가?”라는 질문을 두고 여러 온라인 포럼에서 오간 의견을 추려봤다. 좋은 코드의 8가지 특징에 대해 살펴보자.


1. 잘 작동한다
소프트웨어의 목적은 주어진 명령을 수행하는 데 있다. 적잖은 개발자들이 이 사실을 간과하는데, , 그런데도 여전히 좋은 코드를 가늠하는 가장 중요한 기준은 바로 프로그램의 동작 여부다. 설계 당시 구상된 요구를 충족하지 못하는 코드는 어떤 경우에도 좋은 코드라 말하기 어렵다.


2. 읽기 쉽다
좋은 코드의 가장 중요한 기준으로 많은 개발자들이 동의하는 또 하나의 특징은 바로 가독성이다. 누구나 큰 시간과 노력을 들이지 않고도 쉽게 이해할 수 있는 코드는 어느 곳에서나 환영받는다. 이해하기 쉬운 함수 및 변수 작명 센스, 명확한 제어 흐름을 지녔으며, 그리고 주석을 영리하게 활용한 코드는 다른 개발자가 이 코드를 해석하는 시간을 줄여주고, 향후의 유지보수 및 확장, 재사용을 쉽게 해준다.


3. 테스트 가능하다
테스트 가능 여부는 많은 소프트웨어 개발자들이 코드의 품질을 평가하는 데 중요하게 고려하는 요소다. 보다 전문적으로 말하자면, 좋은 코드는 프로그램학적으로 테스트할 수 있어야 한다. 자동화된 (유닛) 테스트는 코드의 각 컴포넌트가 설계 당시 의도된 역할을 올바르게 수행하는지를 확인할 수 있도록 하는 과정이라는 점에서 매우 중요하다.


4. 관리가 쉽다.
아무리 잘 작성된 코드라도 버그의 가능성은 언제나 존재하며, 따라서 관리 가능성은 코드의 품질을 판단하는 데 중요한 요인이 된다. 관리 용이성이라는 특성은 코드의 가독성과 조정 가능성, 명료성 등의 선행 요인에 의해 좌우된다. 코드의 교정은 초기 개발자뿐 아니라 2차, 3차 사용자들이 관여하기도 하는 과정이라는 점 역시 관리 가능성이 강조되는 이유다.

 

5. 외관이 보기 좋다
소스 코드의 외관은 사실 실제 성능과는 관련성이 없는 요소지만, 개발자들에겐 꽤 중요한 고려 요인이다. 자간, 행간, 대문자 원칙 등은 소프트웨어 프로그램을 보다 편리하게(그리고 더욱 쾌적하게) 읽고, 이해할 수 있게 해준다. 많은 개발자들이 ‘보기 좋은 코드’를 고품질의 코드로 평가하고 있었다.

 

6. 변경이 쉽다
기존 코드 조각의 기능성에 변경이나 확장, 재사용이 필요한 상황이 자주 발생한다. 좋은 코드라면 최소한의 노력만으로 변경이 가능 해야 한다. 여기에서 설명하는 간결함이란, 단순히 변경이 ‘쉽다’는 의미를 넘어 그 과정에서 예기치 않은 부작용이 발생할 여지가 없어야 한다는 의미를 동시에 포함한다.

 

7. 간결하다
소스 코드 조각은 매우 복잡한 최종 결과물을 구축하는 기반이 되는 요소이므로, 그 자체에서는 간결함이 상당히 강조된다. 유능한 코드 작성자들은 이 점을 항상 염두하고, 중첩 반복문(nested loop)나 대형 조조건문(if/else statement)을 최대한 배제하며 방식과 기능을 비롯한 코드 블록들을 간결하고 밀도 있게 유지한다.

 

8. 효율적이다
일부 개발자들은 빠르고 리소스를 적게 투입하게 하는 코드를 최고의 코드로 꼽는다. 과학 연구 등의 계산 집중적 작업을 수행하는 소프트웨어에서는 시간 효율성이 특히 강조된다. 실행의 신속성을 보장하기 위해선 때론 코드 가독성을 희생해야 하는 경우도 있지만, 맞교환이 충분히 필요한 분야 역시 많다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
59 O2O는 온라인 접수 창구가 아니다 WindBoy 2015-07-27 50
58 영감 넘치는 문장을 흘려보내기 아쉽다면 … ‘원센텐스’에 쌓아달라 file WindBoy 2015-07-22 36
57 해고 위험도 평가 : 직장을 잃을 가능성 계산해보기 WindBoy 2015-07-21 31
56 '경력 관리 노하우' 서툰 상사와 일하는 방법 [1] WindBoy 2015-07-21 59
55 IT인의 몸 값 올리기 “시간을 지배하라” WindBoy 2015-07-21 26
54 기업이 구글에서 배워야 할 5가지 교훈 WindBoy 2015-07-21 20
» 좋은 개발 코드의 8가지 특징 : 핵심은 품질 WindBoy 2015-07-20 25
52 트랜드 지식사전 1 - 넷플릭스 WindBoy 2015-07-17 21
51 국정원 해킹 SW 소스코드 열어보니… WindBoy 2015-07-17 33
50 현실화되는 '페이퍼리스'··· 업무 디지털화 3단계 WindBoy 2015-07-07 378
49 펌] IT리더의 두 가지 유형 WindBoy 2015-07-02 34
48 페이스북의 거침없는 질주 WindBoy 2015-07-02 14
47 유머스런 데이터 파괴하는 방법 9가지 (혁신적일까? ....) WindBoy 2015-07-01 16
46 역사상 가장 맥락 없는 TV가 나왔다. WindBoy 2015-06-30 19
45 SNS로 홍보하고 싶은 사장님! “꼭 읽어주세요” WindBoy 2015-06-26 17
44 화성에서 온 현업, 금성에서 온 개발자 WindBoy 2015-06-25 24
43 사자성어 살짝 비틀어보기 – 마이동풍, 우이독경 [1] WindBoy 2015-06-25 66
42 '신제품 출시·마케팅은 이렇게' 전문가들이 전하는 9가지 팁 WindBoy 2015-06-22 32
41 '마케팅과 IT 사이에서' 어떻게 균형을 잡을까 WindBoy 2015-06-22 21
40 기업이 소셜 미디어의 '악플러'에 대처하는 5가지 방법 [1] WindBoy 2015-06-18 11