이번 글을 통해 배워갈 내용
- 좋은 코드(Clean Code)를 작성하기 위해 개발자로서 생각해볼 5가지 요소를 알아보겠습니다.
개요
좋은 코드란 무엇일까요?
저는
자원이 한정적인 컴퓨터 세상에서 좋은 코드란
효율적인 코드라 생각합니다.
그렇다면 효율적인 코드를 구현하기 위해서는 무엇을 어떻게 해야 할까요?
아인슈타인은 말했습니다.
Everything should be
made as simple as possible,
but no simpler.
위구절이 모순된다 생각 하실수 있을겁니다.
저는 위에 구절을
5번쯤 머리 속에 생각하면서 깨달았습니다.
코드를 짤때 여러가지 복잡한 기능이 들어가더라도
누구나 이해할수 있게 최대한 쉽고 간단하게 짜는것도 중요하다.
라는 것입니다.
여기서 첫번째 원칙이 나옵니다.
1. 효율적인 코드는 다른 프로그래머들이 읽기 쉬워야 합니다.
같이 일하시는 분들이 이해하기 난해한 어려운 내용, 어려운 알고리즘, 길고 난해한 변수이름, 꼬인 클라스등
보다는 같은 내용이라도 이해하기 쉽고 가독성이 높은게 좋습니다.
(물론 때로는 알고리즘을 써서 복잡하지만 최대한 빠른 자원 효율적 프로그램이 필요한 때가 있습니다.
그렇지만 대부분의 경우 이해하기 쉽고 여러명이서 같이 유지보수 하기 쉬운게 더 좋습니다)
그렇다면 읽기 쉬운 코드는 어떤 특징을 가지고 있을까요?
여기서 두번째와 세번째 원칙이 나옵니다.
2. 효율적인 코드는 최소한의 클래스와 요소들을 가지고 있습니다.
쓸데 없이 많은 량의 코드, 불필요한 클래스와 요소들을 비유를 해서 설명하자면
눈을 감고 음식 배달을 한다고 생각해보시면 좋습니다.
A식당 부터 B아파트까지 배달을 가는데 쓸데없이 길을 돌아서 갈 필요가 없듯
안전만 하다면 최단거리로 일반적으로 가는게 맞습니다.
코딩도 쓸데없이 코드가 많은것 보다는 불필요한것을 줄이고 코딩을 하는 것을 일반인들은 당연하게도
더 좋다고 생각합니다.
쓸데 없는 것들을 줄이는 것으로 부터
3번째 원칙이 나옵니다.
3. 효율적인 코드는 중복을 가지고 있지 않습니다.
코드는 유지보수가 90퍼센트입니다. 중복되는 곳을 고치고 또 고친다면
손목과 눈이 아픕니다. 그렇다면 그것을 방지하려면 어떻게 해야 될까요?
바로
중복되는 부분을 줄이는 것입니다.
저의 경우 중복되는 부분은 함수로 빼던지 클래스를 이용해 다른 곳으로 카테고리 별로 빼서 작업을 합니다.
함수를 만들때 잘게 잘게 쪼게서 한가지만 한다는 생각이 들었을때
갑자기 글을 쓰다가 SOLID 원칙이 떠올랐습니다.
따라서 4번 원칙은
4. 효율적인 코드는 SOLID 원칙을 따릅니다.
솔리드 원칙의 경우
5가지 원칙을 의미하며
1. Single Responsiblity Principle (단일책임 원칙)
2. Open Closed Principle (개방패쇄 원칙)
3. Liskov Substitution Principle (리스코프대체 원칙)
4. Dependency Inversion Principle (의존역전 원칙)
5. Interface Segregation Principle (인터페이스분리 원칙)
을 가지고 있습니다. 설명하면 이야기가 길어지기에 쉽게 풀어서 말하자면
함수와 클래스는 단 하나의 기능을 가지고 있으며
기존코드 변경을 최소화 하면서 수정하거나 추가 할수 있게 열려 있어야 하고
부모와 자식클래스는 일관성있게 자식클래스는 부모 클래스에서 가능한것을 실행 할수 있어야 하고
인터페이스나 추상클래스를 이용해서 의존관계를 맺는것을 선호하고
하나의 인터페이스보다는 여러개의 구체적인터페이스가 더 좋다는
이야기로 저는 이해합니다.
그렇다면 마지막 원칙은 무엇일까요?
당연하게도
5. 효율적인 코드는 실행 가능하며 테스트를 모두 통과하는 코드입니다.
실행 불가능한 코드는 아무리 깨끗하고 효율적이여도 말짱 도루묵이기 때문입니다.
읽어주셔서 감사하며
깨끗한 코드에 대해서 더 알아보고 싶으신 분들은 아래
참조 자료의
Robert C. Martin 님의 클린 코드를 한번 읽어보시길 추천드립니다.
오늘도 즐거운 코딩하시길 바랍니다 ~ :)
참조 및 인용
https://www.oreilly.com/library/view/clean-code-a/9780136083238/
https://gist.github.com/wojteklu/73c6914cc446146b8b533c0988cf8d29
https://www.samsungsds.com/kr/story/cleancode-0823.html
https://en.wikipedia.org/wiki/SOLID
https://codemasterkimc.tistory.com/35
'기타 > 프로그래밍 기타' 카테고리의 다른 글
깃허브 Repository Directory delete(레포 폴더 삭제하기) (0) | 2021.09.28 |
---|---|
깃허브 강제 push로 remote repo overwrite해보기 (0) | 2021.08.09 |
실무 효율성 향상 / vs 코드에서 매우 긴 줄, 여러 줄 선택 하기 (1) | 2021.07.17 |
중소 IT 회사 입사전 꼭 물어봐야 하는 5가지 질문 (1) | 2021.07.15 |
깃허브 프로필 꾸미는 법 (1) | 2021.06.09 |