2018年如何学习手机开发

###说到如何学, 首先要搞清楚学什么###

一切从实际出发, 学知识不就为了搞事情么, 首先看看一个app一般有哪些功能(一般由哪些部分组成), 就知道要学什么了:

  • app的框架(骨架, 结构)
  • 网络请求
  • 数据存储(持久化)
  • 业务逻辑(具体的功能需求)
  • UI
  • 动画

除了app本身结构相关的代码,还有一些相关的重要知识:

  • debug技巧 – 不用解释为什么学了吧, 谁人代码无bug
  • 性能优化 – 让app无bug还不够, 无卡顿, 加载快, 省电等等…完美是无可限量的
  • 版本控制(代码管理) – 一而再再而三的失足, 也不会成为千古恨
  • 持续集成(打包, 发布管理) – 频繁重复的工作, 脚本跑去吧. 既节省时间还不犯错
  • bug收集, 管理 – 你的测试组同学再牛x, app放到真是世界历练总还是会有问题, 把这些问题收集起来, 解决掉
  • 单元测试 – 既验证逻辑对错, 又帮助我们写出小而美的最小功能块

另外, 还有一些不管iOS还是Android工程师, 都需要了解的知识:

首先是以下两点:

  • 多线程和线程安全 – iOS系统和Android系统都是一样, 只有一个主线程(操作UI), 可以有多个其它线程. 为什么? 开启其它线程可以去执行耗时操作, 不阻塞主线程, 不会让我们的app卡住不动. 只有一个主线程是因为如果有多个的话, 需要大量操作在这些线程之间同步UI相关的数据, 性能不好, 码农写代码估计也会写吐.
  • HTTP, HTTPS – 完全不需要服务端的app估计很少, 了解了网络协议才可以更好的进行网络请求操作, 优化网络请求.

最后这两点不是一蹴而就的, 需要结合实际反复思考, 练习, 再思考, 再练习, 再思考…
刚开始对这些知识一脸懵逼也没有关系, 不影响你开始写app.
但是一定要记得回头来多思考, 用思考的结果去重构自己的代码, 或者用在以后的代码中(程序设计中).

  • 面向对象程序设计基本原则和设计模式 – 可以让我们更合理的组织app的结构, app中每个模块的结构. 通过增加对象之间关系的复杂度来减少逻辑的复杂度,也可以增加代码的复用性。具体来说是学习各种MVC, MVP, MVVM, VIPER 和 23种设计模式
  • 数据结构和算法 – 设计更合理的逻辑, 不要动不动就便利, 动不动就嵌套循环. 对代码执行的大概时间, 需要消耗多少内存空间心中有数, 知道如何写出更高效的代码.

###现在有了学习目标了, 下一步就是逐一深入, 攻克乃还了!###

此处应有“司马懿 攻克乃还”的图片
image