3장. 코드 적게 쓰기

코드가 많을수록 버그가 숨을 수 있는 공간도 많아진다.

이 당연한 말을 왜 아무도 하지 않는지 궁금하다. 근거 없는 코드들에서 더 많이 발생한다. 코드를 쓰기전에 생각부터 해야한다.

허술한 논리는 곧 느슨한 정신을 표현한다.

다음 응용 예제를 보자. (책에는 C로 되어있다.)

expression = is_valid(obj)
if expression:
    return True
else:
    return False

이 너저분한 코드는 단 한 줄로 표현할 수 있다.

return is_valid(obj)

타이핑은 생각보다 손에 좋지 않다. 건강은 매우 비싼 돈을 줘야 회복할 수 있다. 젊을 때부터 잘 챙기자. 생각을 하면 건강을 챙길 수 있다.

DRY - Don't Repeat Yourself

책에 적혀있는 그대로 코드 복붙은 버그도 그대로 복붙한다. 고칠 땐 복붙해온 곳도 고쳐야한다. 이것은 로직을 수정하기 싫다는 게으름에서부터 발생한다. 책의 예제들은 너무나 고상하다. scala로 다른 예를 들어보겠다. v1, v2에 대한 메서드들을 따로 만들지 않도록 유의하자.

def something(): JsValue = {
  val result = // do it do it
  Json.obj("key" -> result)
}
    
def somethingV2(): JsValue = {
  val result = // do it do it
  Json.obj("key" -> result.toString)
}

당연히 이런식으로 바꿔야 한다.

def something(version: String): Jsvalue = {
  val res = // do it do it
  val result = if (version == "v1") res else res.toString
  Json.obj("key" -> result)
}

메서드 두개를 만들었다면 정말로 반성하자. 생각이 싫어 타이핑으로 바꾸는 인간답지 않은 삶은 살지 말자.

주석을 달아야 할 만큼의 복잡한 알고리즘이란 거의 존재하지 않는다.

주석 맹신론자들이 존재한다. 이들은 주석이 있어도 코드를 잘 이해하지 못한다. 코드 자체로 이해가 되지 않는 코드는 전부 재작성되어야 한다. 어줍잖은 주석으로 이해시키려 하지 말자. 개발자는 코드로 대화하는 것이 원칙이다. 아래 코드에서 주석이 없으면 이해가 되지 않는 코드가 있는가? url 변수 할당이 빠진 것은 넘어가주길 바란다. 스샷 다시 찍기 귀찮다...

돼지들이나 자신의 오물 안에서 산다.


인간의 존엄성이란 무엇인가 다시 생각해보면 좋을 것 같다. 그 어떤 누구라도 똥통에서 구르고 싶진 않을 것이다. 누가 말하기 전에 스스로 정리하자. 클린코드의 저자 로버트 마틴은 보이스카우트 규칙에 대해서 언급했다.

Always leave the campground cleaner than you found it.
항상 네가 발견했을 때 보다 캠핑장을 깨끗하게 만들고 떠나라.

그 누구도 똥통에서 구르고 싶진 않을 것이다. 하지만 똥통에 들어가게 된다면, 타인의 존엄성을 위하여 개선하여야 한다. 개선하지 않는다면, 그 똥같은 코드를 만든 원저자보다 개선하지 않는 작업자가 더 나쁘다.

profile
집사없는 개발 고양이

0개의 댓글