浅谈iOS架构的技能栈

2018 年 4 月 28 日 CocoaChina 筑梦师Winston

前言


这里筑梦师,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同进步,用简书记录下自己的学习历程.


个人学习方法分享

iOS开发学习路线

浅谈iOS进阶路线


本文阅读建议

1.一定要辩证的看待本文.

2.本文仅代表个人片面观点,如有不同观点,还往及时指出.

3.本文只阐述学习路线和学习当中的重点问题.需要读者自己使用百度进行拓展学习.

4.本文所表达观点并不是最终观点,还会更新,因为本人还在学习过程中,有什么遗漏或错误还望各位指出.

5.觉得哪里不妥请在评论留下建议~

6.觉得还行的话就点个小心心鼓励下我吧~


目录

1.技能栈路线

2.iOS架构说

3.大、中、小公司的区别

4.架构师思想


为什么我又会开一篇文章,而且又是大致一样的标题,因为我觉得这是不同层面的问题,不同层面的文章,上一篇可以说是我掌握的一些知识的分享,而这篇章完全是在阅读了APP架构师实践指南这本书有感而发的.


上篇文章只是单纯自己想要提升自己的一个路线总结,而当我看到这本书以后,它彻底改变了我对iOS开发的看法,我突然发现有很多我本该掌握必备的技术栈,我并不会,甚至很是陌生,深感自己还有许多东西要进行学习.


这篇文章单纯的技术交流篇,本人深感自己水平尚且不够,还需长时间的努力学习,希望本文可以对各个iOS开发工程师有所帮助,迅速找到自己的定位和不足,及时提升自己.


推荐书籍


本文推荐书籍,均参考于APP架构师实践指南一文.


架构之美

人月神话

精益创业实战

架构师技能矩阵

软件架构设计Swifter:100个Swift开发必备TipJava8新特性Java动态代理机制分析及扩展


技能栈路线


语言语法


Objective-C

Swift


工具使用


IDE

编译调试

版本管理

产品设计

SDK使用


常用模块


基础组件

常用业务模块

编译打包

版本适配

第三方SDK

网络库加密


安全逆向


逆向分析

安全测试

安全建议

  • 混淆签名

  • 加固加壳

  • 安全编码


性能优化


硬件性能

UI和CPU

内存性能

网络性能

包Size

启动速度

代码优化


架构和重构


组件化和模块化

UML基本功

设计模式

接口设计

架构模式选型

重构


质量和稳定


质量稳定性指标

CI和代码监控

Crash

测试

  • 兼容性测试

  • 自动化测试

  • 性能安全测试

  • A/B Testing

  • 代码覆盖率


上述架构路线从书上整理下来,方便各位查阅学习.


为了不对原书作者造成侵权,每个技能栈我都将以自己的理解进行描述,强烈建议各位读者购买这本APP架构师实践指南明确自己的定位,提升自己的思想,感受不一样的iOS开发观念.


自我定位


其实并不是因为看了APP架构师这本书以后,你就成为一个iOS架构师了,而是重点去学习它的观念,一个架构的观念.


本书第一章就可以确认自己定位,而仅仅只有7页.就可以让我受益匪浅,直接看清自己的不足,和所不会的技能栈.


基础语法


如果你只会一门编程语言,无论多么精通,仍然显得不够优秀


确实,即便你只精通一门编程语言,也要进行各种语言的了解,不能因为自己不从事相关的工作,就不进行了解学习,干坐井底之蛙.


例如Swift 和Java的区别和新特性,即便市面上普遍都是OC,但你至少要做到,和别人提及Swift语言,熟悉不陌生.


不同的语言虽然语法不同,但是其逻辑思想是通用的,也就是说,学会一门语言,再学习另一门语言就比较容易.从而快速提升自己.


关键词:编程范式,反射、注解、泛型


APP开发工具系列


  • 编译工具

  • 编译调试

  • 版本管理


产品设计


  • 生命周期

  • UI设计

  • 存储和网络


常用模块


常用模块则是平常在快速搭建和开发App当中,会调用一些自己或别人历史的积累和经验总结而成的第三方库或者工具库.


关键词:图片库,网络库,启动引导模块,登录注册模块,运营统计模块, 编译打包,版本适配.


组件化、模块化、插件化


模块:强调职责,可实现的单元,其核心是内聚和分离


组件:也称构件,强调复用.其依赖性比较高.


可以百度进行学习iOS开发 组件化,iOS开发 模块化.


插件化则是另一种实现方式,其三种方式目的均是为了实现重用和解耦,而插件化则是更注重增量满足其目的.


设计模式、接口设计、架构模式


设计模式是指,在实现业务逻辑时,代码逻辑的目标和实现模式,例如:MVP,MVVM,MVC等.


接口设计的概念却是主要体现在封装的概念上,一个强大的库,其封装的接口越灵活,越成熟.


架构模式本人尚未参透,理解当中,还希望各位移步百度进行学习.


这三点,可谓是架构的重中之重,一个项目代码是否高效,是否成熟,都和这三个有着密不可分的关系.


推荐书籍:


设计模式精解-GOF23种设计模式机械

设计模式:可复用面向对象软件的基础

大话设计模式


重构


重构分为两种:代码重构和架构重构,大家可以参考重构:改善既有代码的设计进行学习.


代码质量、性能优化、安全逆向


目前个人还在学习当中,就不在此为各位同行们班门弄斧,推荐作者书中推荐的一些好的书籍给大家进行学习.


推荐书籍:


iOS测试指南

大话App测试2.0FaceBook iOS启动时优化25 iOS App Performance Tips & Tricks.

逆向工程核心原理

iOS应用安全工方实战

iOS应用逆向工程

iOS安全攻防(二十三):Objective-C代码混淆

iOS签名原理


iOS架构说


既然说到iOS开发架构,不得不再次提及Casa大的文章iOS架构谈.


这篇文章属实说,对我个人收益很大,他让我养成了良好的代码习惯,和架构目录,在不同阶段看都能在该文章学到不一样的知识.


iOS架构,说远不远,有些iOS开发工程师,包括外包,产品,可能每天的任务都是一样,经理提出需求->完成需求.但小型公司,要求不严,需要极速开发App的那种甚至根本不会注重什么开发细节.


即便你学习iOS架构,也在当前的工作没有用武之地,也正如大家经常说的"学他干嘛,工作中又用不到".


架构是一个成熟的概念,是每一个开发工程师都可以进行学习,提升自己的一条路径,我不知道怎么说,怎么形容,会让那些觉得无所谓的同僚们进行学习.


我之前并没有怎么写过文章,总觉得怎么写都不能同时兼顾努力学习的程序员和程序员劝退师,总觉得和那些人格格不入,又无法改变他们的观点,索性,还是尽自己努力,帮一些努力学习的程序员,共同进步吧.


大、中、小型公司的区别


你会发现,随着你就业的公司规模变化,你进入的公司越大越知名,其公司内部的规范,要求,架构都会越来越成熟,逻辑性更明确,业务逻辑针对性更强.


其开发周期固定,效率和业务产出也都各不相同,但自己是否能够真正适应其本身的工作强度,值得令人深思.


大公司的开发模式,和其内部的代码文化都是能够让程序员快速成长不可或缺的一部分.


就比如说我,让我现在进入一家大公司就业,我可能完全是个小白,什么是工程化,什么是加密,分布式存储又是什么,异步处理高并发等等.


大型公司的架构模式,组件化,模块化,团队开发模式,迭代策略,一直都是我想学习的东西,所以我要努力学习,尽量让自己配的上可以在大公司工作的机会.


如果自己不努力,即便这个机会摆在你的面前,恰巧你又面试进了大公司,你都会因为实力不足失去这份工作.


不要安于现状,根本不会有上面的恰巧,每一个面试进BAT大公司的人都不是碰巧面试进去,而是精心准备的必然结果.


有机会,我一定要去大公司工作进行学习.


架构师思想


加入过一些群,交流过想法,很多人都调侃自己是码农,另一个便是架构师的角色,我个人觉得从码农转变为架构师,就是从用语言到理解语言、拓展语言的一个思想转变.


如果你只是单纯的使用语言完成业务需求,只思考自己的业务栈,那便是码农.但如果你去思考,怎么用,为什么用,怎么组合更好,那便是架构师思想了.以整个项目的开发观念去看待自己个人的业务逻辑如何实现,怎么实现更高效,那么你就正在向架构师转变.


很多人都说过我,想的真多,你这都是虚的.你终究是码农.我不予评论,我心里只想默默努力,提升自己的水平,完成自己的转换过程.


你是否有想过,你到底是在开发一款应用,还是在像一名流水线员工搬运代码,完成绩效?


总结


本文是读APP架构师一书有感而发,其本意希望各位同行的iOS开发工程师,一起学习共同进步.如果有什么错误,还请及时指出,我会及时修改.谢谢


结束语


如果您对这篇文章有什么意见或者建议,请评论与我讨论.

如果您觉得还不错的话~可以点个喜欢鼓励我哦.

如果您想和我一起学习,请毫不吝啬的私信我吧~

介个是我的个人博客,欢迎参观哦~


作者:筑梦师Winston

链接:https://www.jianshu.com/p/dfe5854c7e73


相关推荐:

浅谈iOS进阶路线

iOS开发学习路线

iOS用Socket自定义协议写一套聊天系统(C+S)



登录查看更多
0

相关内容

iOS 是苹果公司为其移动产品开发的操作系统。它主要给 iPhone、iPod touch、iPad 以及 Apple TV 使用。原本这个系统名为 iPhone OS,直到2010年6月7日 WWDC 大会上宣布改名为 iOS。
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
235+阅读 · 2020年5月21日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
《强化学习—使用 Open AI、TensorFlow和Keras实现》174页pdf
专知会员服务
136+阅读 · 2020年3月1日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
深度学习算法与架构回顾
专知会员服务
82+阅读 · 2019年10月20日
阿里技术大牛:一份架构师成神路线图!
51CTO博客
30+阅读 · 2019年7月6日
渗透某德棋牌游戏
黑白之道
12+阅读 · 2019年5月17日
专访阿里亚顿:Serverless与BFF与前端
前端之巅
45+阅读 · 2019年5月8日
从webview到flutter:详解iOS中的Web开发
前端之巅
5+阅读 · 2019年3月24日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
2年Java经验,真的就拿不到30万年薪吗?
程序员观察
3+阅读 · 2018年4月8日
快乐的迁移到 Python3
Python程序员
5+阅读 · 2018年3月25日
免费云真机测试 | 让您的应用完美适配 Android Oreo
引力空间站
3+阅读 · 2018年2月2日
Arxiv
20+阅读 · 2018年1月17日
Arxiv
5+阅读 · 2016年12月29日
VIP会员
相关VIP内容
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
235+阅读 · 2020年5月21日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
《强化学习—使用 Open AI、TensorFlow和Keras实现》174页pdf
专知会员服务
136+阅读 · 2020年3月1日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
深度学习算法与架构回顾
专知会员服务
82+阅读 · 2019年10月20日
相关资讯
阿里技术大牛:一份架构师成神路线图!
51CTO博客
30+阅读 · 2019年7月6日
渗透某德棋牌游戏
黑白之道
12+阅读 · 2019年5月17日
专访阿里亚顿:Serverless与BFF与前端
前端之巅
45+阅读 · 2019年5月8日
从webview到flutter:详解iOS中的Web开发
前端之巅
5+阅读 · 2019年3月24日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
2年Java经验,真的就拿不到30万年薪吗?
程序员观察
3+阅读 · 2018年4月8日
快乐的迁移到 Python3
Python程序员
5+阅读 · 2018年3月25日
免费云真机测试 | 让您的应用完美适配 Android Oreo
引力空间站
3+阅读 · 2018年2月2日
Top
微信扫码咨询专知VIP会员