2010-11-19 2 views
1

나는 (예를 들어) 내용의 유효성을 검사하는 기능을 만들고 있는데, 유효하다면보기를 닫고 그렇지 않다면 사용자에게 추가 지시 사항을 제시한다. (또는 다른 그런 행동.) 내가 이름을 짓기 위해 갈 때, 나는 그것을 -doneButtonPressed 또는 -validateViewRepairAndClose이라고해야하는지 궁금해한다. UI 액션이 호출 한 후에 메소드의 이름을 지정하는 것이 좋을까요, 아니면 메소드의 이름을 따서 이름을 짓는 것이 낫겠습니까? 때로는 단순한 것 같아요. -save과 같은 것들은 꽤 명확하고, 다른 시간대에는 명확한 예가 될 수 없지만, 어떤 사람들은 그들이하는 일을 이름 짓는 것처럼 보였습니다. 너무 길고 혼란스럽게 보입니다. 더 나은 것을 그냥 xButtonPressed 여기서 x는 버튼의 단어입니다.IBActions에서 호출 할 메서드를 명명하는 좋은 방법은 무엇입니까?

답변

3

큰 문제입니다! 나는 이것에 대하여 잠을 잃었다.

순전히 FWIW ... 내 투표는 "theSaveButton" "theButtonAtTheTopRight" "userClickedTheLaunchButton" "doubleClickedOnTheRedBox"등입니다.

일반적으로 모든 루틴의 이름을 그렇게 지정합니다. 그러나 종종 나는 단지 다른 프로그램 인 "launchTheRocket" "saveAFile"등등으로 곧바로 가게 할 것입니다.

이 방법이 유용 했습니까? 왜냐하면 종종 로켓을 직접 발사하기를 원하기 때문입니다.이 경우 로켓트 로켓트를 호출하면 사용자가 로켓을 발사하는 버튼을 누르는 대신 대처할 수 있습니다. 로켓을 직접 실행하고 userClickedTheLaunchButton을 호출하면 코드가 옳지 않아 코드가 더 혼란스럽게 보입니다. (화면에서 언론을 구체적으로 시뮬레이션하려고합니까?) 디버깅 등은 분리되어있을 때 훨씬 쉽기 때문에 누가 무엇을 호출했는지 알 수 있습니다.

예를 들어 통계를 수집하는 데 약간 유용합니다. 사용자는 198 번 로켓 발사를 요청했으며, 전반적으로 로켓을 273 번 발사했습니다.

더 나아가 - 이것은 발사 로켓 메시지를 사용하여 로켓을 시작하는 코드의 다른 부분에서 발생하는 클린 처라고 할 수 있습니다. 버튼을 사용하는 것보다 실제로 그렇게하는 것이 훨씬 더 명확합니다. 반대로 userClickedTheLaunchButton 개념은 시간이 지남에 따라 바뀔 수 있습니다. 일반적으로 로켓을 시작하지만 때로는 메시지를 표시하거나 사람을 알 수도 있습니다.

사실, 버튼을 클릭하면 부수적 인 물건 (예 : 애니메이션 등)이 실행될 수 있으며 'clickedTheButton'내부에서이를 수행 할 수있는 완벽한 장소가 될뿐만 아니라 거친 기능인 'launchTheRocket'을 호출합니다.

그래서 저는 실제로 별도의 "userDidThis"기능을 갖는 세 번째 훨씬 더 우스꽝스럽게 복잡한 솔루션을 옹호하고 별도의 "startANewGame"기능을가집니다. 그것이 일반적으로 전자가 거의 아무것도하지 않더라도, 단지 후자를 부르는 것을 의미합니다!

BTW 다른 명명 옵션이 결합 될 두 ... "topButtonLaunchesRockets" "등 glowingCubeConnectsSocialWeb"마지막으로

! 일반적으로 행동으로 간주하여 모든 것을 형식적으로 변경한다는 것을 잊지 마십시오.

[theYellowButton addTarget:.. action:@selector(launchRockets) ..]; 
[theGreenButton addTarget:.. action:@selector(cleanUpSequence) ..]; 
[thatAnimatingButtonSallyBuiltForUs addTarget:.. action:@selector(resetAll) ..]; 
[redGlowingArea addTarget:.. action:@selector(tryGetRatingOnAppStore) ..]; 

아마 이것이 문서 적으로 현명한 방법입니다. 이것은 지금까지 최고의 질문 중 하나입니다, 감사합니다!

+0

안녕하세요, 저는이 답변을 좋아합니다. 감사. –

0

xButtonPressed : 또는 handleXTap : 줄을 따라 무언가를 처리 한 다음 처리기 내에서 다른 메서드를 호출 할 수도 있습니다.

- (IBAction)handleDoneTap:(id)sender { 
    [self closeView]; 
} 

- (void)closeView { 
    if ([self validate]) { 
    // save and close 
    } 
    else { 
    // display error information 
    } 
} 
관련 문제