코드 가치관

가치관

본인이 가치있다고 여기는 것이 무엇인가에 대한 주관적인 생각을 가치관이라고 합니다.

  • 난 건강이 가장 중요하다고 생각해
  • 난 가족이 가장 중요하다고 생각해
  • 난 돈이 가장 중요하다고 생각해

이런식으로 표현될 수 있죠. 결정의 순간들이 있을 때마다 이 가치관이 작동해서 더 중요하다고 생각되는 것으로 결정하게 됩니다.

가치관은 결정의 기준이 된다.


코드 가치관

코드를 작성할 때 어떠한 점을 더 중요하게 여기는가? 하는 것이 코드 가치관입니다.

  • 코드는 가독성이 중요해
  • 코드는 퍼포먼스가 중요해
  • 코드는 짧은게 더 좋아

이런식으로 표현될 수 있겠죠. 개발자라면 단지 동작하는 코드뿐 아니라 더 좋은 코드를 만들기 위해 고민하는게 당연하죠. 어떤것이 더 좋은 코드인가에 대해서 개발자들에게는 어느정도 공감대가 형성되어 있습니다. 그리고 그러한 것들이 정리되어 Clean Code 같은 책으로 나와있기도 하죠.


무엇이 더 좋은 코드인가?

[JAVA] 10진수로 이루어진 Int 값의 각 자리수의 합을 더하시요.

1
2
3
4
5
6
int sumDigits1(int n) {
return String.valueOf(n)
.chars()
.map(Character::getNumericValue)
.sum();
}
1
2
3
4
5
6
7
8
int sumDigits2(int n) {
int sum = 0;
while(n > 0) {
sum += n % 10;
n /= 10;
}
return sum;
}

두 개의 함수가 작성되었습니다. 모두 요구사항대로 동작하죠.

  1. stream을 사용해 직관적이고 간략하게 표현된 1번이 좋은 코드다!
  2. int 를 String 으로 변환하는 불필요한 과정으로 효율성이 좋은 2번이 좋은 코드다!

어떤것이 더 좋은 코드 입니까?
답은 코드 가치관에 따라 다를겁니다.

좋은 코드에 정답은 없다.


정해진 것은 없다

동작환경이 제한된 자바카드(Wikipedia, Forum) 같은 기술을 사용할 때 2번코드가 더 좋겠죠. 프로젝트 구성원이 모두 stream에 대해 잘 이해하고 있고, 엔터프라이즈 동작환경을 가진 곳에서는 1번 코드가 좋아 보일 수도 있겠죠. 결국 코드에 정답은 없습니다. 목적과 용도에 적합한 코드만 있을 뿐이죠.

어느정도 좋은 코드에 대한 공감대는 있다.

맞습니다. 하지만 절대적인 기준은 아닙니다.
현재의 개발 환경에서 어떤것이 가장 적합한 코드일까를 생각하면서 그 기준에 따라서, 혹은 각자가 가진 코드 가치관에 따라서 좋은 코드는 달라집니다.

나는 맞고 너는 틀렸어. 라는 경직된 생각이 개발자에게는 가장 경계해야하는 가치관이 아닐까 생각합니다.

유연한 사고가 개발자의 덕목이다