본문 바로가기

MrLazyDev/Earthian

코딩 필사 - 프로그래밍 실력을 높이는 방법

반응형

과거부터 글을 잘쓰고 싶은 생각이 많아서 어떻게 하면 글을 잘쓸 수 있을까 하고 책을 찾아보면 항상 "필사"라는 키워드를 찾을 수 있었다. 지금 현재는 코딩을 누구보다 잘하는 사람이 되고 싶다. 근데 마침 나는 코딩이라는 것도 결국 컴퓨터와 소통하기 위한 언어임을 인지하고 있었다.

 

그래서 나는 친절한 구글에 코딩 필사라는 검색어를 입력했고, 역시나 비슷한 생각을 가지고 수련하는 사람들을 많이 볼 수 있었다.

 

 

우리가 배움이라는 것을 가장 순수한 의미에서 정의할 때, 아이처럼 모방하는 것을 말한다. 거기에는 어떤 해석도 없고 정의내림도 없고 그저 온전히 받아들임에 있다. 좋은 것과 나쁜 것을 구분하지 않고 마치 스펀지처럼 흡수하는 것이다. 언어를 배운다는 것은 그런 접근방식이 옳다는 것을 나 역시 여러 언어를 익혀보며 공감하는 바이다.

 

컴퓨터를 배울 때에도 이 언어에 익숙해질 때까지는 먼저 계속해서 그 환경에 노출되어야 할 뿐 아니라, 따라서 말해봐야 한다는 것을 느끼게 되었다.

 

 

익숙해지면 좋은 코드와 나쁜 코드를 구분할 수 있게 되고, 그것은 나의 스타일이 된다.

 

소스코드 필사와 글 필사의 다른 점

방대한 양의 소설을 필사한다고 치면 그 내용을 완결하지는 않았더라도 그 중간까지의 결과값을 이해할 수 있다. 하지만 소스코드의 경우 중간까지 코드를 실행하면 프로그램은 실행되지 못한다. 그래서 소스코드는 그 재료의 선정이 무엇보다 중요하다.

 

 

좋은 소스코드의 조건

중복코드가 없다

3줄이상의 중복코드가 없어야 한다. 한 두 줄은 동일한 함수 호출의 이유로 중복이 있을 수 있지만, 3줄 이상의 중복코드는 함수 추출 리펙토링으로 해결이 가능하다. 5줄 이상의 중복코드가 있다면 이것은 정말 심각한 것이며, 패턴이 비슷해도 중복코드로 볼 수 있다.

 

네이밍이 훌륭하다

변수명이나 함수명이 따로 설명하지 않아도 충분히 알 수 있다. 기준은 어떤 함수에 대한 주석을 보고나서 나중에 그 함수가 무엇을 하는 놈인지를 바로 알 수 있는 수준이면 된다. 코드의 극치는 주석이 없는데도 의미를 이해할 수 있는 것에 있다.

 

보기가 편하다.

빈 줄이나 빈 칸을 적절히 사용하여 코드가 보기 편한지 확인한다. 프로그래머는 미래의 자신을 위해서 이러한 귀찮은 작업을 하고 있는 것이다. 디버깅과 유지보수는 너무나도 당연한 작업이기 때문에 작성한 코드를 몇 년 뒤에 봐야 하는 경우도 발생한다.

 

중괄호 때문에 발생하는 들여쓰기의 깊이가 3개 이상 되는 경우가 거의 없다

if문과 for문을 사용하다보면 들여쓰기 깊이가 깊어지곤 하는데, 초보 개발자의 입장에서 소스코드의 질을 판별하기 어려울 때는 이 기준을 사용하면 편리하다. 이는 함수 추출법, 클래스 추출법, 함수 프로그래밍 등으로 충분히 예방할 수 있는 것이다.

 

예외처리가 완벽하다.

예외 처리의 핵심은 죽지 않는 견고한 코드다. 어떤 상황에도 적절히 대응하여 살아남는다. 

 

 

 

좋은 소스코드를 구하는 방법

요즘에는 좋은 소스코드들이 널려있다. GitHub로 가면 주석이나 문서도 훌륭한 커뮤니티도 많고, 고수들이 포진한 알고리즘 사이트들을 이용하는 것도 좋은 방법이다.

 

 

 

소스코드 필사방법

코딩 속도를 의식적으로 높여라

코딩을 할 때 습관적으로 천천히 하는 사람들이 있다. 최대한 빨리 칠 수 있는 것에서는 의식적으로 빨리 치도록 하자. 오타가 나더라도 빨리 쳐보도록 하자.

 

 

소스코드 복붙금지

국비학원가면 복붙을 잘하라는 말을 참 많이 듣는데, 코딩 실력을 늘린다는 측면에서는 도움이 안되는 말이다. 오타 때문에 복붙이 안전하다고? 그건 그냥 코딩 실력이 없음을 증명하는 것일 뿐이다.

 

소스코드를 베끼면서 공부가 되는 이유는 바로 복붙을 하지 않고 베껴쓰는 과정 중에 생기는 오류가 나는 상황이다. 만약 오류가 나면 하나 하나 비교를 하게 되면서 공부하게 된다. 해당 소스코드가 문제가 없다는 것을 확인하기 위해서 복붙을 해볼 수는 있다. 그리고 다시 돌아와서 어디가 잘못되었는지를 확인해보자. 그 부분이 바로 내가 코드에서 이해하지 못하고 있는 로직과 문법인 것이다.

 

이런 과정 속에서 소스 코드가 익숙해지기 시작한다. 베끼기만 할 뿐인데, 열받고 답답해서 미칠 지경이 될 것이다. 그런데 성장하는 과정이다. 컴퓨터는 멍청하고 정확하다. 모두 인간이 만든 실수 때문에 오류는 발생한다. 논리의 결함은 컴퓨터에 없고 오로지 사람에게 있다.

 

이 과정을 통해서 오류를 해결하는 디버깅 실력이 늘어나게 되며 어떻게든 해결할 수 있다는 자신감을 늘려가는 과정이 된다.

 

디버깅 기법을 익히기

위와 같이 필사를 하는 과정에서 오류를 만나게 되는데, 여기는 오타도 있고 컴파일 오류도 있을 것이고, 동작 방식이 잘못된 로직 오류도 있을 것이다. 이때는 이상하게 동작하는 코드 부근에 브레이크 포인트를 두고 디버깅 모드를 실행해보는 것이다. Step over나 Step in으로 한 줄 한 줄 이동한다.

 

이동할 때마다 값이 변하는 것을 확인하고 예상한 로직과 같은 흐름으로 가고 있는 지를 확인한다.

반응형