오늘은 좋은 코드의 조건이랄까 좋은 코드를 만들기 위한 원칙에 대해 한번 살펴보려고 합니다.
원론적인 얘기일 수 있지만, 몇 번을 강조해도 모자라지 않다고 생각되어 올리니 가볍게 읽어보시되, 프로그램 작성 시 늘 염두에 두시면 좋을 것 같습니다!~
개발자에게 가장 중요한 능력은 단연코 코딩 능력이라고 할 수 있는데, 코드 스타일을 간결하고 일관되게 다듬으려는 노력과 함께 읽기 쉬운 코드를 작성하는 것을 목표로 두어야 합니다. '해킹 공격의 예술'의 저자인 '존 에릭슨'은 "해킹 프로그램의 최종 목표는 효율적이고 작은 소스 코드로 보안을 깨는 것"이라며, 이러한 코드를 우아한 코드라고 부르더군요.
한번은 들어본 적이 있는 천재 소릴 듣는 유명 개발자들의 입에서 자주 나오는 얘기 '우아한 코드' 바로 이 우아한 코드는 어떻게 만들어지는 것일까요?..
◎ 좋은 코드를 만들기 위한 원칙
1. 간결한 코드 작성하기
: 코드가 짧으면 짧을수록 오타나 단순한 버그가 생길 우려가 줄어들고, 디버깅도 쉬워지기 때문에 간결한 코드를 작성하는 것이 좋습니다.
2. 적극적으로 코드 재사용하기
: 같은 코드가 반복된다면 이들을 함수나 클래스로 분리해 *모듈화해서 재사용하는 것을 기본 원칙으로 하면 좋습니다. 간결한 코드에 익숙해지면 다음 번에 비슷한 코드를 짤 때 처음부터 좀 더 간결하게 코딩할 수 있게 됩니다.
[*모듈화; (Modularization) 정의된 한 가지 일을 수행하는 프로그램의 논리적인 일부분을 '모듈'이라고 하며, '모듈화'란 기능을 사용하거나 부품으로서 교환하기 편리하도록 각각의 독립적인 최소 단위로 설계하거나 만드는 것을 말함]
3. 표준 라이브러리 공부하기
: *표준 라이브러리는 셀 수 없을 정도로 많이 사용되고 검증되었기 때문에 표준 라이브러리를 필수로 공부하고 사용하는 것이 좋습니다.
[*표준 라이브러리; (standard library) 프로그래밍 언어의 여러 구현체에서 통용될 수 있도록 만들어진 라이브러리를 말함]
4. 검증된 코드 작성 및 꾸준히 사용하기
: 같은 코드를 다양한 방식으로 짜보면서 자신이 가장 알아보기 쉬운 코드를 작성하는 것이 도움이 되지만, 이것은 시간이 지날수록 점점 실수의 원인이 되기도 합니다. 그러므로 자주 작성하는 알고리즘이나 코드 등에 대해서는 한 번 검증된 코드를 작성하고 이것을 꾸준히 사용하는 것이 좋습니다.
5. 일관적이고 명료한 명명법사용하기
: 모호하지 않은 변수명과 함수명을 사용하는 습관을 들이고, 사용하는 언어의 표준 라이브러리에서 사용하는 *명명 규약을 익히는 것이 필요합니다. 모호한 명명법은 가끔 잡아내기 힘든 오류를 만들어 내기 때문입니다.
[*명명규약; 네이밍 컨벤션(naming convention)이라고 부르는데, 함수나 변수명을 정하는 규칙으로 언어에 따라 같은 함수명도 addCircle, AddCircle, add_circle 등으로 쓰는 방식이 달라질 수 있음]
6. 모든 자료를 정규화해서 저장하기
: 같은 자료를 두 가지 형태로 저장하지 않는 것이 좋습니다. 같은 자료가 두 개 이상의 표현을 가지게 되면 미묘한 버그들을 만들기 쉬운데 각각의 문자열 표현이 달라지고, 해시값이 달라지는 등의 문제가 있기 때문입니다.
*정규화는 프로그램이 자료를 입력받거나 계산하자마자 곧장 이루어져야 하는데, 이상적으로는 자료를 표현하는 클래스의 생성자에서 정규화를 수행하거나 외부에서 자료를 받자마자 정규화를 수행하는 것이 좋습니다.
[*정규화; (canonicalization) 규격에 맞도록 만드는 과정으로 데이터의 규정 일치와 검증된 형식을 확인하고 비정규 데이터를 정규 데이터로 만드는 것]
7. 코드와 데이터를 분리하기
: 코드의 논리와 상관없는 데이터는 가능한 한 분리하는 것이 좋습니다. 항상 코드의 양을 줄여서 실수를 하지 않게 하는 것이 필요합니다.
위 간단하고 기본적인 7가지 원칙이 우아한 코드를 만들어냅니다. 이제 프로그래밍을 배우기 시작한 학생들이나 또 현업 실무에서 뛰고 있는 개발자 분들도 이것을 항상 염두에 두고 아름답고 멋진 프로그램을 만들게 되시기를 바랍니다!~~ ^^
'IT 이야기' 카테고리의 다른 글
프로그래밍과 수학 (0) | 2022.07.29 |
---|---|
모의 해킹대회 (0) | 2022.07.27 |
취업관련 IT자격증_국제공인 (1) | 2022.07.25 |
취업관련 IT자격증_국가공인 (0) | 2022.07.23 |
알고리즘 표현 방법 (0) | 2022.07.22 |
댓글