Keke Yezi

Better Late Than Never

我是叶斌 (Kekeyezi) 就职国泰君安.


Coding & Game & 初级奶爸

iOS 代码质量随想

借着今天公司有分享设计模式 简单记录下自己对“高”质量代码和设计模式的理解。

众所周知设计模式有六大核心的思想原则。引用一段百度百科的介绍 传送门

为什么要提倡“Design Pattern呢?根本原因是为了代码复用,增加可维护性。那么怎么才能实现代码复用呢?面向对象有几个原则:单一职责原则 (Single Responsiblity Principle SRP)开闭原则(Open Closed Principle,OCP)、里氏代换原则(Liskov Substitution Principle,LSP)、依赖倒转原则(Dependency Inversion Principle,DIP)、接口隔离原则(Interface Segregation Principle,ISP)、合成/聚合复用原则(Composite/Aggregate Reuse Principle,CARP)、最小知识原则(Principle of Least Knowledge,PLK,也叫迪米特法则)。开闭原则具有理想主义的色彩,它是面向对象设计的终极目标。其他几条,则可以看做是开闭原则的实现方法。

其实说是为了代码复用,也可以说是为了写“好”代码,写“高”质量的代码。那么什么样的代码才能算是好的代码呢?那么我就简单的记录下此时自己的理解吧。

可阅读性高/理解成本低

代码虽说是写给机器运行的,但最终维护是人,也是需要给人看的。所以如果你的代码写的别人看不懂只有你自己可以懂(有些人自己过一会看也看不懂了~),那么这样的代码肯定也不是所谓的“好”代码。

往往好代码都有以下的几个特点。

  • 包括代码自解释
  • 合适的文档注释
  • 分层合理
  • 函数封装粒度合适
  • ….

总结就是你写的代码,别人包括自己以后来看都能看得懂。

维护成本低

业务是不断发展的,随着需求不断变化你需要对你编写的代码进行不断的调整。在这个过程中,如果有牵一发而动全身的感觉的话 自然会改起来很痛苦。所以合理的分层和抽象能够降低维护成本,改只改变动的地方。整体的结构也是扩展而不是修改。

复用程度高

复制粘贴的代码 改一处就得把之前复制过的地方都改一次,每次这样玩也是风险很高的。漏了改啊 或者复制错了什么的。

健壮性

对于边界情况异常情况的处理需要去处理.毕竟线上环境千变万化。

性能好

其实这块对程序员的经验要求可能会高一些,也是常常被忽略的地方。需求是完成了 但是占用内存/CPU很高,造成界面卡顿也是要不得的。

其实对于代码质量的话题真的很大。建议大家看一些经典书籍,取百家之长。

这一篇有些像lanyuchongshu..

更新时间2019-4-21

后续会针对这个话题更深层次的探讨。

写在最后:

Better Late Than Never ,愿我们都能跨出自己的第一步。

站在巨人的肩膀上,感谢前辈们的文章。

参考链接:

代码整洁之道

最近的文章

iOS 跨平台方案看法

随着移动开发的发展,以及在中国有特色的环境下.近阶段对于跨平台的方案有一种越来越流行的趋势,因为不论从人力成本还是更新频率上线速度来看 跨平台方案都有一定的优势。 现在主流的跨平台方案分别是 H5 ReactNative Flutter。那么我就从这三个主流方案说一说自己的理解和看法。H5H5作为存在时间最久的跨平台方案目前也是各大公司作为跨平台方案的首选。但是由于其有一定的性能问题以及和原生体验上的差异让各大公司都在另寻出路。但是作为最为稳定的跨平台方案绝对当仁不让。毕竟时间久积累的各种...…

跨平台继续阅读
更早的文章

iOS App Optimization series 3 内存/CPU优化

生在ARC时代我们是幸运的,还记得初期学习OC 就是在iOS5,那个时候还是MRC时代,又是初学,分不清内存怎么管理,各种崩溃各种酸爽。后面引入ARC机制后,对开发者总算友好了很多,但是不注意还是会引起内存问题。实际情况下解决稳定增长的内存问题并不难(毕竟能够复现),难就难在开发并不知道自己开发的功能发生了内存问题,那么我们就需要借助一些工具提醒我们项目里的内存问题。下面我们从3个优化方向来总结一下 (配合自制demo食用更佳)减少内存泄露定位问题1.引起 内存泄露的点 循环引用 ns...…

优化继续阅读