ios -如何让你写的代码更规范

好久木有写简书了,最近也有看一本Effective Objective-C 2.0 结合一下最近的工作一些总结,写出以下的这篇文章。
之前的公司很多时候,都是1到2人去共同完成一个项目,没有更多更加注意到一个问题,但面临多人开发时,怎么样去写更让和你一起开发更容易懂,更容易维护的代码呢,一下是我结合书籍一些总结
1 多使用字面量语法,这样可以代码更加易懂
例如:

   //
    NSNumber *number = @1;
    //
    NSString *string = @"a";
    //
    NSDictionary *dict = @{@"a":@"1"};
    //
    NSArray *array = @[@"1"];

2 善于换行和空格让你代码看起来更舒服整齐:

DB71E942-35B0-469B-AACF-7B30119455AB.png

很显然适当的换行让代码看起来更直观,看起更加舒服,更有甚者,最近的项目有到一个SDAutoLayout的框架,链式的语法更加直观,稍加换行更使得代码看起来美观,

7E3EC127-DDE7-4FCA-A0BA-FC727674CB9F.png

3使用枚举去表示状态
我们可以看一下UIButton所使用到的枚举

typedef NS_OPTIONS(NSUInteger, UIControlState) {
    UIControlStateNormal       = 0,
    UIControlStateHighlighted  = 1 << 0,                  // used when UIControl isHighlighted is set
    UIControlStateDisabled     = 1 << 1,
    UIControlStateSelected     = 1 << 2,                  // flag usable by app (see below)
    UIControlStateFocused NS_ENUM_AVAILABLE_IOS(9_0) = 1 << 3, // Applicable only when the screen supports focus
    UIControlStateApplication  = 0x00FF0000,              // additional flags available for application use
    UIControlStateReserved     = 0xFF000000               // flags reserved for internal framework use
};

我们可以观察到一点,枚举的值每个都是UIControlState的前缀的,这里更加方便根据代码提示找到响应的状态

4使用分类简化你的代码
我们时常将我们的业务请求放在一个类里,方便维护,那么随着请求越来越多了,这个类的代码量也就越来越多,以此我们可以根据不同业务去设置不同的分类去将代码区分开来,不仅方便维护,也使得代码更加直观
//

5759A763-0AC2-44BA-959E-3AA2D9DF646E.png

5 实现description方法

C6660D8B-3046-4B25-8B67-938CDB0B76AD.png

我们发现在我自己创建的类中,没有实现description 和debugDescription 我们会发现 但我们 log 出来和po 出来的仅仅是一个内存地址,这样对我们查看model 里面的字段是很不方便的,因此我们需要打印属性的类建议实现这个方法,举个例子如果我们想查看对请求的model 打log,那么可以在BaseModel 加上

- (NSString *)description { 
    return [NSString stringWithFormat:@"%@",[self mj_keyValues]];
}
- (NSString *)debugDescription {   
    return [NSString stringWithFormat:@"%@ -- %p",[self mj_keyValues], self];
}

那么便可以方便的查看log 和debug 时打印出属性如图

592883A9-86E2-4574-B000-15ECF7C21264.png

6使用多target 来区分正式环境和开发环境或者马甲包,
可以用三个target,正式包和开放包,马甲包,来维护三种不同的环境下的project ,这样公用了一份代码,也可以根据需求对不同环境进行设置,


4E485478-AAF2-4C4E-80FB-1D3741DDCCFA.png

在buildSetting 设置对应的宏来区分不同的环境


38B4EBD0-AD41-4ABA-8EE9-46AB8309E876.png

通过设置这个宏我们可以区分不同的环境,例如在设置项目请求的域名时可以

#if defined(PROD_CONFIG)
NSString * const BaseURL       = @"http://xxxx.com";
#else
NSString * const BaseURL       = @"http://test.xxxx.com";
#endif

7 尝试解耦mvc模式
mvc还是我们比较常用的设计模式,随时业务逻辑不断的累计,你可能会不断的在controller 添加很多逻辑,这个是mvc的弊病,相信大家很清楚。
解耦在我的理解下,是用更多的文件,去分散的一大坨的逻辑,来举个例子方便理解
比如说一个订单列表的controller 里面已经非常赘余了我们可以尝试tableView或者collectionView 相关的逻辑抽取出来类似这样

4B3874D2-6D47-480D-AFA8-EC02C6848049.png

另外如果有更复杂的场景例如订单的列表要显示出分类,未完成订单,已完成订单,已评价订单可以左右滑动,并且三个订单内部的逻辑差异的比较大,将会导致你的controller 的代码量非常的多,那你可以考虑使用三个controller 将对应的逻辑分出来,

77C22394-6A0D-4093-B1C1-160434E76A26.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容