2010-11-19 7 views
1

私はコンテンツを検証するための関数を作成していますが、有効であればビューを閉じ、そうでなければユーザーにさらに指示します。 (または他のそのような行為)私がそれに名前を付けるとき、私はそれを-doneButtonPressedまたは-validateViewRepairAndCloseと呼ぶべきであると思っています。 UIアクションの呼び出し後にメソッドの名前を付ける方が良いでしょうか?時にはシンプルなように、-saveのようなものはかなり明確にカットされていますが、具体的な例はすぐにはできませんが、そうした名前を付けたような感じがします。よりよく呼び出すだけでxButtonPressedここで、xはボタン上の単語です。IBActionsによって呼び出されることを意図したメソッドの名前を維持するための良い方法はありますか?

答えて

3

これは大きな問題です。私はこれで眠りを失った。

純粋にFWIW ...私の投票は、 "TheSaveButton" "theButtonAtTheTopRight" "userClickedTheLaunchButton" "doubleClickedOnTheRedBox"などです。

一般的に、このようにすべてのルーチンに名前を付けます。しかし、しばしば私はちょうど別のルーチン "launchTheRocket" "saveAFile"などにまっすぐに行きます。

これは有効であると証明されていますか?それはロケットを自分で起動させたい場合が多いからです。その場合、launchTheRocketルーチンを呼び出し、ユーザーがボタンを押してからロケットを起動するからです。自分でロケットを起動して、userClickedTheLaunchButtonを呼び出すと、気分が悪くなり、コード内でもっと混乱します。 (あなたは画面上のプレスを具体的にシミュレートしようとしていますか?)デバッグなどは、別々になっているのでずっと簡単です。

これは、統計の収集などに多少役立ちます。ユーザーはロケット打ち上げを198回要求しており、全体で273回打ち上げました。

さらに、ロケットを打ち上げるコードの別の部分から打ち上げロケットメッセージを使用してクリンチャーになるかもしれません。それは、あなたが実際にボタンと何かをするのではなく、それを実際に行っていることをはるかに明確にします。逆に、userClickedTheLaunchButtonのコンセプトは、時間の経過とともに変化する可能性があります。通常、ロケットを起動することがありますが、メッセージを表示したり、何を知っているのかが分かります。

実際には、ボタンをクリックすると補助的なもの(おそらくアニメーションなど)が発生し、clickedTheButtonの中でそれを実行するのに最適な場所です。また、gutsy関数 'launchTheRocket'を呼び出します。

私は実際に別々の "userDidThis"機能を持っていて、別の "startANewGame"機能を持っているという、ばかばかしく複雑な解決方法を第三に提唱しています。たとえそれが普通なら、前者はほとんど何もせず、後者を呼び出すだけです!

ところで、別の命名オプションを組み合わせることになる2 ... "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 
    } 
} 
関連する問題