作家
登录

iOS代码的taste(品味)

作者: 来源: 2017-11-16 16:05:56 阅读 我要评论

以上三种方法我都见到过,不合方法对代码的影响也不合,这是个典范的例子,一个完全 App 里往往有多个类似 UserSession 须要被多处引用的对象,三种方法最后都不会影响功能的┞俘常实现,但在代码浏览保护上存在一些差别。

Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践


比来看了不少代码,想起写代码有意思的处所之一在于,实现同一个 feature,修复同一个 bug,不合法度榜样员可以写出风格迥异的代码,甚至流程也不合,固然最后都可行,大年夜结不雅论的角度对用户来说是一致的。我们可以称这种差别为小我 taste,taste 有短长高低之分,但有时刻若何评定却很难有一个清楚精确的界定标准,一般来说代码是越简单越清楚越轻易测试越好,但简单清楚轻易测试又是另一个维度的标准,又会产生不合,真要较真起来可以无穷无尽越扯越远。

我有个小例子,大年夜家可以按本身的经验来分个好坏。

UserSession

问题:ControllerA,ControllerB,ControllerC 都须要拜访 UserSession 实例,若何传递?

方法一:构造传递

所有的 Controller 在 init 办法里都传入 UserSession,之后再内部持有一个 strong property,类构造如下图:

iOS 代码的 taste(咀嚼)

如不雅应用这种方法,所有须要引用 UserSession 的处所都须要以 init 的方法传入,包含 Controller 内部的 View、Presenter 等对象,View 可能还有子 View,层层叠叠以树形构造,UserSession 将涌如今每一个相干 Class 的 init 办法之内。

方法二:办法参数传递

Controller 本身并不持有 UserSession 的实例,每个须要用到 UserSession 的办法以参数传入,如下图:

iOS 代码的 taste(咀嚼)

这种方法相较方法一,UserSession 作为每个办法的参数将涌如今更多的处所。显然,不持有 strong property 有他的好处,比如不会出现 Controller 无法释放导致 UserSession 也无法烧毁的情况。UserSession 和 Controller 之间的依附关系也更清跋扈,看 .h 中的办法就一目了然。别的须要测试某个办法的时刻,要比较轻易,办法的声明里就有完全的 context。

方法三:内部直接持有

Controller 在 .m 文件内部经由过程另一个 UserMgr 实例来同一获取 UserSession,如下图:

只要涉及用户登录的 App,都少不了有个 UserSession 的类,记录和用户相干的一切数据和行动,并在用户登出的时刻做烧毁。UserSession 是一个一旦创建之后,大年夜部分的营业模块都须要拜访的实例对象,其他 class 若何拜访 UserSession,或者说 UserSession 若何传递到各个 class,这琅绫擎的做法就多了。

iOS 代码的 taste(咀嚼)

这种方法在 .h 中看不出 Controller 和 UserSession 的关系,在 .m 中经由过程另一个类(xxxMgr、xxxFactory、xxxService)来获取 UserSession 实例。好处是 .h 文件干净一些,但 .m 中可能遍地都有获取 UserSession 的代码,一旦代码量多了之后很难理清 Controller 和 UserSession 二者之间的依附关系。

【编辑推荐】

  1. 安卓单位测试全攻略,让代码测试一劳永逸
  2. Google颁布I/O 2017 for Android的源代码
  3. 不须要写代码也能赞助你开辟App的七大年夜神器
  4. iOS自定义启动界面 附代码
  5. 阁下脑测试小法度榜样被微信封禁:谜底是随机的,代码是抄来的
【义务编辑:未丽燕 TEL:(010)68476606】

  推荐阅读

  如何保障微服务安全? 从这两点开始

Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践 摘要:若何保护微办事,确保>>>详细阅读


本文标题:iOS代码的taste(品味)

地址:http://www.17bianji.com/lsqh/38940.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)