코딩과 디버깅에 관하여

오늘은 코딩과 디버깅에 관하여 읽었다.

내 경험상 코딩과 디버깅을 하는 것은 그리 중요하지 않았었다. 왜냐하면 코딩을 하려면 문제를 어떻게 풀지 이해하고 계획이 세워져 있었어야 하기 때문이다. 그래서 코딩은 대충 생각하는 경향이 있었는데..

이 챕터를 읽으면서 코딩을 하면서 간과하지 말아야 할 것들, 문제를 풀면서 가져야 할 습관들을 알아보았다.

글을 쓰면서 오늘 읽었던 내용을 정리하고, 다시한번 복습해보는 시간을 가지려고 한다.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

먼저 코딩을 하는데 있어서 중요한 것들을 보면,


  1. 간결한 코드를 작성하는것
  2. 적극적으로 코드를 재사용하는것
  3. 표준 라이브러리를 공부하는 것
  4. 항상 같은 형태로 프로그램을 작성하는 것
  5. 일관적이고 명료한 명명법 사용하는 것
  6. 모든 자료를 정규화해서 저장하는 것
  7. 코드와 데이터를 분리하는 것
들이 있다. 음.. 많다. 하지만 다 알아둬야 할 것들이니, 빼먹지 말고 지키려고 노력하고 실천해보자.

  • 간결한 코드를 작성하는 것
코드를 길게 작성할수록 그 코드는 읽기 어려워지고, 단순한 버그들을 찾기 어렵고 오타나 디버깅이 어렵다. 코드는 간결하게 작성할수록 좋은 것이라고 할 수 있다. 물론 간결하게 작성한 만큼 소스 고치기가 어려워질수도 있지만, 그런 경우에는 모듈화를 잘 시켜놓거나 해야할 것이다.. 말이 쉽지만 몇번 소스를 갈아엎으면서 경험해봤던 적이 있어 이 부분은 좀 더 이해할 수가 있었다.
그리고 간결한 코드를 작성하는것은 단순히 코드를 짧게 쓰는 것이 아니라, 명확한 들여쓰기와 읽기 쉬운 함수,변수의 네이밍, 설명이 잘 되어있는 주석 등도 포함이 될 것이다.

  • 적극적으로 코드를 재사용하는 것
같은 소스가 중복되는 상황이 발생한다면 어떻게 해야할까. 자바를 배우면서 메서드를 만들고 클래스를 만들었던 기억이 난다. 상속이란 개념을 이용해서 클래스를 사용했던 경험이 있는데, 이와 같다. 코드를 재사용하는 것은 코딩에서 빼놓을 수 없는 일이라고 할 수 있다.

  • 표준 라이브러리 공부
이 표준라이브러리를 공부하는 것은 내가 잘 하지 못했던 부분이다. 라이브러리를 공부하는게 처음에는 매우 귀찮은 일이었다.. 하지만 지금와서보면 표준 라이브러리는 이미 완벽한 솔루션으로 이루어진 것들이고, 이를 공부하는 것은 튼튼한 배를 만드는 것과 같다. 그리고 이를 가지고 알고리즘을 해결하는 과정은 많은 시간을 단축시켜줄 수 있기 때문에, 공부하는 것 이상으로 얻을 수 있는 것이 있을것같다. 하나씩 살펴보도록 해야겠다.. 꼭..!

  • 항상 같은 형태로 프로그램 작성하기
알고리즘은 여러가지 형태로 작성이 되는데, 자신만의 스타일을 가지는 것이 좋은거같다. 물론 한가지만 고집하는게 좋은것이라고 할 수는 없겠지만, 어떤 알고리즘은 같은 형태로 풀 수 있을 것이다. 자주 작성하는 알고리즘이나 코드 등에는 한번 검증된 코드를 작성하고 꾸준히 사용하면, 문제에 좀 더 집중할 수 있을 것이다.

  • 일관적이고 명료한 명명법 사용하는 것
이름을 지정하는 것은 정말 중요한 일임과 동시에, 가장 어려운 일인거같다.. 나중에 코드를 다시 보게된다면 항상 드는 생각이 '모야 뭔 함수지...'라는 것을 생각해보면, 중요하다.. 함수의 이름같은경우는 이름을 보고 결과값까지 유추할 수 있으니 명명법을 정해놓고 코딩을 시작해 놓는 것은 아주 좋은 습관이라고 할 수 있겠다.

  • 모든 자료를 정규화해서 저장하기
데이터를 표현하는데 있어 표준을 정하는 것은 좋은 습관이라 할 수 있다. 왜냐하면 실수범위의 답이 나오길 바랬지만 정수표현으로 답이 나온다면 엄청난 오차가 발생할 수도 있기 때문이다. 몇가지 예를 들자면,
    • 정수, 유리수, 실수 표현
    • 각도 계산
    • 시간 표시
    • 문자열 인코딩
이를 방지하기 위해서는 자료를 입력받자마자 정한 규칙에 따라 정규화를 수행하는 것이 좋다.

  • 코드와 데이터를 분리하기
책에서 예를 든 것은 '월'을 구분하는 것인데, 1을 입력받으면 'January'를 받을 수 있는 프로그램을 작성한다고 하자. 몇가지 방법이 있는데, 

첫번째는 if를 이용하는 것이다. 
if(input == '1') return 'January'

두번째는 배열을 이용하는 것이다.
const monthName = ["January", "February" ...] 

이런식으로 코드에서 데이터를 받아내는 것이 아닌 코드와 데이터를 분리시키는 작업을 해놓는 것이다.

훔.. 이건 감이 잘 오지 않는데 어디에서 사용할 수 있을까.?


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

두번째로는 자주 하는 실수, 디버깅에 대하여가 있다. 이는 내일 포스팅에서 작성하도록 하겠다!

댓글

이 블로그의 인기 게시물

mac 환경변수 설정에 대한 정보