[모던 자바스크립트 튜토리얼] 3.4 닌자 코드

개발견 배도르만·2023년 3월 7일
0
post-thumbnail

닌자 코드

처음 접하는 개념이었다. 내용을 확인해 보니, 특정 코드 스타일에 대한 풍자의 성격을 가진 개념인 것 같다. 본문이 익살스럽게 쓰여 있으니 확인해보면 좋을 듯하다.

닌자

가마쿠라 시대부터 에도 시대까지 존재하여 활동하였던 일본의 특수 전투 집단.
임무는 첩보, 파괴, 침투, 음모, 암살 등
변장과 은신, 암살, 교란, 추리, 침투, 위장술에 아주 능통한 달인
닌자들의 규칙 중 하나는 자신의 정체를 드러내면 안 된다는 점
출처

대충 코드의 의미를 교란하고 숨기며 변수명을 은폐하여 동료 개발자를 스트레스로 암살하는 방법 소개

코드 짧게 쓰기

가독성과 의미를 무시하고 지엽적인 문법 지식 등을 총동원하여 코드 양을 획기적으로 줄이기.

조건부 연산자 '?'를 사용한 예시

i = i ? i < 0 ? Math.max(0, len + i) : i : 0;

글자 하나만 사용하기

글자 하나만 사용해서 변수 이름을 짓기(a, b, c 등)

반대로 for 문에선 i 대신 생소한 x, y 등의 변수 사용하기.

약어 사용하기

변수명을 한 글자로 지을 수 없다면 약어를 사용하여 동료들의 직감을 시험해 보기.

예시:

list → lst.
userAgent → ua.
browser → brsr.

포괄적인 명사 사용하기

무언가를 명명할 땐 obj, data, value, item, elem 같이 다양한 개념을 포괄할 수 있는 명사를 사용하기.

새로운 변수명이 더는 떠오르지 않는다면 data1, item2, elem5 처럼 옆에 숫자를 붙여주기.

철자가 유사한 단어 사용하기

date와 data같이 유사한 철자를 가진 단어를 조합해 사용하여 주의력이 떨어지는 동료 개발자를 걸러내기.

동의어 사용하기

유사한 뜻을 가진 단어 여러 개를 같은 대상의 명명에 사용하여 혼란을 주기
(특정 대상을 보여주는 동작 수행 함수에 display...와 show...를 혼용하는 등)

이름 재사용하기

새로운 값 저장 시 변수를 선언하는 대신에 기존의 변수를 활용하여 변수 값의 형태, 의미, 출처를 흐리기.
함수 구현부라면 내부 변수를 선언하지 않고 매개변수에서 넘어온 값만 사용하기.

재미로 언더스코어 사용하기

_name이나 __value처럼 변수명 앞에 _나 __(언더스코어, 밑줄 표시)을 붙여 가독성을 떨어뜨리고, 언더스코어의 의미를 파악하는 데에 공을 들이게 하기.

과장 형용사 사용하기

superElement, megaFrame, niceItem처럼 개체 앞에 의미 없이 과장된 형용사를 붙여 해당 개체가 얼마나 멋진지 알려주기.

외부 변수 덮어쓰기

함수 내부와 외부에 동일한 이름을 가진 변수를 선언해 사용하기.

let user = authenticateUser();

function render() {
  let user = anotherValue();
  ...
  ...함수 길이가 긺...
  ...
  ... // <-- 개발자는 user와 관련된 이 부분의 코드를 수정해야 함
  ...
}

함수 내부에서 변수 user를 다시 정의했음에도 불구하고, 개발자는 user가 외부 변수(authenticateUser()의 호출 결과)인지 착각하며 작업을 진행할 확률이 높다.

부작용이 있는 코드 작성하기

isReady(), checkPermission(), findTags()같은 단순 확인용 함수들에 부가 기능(외부 값 변경, return 값이 boolean 형태가 아님 등)을 추가하기.

함수에 다양한 기능 넣기

함수 이름에서 유추할 수 없을 만한 추가적인 기능을 확장하기.

profile
네 발 개발 개

0개의 댓글