도은
-안티 패턴이 무엇이며
-안티 패턴을 이해하고 판별하는 것이 왜 필요한지
-자바스크립트에서 볼 수 있는 대표적인 안티 패턴 유형
4.1 안티 패턴이란?
- 잘못된 패턴
- GoF의 디자인 패턴에서는 안티 패턴을
겉으로만 해결책처럼 생긴 패턴
- 안티 패턴을 이해하는 것은 디자인 패턴을 아는 것만큼이나 중요하다.
- 익숙하지 않은 개발자는 실수로 나쁜 디자인 패턴을 도입할 수도
- 안티 패턴이라는 것을 빠르게 인지할 수 있다면 실수를 피할 수 있을 것
4.2 자바스크립트 안티 패턴
- 개발자는 가끔 신속한 구현을 위해 임시방편을 선택하기도 (
yes..yes..
) - 이러한 임시방편은 영구적으로 이어지는 경향이 있고, 이는 기술 부채로 이어져 안티 패턴이 되곤 한다. (
강한 yes..yes..
) - 자바스크립트는 느슨한 타입 언어이기 때문에 특히 이런 경향이 두드러짐
안티 패턴의 예시
- 전역 컨텍스트에서 수많은 변수를 정의하며 전역 네임스페이스를 오염시키기
setTimeout
이나setInterval
에 함수가 아닌 문자열을 전달해서 내부적으로eval()
실행되게 하기setTimeout("console.log('Hello, World!')", 1000);
eval()
은 자바스크립트 코드 문자열을 런타임에 실행하는 기능- 외부에서 입력받은 문자열을 그대로 전달하면 악성 코드가 실행될 수도 있다.
- 문자열로 작성된 코드는 디버깅이 어렵고 유지보수가 힘들다.
- Object 클래스의 프로토타입을 수정하기
- 자바스크립트를 인라인으로 사용하여 유연성을 떨어뜨리기
document.createElement
대신document.write
사용하기