닌자와 같이 이름이 알려지지 않았지만, 아는 사람들만 아는 무림의 고수가 사용하던 코드다.
그 코드의 특징을 알아보는 글이다.
// 출처: 아주 유명한 라이브러리
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)와 같은 함수에 이메일 주소인지 아닌지를 판별하는 기능 외에도, 에러 메시지를 보여주는 기능도 추가하고, 메일 주소를 다시 입력하라는 기능도 추가하는 것이다.
그러므로 함수 이름에서 유추할 수 없는 기능까지도 추가할수록 좋다는 뜻이다.
진정한 닌자라면, 상상력을 발휘해 그 누구도 알 수 없을법한 기능을 추가할 수 있어야 하기 때문이다.
이렇게 만들면 코드 재사용도 방지할 수 있고, 그로 인해서 질문할 수 있는 사람도 없다는 장점이 생긴다.
읽으면서 계속 고개를 갸우뚱하는 게 당연하다.
이런 편법은 초보가 아닌 닌자가 사용하는 코드이기 때문이다.
출처 : 모던 자바스크립트
우리 모두 이런 코드는 쓰지 않기로 하자.
닌자가 모두 무림의 고수는 아니다.
이름도 존재도 모르는 닌자는 고수가 될 수 없다.
굉장히 재미있는 글이네요 ㅎㅎ 🤣 닌자 코드... 만약 회사에 들어가서 보게 된다면 저절로 뒷목이 잡힐 것 같아요😥 모두가 알아볼 수 있는 클린 코드를 짤 수 있도록 노력해야겠습니다! ㅎㅎ 오늘도 수고하셨습니다~ 😄🙌!!