2010-05-21 5 views
3

저는 자바 스크립트를 더 많이 사용하기 시작했습니다. 결과적으로 조직이 관심을 가지기에 충분할만큼 복잡하게 작성하고 있습니다. 그러나이 질문은 함수를 중첩 할 수있는 모든 언어에 적용됩니다. 본질적으로 익명의 함수를 명명 된 전역 함수 나 내부 함수를 사용해야합니까?익명 함수를 사용하는 가장 깨끗한 방법은 무엇입니까?

처음에는 그게 가장 멋진 기능이라고 생각했지만, 나는 배 밖으로 갈 것이라고 생각합니다. 다음은 최근에 작성한 예입니다. 구조를 볼 수 있도록 모든 변수 delcarations와 조건문을 생략하십시오.

function printStream() { 
    return fold(function (elem, acc) { 
    ... 
    var comments = (function() { 
     return fold(function (comment, out) { 
     ... 
     return out + ...; 
     }, '', elem.comments); 
    return acc + ... + comments; 
    }, '', data.stream); 
} 
그래도 실현

(나는 생각한다) 컴팩트있는 아름다움의 일종있다, 아마 당신이 코드의 톤에서 원하지 않을 것 같은 방법으로이 작업을 수행하는 좋은 생각이 아니다 double for 루프.

답변

1

다른 도구와 마찬가지로 다릅니다. 당신은 항상 그것을 사용해서는 안됩니다. 적절한 곳에서 사용해야합니다.

간단한 2 또는 3 라이너인데 어디에서나 사용할 수있는 응용 프로그램을 사용해야합니다.

거래에서 변수를 분리하기 위해 클로저를 얻는 곳에서는 JavaScript에서 사용해야합니다.

무엇보다도 다른 개발자가 코드를보고 "이해"할 수만 있다면 괜찮습니다. 위 코드 샘플을 보면 이 아니라 "get it"입니다.

+0

"get it"테스트는 당신이 독점적 인 개발자라면 어렵습니다. 나중에 재 방문 할 때 자신이 어려움을 겪게 될지 판단하기가 어렵습니다. 나는 당신의 2-3 선의 엄지 손가락 규칙이 아마 내가 고집 할 좋은 것이라고 생각한다. 그리고 나는 내가 완전히 둥지를 튼 유혹을 피할 수 있다고 생각합니다. –

1

익명의 기능이 수행 할 수있는 작업은 수행중인 작업과 수행 기간에 따라 다릅니다.

나는 단순한 익명 함수를 가능한 많이 갖고 있으며 호출 할 함수가 길거나 복잡한 경우 외부에서 정의 된 함수 (코드 블록 외부 또는 다른 파일 ...)를 호출하면됩니다. 익명 함수로 인라인하는 대신.

이렇게하면 함수가 길 경우 코드를 읽기 쉽고 읽을 수 있습니다. 함수가 여러 곳에서 사용되는 경우 더 유용합니다. 그렇지 않으면 함수가 사용되는 곳마다 중복됩니다.

1

여러분의 목적과 응용 프로그램에 따라 다릅니다. 코드의 재사용 가능성과 유지 보수성에 대해 생각해 봐야합니다.

익명 함수를 다시 사용하고 싶지 않은 경우 - 예전처럼 익숙한 함수를 사용하십시오 ( ). 다시 사용하려면 코드를 전역 함수로 만드십시오.

함수 호출이 익명이 아닌 경우 유지 관리가 더 쉽습니다.

디버깅이 때로는 더 쉽습니다 (오류 메시지 : 기능 {}의 오류로 인해 많은 도움이되지 않습니다).

관련 문제