美文网首页
3.接口与API设计

3.接口与API设计

作者: 开发者老岳 | 来源:发表于2017-06-02 20:30 被阅读13次

第15条 用前缀避免命名空间冲突

苹果宣布保留两字母前缀的权利,所以最好用三个字母的前缀,以防止以后苹果更新的时候与其冲突。
纯 C 语言的函数,如果没有 static 修饰,最好加前缀,因为如果在别的文件里也定义了相同名称的函数就冲突了。
如果你写了一个第三方库想给别人用,若代码里用了个别的第三方库,最好修改其前缀,因为别人的项目里也可能用了你引用的那个第三方库。

第16条 提供全能初始化方法

所谓全能初始化方法,如你定义的类里有很多条初始化方法,但是所有的初始化方法都会调用同一个方法,这个方法就是全能初始化方法。
如果你自定义了很多初始化方法,不希望别人调用init,可以重写init,然后在里面抛出异常。或者在里面给参数赋上默认的值。

第17条 实现description方法

一个通用规范:

- (NSString *)description
{
    return [NSString stringWithFormat:@"<%@, %p, %@>", [self class], self, @{@"name":_name, @"age":@(_age)}];
}
//打印结果:
result = <MyClass, 0x608000027b60, {
    age = 18;
    name = "Tom";
}>

打断点后可以在控制台用 po命令输出属性信息,属性的信息是由 - (NSString *)debugDescription 函数定义的。

- (NSString *)debugDescription
{
    return [NSString stringWithFormat:@"%@", _name];
}

第18条 尽量使用不可变对象

开发中,如果属性对外公布,尽量做成read-only,即只能读,不能写。

第19条 要使用清晰而协调的命名方式

第20条 为私有方法名加前缀

方法名不要以下划线开头,因为有可能跟苹果的私有方法重名。
私有方法可以用p_开头,比如:

- (void)p_resetTheLists;

第21条 理解oc错误模型

第22条 理解NSCopying协议

自定义对象遵循该协议,要实现- (id)copyWithZone:(NSZone *)zone方法。如果有些不是属性,而是实例变量,可以用->

@interface Student()
{
       NSMutableArray *_friends;
}
@propery(strong) NSString *name;
@propery(assign) int age; 
@end

- (id)copyWithZone:(NSZone *)zone
{
        Student *s = [[Student allocWithZone:zone] init];
        if (s) {
            s.name = _name;
            s.age = _age;
            s->_friends = [_friends mutableCopy];
        }
}

此例子中,若 _friends 为不可变对象,则无需复制,因为本身就是不可变的,不用担心被修改,即跟原来的对象共用一块内存。

//下面的方法可以直接深复制一个数组,后面参数表示是否复制数组里的元素
NSMutableArray *arr2 = [[NSMutableArray alloc] initWithArray:arr1 copyItems:YES];

相关文章

  • 3.接口与API设计

    第15条 用前缀避免命名空间冲突 苹果宣布保留两字母前缀的权利,所以最好用三个字母的前缀,以防止以后苹果更新的时候...

  • 接口与API设计

    十五、用前缀避免命名空间冲突 Objective-C没有其他语言那种内置的命名空间(name space)机制。鉴...

  • Android 优化——网络优化

    Android 优化目录 利用 Network Profiler 检查网络流量 接口设计API设计App 与 Se...

  • iOS 接口与API设计

    Effective Objective C 2.0:编写高质量iOS与OS X代码的52个有效方法 第 15 条:...

  • Retrofit+RxJava相关

    准备 关键代码 1.定义api接口 2.创建Retrofit 3. 调用api接口,获取Observable,并进...

  • RESTful api接口安全优雅设计

    RESTful api接口安全优雅设计 ...

  • 接口测试概述

    一.什么是接口 1.API 2.软件接口、硬件接口 3.很多程序提供API供大众调用 二 接口测试 1.什么是接口...

  • api 接口设计

    包括两部分: 业务场景 如推荐、排行、搜索 元素item 如问题、作者、直播

  • API接口设计

    API - Application Programming Interface 语言本身提供的API网络API(数...

  • django中tastypie风格接口设计

    需求背景: 使用tastypie原则开发api接口,同时对前面设计的api做适当优化。 tastypie风格接口设...

网友评论

      本文标题:3.接口与API设计

      本文链接:https://www.haomeiwen.com/subject/rlbxfxtx.html