2015-02-02 4 views
0

나는 이맥스에서 일종의 javascript IDE 인 js2 모드를 시험 중이다. 기능 중 하나는 구문 오류 강조 표시 및 스타일 경고입니다. 전원을 켜기 때문에, 내가 발견 한 그 내 모든 코드를 통해 경고이 하나 받고 있어요 : 나는 누구의 책임 콜백을 호출하는 함수를 작성하면값을 반환 할 필요가없는 함수에서 값 반환

anonymous function does not always return a value 

, 나는 종종 명시 적으로 수익을 추가하지 마십시오을 값. 그 나쁜 스타일인가요? 예를 들어

다음 return은 함수의 나머지 부분을 보장하는 역할을

function someFunc (requiredParam, callback) { 
    if (!requiredParam) 
     return callback("missing required param") 

    someAsyncMethod(requiredParam, function(someValue) { 
     callback(null, someValue) 
    }) 
} 

이 실행되지 않습니다. 그게 더 낫지?

function someFunc (requiredParam, callback) { 
    if (!requiredParam) 
     return callback("missing required param") 

    return someAsyncMethod(requiredParam, function(someValue) { 
     return callback(null, someValue) 
    }) 
} 

후자의 스타일은 js2 모드가 나를 버려두는 유일한 방법입니다. 또는 어쩌면 그것으로 작성되어야합니다

function someFunc (requiredParam, callback) { 
    if (!requiredParam) { 
     callback("missing required param") 
    } else { 
     someAsyncMethod(requiredParam, function(someValue) { 
      callback(null, someValue) 
     }) 
    } 
} 

그게 나에게 js2 패스를 제공하지만, 나는 항상 이전 스타일을 더 잘 읽는 것으로 나타났습니다. 내가 잘못했거나 너무 불안해?

+0

콜백의 호출자가 반환 값을 예상하는 경우 콜백에서 값을 반환하지 않는 것은 나쁜 스타일 일뿐입니다. 호출자가 반환 값을 요구하지 않으면 콜백에서 무언가를 반환하는 것이 무의미합니다. 귀하의 코드에서 실제로 사용되는 값을 의도적으로 반환 할 때는'return' 문만 사용해야합니다. 그렇지 않으면 코드를 읽는 사람들이 반환 값에 무엇을 넣어야하는지 혼란 스럽습니다. – jfriend00

+0

'return'을 사용하여 중괄호와 들여 쓰기 레벨을 저장하고 함수 실행을 중단하는 방법은 어떻습니까? – harumph

+3

그 자체로 명백한 return 문이 좋습니다. 그러나'return callback(); 또는'return someAsyncMethod (...);'는 의도적으로 함수에서 반환 값이 없으면 추천하지 않는 값을 반환하는 것처럼 보입니다. 필자의 의견으로는 코드의 선명도가 한 줄 또는 두 개의 버팀대를 저장하는 것보다 더 중요합니다. – jfriend00

답변

0

작업에 합의하고, jfriend00에서 다음은, 그것은 다음과 같이 작성해야한다는 것입니다 :

function someFunc (requiredParam, callback) { 
    if (!requiredParam) { 
    callback("missing required param") 
    return 
    } 

    someAsyncMethod(requiredParam, function(someValue) { 
    callback(null, someValue) 
    }) 
} 

JS2 모드를 잘했다. 한 줄짜리를 쓰고 싶다는 욕구가 내 코드를 덜 분명하게 만들었습니다.