나는 GAS 라이브러리를 작성하는 가장 좋은 방법을 잠시 동안 알아 내려고 노력했지만 해트트를 알아 냈습니다. Douglas Crockford 's를 읽었습니다. Javascript : 좋은 부분들과 저는 GAS에서 이러한 수업을 구현하려고합니다. 가져온 모든 라이브러리는 (ScriptModule 유형의) 프로젝트에 전역 변수를 추가하므로 the modular design pattern은 시작하기 좋은 곳처럼 보입니다. 나는 그런 패턴에 링크 된 기사에서 차입하는 것은 다음과 같습니다GAS 라이브러리의 디자인 패턴은 무엇입니까?
var MODULE = (function() {
var my = {},
privateVariable = 1;
function privateMethod() {
// ...
}
my.moduleProperty = 1;
my.moduleMethod = function() {
// ...
};
return my;
}());
이 모듈은 다음과 같이 호출 할 수 있습니다 : 나는 그것이 최선 수집 무엇부터
var module = LibName.MODULE;
var property = module.moduleProperty; // 1
var method = module.moduleMethod; // ...
가 적은 전역 변수가 가능한 한 일반적인 조언은 모든 것을 하나의 전역 변수에 저장하는 것으로 보인다. 그래서 명명 규칙은 다음과 같이 보일 것입니다 : LibName.PROJECT_NAME, 여기서 project name은 다른 모든 것을 가진 모듈을 가지고있는 하나의 전역 변수의 이름입니다.
여기 내 목표는 안전하고 충돌이없는 라이브러리를 디자인하는 것입니다. 이 디자인 패턴을 사용할 권리가 있습니까? GAS 라이브러리를위한 강력한 디자인 패턴을 개발 한 사람이 있습니까?
나는 충돌에 대해 옳다고 생각하는데, 라이브러리의 이름은 모든 것이 저장되는 네임 스페이스이기도합니다. –
(5 분 편집 제한을 넘었습니다.) 모듈 형 패턴을 테스트했으며 예상대로 작동합니다. 이 디자인 패턴에서는 개인 변수와 개체 자체에서만 액세스 할 수있는 개인 메서드가있는 개체를 갖게됩니다. 앱 스크립트에서 개체를 처리하는 더 좋은 방법이 있습니까? –
나는 거기 있다고 생각하지 않는다. 그러나 라이브러리 스크립트의 AFAIK 변수/속성은 가져 오는 스크립트에서 볼 수 없습니다. 메소드를 숨기려면 밑줄 "_"을 추가하면됩니다. 다시 말하지만, 객체 - 모든 스크립트를 라이브러리로 사용하기 위해 중첩하는 것으로는 생각하지 않습니다. –