如何快速学习一门新技术

如何快速学习一门新技术

对于技术而言,分为俩类:语言和系统。
经常接触的语言:C、Java、Android、Objective-C。
经常接触的系统:Android、iOS、windows、Mac。

语言
1.语言层面:语言具有相通性。如果精通一门语言,可以快速的掌握另一种语言。

  • 类型
  • 变量
  • 运算符
  • 循环控制语句(for、if、while、swicth)
  • 字符串操作
  • 集合(数组、android集合、ios字典等)
  • 函数(参数、返回值等等)
  • 面向对象编程(所有语言完全一样。类、接口、抽象类、属性、继承、多态、封装等等)
  • 多线程
  • 反射
  • 异常处理

以上知识点,无论哪种语言,基本都会被上面知识点覆盖。
有些基础扎实的程序员一俩个月就掌握了一门新语言,比如做android开发很多年的,学习Objective-C一俩个月就可以进入到iOS领域开发。其实这仅仅是语言层面的。还是要多做实战开发。

我5年前是做java服务器时,转的android。当时学四大组件的生命周期时,自己动手一步一步打log调试才明白各个组件以及交互时的各种状态并牢牢记住。我对Objective-C中的self语法和.的用法一直困惑,后来写了几个demo理解调用运行原理,才很清晰。

系统
1.系统层面:每一个系统都包含一套自己的完整的运行体系。我们可以很快的很快的熟悉使用一个系统,可以很快的学习一门编程语言。如果想理解各个系统的庞大体系。就需要日积月累了。比如Android的系统进程和APP进程的关系、iOS系统的Runtime。

到此可以看出,每个领域都要不断的沉淀,日积月累。明白其应用层、系统层。

由此我们可以分析下移动端android和ios开发的相似之处。

  • 控件:基本控件、列表控件、自定义控件
  • 事件:事件绑定、事件监听
  • 网络:网络基本协议、网络请求、网络框架
  • 存储:数据库、文件
  • 页面间交互(跳转和传参)
  • 生命周期(控件的和页面的)

  • 模块化
    以上功能对于每个平台共用部分都可以进行模块化,比如Android中使用的Library,iOS中使用的静态库。我们可以把常用的列如网络请求,上拉下拉刷新等等封装几个类到一个单独的项目中。与业务逻辑无关,用于专门处理一些功能性操作。

    在项目管理开发过程中,随着业务扩大开发人员增多,多项目的管理模块的管理更为重要,这就需要把项目拆分成各个模块,各个模块在开发过程中可以作为独立的APP开发和调试,也可以在发布版本时融合在一起。Android用Maven,iOS用CocoaPods来解决这样的问题,我们可以把这个称为模块化拆分。

在一个完整的项目中我们还会用到:推送、埋点、性能监控、崩溃统计、设计模式(MVC、MVP和MVVM)等等。

以上知识点,是开发APP所需要具备的。其实APP作为终端首先我们就是要会处理和服务器的交互。请求和接收,这就涉及到网络框架。我们需要把数据缓存起来,就涉及到存储。我们想要列表展示数据,就涉及到列表控件。我们想点击这个列表查看里边的内容,就涉及到列表详情页。当一个页面不能满足我们需要,我们需要跳转到其他页面时,我们就要用到页面跳转。到这里。基本一个简单的app就出来了。

开发过程中我们讲究耦合性、健壮性。这就需要我们把一些功能进行模块化。而有时我们又追求敏捷开发以及复用,这就需要我们进行框架和架构的分析设计使用。而当我们需要把功能模块进行整合时就需要用到设计模式。还要考虑安全、需要查看用户行为还要做数据统计等等。

你可能感兴趣的:(程序人生)