ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 생각의 버그 & 이름 잘 짓기
    클린 코드(Clean Code)/프로그래머의 뇌 2024. 1. 16. 00:01
    728x90

     

    생각의 전이

    우리는 새 바지를 살 때 어떻게 단추를 닫아야 하는지 안다.

    우리는 새로운 노트북을 사더라도 키보드를 어떻게 사용할지 안다.

    생각이 전이되기 때문에 우리는 새로운 경험을 하더라도 기존 경험을 활용합니다.

     

    이미 아는 것은 저주인가 축복인가?

    무언가를 알고 있어 새로운 일을 배울 때 도움이 될 수 있습니다.

    하미잔 기존에 알던 지식이 새로운 일을 배울 때 악영향이 될 수 있습니다.

     

    예를 들어 자바에서는 초기화 없이 변수를 사용할 수 없어서 매번 초기화해야 합니다.

    하지만 경험 많은 자바 프로그래머는 파이썬은 그럴 필요가 없지만 파이썬에서도 모든 변수를 초기화해야 하며 그렇지 않으면 컴파일러가 경고를 보낸다고 가정할 수 있습니다.

     

    또한 객체 지향 언어에 익숙해진 상태에서 F#이라는 함수형 언어를 배우게  된다면 더 어려움을 겪습니다.

    객체 지향 언어, 함수형 언어에 동일한 함수가 존재하지만 서로 다른 방식으로 동작합니다.

     

     

    오개념: 생각의 버그

    코드가 작동한다고 확신함에도 불구하고 오류가 발생한다면 코드에 대한 오개념이 문제일 가능성이 큽니다.

     

     

    스웨터를 입은 눈사람이 더 빨리 녹을 것 같다.

     

    스웨터를 입으면 눈사람은 단열되어 낮은 온도를 유지하고 녹는 것이 더 느려집니다.

     

    이미 학습된 내용을 변경해야 하기 때문에 일반적인 학습보다 더 어렵습니다.

    오개념은 쉽게 사라지지 않고 오래 지속됩니다.

     

    작업중인 코드에 대해서도 오개념을 가질 수 있습니다.

    프로그래밍 언어, 프레임워크, 라이브러리, 도메인, 변수의 의미, 코드 작성자의 의도에 대해 이미 가지고 있는 지식을 바탕으로 코드를 가정할 때마다 오개념의 위험이 존재합니다.

     

    생각의 버그 방지하기

    • 내가 틀릴 수 있다는 열린 마음 유지
    • 오개념에 대해 의도적으로 연구해보기 (새로운 프로그래밍 언어를 배울 때 주의할 오개념들 찾아보기)
    • 같은 절차(어려움)를 밟았던 다른분들에게 조언 구하기
    • 두 명이 한쌍으로 같이 프로그래밍 하기
    • 코드베이스 테스트해 보기

    좋은 이름 짓기

    좋은 이름을 지으면 장기기억측면에서 코드 도메인에 대해 알고 있는 관련 정보를 찾을 수 있습니다.

    또한 단기기억측면에서는 청킹에 도움이 되어 인지부하를 줄여줄 수 있습니다.

     

    반면에 나쁜 이름의 경우에는 코드에 대한 잘못된 추측을 하게 되고 오개념을 유발합니다.

     

    하지만 좋은 이름을 짓는 것에 대해 많은 프로그래머들이 어려워합니다.

     

    좋은 이름을 어떻게 지을 수 있을까요?

    • 일관된 이름 사용하기
    • 혼란을 줄 수 있는 약어인지 체크해 보기
    • 코드에 대해 아무것도 모르는 상태에서 이름이 무엇을 의미하는지 명확한지 확인하기

     

     

    이름을 축약해야 한다 vs 축약하지 않아야 한다

    개인적으로는 축약을 하면 해석하는데 더 오래 걸려서 좋아하지 않습니다.

    코드를 잘 이해하고 버그를 쉽게 찾기 위해서는 축약하지 않는 것이 더 좋습니다.

    반면에 기억을 더 잘하기 위해서는 간결한 약자를 사용하는 게 좋습니다.

     

    snakeCase vs camel_case

    연구결과 camel_case로 작성된 경우 답을 더 빠르게 찾습니다.

    하지만 그렇다고 해서 snakeCase로 된 명명을 camel_case로 전부 전환할 필요는 없습니다.

    일관성도 중요한 요소이기 때문입니다.

     

    또한 Java처럼 언어차원에서도 snakeCase를 미는 경우도 있습니다.

     

     

    댓글

Designed by Tistory.