美文网首页
iOS中什么是耦合度

iOS中什么是耦合度

作者: 豌豆尖儿太好吃了 | 来源:发表于2018-03-23 21:25 被阅读0次

最近刚好在找工作,其实很多公司在面试的时候会问一些问题,比如问到我一个问题是假如有多个异步下载任务同时进行,你需要显示当前全部任务的下载进度你将如何实现。我选择的是用线程组来统计,每个线程都有一个对应的变量float值来保留线程的下载进度,为了不频繁的计算下载进度,我选择用GCD的循环来定时做计算来显示下载的进度。对方就问我了,每个线程都有一个变量的话,那势必都在一个方法里,那么后期维护将会很麻烦,有没有更好的办法,当时我有点懵,不知道怎么回答,其实这涉及到代码的耦合度和繁重问题。其次很多公司也会问你有哪些优化代码的方法,或者哪些代码规范,为什么要这样规范,我平时自己写代码有一套自己的习惯,但是自己没有去深究,甚至说代码的耦合度其实也有尽量降耦合,但是真的要说起来我都有哪些技巧,却一个都说不出来。就像自己有点小经验,但是却不知道所以然来,所以我特意去学习了一下什么是耦合度以及降耦合的技巧。

耦合度的道理其实说起来很简单,就是模块之间相关联程度的度量,指模块与模块之间的关联性,所谓的低耦合就是将两个模块之间的关联性尽可能的降低,一个模块的改动对于其他模块的影响尽量小。这样的话看起来很明了,平时简单的功能做起来也不难,比如一些简单的低耦合技巧:给tableViewCell赋值的时候,如果有dataSource,那么有些人会在tableView的代理中从dataSource取出需要的数据来赋值给cell,这样就增大了主视图的代码,增大了cell和主视图的联系,这时候就可以改为将dataSource里面的Model赋值给cell并重写setModel方法来实现低耦合。

那么那些平时不明显的高耦合都有哪些?

例如短信备份时,短信备份的代码是由A程序员写的,界面的UI是由B程序员写的,这时客户要求加一个进度条对话框,A程序员提供一个普通方法,B把ProgressDialog对象传进去,由A给进度条设置最大值,以及备份过程的进度,从而达到显示进度的效果,如果客户又要求ProgressDialog太丑了,要换成ProgressBar,此时A和B都要修改代码,代码的耦合度太高,可以由A提供一个回调函数,B只需根据回调函数进行处理,从而降低代码的耦合度,所以代理可以有效的降低代码的耦合度,就如何系统原生的tableView的列表视图,也是为什么tableView可以直接设置rowHeight以及代理中可以设置了,这都是为了低耦合的处理。

另外,再分享一些降低耦合的方法:1、少使用类的继承,多用接口隐藏实现的细节。2、模块的功能化分尽可能的单一,道理也很简单,功能单一的模块供其它模块调用的机会就少。3、遵循一个定义只在一个地方出现。4、少使用全局变量。5、类属性和方法的声明尽量在.m中。 6、多用设计模式,比如采用MVC的设计模式就可以降低界面与业务逻辑的耦合度。7、最后当然就是避免直接操作或调用其它模块或类(内容耦合);如果模块间必须存在耦合,原则上尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,避免使用内容耦合。

最后值得注意一点,一定要少使用Runtime这种黑魔法技巧,因为它的巧妙会避开程序crash导致到你完全不能够发现问题所以,这一点一定要切记!

相关文章

  • iOS中什么是耦合度

    最近刚好在找工作,其实很多公司在面试的时候会问一些问题,比如问到我一个问题是假如有多个异步下载任务同时进行,你需要...

  • 什么是代码耦合度

    高内聚低耦合 内聚:一个模块各个元素彼此结合的紧密程度; 耦合:一个软件结构内不同模块之间互连程度的度量。

  • 浅谈 iOS Notification

    我们在开发程序的时候,程序内不同对象间的通信是不可避免的,iOS中主要有以下这些通信方式: 图中按照耦合度的强弱和...

  • “高内聚,低耦合”

    什么是耦合(大量的重复代码,可读性不高): 软件工程中对象之间的耦合度就是对象之间的依赖性。耦合性是程序结构中各个...

  • iOS中的Runloop(原创)

    1.什么是Runloop 2.Runloop有什么用 3.iOS中Runloop是如何实现的 4.iOS中Runl...

  • day45 Nginx Web 应用深入

    1、Nginx功能模块化 耦合度更低,易于管理。SQA架构,RPC服务都属于低耦合度的技术支持。工作中做事学会低耦...

  • 交友2.0总结

    新架构尝试在交友中尝试使用新架构,原因在于原有的架构耦合度较高,希望能够优化层次结构,降低耦合度,提高项目可维护性...

  • javascript大话设计模式(一)---简单工厂模式

    工作中我们常常因为代码耦合度高,最后代码变得异常难维护,付出的成本也是非常惊人的,所以如何降低耦合度,就引出了我们...

  • WKWebView 您应该了解的七件事 - Jeremy Wie

    iOS 中最初有 UIWebView. 什么是 UIWebView ? iOS 2.0 中引入的原始 Web 渲染...

  • IOC 架构设计

    什么是IOC呢? 控制反转(Inverse of control),用来降低代码的耦合度,最常见的方式叫做依赖注入...

网友评论

      本文标题:iOS中什么是耦合度

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