디자인 패턴의 구조와 만들어진 목적을 이해하면 해당 패턴이 필요한 이유에 대해 더 깊게 이해할 수 있다.
좋은 패턴은 사용자에게 충분한 참고 자료를 제공해야 하며 이 패턴이 왜 필요한지에 대한 근거를 제공해야 한다.
패턴은 계획 및 작성 단계에서 초기 비용이 많이 들 수도 있지만, 그 투자로 얻을 수 있는 가치가 크다.
조직이나 팀의 모든 개발자가 동일한 지식을 공유하고 작업할 수 있기 때문에 패턴은 중요하다.
새로운 디자인 패턴을 만들거나 기존 디자인 패턴을 적용하려는 경우 다음 체크 리스트를 참고하면 좋다.
얼마나 실용적인가?
모범 사례를 염두에 두라
사용자에게 솔직해야 한다.
독창성은 패턴 설계의 핵심이 아니다.
패턴의 최초 발견자가 될 필요도 없고, 다른 패턴과 조금 겹치는 부분이 있어도 상관없다.
넓게 적용할 수 있는 패턴이라면 유용한 패턴으로 인정받을 수 있다.
훌륭한 예시가 필요하다.
안티 패턴이란 겉으로만 해결책처럼 생긴 패턴을 뜻한다.
안티 패턴을 이해하는 것은 디자인 패턴을 아는 것만큼이나 중요하다.
애플리케이션의 품질은 팀의 기술 레벨과 투자한 시간에 따라 좋아질 수도, 나빠질 수도 있다.
여기서 좋고 나쁨은 상황에 따라 결정되며, 소위 ‘완벽한’ 설계도 잘못된 상황에서 사용된다면 안티 패턴이 될 수 있다.
자바스크립트는 느슨한 타입 언어이기 때문에 신속한 구현을 위한 임시방편을 사용하여 결국 안티 패턴이 되는 경향이 두드러진다.
다음은 자바스크립트를 사용하여 마주했을 수도 있는 안티 패턴의 예시이다.
전역 컨텍스트에서 수많은 변수를 정의하여 전역 네임스페이스 오염시키기
setTimeout
이나 setInterval
에 함수가 아닌 문자열을 전달해서 내부적으로 eval()
실행되게 하기
setTimeout("updateTimeout('value')", 5000);
function updateTimeput(i) { ...
Object 클래스의 프로토타입 수정하기
자바스크립트를 인라인으로 사용하여 유연성 떨어뜨리기
document.createElement
대신 document.write
사용하기
💡
eval
문자로 표현 된 Javascript 코드를 실행하는 함수console.log(eval('2 + 2'));
💡 인라인 자바스크립트
태그 내에 직접 자바스크립트 명령어를 작성하는 방법을 인라인 자바스크립트라고 한다.<h1 onclick="alert('ok!')">인라인 방식 자바스크립트</h1> <h1>내부 자바스크립트</h1>
💡
document.write
는 페이지가 로드된 뒤에 실행된다면 기존 페이지의 내용을 덮어씌운다.
그렇기에document.createElement
가 더 적합하여, XHTML에서는 작동하지 않기 때문에document.createElment
같은 DOM 친화적인 메서드를 사용하는 것이 좋다.