iOS中接口与API设计(一)

这是我参加8月更文应战的第22天,活动概况查看:8月更文应战

用前缀避免命名抵触

  • 以公司、应用程序或二者皆有联络的相关之名为前缀

  • 一般前缀应该是三个苹果电影字母的(Apple宣传保留了俩个字母的前缀)

  • 分类前一定要加前缀

  • 编写三方库时,一定要加前缀,用到其他三方库时,应该在其他三方库前加上你的前缀,避免别人集成进去后和其他三方库抵触

    比方:你的三方库顶用到了YYLibrary的库,你的工apple id暗码重置程库叫QQLibrary,修改之后应该是QQYYLibrary


清晰而和谐的命名办法

  • 给办法命名注意事项

    • 假定办法回来值是新创建的,那么办法名的首个词应appreciate是回来值的类型,除非前面还有修饰语
    • apple watch该把标明参数类型的名词放在参数前面
    • 假定办法要在当时政策上实行操作,那么就应该包括动词;若实行操作时还需要参数,则应该在动词后面加上一个或多个名词
    • 不要apple id运用str这种简称,应该用string这样的全称
    • BOOL值特征应该加is前缀,假定某办法回来非其特征的BOOL值,那么应approach该依据其功用处理,选用hasapp下载is当时缀
    • get这个前缀留给那些借由“输出参数”来保存回来值的办法
  • 类与协议的命名

    为类和协议的名称加上前缀

  • 私有办法加前缀

    • 给私有办法加前缀,apple store是为了便当调试以及与公有api好区分
    • 不要单用一个下划线做私有苹果7办法的前缀,下划线被苹果公司预留了

尽量运用不可变政策

  • 运用特征时,可将其apple watch声明为“readonly”(默许:readwrite
  • 比方通过初始化办法传入的特征,那么苹果12单独Apple声明的特征值就可以声明为readonly
#import <Foundation/Foundation.h>
@interface Phone : NSObject
@property (nonatomic,苹果13上市时刻copy,readonly) NSSAPPtring *name;
@property (nonatoappreciatemic,as苹果13上市时刻sign,readonly) NSInteger price;
- (instancetype)initWithName:(苹果12NSString *)name withPrice:(NappointmentSInteger)price;
@end
  • 假定想修改数据,且不想让外人知道,通常可以在政策内部分类appreciate中将其设置为readwrite
#import "PhAppleone.h"
//分类中从头声明
@interface苹果8plus Phone()
@property (nonatomic,copy,readwrite) NSString *name;
@property (nonatomic,assign,readwrite) NSInteger price;
@end
@impappointmentlementation Phone
- (instancetype)initWithName:(NSString *)name withPrapple watchice:(NSInteger)price{
self = [super init];
if (self) {
_name = [name copy];
_price = price;
}
return self;
}
@end
  • 尽量不要把可变的arraysetdictionary等作为公开特征,应该供给相应的办法,apple官网以此修改政策中的可变特征

为什么不能直接把phoneArray界说成可变的,通过phoneArray来操控?
比方在增加或许删去时,Phone政策可能要实行其他相关操作apple官网,假定直接从底层修改了内部用于存储的phoneArray,在Phone政策不知情时,直接修改phoneArray可能会让政策间各数据不一致

#import <Foundation/Foundation.h>
@interface Phone : NSObject
@property (nonatomic,copy,readonly) NSString *name;
@property (nonatomic,assign,readonly) NSInteger price;
@property (nona苹果13上市时刻tomic,strong,applicationreadonly) NSArray *phoneArray;
- (instancetype)initWithName:(NSString *apple tv)name withPrice:appreciate(NSInteger)price;
- (void)addP苹果xhone:(Phone *)phAppleone;
- (void)removePhone:(Phone *)phone;
@end
#import "PhoneApple.h"
@interface Phone()
@property (nonatomicapp id注册,copy,readwrite) NSString *name;
@property (nonatomic,assignapple tv,readwrite) NSInteger price;
@propertappointmenty (nonatomic,strong,readwrite) NSMutableArray *savePhoneArrapple iday;
@end
@implementa苹果官网tion Phapple tvone
- (instancetype)initWithName:(NSString *)name withPrice:(NSInteger)price{
self = [super init];
if (self) {
_name = [name copy];
_price = price;
_savePhoneArray = [[NSMutableArray alloc]init];
}
return self;
}
- (instancet苹果电影ype)i苹果13上市时刻nit{
return [self initWithName:@"iPhone" withPrice:999];
}
-(NSMutableArray *)savePhoneArray{
if (_savePhoneArray == nil) {
_savePhoneArray = [NSMutableArray new];
}
retapple watchurn _savePhoneArray;
}
- (void)addPhone:(Phone *)phone{
[self.savePhoneArray addObject:phone];
}
- (NSAapproverray *)apple tvphoneArray{
return [self.saapp下载vePhoneArrapple id暗码重置ay copy];
}
- (void)removePhone:(P苹果8hone *)phone{
[self.savePhoneArray removeObject:phone];
}
@end

发表回复

提供最优质的资源集合

立即查看 了解详情