문제점
너무나 광범위하게 사용되는 글로벌 변수들에 의해서 개발, 테스팅, 소스코드의 재사용 등을 어렵게 만들었습니다.
해결책
1. 글로벌 변수의 사용을 피합니다. [객체의 사용]
2. 다른 프로젝트에서 재사용이 가능한 자바스크립트 파일을 생성합니다.
3. 브라우저에 종속적인 코드를 캡슐화합니다.
4. 동시 발생하는 XMLHttpRequest를 처리할 수 있도록 허락합니다.
5. 에러 처리와 에러 리포트를 개선합니다.
6. 기본적인 퍼포먼스 메트릭스를 추가합니다. (add basic performance metrics)
2. 다른 프로젝트에서 재사용이 가능한 자바스크립트 파일을 생성합니다.
3. 브라우저에 종속적인 코드를 캡슐화합니다.
4. 동시 발생하는 XMLHttpRequest를 처리할 수 있도록 허락합니다.
5. 에러 처리와 에러 리포트를 개선합니다.
6. 기본적인 퍼포먼스 메트릭스를 추가합니다. (add basic performance metrics)
자세한 내용은 원문을 보셔야 될 것 같구요 ^^;; 기본적인 원칙은 private, public으로 캡슐화를 통하여 재사용 가능한 클래스의 설계가 아닌가 싶습니다.
// declaration
function myClass(){
// variables
var privateVar = "I am private";
this.publicVar = "I am public";
// functions
var privateFunction = function(){
return "privateMethod";
}
this.publicFunction = function(){
alert("I am public");
}
this.callPrivateFunction = function(){
return "called private function: " + privateFunction();
}
}
// usage
var myInstance = new myClass();
myInstance.publicVar = "new value";
alert(myInstance.privateVar); // undefined!
myInstance.publicFunction();
myInstance.privateFunction(); // error!
alert(myInstance.callPrivateFunction()); function myClass(){
// variables
var privateVar = "I am private";
this.publicVar = "I am public";
// functions
var privateFunction = function(){
return "privateMethod";
}
this.publicFunction = function(){
alert("I am public");
}
this.callPrivateFunction = function(){
return "called private function: " + privateFunction();
}
}
// usage
var myInstance = new myClass();
myInstance.publicVar = "new value";
alert(myInstance.privateVar); // undefined!
myInstance.publicFunction();
myInstance.privateFunction(); // error!
// return "called private fuction: privatemethod"
function을 사용해서 클래스를 정의하고 내부에 변수선언을 해서 private로, this를 이용하여 public으로 사용할 수 있습니다.
이 외에도 prototype을 사용하여서도 메소드 정의가 가능합니다.
prototype을 사용하여 메소드를 정의할 때 생성자에서 정의한 private 변수 메소드는 사용불가능합니다. (--;; 어찌보면 당연한걸...)
출처 :
리팩토링 도구에 대한 내용인줄 알았더니 수작업 리팩토링이구만.
답글삭제동적 타입 언어는 도구에 의한 리팩토링을 충실하게 지원하기 어렵다는 생각인데, 누군가 시도는 하고 있을 것 같군.
아직까지 도구는 나오지는 않은것 같습니다. 이클립스 플러그인으로 제공되는 제품들도 리팩토링은 기본으로 안되고 있고 나머지 검색기능이나 자동완성기능도 많이 미흡하구요. 상용툴은 조사 안해봤습니다. ^^;;
답글삭제꼭 저렇게 해야해?
답글삭제그냥 짜면 안될까? ㅡ,ㅡ;
재사용하려면 저렇게 짜야지... ㅋㅋ
답글삭제