닌자 코드

Dorogono·2022년 5월 10일
0

JS 알아보기

목록 보기
10/19
post-thumbnail

닌자 코드란.

닌자와 같이 이름이 알려지지 않았지만, 아는 사람들만 아는 무림의 고수가 사용하던 코드다.

그 코드의 특징을 알아보는 글이다.

코드는 최대한 짧게 쓰기

// 출처: 아주 유명한 라이브러리
i = i ? i < 0 ? Math.max(0, len + i) : i : 0;

이 코드를 본 다른 개발자들은 i가 무슨 변수인지 알아보는 데 엄청 오랜 시간이 걸리겠지만, 답을 찾지 못하고 코드를 쓴 당사자인 당신을 찾아올 것이 분명하다.

찾아와서 묻는다면, 짧은 코드가 일 잘하는 비결이라고 답해보세요.

글자 하나만 사용하기

모든 변수명을 a, b, c 와 같이 한 글자만을 사용한다.

for(let x=0; x<n; x++){
 ... 
}

반복문에 사용될 변수마저도 다른 개발자들이 흔히 쓰는 i를 쓰지 않는다.

약어(나만의 단어사전) 사용하기

let ua = userAgent;
let lst = list;
let brsr = browser;

위 코드와 같이 나만이 알아볼 수 있도록 약어로 변수명을 정한다.

이렇게 코드를 짠다면, 당신만이 혹은 이 코드를 읽을 직감이 뛰어난 개발자만이 유지보수를 할 수 있다.

포괄적인 명사 사용하기

str, num과 같이 자료형과 연관된 변수명을 사용한다.
이 변수가 뭘 의미하는지, 데이터 자체를 뜻하는 건지는 당신만이 알 수 있습니다.

data, value, item 등과 같은 다양한 개념을 포괄할 수 있는 변수명을 사용한다.
이런 변수명은 어떤 상황에서도 사용할 수 있습니다.
모든 변수가 담고 있는 건 data이기 때문입니다.

함수에 다양한 기능 넣기

하나의 기능을 담지 말아야 한다.
함수 이름으로 함수의 기능을 한정 짓지 말자는 의미다.

예를 들어, validateEmail(email)와 같은 함수에 이메일 주소인지 아닌지를 판별하는 기능 외에도, 에러 메시지를 보여주는 기능도 추가하고, 메일 주소를 다시 입력하라는 기능도 추가하는 것이다.

그러므로 함수 이름에서 유추할 수 없는 기능까지도 추가할수록 좋다는 뜻이다.

진정한 닌자라면, 상상력을 발휘해 그 누구도 알 수 없을법한 기능을 추가할 수 있어야 하기 때문이다.

이렇게 만들면 코드 재사용도 방지할 수 있고, 그로 인해서 질문할 수 있는 사람도 없다는 장점이 생긴다.

읽으면서 계속 고개를 갸우뚱하는 게 당연하다.
이런 편법은 초보가 아닌 닌자가 사용하는 코드이기 때문이다.

출처 : 모던 자바스크립트

우리 모두 이런 코드는 쓰지 않기로 하자.
닌자가 모두 무림의 고수는 아니다.
이름도 존재도 모르는 닌자는 고수가 될 수 없다.

profile
3D를 좋아하는 FE 개발자입니다.

4개의 댓글

comment-user-thumbnail
2022년 5월 10일

굉장히 재미있는 글이네요 ㅎㅎ 🤣 닌자 코드... 만약 회사에 들어가서 보게 된다면 저절로 뒷목이 잡힐 것 같아요😥 모두가 알아볼 수 있는 클린 코드를 짤 수 있도록 노력해야겠습니다! ㅎㅎ 오늘도 수고하셨습니다~ 😄🙌!!

답글 달기
comment-user-thumbnail
2022년 5월 10일

오늘 클린코드에 대해서 자료를 본적이 있는데 닌자코드라는 용어도 있는걸 처음 알았네요😎😎 코드를 짜면서 계속 유의해야할 사항인 것 같아요. 여러번 읽어서 머리에 기억시켜놔야겠어요 ㅎㅎ

답글 달기
comment-user-thumbnail
2022년 5월 10일

왠지 찔리는건 어쩌면 저도 닌자가 아닐지 .. 😰
반성하면서 코드 짤 때 항상 위 내용들을 생각하면서 짜도록 노력해야겠어요!

답글 달기
comment-user-thumbnail
2022년 5월 10일

처음에 읽으면서 "이게 무슨 내용이지???" 갸우뚱하면서 읽다가 마지막 반전에 웃고 갑니다. ヾ(≧▽≦*)o

답글 달기