iOS架构师之路:制定代码规范

俗话说“欲善其功
必先利其器”,特别是就是运营工作人口对之一定还深有感触。运营工作涉及面较普遍,事情多如掺杂,所以把现有的营业相关工具充分利用起来,往往可事半功倍,且从至帮扶作用。本文跟大家享用下我个人平时运营工作负常常因此到的工具应用,大家可互补分享哦。废话不多说,上干货~

前言

事先吹个牛,我打心眼自认为好是好对团队项目之代码质量负责的口,对于想如何勾勒起高质量可读性的代码我是乐此不彼。之前自己写过少篇有关代码命名规范及代码编写规范之稿子,《iOS架构师之路:iOS开发(OC)中的命名规范》、《iOS架构师之路:IOS项目蒙之编码规范》,您要是是情绪十分好,就夺探视吧,如果低于生好,那不建议您看,怕您心里骂娘,因为现在拘留,感觉自己写的非太认真,有诸多方可描绘的更细,恩,我控制为协调帖贴金,不能够这样说自己:其实这半年稍哥我于代码规范方的学问以见涨不丢掉,所以看以前定制的正式不爽,作为绑架构师保持谦虚,通过不断上,不断自我修正,对代码来几许洁癖是该有的丰采(潜台词其实我思念说自起)。制定项目的代码规范对架构师的重要,就如而你异常个娃一如既往,责任重大,万一生出来缺胳膊少腿,娶不顶女,你下便伺候他毕生,给他当牛做马,他为非肯定会念你的好。

一如既往、内容排版工具

1.i 排版

微信公众号图文信息排版工具,支持各种富文本样式格式

2.秀米

秀米是同款基于微信公众平台的图文编辑和排版工具,它比较微信自带的编辑器多矣很多排版功能以及美化工具。在秀米上将内容编排排版之后,直接复制粘贴到大众号后台即可。

3.壹伴公众号略插件

针对大众号后台进行加强,实现一键传图、公众号内排版、本地传图等。

遵循代码规范之关键

  • 1.架构师要吧全体项目技术趋势的上扬负责,所以制定一个地道的代码规范,让开发工程师遵守,有利于项目为您预知的自由化前进。比如当您往以AOP技术实现日志功能时,就用规定部分智命名。
  • 2.一律的代码规范,有利于代码reveiw工作。如果每个工程师写的代码风格不均等,review代码的同事,阅读起来肯定不顺利。
  • 3.渴求工程师按照代码规范写起同的代码,就即他跳槽。这行本来就是浮躁,流动性十分,要是工程师写的代码风格才发生客自己能够看明白,那东西他跳槽,新人是非常为难继续保障这有代码的,得不偿失。

老二、美工设计、图片资源、处理、管理工具

1.昵图网

昵图网是同贱著名的图片素材共享平台,网站上之所有素材图片都由网友上传共享的,你上传共享的图越多,你可知下载的图形为就是越发多。当然也产生免费及付费的。

2.千库网

主库网是境内篇下顾提供免抠PNG图片的材料网站。免费生载有限制,更多下充斥需要付费哦~

方两家虽然来付费服务,但价格高达还算能经受。下面分享两个免费、无版权的图样资源下载站。

3.pixabay

Pixabay约来910000摆免费的照片、矢量文件与法插图。图片覆盖面广,文件呢产生广大尺寸可以选择。图片质量大,小编首推向的图片素材网站。里面的图纸可以复制、修改、转发等方法利用,甚至当商业用途,无需申请许可,也任需开版税。

4.SplitShire

SplitShire网站的图纸质量也颇高,大都比较feel风。

5.photoshop

这个就算不需要自我过多介绍了,众所周知的图处理软件。

6.AI

兴许部分小伙伴并无常用AI,多用PS。这个看具体求吧,通常矢量图处理用AI,像素图处理用PS。平时召开活动海报、宣传图等一般二者匹配使用。

7.Ulead GIF
Animator

UGA是故来打造、处理gif动态图的,有时要以软文中插入个将笑有趣的gif动态图己便就此其。

8.Eagle

Eagle是一个正经的图管理软件,更优雅的整治图片素材与设计灵感,试用+付费的,不过价格还算可以。这个特别适合设前端设计师等常和图打交道的童鞋,作为运营谈不齐不可或缺,感兴趣之足试试。

培养代码洁癖

受大家推荐一比照关于代码规范之绝唱,第一遵循:《禅与 Objective-C
编程艺术(Zen and the Art of the Objective-C Craftsmanship
中文翻译)》(简称:Zen),这仍开开始源社区的大牛,无偿奉献出的,该书于咱介绍许多写代码的不错姿势,并解释为什么使用这个姿势体验更好。看罢马上按照开应当亮什么勾勒来优雅、高可读性并且可靠的代码了。

老三、思维导图工具

1.freemind

首推进freemind是因其是完全免费的。虽然界面效果达到或没有后面要推荐的花哨好看,但作用上基本能够满足我们的常用需求了。

2.Xmind

XMind以其精良的易用性,友好之界面及强有力的作用吸引了森用户。

3.百度脑图

百度脑图也是一样款款便捷的脑图编辑工具,操作简便。支持在线一直开立、保存并享受而的思路。免安装云存储易分享经验舒适功能丰富.。

自引进的代码规范

《The Objective-C Style Guide used by The New York
Times》(简称:New
York,该规范也发中文版),《New
York》是本身比较好的编码规范风格,它是《Zen》的编码思想一个格外好的履。

季、原型设计工具

Axure

Axure是一个专业的快速原型设计工具,让负责定义需求和准、设计功能与界面的家会迅速创建以软件或者Web网站的线框图、流程图、原型和条件说明文档。不过Axure通常产品经理用底比较多,作为运营,我便是于召开产品分析优化方案还是做图时见面就此到它。

至于《Zen》、《New York》代码规范的加

五、待处、任务管理工具

然的同

实在就原本是一律款款企业办公室联机软件,我个人用它们来举行时间、待处、任务管理。因为运营工作业多还杂,不记待办可能回头就忘记了。你还于于是方便贴?!太OUT了~

高效Todo

斯软件的界面设计都是动直观的季象限设计,这样的计划可以被用户一目了然的掌握如何事情是迫不及待用处理的。

1.iOS切图文件之命名规范

立即有正规或者是老大有更的筹划提供,也发生或是咱开发人员提供,掌握总是没害处的。

咱俩的命名规则之中坚思想是把文件称分成三片,第一片凡图片的逻辑归属分类,第二组成部分凡是图的呈现内容,第三有些凡图形的情的品类,有些图片还见面起第四局部,表示图片表现的状态。首先发出几乎独规则是:

  • 因而英文命名,不用拼音
  • 列一样有些据此生划线分隔
  • 图表名受到少倍增图于名字最后使加@2x,三倍图于名字最后要加@3x

万力所能及公式

image_naming_guideline.png

六、数据解析工具

1.百度统计

这是国内站点必然要用的站点统计工具,跟踪站点相关数据。

2.Google
Analytics

谷歌分析工具(GA),特别是面向海外SEO的站点,这个邪是必用工具哦。

3.office三剑客——word、excel、PowerPoint

想必产生若干小伙伴看就仨上不了桌面,这不是极其核心的呢。而实刚就是是这些近似接触时太丰富太不起眼的软件,很多运营人员都驾驶不了,仅留于外表。特别是Excel,基本的数码透视表制作、每月每年的报表制作还见面用到。

2.类的布局

次第布局的目的是显得出程序可以的逻辑结构,提高程序的准头、连续性、可读性、可维护性。更要紧之是,统一的程序布局以及编程风格,有助于增进全体项目的开支品质,提高开发效率,降低开发成本。同时,对于普通程序员来说,养成好的编程习惯有助于增强自己之编程水平,提高编程效率。因此,统一之、良好的先后布局和编程风格不仅仅是私房主观美学上之或许形式上之题材,而且会干到产品质量,涉及到个体编程能力的增长,必须引起大家珍惜。

小结

正文和大家一道享受运营工作遭到常用之工具软件,如果大家还产生外的好工具,欢迎并享用交流。

2.1.文本布局

【规则2-1-1】遵循统一之布局顺序艺术来修头文件。

说明:以下内容如果某些节不需,可以忽略。但是其他节要保持该次序。**
**
头文件布局:

文件头
#import (依次为标准库头文件、非标准库头文件)
全局宏
常量定义
全局数据类型
类定义

正例:

/***************************************************************************
 *                                文件引用
 ***************************************************************************/ 
/***************************************************************************
 *                                 类引用
 ***************************************************************************/

/***************************************************************************
 *                                 宏定义
 ***************************************************************************/
/***************************************************************************
 *                                 常量
 ***************************************************************************/ 
/***************************************************************************
 *                                类型定义
 ***************************************************************************/ 
/ ***************************************************************************
 *                                 类定义
 ***************************************************************************/

【规则2-1-2】遵循统一的布局顺序来开实现公文。
说明:以下内容如果某些节不需,可以忽略。但是任何节要保持该次序。
实现文件布局:

文件头(参见“注释”一节)
#import (依次为标准库头文件、非标准库头文件)
文件内部使用的宏
常量定义
文件内部使用的数据类型
全局变量
本地变量(即静态全局变量)
类的实现

正例:

/***************************************************************************
 *                                文件引用
 ***************************************************************************/ 
/***************************************************************************
 *                                 宏定义
 ***************************************************************************/
/***************************************************************************
 *                                 常量
 ***************************************************************************/ 
/***************************************************************************
 *                                类型定义
 ***************************************************************************/
/***************************************************************************
 *                                全局变量
 ***************************************************************************/
/***************************************************************************
 *                                 原型
 ***************************************************************************/
/ ***************************************************************************
 *                                类特性
 ***************************************************************************/
/ ***************************************************************************
 *                                类的实现
 ***************************************************************************/
2.2好像组织布局

使用#pragma mark –来分类方法

#pragma mark – Life Cycle

#pragma mark - Events

#pragma mark – Private Methods

#pragma mark - UITextFieldDelegate

#pragma mark - UITableViewDataSource

#pragma mark - UITableViewDelegate

#pragma mark - Custom Delegates

#pragma mark – Getters and Setters
2.3搭架子中的空格

每个方法还是功能块之间为了组织清晰,应当有还只出一行空格。

@interface SomeClass:NSObject

@property (noatomic, strong) UIView *aView

- (void)someMethod;

@end

@implementation SomeClass

- (void)setAView:(NSInteger )aview {

}

- (void)someMethod {

}
@end
2.4关于布局中之Private Methods块,正常情况下ViewController里面不该写

不是delegate方法的,不是event response方法的,不是life
cycle方法的,就是private
method了。对之,正常状况下ViewController里面一般是勿会见是private
methods的,这个private
methods一般是用来日期换算、图片裁剪啥的这种多少作用。这种小作用还是将它们写成一个category,要么把他做成一个模块,哪怕这个模块只生一个函数也实行。
ViewController基本上是多数事情的载体,本身代码都相当复杂,所以与工作涉嫌不很的东西会免在ViewController里面就毫无放。另外一些,这个private
method的效力这时候只是你用取得,但是前或许别的地方呢会见为此到,一开始便独自出来,有利于将来之代码复用。

3.属性初始化放哪最好?建议于Getter中初始化

自我看出众多APP,甚至自己公司的门类,很多支工程师,初始化属性的职位较自由,有独立添加一个初始化方法类似setupView的,有以init初始化的,各种状况都发出,我实在生崩溃的,首先初始化方式不均等,其次为这样做特别有或破坏了每个方法效果的单一性(每个方法就开相同桩事)。我比较习惯一个对象的”私有”属性写于extension里面,然后这些性的初始化全部坐落getter里面做,在init和dealloc之外,是勿会见起任何类似_property这样的写法的。就是如此:

@interface CustomObject()

@property (nonatomic, strong) UILabel *label;

@end

@implementation

#pragma mark - getters and setters

- (UILabel *)label {
    if (_label == nil) {
        _label = [[UILabel alloc] init];
        _label.text = @"1234";
        _label.font = [UIFont systemFontOfSize:12];
        ... ...
    }
    return _label;
}
@end
#pragma mark - life cycle

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.view addSubview:self.label];
}

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    self.label.frame = CGRectMake(1, 2, 3, 4);
}

唐巧说他好的做法是故_property这种,然后关于_property的初始化通过[self setupProperty]这种做法去举行。从刚上面的代码来拘禁,就是如果在viewDidLoad里面大多调用一个setup方法而已,然后自己推荐的方法就是绝不多调一个setup方法,直接走getter。

嗯,怎么说呢,其实简单栽做法还能够形成需求。但是打旁一个角度看,苹果用选取给[self getProperty]self.property可以相互通用,这种做法早就大明确地表述了苹果之赞同:希望每个property都是由此getter方法来博。

早于2003年,Allen Holub就作了首文章《Why getter and setter methods are
evil》,自此以后,业界就本着之来了各种争议,虽然是起Java开始说之,但是发展到背后各种语言也涉足了进来。然后虽然现在有关这个题材讨论得少了,但是还是属于没有结论的状态。setter的状态比较复杂,也无是自我随即同一省之首要,我当下边还是任重而道远说getter。我们由objc的统筹来拘禁,苹果之设计者更加倾向被getter
is not evil。
认为getter is
evil的缘故有很之多,或大或小,随着争论之拓,大家逐渐就是聚焦到这般的一个缘故:Getter和Setter提供了一个克吃外部修改对象中数据的措施,这是evil的,正常情况下,一个目标好个人的变量应该是只有和睦关注。

接下来我们返回iOS领域来,objc也同等面临了这么的题目,甚至更严重:objc并不曾如Java那么严格的私房概念。但在实际上工作备受,我们无极端会错过操作头文件中没的变量,这是打正规上就是被明令禁止的。

以为getter is not
evil的由来为足以聚焦到一个:高度的封装性。getter事实上是工厂方法,有矣getter之后,业务逻辑可以更小心于调用,而不要担心当前变量是否可用。我们可以想转,假要一个ViewController有20个subview要参加view中,这20单subview的初始化代码是必逃不掉的,放在何比好?放在哪里还比较位居addsubview的地方好,我个人认为最好好之地方要在getter里面,结合单例模式之后,代码会好整齐,生产的地方以及运的地方获得了酷好之区别。
为此放到iOS来说,我要认为使用getter会比较好,因为evil的地方在iOS这边基本都避了,not
evil的地方还能享受及,还是对的。

4.Getters and Setters放在最底部

自己事先写代码一直将Getters and Setters
放在implementation的不过前方,昨天羁押大神casatwy说最好好放在最后给,我当又发生道理。控制器可能会见生死多之view属性和其它性能,如果持有的getters
and
setters放在眼前,就会见导致在implementation代码顶部有恢宏的初始化代码,这便导致主要的逻辑代码挪至后去了,其他人阅读代码是无顶有利的。

结尾

夜深人静,该睡了。欢迎收藏之
自之博客

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图