좋은 코드란 무엇일까?
좋은 이라는
말은 굉장히 추상적이다.
누군가는 읽기 쉬운 코드를 좋은 코드라고 할 수도 있고,
누군가는 테스트가 쉬운 코드를 좋은 코드라고 할 수 있다.
이처럼 개발자의 관점에 따라, 각자의 경험에 따라 좋은 코드
에는 여러 뜻이 담길 수 있다.
읽기 쉬운 코드
개발자들은 코드를 작성하는데 가장 많은 시간을 쓰고 있을 거라 생각하지만,
실제로 그들은 코드를 이해
하는데 가장 많은 시간을 소비하고 있다.
읽기 쉬운 코드를 작성하는 것은 생각보다 어렵다.
당장 내가 작성한 코드도 몇 달 뒤에 보면 새롭기 때문이다.
특히 협업을 진행한다면 코드의 가독성은 더더욱 중요하기 때문에 팀원들끼리 코드의 규칙을 정하는 게 좋다.
1️⃣ Names
a1, a2, t1... 이런 이름들은 무슨 역할을 하는 것인지 알 수 없다.
읽기 쉬운 코드를 작성하기 위해서는 변수명, 함수명, 클래스명만 보고도 무슨 역할을 하는 것인지 바로 파악할 수 있도록 의미 있게 작성해야 한다.
2️⃣ Functions
// Ver.1
void printOwing() {
Enumeration e = _orders.elements();
double outstanding = 0.0;
// print banner
System.out.println ("**************************");
System.out.println ("***** Customer Owes ******");
System.out.println ("**************************");
// calculate outstanding
while (e.hasMoreElements()) {
Order each = (Order) e.nextElement();
outstanding += each.getAmount();
}
// print details
System.out.println ("name:" + _name);
System.out.println ("amount" + outstanding);
}
// Ver.2
void printOwing() {
printBanner();
double outstanding = getOutstanding();
printDetails(outstanding);
}
void printBanner() {
...
}
double getOutstanding() {
...
}
void printDetails(double outstanding) {
...
}
첫 번째 코드와 두 번째 코드의 차이점을 통해 함수의 중요성에 대해 알 수 있다.
규모가 큰 프로그램을 작성하다 보면 코드의 길이도 점점 길어지게 되는데,
코드의 가독성을 위해서는 함수는 되도록 짧게, 하나의 기능만 하도록 분리해야 한다.
3️⃣ Comments
주석은 코드의 이해를 위해 추가적으로 다는 설명이다.
주석이 많으면 많을수록 좋은 거 아닌가?라고 생각할 수 있지만, 주석은 꼭 필요한 곳에만 최소한으로 써야 한다.
코드를 읽는 사람은 '주석'도 읽지만 '코드'도 읽어야 하기 때문에 읽어야 할 내용이 2배로 늘어나는 셈이고,
코드가 수정되면 주석도 수정해야 하기 때문에 번거롭기 때문이다.
불필요한 주석은 없는 게 더 나은 정도가 아니라 그냥 없어야 한다.
주석을 장황하게 적기 전에 먼저 '코드'만 봐도 이해가 될 수 있는 프로그램을 짜도록 해야 한다.
나쁜 코드에 주석을 달 시간에 코드를 다시 짜자 ^___^
(BrianW.KernighanandP.J.Plauger)
4️⃣ Formatting
위와 같은 코드는 보기만 해도 머리가 아프다.
띄어쓰기가 되어있지 않고 문단 구분이 되어있지 않으며 빽빽하게 적힌 글을 읽으려면 벌써 머리가 아프고 괜히 읽기 싫어지는 것처럼,
코드도 글과 같이 딱 봤을 때 정갈해야 한다. 줄 맞춤과 띄어쓰기만 잘 지켜도 겉보기에 좋은 코드가 될 수 있다.
중복이 없는 코드
동일한 역할을 하는 코드는 하나의 함수로 만들어서 분리한 후, 필요할 때마다 참조해서 사용하도록 해야 한다.
이렇게 하면 기능을 수정하고 싶을 때 한 군데만 수정하면 되지만 중복해서 적다 보면 모든 곳을 하나하나 수정해야 하고 그러다 보면 깜빡하고 수정하지 못한 부분이 발생할 수도 있기 때문이다.
이외에도 좋은 코드를 작성하기 위한 방법이 굉장히 많은데 더욱 자세하게 공부하고 싶다면 클린 코드 책을 읽어보는 것을 추천한다.
📂 References
🔗 Robert C. Martin, "Clean Code, " Prentice Hall, 2008
'CS > 개발상식' 카테고리의 다른 글
TDD(Test-Driven Development) (0) | 2022.09.15 |
---|---|
RESTful API (0) | 2022.09.09 |
객체 지향 프로그래밍의 설계원칙, SOLID (0) | 2022.09.07 |
오버로딩(Overloading) vs 오버라이딩(Overriding) (0) | 2022.09.07 |
객체 지향 프로그래밍(OOP, Object-Oriented Programming) (0) | 2022.09.05 |