ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 코딩 중 겪는 혼란에 대한 이해, 신속한 코드 분석
    클린 코드(Clean Code)/프로그래머의 뇌 2024. 1. 1. 01:01
    728x90

    세 가지 언어로 N을 이진수로 변환해 보기

    세 가지 언어에서 모두 혼란스러운 부분이 존재하였습니다.

     

    APL 

    2 2 2 2 2 T n

     

    T에 대한 지식이 부족하기 때문에 혼란스럽다!

    T는 어떤 수의 값을 다른 진법의 수로 변환해 주는 이항 부호화함수이다!

     

    Java 

    Integer.toBinaryString(n);

    내부동작을 잘 모르기 때문에 혼란스럽다!

     

    베이식

    LET N2 = ABS(INT(N))
    LET B$ = ""
    FOR N1 = N2 TO 0 STEP 0
        LET N2 = INT(N1/2)
        LET B$ = STR$(N1 - N2 * 2) + B$
        LET N1 = N2
    NEXT N1
    PRINT B$

    모든 단계를 이해하는 처리 능력이 부족하기 때문에 혼란스럽다!

    변수들이 중간에 어떤 값을 갖는지 종이에 적으면서 이해해야 한다

     

    우리의 인지과정

    장기기억(지식) + 단기기억으로 이루어진다.

    단기기억은 코드에서 키워드, 변수명, 자료구조 등을 의미합니다.

     

     

    우리는 많은 시간을 코드를 읽는데 보낸다

    코드를 작성하기보다 읽는데 시간을 많이 보내기 때문에 읽기 쉬운 코드를 작성하는 것이 중요하다.


    생소한 코드를 읽는 게 어려운 이유

    우리의 단기 기억은 대게 30초를 넘지 않는다.

    그리고 단기기억에는 정해진 용량이 있다.

    우리는 2개에서 6개 사이에서 단기로 기억하는 용량이 적다.

     

    기억의 크기제한을 극복하기

    단위로 묶는 위력을 체험해 보자

     

    5초간 보고 기억해 보기

    abk mrtpi gbar

     

    5초간 보고 기억해 보기

    cat loves cake

     

    cat loves cake로 단어를 묶어서 기억하기 때문에 이전보다 훨씬 기억하기 쉬워집니다.

     

     

    디자인패턴과 읽기 쉬운 코드

    우리가 디자인패턴에 대해 알고 있다면 해당 디자인패턴을 통해 구성된 코드는 자연스럽게 읽기 쉬워질 것입니다.

     

     

    의도적으로 묶는 연습하기 & 표식 만들기

    예를 들어 이진트리를 만드는 코드에서는 다음과 같은 표식을 만날 수 있다.

    표식이란 "아 이거구나"라는 생각만 들면 됩니다.

     

    • 주석문에 "트리"라는 단어 발견
    • root와 tree라는 변수명
    • left와 right라는 필드명
    • 트리에 관한 문자열 값 "트리의 내용은 다음과 같다"

     

    팀 동료들과도 함께 잘 알지 못하는 코드 & 잘 아는 코드에서 표식을 발견하고 논의해 보자!

    • 어떤 표식을 찾았는가?
    • 찾은 표식은 코드인가, 사람의 언어 정보인가?
    • 표식은 무엇을 알려주는가?
    • 그 표식은 코드의 도메인에 대한 지식을 나타내는가?
    • 그 표식은 코드의 기능에 대한 지식을 나타내는가?

     

    팀 스터디를 통해 진행해 봐도 좋을 것 같습니다.

     

    글을 읽고 든 개인적인 생각

    장기기억(지식)을 많이 쌓아둘수록 과거의 지식을 기반으로 이해하는데 유리하다!

    하나의 클래스를 작성할 때 30초 이하로 읽을 수 있도록 코드의 크기를 구성하자

    나뿐만 아니라 다른 사람도 알기 쉬운 표식을 제공하자

    팀 스터디를 통해 서로의 표식을 공유해보자!

     

     

    댓글

Designed by Tistory.