iOS 命名方法

2018-10-15  本文已影响0人  朱允见

iOS基础命名基础
iOS 代码架构规范

通用规则

在命名方法时,请记住以下几条一般准则:

- (void)invokeWithTarget:(id)target;
- (void)selectTabViewItem:(NSTabViewItem *)tabViewItem

不要使用“do”或“does”作为名称的一部分,因为这些辅助动词很少添加含义。此外,永远不要在动词之前使用副词或形容词。

代码 评论
- (NSSize)cellSize; 对。
- (NSSize)calcCellSize; 错误。
- (NSSize)getCellSize; 错误。
代码 评论
- (void)sendAction:(SEL)aSelector toObject:(id)anObject forAllCells:(BOOL)flag; 对。
- (void)sendAction:(SEL)aSelector :(id)anObject :(BOOL)flag; 错误。
代码 评论
- (id)viewWithTag:(NSInteger)aTag; 对。
- (id)taggedView:(int)aTag; 错误。
代码 评论
- (id)initWithFrame:(CGRect)frameRect; NSView,UIView。
- (id)initWithFrame:(NSRect)frameRect mode:(int)aMode cellClass:(Class)factoryId numberOfRows:(int)rowsHigh numberOfColumns:(int)colsWide; NSMatrix,NSView的子类
代码 评论
- (int)runModalForDirectory:(NSString *)path file:(NSString *) name types:(NSArray *)fileTypes; 对。
- (int)runModalForDirectory:(NSString *)path andFile:(NSString *)name andTypes:(NSArray *)fileTypes; 错误。

虽然在这个例子中“和”可能听起来不错,但是当您创建具有越来越多关键字的方法时,它会导致问题。

代码 评论
- (BOOL)openFile:(NSString *)fullPath withApplication:(NSString *)appName andDeactivate:(BOOL)flag; NSWorkspace。
访问方法

访问器方法是设置和返回对象属性值的方法。他们有一些推荐的表格,取决于表达财产的方式:

- (NSString *)title;
- (void)setTitle:(NSString *)aTitle;

例如:

- (BOOL)isEditable;
- (void)setEditable:(BOOL)标志;

例如:

- (BOOL)显示Alpha;
- (void)setShowsAlpha:(BOOL)标志;

动词应该是简单的现在时。

代码 评论
- (void)setAcceptsGlyphInfo:(BOOL)flag; 对。
- (BOOL)acceptsGlyphInfo; 对。
- (void)setGlyphInfoAccepted:(BOOL)flag; 错误。
- (BOOL)glyphInfoAccepted; 错误。
代码 评论
- (void)setCanHide:(BOOL)flag; 对。
- (BOOL)canHide; 对。
- (void)setShouldCloseDocument:(BOOL)flag; 对。
- (BOOL)shouldCloseDocument; 对。
- (void)setDoesAcceptGlyphInfo:(BOOL)flag; 错误。
- (BOOL)doesAcceptGlyphInfo; 错误。
代码 评论
- (void)getLineDash:(float *)pattern count:(int *)count phase:(float *)phase; NSBezierPath。

* 在诸如这些的方法中,实现应接受NULL这些输入输出参数,作为调用者对一个或多个返回值不感兴趣的指示。

代理方法

委托方法(或委托方法)是在某些事件发生时对象在其委托中调用的方法(如果委托实现它们)。它们具有独特的形式,同样适用于在对象的数据源中调用的方法:

- (BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(int)row;
- (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename;

类名省略前缀,第一个字母为小写。

- (BOOL)applicationOpenUntitledFile:(NSApplication *)sender;
- (void)windowDidChangeScreen:(NSNotification *)notification;
- (void)browserDidScroll:(NSBrowser *)sender;
- (NSUndoManager *)windowWillReturnUndoManager:(NSWindow *)window;
- (BOOL) windowShouldClose: (id)sender;
Collection方法

对于管理对象集合的对象(每个对象称为该集合的元素),约定是具有以下形式的方法:
- (void)add元素:(elementType )*anObj;
- (void)remove元素:(elementType *)*anObj;
- (NSArray *)分子;
例如

- (void)addLayoutManager:(NSLayoutManager *)obj;
- (void)removeLayoutManager:(NSLayoutManager *)obj;
- (NSArray *)layoutManagers;
- (void)setTextStorage:(NSTextStorage *)textStorage;
- (NSTextStorage *)textStorage;
-(void)addChildWindow :( NSWindow *)childWindow:(NSWindowOrderingMode)的地方;
- (void)removeChildWindow:(NSWindow *)childWin;
- (NSArray *)childWindows;
- (NSWindow *)parentWindow;
- (void)setParentWindow:(NSWindow *)window;
方法参数

有一些关于方法参数名称的一般规则:

...action:(SEL)aSelector
...alignment:(int)mode
...atIndex:(int)index
...content:(NSRect)aRect
...doubleValue:(double)aDouble
...floatValue:(float)aFloat
...font:(NSFont *)fontObj
...frame:(NSRect)frameRect
...intValue:(int)anInt
...keyEquivalent:(NSString *)charCode
...length:(int)numBytes
...point:(NSPoint)aPoint
...stringValue:(NSString *)aString
...tag:(int)anInt
...target:(id)anObject
...title:(NSString *)aString
私有方法

在大多数情况下,私有方法名称通常遵循与公共方法名称相同的规则。但是,常见的约定是为私有方法提供前缀,以便很容易将它们与公共方法区分开来。即使采用这种约定,私有方法的名称也可能导致一种特殊类型的问题。当您设计Cocoa框架类的子类时,您无法知道您的私有方法是否无意中覆盖了具有相同名称的私有框架方法。
Cocoa框架中大多数私有方法的名称都有一个下划线前缀(例如_fooData),以将它们标记为私有。从这个事实可以看出两个建议。

上一篇下一篇

猜你喜欢

热点阅读