Android如何提高技术水平

来源:互联网 发布:xmind8 mac 激活码 编辑:程序博客网 时间:2024/05/21 14:53

 做技术,犹如修习一门武功。

  历数我周围的技术牛人(牛不到一定程度的先不算),他们中既有名牌大学计算机科班毕业的,也有半路出家转行过来的。

  但他们都有一个共同特点:他们在遇到问题后,思考片刻,总是能一下子切中要害,在表达上也往往一语中的。这也包括那些平常不善言辞的程序员。反观那些“更一般”的程序员(其中不乏科班毕业的),他们经常很难抓住问题的本质,表达起来也总是说不到点子上。

  可见,“正宗”还是“野路子”,并不在出身。

  写到这里,我终于自己长出了一口气。我出身一个极普通的农民家庭,既不是书香门第,也不是技匠世家。记得在大学一年级的上机编程课上,我才发现自己原来根本不会用键盘打字。相比那些初中高中就把计算机玩得很溜的同学,我算野路子吗?

  好了,那“正宗”还是“野路子”,不在出身在什么呢?

  在于学习和思考的方法。

  据我观察,技术牛人的学习方法和思考方式,大体类似。

  思考方式,是个很难说清的东西。所以,本文我们重点来讨论讨论学习的方法。

  面对一项新技术的时候,我们怎样去学习才能循序渐进,最终理解得深刻?

  让我们先把可供自学的资料列出来,分析一下:

  • Tutorial(入门教程)。由该项技术的官网提供。通常是英文的。这份资料是给初次接触该项技术的人看的,一般是一步一步地教你完成某些例子。当我们说某项技术对于新手不太友好的时候,一般也是因为这项技术的Tutorial部分做得不够好。
  • Specification,简称Spec。这是集中体现该项技术的设计思想的东西,是高度抽象的描述。这个一般也是一份完备的、系统的描述,包含该项技术涉及到的方方面面。这部分资料在不同的地方叫法不同,在相对简单的技术项目中,也可能没有;在另一些情况下,这部分资料混杂在其它文档资料之中;它还可能以论文(paper)的形式出现。
  • API Reference。大而全的API索引和文档,针对不同的语言接口可能提供多份。当我们使用这项技术进行编程的时候,API Reference自然是个离不开的、总是要不停去查询的一份资料。
  • 别人写的技术博客。质量良莠不齐,到底有没有价值,我们要学会去分辨。
  • 技术书籍。跟技术博客类似,质量有好有坏。稍后我们和技术博客放在一起来分析。
  • Source Code。如果我们要学习的技术是开源的,那么很幸运,我们能得到源代码。这是一份终极资料。

  为了让这些概念表达无误,我接下来多举一些例子。

  Java语言

  从来没有接触过Java语言的人,要想开始自学Java,从哪里开始呢?可以从Oracle官方提供的Tutorial入手:

  • http://docs.oracle.com/javase/tutorial/

  这份资料《The Java™ Tutorials 》,集中体现了Tutorial类型的资料的特点。它从最开始的编译和运行环境搭建说起,教你写出第一个Hello World,再用介绍的方式将Java各种语言特性(变量、类、泛型、Lambda表达式、JavaBeans,等等)进行讲解,同时还有对于JDK里常用API(集合类、多线程、IO等等)的介绍。

  对初学者而言,需要的就是这样一份资料。即使你手头没有任何Java的入门书籍,读完这样的一份资料之后,一个新手基本就可以开始使用Java来编程了。

  再看Spec:

  • http://docs.oracle.com/javase/specs/jls/se8/html/index.html

  这份文档,叫做《The Java® Language Specification》。是一份很典型的Spec,完备而规范。

  任何讲Java语法的资料,包括各种书籍和前面提到的Tutorial,都只能涉及部分。而这份Spec,如果你能读通的话,那么与Java语言特性有关的所有一切,你就再也不用求人了。

  JDK 8的API Reference:

  • http://docs.oracle.com/javase/8/docs/api/index.html

  用Java语言编程的时候,我们需要不断查阅的就是这份API Reference。我们平常一般是通过IDE来快速查看某个接口的文档说明。

  Android开发

  Android针对新手的Tutorial类型的资料,官网上称为Training:

  • https://developer.android.com/training/index.html

Android Training

  这份资料是典型的Tutorial。它教你制作第一个Android App,并针对若干个主题进行一步一步的教学。

  下面这份资料在Android官网上被称为:API Guides。

  • https://developer.android.com/guide/index.html

Android API Guides

  它实际上是一份介于Tutorial和Spec之间的文档。它有很多Spec的特点,比如它介绍Android中的抽象的四大组件的概念,介绍资源尺寸的抽象(dp),介绍View层原理,等等。但是,跟前面看到的Java Spec相比,它没有那么规范和正式,描述也更随意一些,估计也算不上完备(但涉及到了Android技术的绝大部分)。

  当我们对Android中某项具体技术存疑,或是有争论的时候,我们就需要来翻翻这份文档。因此,它基本可以归入Spec类型。

  然后是Android SDK的API Reference:

  • https://developer.android.com/reference/packages.html

  这份API Reference的质量并不高,描述上过于简略,甚至模糊不清,其可读性跟前面提到的JDK 8的API Reference完全不在一个水平上。这也是一些开源项目的通病,不重视接口文档。