ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 실용주의 프로그래머 정리 3
    Study/실용주의 프로그래머 2021. 11. 22. 23:05

    기본적인 도구

    개발 생산성을 높이기 위해서는 적합한 도구를 쓰는 것이 중요하다. 기본적인 도구와 더불어 상황에 맞는 도구를 확장해서 능숙하게 사용할 수 있어야 한다. 이번 장에서는 도구를 잘 활용하는 방법에 대해 알아보도록 하자.

    일반 텍스트의 힘

    일반 텍스트는 그 자체로 알아보기 쉽고 다루기 쉽다. 데이터를 효율적으로 저장하기 위한 경우를 제외하면 일반 텍스트를 잘 활용하자. 잘 정의된 일반 텍스트는 강력하다.

    쉘 게임

    쉘은 자동화 하기에 정말 좋은 도구다. GUI 기반의 툴들은 제한된 동작을 제공하지만(사실 요즘 GUI들은 플러그인이나 커스터마이징을 많이 지원해준다. 옛날 책이라 그런듯) 쉘을 이용하면 무궁무진한 기능을 제공할 수 있다. 특히 반복적인 작업을 자동화할 때 아주 유용하다. 쉘 스크립트와 명령어를 조합해서 DRY 원칙을 잘 지켜보자

    파워 에디팅

    자기가 주로 쓰는 에디터의 기능을 잘 익히고 사용한다면 생산성을 매우 늘릴 수 있다. 여러 개의 에디터를 쓰는 것도 좋지만 우선 자기가 주로 사용하는 에디터의 기능을 익히자. 신세계가 펼쳐질 것이다.

    소스코드 관리

    소스코드 관리는 매우 중요하다. 요즘은 대부분 git을 사용해서 소스코드를 관리한다. 소스코드 버전, 릴리징 관리 등 다양한 기능이 있어서 협업 및 생산성에 큰 도움이 될 뿐만 아니라 문제가 생겼을 때 원인이 되는 코드를 찾을때도 유용하다. 만약 팀에서 버전관리시스템을 쓰고있지 않다면 개인 작업 공간에서만이라도 사용하자. 큰 이득이 있다.

    디버깅

    디버깅은 매우 고통스러운 작업이다. 실제로 개발하는 시간보다 디버깅 시간이 더 길때도 많다. 몇가지 디버깅 원칙을 익혀서 디버깅 속도를 높여보자.

    • 자기 방어를 위해 코드가 옳다고 생각하지 말자. 코드와 자신을 동일시 하지말자. 코드가 틀렸다고 내가 틀린건 아니다. 코드가 틀리지 않았다는 생각에 갇혀버리면 문제를 제대로 바라보기 힘들다.
    • 경계 테스트를 하자. 사용자는 개발자가 예상한대로 사용하지 않는다. 따라서 기능에 대한 경계 지점을 잘 테스트하자. 버그를 재현할 수 있을 것이다.
    • 시각화 툴을 이용해서 데이터를 눈으로 보자. 디버깅할 때 큰 도움이 될 것이다.
    • 동시성 등 확인하기 힘든 문제가 발생했을 때는 로그 등을 남겨서 추적할 수 있도록 하자.
    • 고무 오리에게 설명하듯이 버그가 발생한 부분의 구현을 하나하나 설명해보자. 버그가 보일 것이다.
    • 문제를 좁혀나가자. 문제가 발생한 코드를 좁혀나가면서 버그를 격리하자. 좀 더 찾기 수월해질 것이다.

    텍스트 처리

    텍스트 처리 언어를 익히면 생산성에 큰 도움이 된다. ex) awk, sed, 파이썬, perl, ruby, ... 이런 도구들을 사용하면 기존에 사용하던 언어보다 훨씬 빠르게 텍스트를 처리할 수 있을 것이다. 자바 코드의 getter, setter 코드를 자동 삽입해주거나, 데이터베이스 스키마로부터 entity 파일을 생성해주거나 여러가지 것들을 자동화하는데도 쓸 수 있다.

    코드 생성기

    때때로 유사하지만 다른 반복적인 코드를 작성해야할 때가 있다. 이때는 코드 생성기를 만들어보자. 트레이드 오프를 잘 계산해서 코드 생성기를 만들었을 때 생산성이 더 올라간다면 시간을 아낄 수 있을 것이다.

    댓글

Designed by Tistory.