0

メソッドの命名に問題があります。に見られるように、メソッドの命名形式に従いたいと思いますUITableViewDataSource

- (int)numberOfSectionsInTableView:(UITableView *)tableView;

XYPagedContentScrollViewしかし、私のクラス名は「UITableView」よりもはるかに長いですXY。プロジェクトのクラス接頭辞です。私はデリゲートプロトコルを持っています:

@protocol XYPagedContentScrollViewDelegate <NSObject>
- (CGFloat)defaultPageHeightForPagedContentScrollView:(XYPagedContentScrollView *)pagedContentScrollView;
@end

このメソッド名はとてつもなく長く見えます。厳密な規則ではないことはわかっていますが、長い名前を処理し、Apple の命名規則に準拠する方法はあるのでしょうか? 何かのようなもの:

@protocol XYPagedContentScrollViewDelegate <NSObject>
- (CGFloat)defaultPageHeightForPagedContentScrollView:(XYPagedContentScrollView *)pagedContentSV;
@end

あるいは:

@protocol XYPagedContentScrollViewDelegate <NSObject>
- (CGFloat)defaultPageHeightForPCScrollView:(XYPagedContentScrollView *)pagedContentSV;
@end

誰でも助けることができますか?

4

2 に答える 2

1

メソッドの長さは言語によって制限されないので、好きなだけ長くしてください。

最初は見栄えが悪いかもしれませんが、冗長であればあるほど、後で競合が発生する可能性が低くなります。

私のルールは、別のメソッドと競合する可能性がある場合 (特にデリゲート メソッドの場合)、より長い名前が必要であるということです。

さて、そうは言っても、名前を途方もなく長くしないでください。次のように、長さが数百文字になるようにします。

-(void) fooBarViewController:(FooBarViewController *) controller didTapRightMarginAtPoint:(CGPoint point) ofPage:(NSUInteger) page lengthHeld:(NSTimeInterval) tapLength fingers:(NSUInteger) fingerCount;

代わりに、イベントの詳細の辞書にラップすることを検討してください。

-(void fooBarViewController:(FooBarViewController *) controller didTapMargin:(NSDictionary *) eventDetails; 

/* eventDetails should contain the following information:
    which margin?
    touch location
    page index
    touch length
    finger count
 */

これにより、メソッドの署名が簡素化され、受信者は必要な変数のみを引き出すことができます。

于 2012-08-08T01:07:20.740 に答える
0

個人的には、長い形式を使用します。それがオートコンプリートの目的です。そうは言っても、短くしたい場合は、形容詞を削除します. 何かのようなもの:

@protocol XYPagedContentScrollViewDelegate <NSObject>
- (CGFloat)defaultPageHeightForScrollView:(XYPagedContentScrollView *)pagedContentSV;
@end

オブジェクトが同じデリゲート メソッドを持つ 2 つの異なるオブジェクトのデリゲートである場合、渡された (呼び出した) オブジェクトを使用してそれらを区別するため、デリゲート メソッドとの名前の競合について心配する必要はありません。(たとえば、2 つのスクロール ビューのデリゲートである場合は、渡されたビューをテストして、どのスクロール ビューについて話しているかを見つけます。)

于 2012-08-08T01:13:51.233 に答える