代码规范

本文详细阐述了定义模型类、定制视图和控制器类时遵循的规范,包括属性命名、数据配置、接口调用和代码组织等方面的最佳实践。重点介绍了如何通过统一接口、避免直接操作属性、合理利用getter和setter方法等手段,提升代码的可读性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模型(Model)规范

以下为笔者定义模型的代码规范:

image

对于定义模型类,属性名就跟接口中所返回的参数名一样就可以了,除非接口所定义的返回数据字段与我们ios的关键字相同而不得不修改为另外一个名字。

下面是笔者比较崇尚的一种写法。这里接口返回的字段是type,而这个字段所返回的值为1,2,3之类的,而视图显示的却是本人父亲之类的。因此,我们应该将逻辑放到模型中,外部不能修改,只能获取,而视图这里只负责显示即可,就不需要去处理逻辑了。

视图(View)规范


以下是笔者定制公共cell的代码规范:image

我们对于定制一个cell之类的视图时,我们应该使用一个专门的API来配置数据,而不是公共各个控件,而外部又一个个地调用控件来配置数据,这样是很不合理的。

这里所定制的cell风格类似,但是是多个界面多个模型公共用,因此,笔者这里使用了的规则是:每个界面对应一个配置数据的API

像这里,我们在外部调用是很简洁的。如下:

这里是通过[cell configHistoryHospitalCellWithModel:model];来配置数据,外部并没有任何的逻辑。而下面这里是自动计算cell的高度,这是使用了笔者为UITableViewCell扩展的API,基于Masonry

控制器规范


以下是笔者的控制器类的效果图:

image

我们对于控制器类,我们对外的接口都是统一的。对外不公开属性,统一将所需要传的参数放到初始化api中,将外部所传的参数放到内部作为私有。这么做的好处是,所以需要维护这些代码的人,不需要去一个个查那一堆的属性到底哪个是必传,哪些是可以不传。如下:

由于控制器类通常代理逻辑比较多,而且代码量也比较大,因此我们需要很明确的代码规范,以让我们快速的查找到我们需要查询的代码。

比如,这里是部分效果:

image

这里的分区就很清晰,当我们需要处理网络接口时,我们直接就可以查看Network这里,然后点击对应要处理的接口就可以直接跳转到接口这里,定位效率极高。

通常的风格写法如下:

上面像进入用户二维码界面这种只是一个例子。-是一级,--是前者的子级,风格就很清晰了。

善于重写Getter方法


在开发中,尽量不要使用_name这种类型的调用,而是声明为属性,直接使用self.name这样的写法。声明为属性,我们可以重写getter方法,而且就是所谓的lazy loading。如下就是一个例子,只有在使用到的时候,直接通过self.yearSources就可以直接使用了,而不需要再提供一个方法来初始化数据:

善于重写setter方法


很多朋友不太喜欢重写setter方法,而是单独再提供一个api来更新数据。事实上,我们通过重写setter方法,可以给我们带来很大的便利。看下面的例子:

重写这个方法,就不需要额外提供一个方法来更新数据显示了。我们通过这种写法,由于下一个界面在选择以后,在block中返回了所选择的模型类,因此我们只需要调用self. selectedHospitalModel = selectedModel;就可以了,因此这个方法已经重写了而且也自动更新数据显示了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值