最近我去几家公司面试,本意上只是去看一看本身的水平如何,到达了什么水平,在下一阶段我须要怎么作,而后在和几位面试官聊天的过程当中,思考了一些问题,这些问题也是下一阶段我须要去注意的,但愿看到文章的诸位,这些问题能够给大家一点小的启发。程序员
这个问题其实很说简单其实很简单,可是重点却不是这个问题自己,而是那位面试官的原话当你使用Swift编程的时候,你就不能使用Objective-C的思路去使用Swift了,你要知道Swift的特性是什么,不仅仅是针对OC的特性,而是这门语言自己的特性
, 确实,在听完这个回答以后,其实我很是的震撼,由于我之前确实都是在用使用Objective-C的方式去使用它,而忽略了这门语言本身独有的特性!!!面试
我从官网Swift的介绍中截取了它的几点特性:算法
- Closures unified with function pointers - Tuples and multiple return values - Generics - Fast and concise iteration over a range or collection - Structs that support methods, extensions, and protocols - Functional programming patterns, e.g., map and filter - Native error handling using try / catch / throw 复制代码
其实在使用swift的使用,若是真的想去使用好,就得去在使用的过程当中去思考Swift的特性有哪些,你有没有用到这些特色,若是你没有使用,那么你和使OC有区别吗?这是我须要考虑的事情,但愿看到我文章的你也能够考虑考虑~编程
我的感受能够从两个地方出发去充分使用Swift的特性:首先是它的语法特性(如上所写:闭包;元组;快速的迭代;支持方法,扩展,协议的结构体;函数式编程;原生的错误处理);而后呢,就是编程思想的使用了,Swift的核心的编程思想,我以为有两个一个是函数式编程思想
,一个就是面向协议的编程思想
,固然还有一种思想是AOP(面向切面编程)
,固然还有不少其余的思想,可是我所知的这三者应该是最多见的,但愿我,也但愿你们,在使用Swift
的时候,去思考思考本身使用了这些Swift
特性没有?使用了这些编程思想没有?若是没有考虑这些东西,就要去自我审查一下了~swift
确实,不少时候,在考虑方案的时候,甚至是基本的业务逻辑,同一个问题,是必定会有更好的方案的!可是在如今我却并无去思考比较好的算法去解决问题,而是大多数状况下采用的是很是基本的面向过程的编程思惟,这是不可取的也是不正确的方式。bash
那我在下阶段可能就去要去花费时间去仔细的钻研钻研算法这一块了,算法自己不就是程序员所必须掌握的基础技能吗?markdown
固然这个问题是我抽象出来处理的问题,实际上呢,面试官的原话是什么呢?闭包
你说你知道这三种方式,你以为Target-Action的方式最好,那么其他的两种方式呢?你使用过吗?他们的创建必定是为了解决某些问题,若是没有足够的了解的话,你又如何知道在具体状况下使用哪一种方案呢?
复制代码
犹如醍醐灌顶,每一种方式都有它自己所拥有的好处,并非说某一种方式就是最优的,那基于这个问题,其实还能够衍生不少知识点,但愿你们都对架构这一块去研究研究吧,写出低耦合高内聚的代码。架构
不一样的软件的构架是针对于不一样的项目的,没有一种构架是完美的,当咱们使用习惯了MVVM的构架以后,它就必定是最好的吗?你使用它的目的是什么?你有没有充分利用了MVVM,仍是说你只是使用了简单的文件夹层次的划分?MVC当然有坏处,那是你真的充分的理解了MVC的构架吗?框架
哎,不问不知道,一问就感受本身很是的菜了,在使用第三方库的过程当中根本就没有去仔细的思考这些问题,那么本身如何能够提升呢?看来使用第三方库的时候,去看看源码也是一个很是值得作的事情啊!
这也是一个很深沉的话题,若是展开的话,其实还有挺多要讲的...