鍍金池/ 教程/ Android/ 《JavaScript 語言精粹》
Launch mode 和 Intent flags專題
Canvas & Drawables
UTAustinX_UT.9.01x: Effective Thinking Through Mathematics
《JavaScript 語言精粹》
Memory leak專題
React基礎
《Test Driven Development: By Example》一書
Developer tools
安卓開發(fā)技能樹
<a rel="nofollow" href="https://mp.weixin.qq.com/s?__biz=MzA3NDM
Best Practices for Interaction and Engagement
各個安卓版本引入的主要新特性
Building Apps with Connectivity &amp; the Cloud
List.toArray()再強轉是一定會失敗的
深入Android frameworks
Google dev 100 days系列視頻
Building Apps with Contacts &amp; Sign-In
關系型數(shù)據(jù)庫設計范式
《App研發(fā)錄》一書
REST API設計
Google IO 2015摘要
自定義View/ViewGroup以及高性能實現(xiàn)自定義UI
安卓系統(tǒng)點擊事件處理
《50 Android Hacks》一書
Building Apps with Content Sharing
Flux基礎
<a rel="nofollow" href="http://developer.android.com/training/in
依賴注入(以Dagger 2為例)
Java同步機制
Java對象內存的使用情況
JSR133(Java memory model)
Google官方Material Design手冊(<a rel="nofollow" href="http://develop
Futurice公司安卓團隊的建議
安卓性能優(yōu)化
  • 1.
Best Practices for Performance
<a rel="nofollow" href="http://www.vogella.com/tutorials/Android
<a rel="nofollow" href="http://blog.danlew.net/2014/11/19/styles
Handling Runtime Changes
<a rel="nofollow" href="http://www.vogella.com/tutorials/Android
Building Apps with Graphics &amp; Animation
<a rel="nofollow" href="http://tools.android.com/tech-docs/new-b
Android項目架構
MVP(Model-View-Presenter)模式
<a rel="nofollow" href="http://www.infoq.com/cn/es6-in-depth/"">
《Android源碼設計模式解析與實戰(zhàn)》一書
Rx在Android中的最佳實踐
函數(shù)調用時,傳遞參數(shù)應該是不可變的(Immutable)
ProGuard
面向對象六大原則(SOLID+)
深入理解Java虛擬機
深入Java深淺拷貝、immutable、unmodifiable
Best Practices for User Input
UI上的一些高效方式/最佳實踐
<a rel="nofollow" href="https://blog.stylingandroid.com/ripples-
Best Practices for User Interface
安卓測試驅動開發(fā)/安卓測試驗證
暗時間:學會正確思考
技術筆記
Aspect Oriented Programming(AOP)
Best Practices for Background Jobs
安卓系統(tǒng)動效專題
Feed系統(tǒng)的設計
Data binding(MVVM,Model-View-ViewModel)
Effective Java一書筆記
<a rel="nofollow" href="http://developer.android.com/training/in
Rx (Reactive eXtention)
MultiDex專題
一些很棒的點子
WebRTC

《JavaScript 語言精粹》

對象

  • JavaScript 中的對象是可變的鍵控集合(keyed collections)
  • JavaScript 中的對象是無類型(type-free)的
  • JavaScript 包含一種原型鏈的特性,允許對象繼承另一個對象的屬性。正確使用它可以減少對象初始化的時間和內存。
  • 取屬性值,可以用 || 填充默認值,可以用 && 避免對 undefined 取值產(chǎn)生異常
  • 對象通過引用來傳遞,直接賦值不會被復制
  • !原型,原型鏈
  • 反射:typeof, hasOwnProperty
  • 枚舉屬性:for in (會包含原型鏈中的所有屬性)
  • delete 可以刪除對象的屬性(是否可以刪除來自原型鏈的屬性?)
  • 減少全局變量污染:可以把所有全局變量用一個對象包起來(極大程度減少沖突)

函數(shù)

  • 函數(shù)也是對象。對象是可變的鍵控集合,并擁有一個連接到原型對象的隱藏連接。對象字面量產(chǎn)生的對象連接到 Object.prototype,函數(shù)對象連接到 Function.prototype(而它又連接到 Object.prototype
  • 每個函數(shù)在創(chuàng)建時會附加兩個隱藏屬性:函數(shù)的上下文和實現(xiàn)函數(shù)行為的代碼
  • !函數(shù)的 prototypeFunction.prototype,閉包
  • 調用
    • 除了形參,每個函數(shù)還接收兩個附加參數(shù),thisarguments
    • 函數(shù)有 4 種調用模式
    • 傳參過少,缺失的值為 undefined,傳參過多,多余的將被忽略
  • 4 函數(shù)調用模式,差異主要在如何初始化 this 參數(shù)

    • 方法調用模式:被保存為一個對象的屬性時,這個函數(shù)被稱為該對象的一個方法;調用表達式中包含提取該屬性的動作(obj.inc(1)obj['inc'](1))都是方法調用;在方法中可以使用 this 引用包含它的對象,而 this 的綁定發(fā)生在調用的時候(和 Java 似乎沒有區(qū)別)
    • 函數(shù)調用模式:如果函數(shù)沒有被保存為一個對象的屬性,就稱之為函數(shù)調用;此時 this 被綁定到全局變量上(而不是外部函數(shù)的 this),這一點很不好,例如方法的內部函數(shù)無法共享方法對 對象的訪問權,但可以通過以下方式實現(xiàn)訪問:

      obj.double = function () {
      var that = this
      
      var helper = function () {
          that.val *= 2
      }
      
      helper()
      }
    • 構造器調用模式:如果在函數(shù)前面帶上 new 來調用,那這個調用會創(chuàng)建一個連接到該函數(shù)的 prototype 成員的新對象,同時,this 會被綁定到新對象上;如果一個函數(shù)的目的就是為了結合 new 前綴來調用,就稱之為 構造器函數(shù),通常將這種函數(shù)保存在大寫開頭命名的變量中;不建議使用;
    • apply 調用模式:apply 是函數(shù)對象的方法,調用它將會執(zhí)行該函數(shù),而且 apply 可以傳兩個參數(shù),第一個綁定到函數(shù)的 this 上,第二個綁定到函數(shù)的 arguments
  • arguments 可以訪問傳遞給函數(shù)的所有實際參數(shù),包括未在形式參數(shù)中聲明的參數(shù);可以用它實現(xiàn)變長參數(shù),但不建議;arguments 不是數(shù)組,它只是有一個 length 屬性;
  • 一個函數(shù)總會返回一個值,沒有指定時,返回 undefined
  • 如果函數(shù)調用時在前面加上了 new 前綴,且返回值不是一個對象,則返回 this(該新對象)
  • 異常,一個 try 只會有一個 catch,多種可能的異常需要根據(jù)異常對象的屬性來進行區(qū)分處理
  • 為基本類型擴充功能
  • JavaScript 沒有塊級作用域,函數(shù)內定義的變量在函數(shù)內任何位置都可見,所以最好在函數(shù)開頭聲明所有變量
  • 通過函數(shù)字面量創(chuàng)建的函數(shù)對象包含一個連接到外部上下文的連接,這被稱作閉包
  • 內部函數(shù)可以訪問在外部函數(shù)
  • 模塊模式:一個定義了私有變量和函數(shù)的函數(shù);利用閉包,創(chuàng)建可以訪問私有變量和函數(shù)的特權函數(shù);最后返回這個特權函數(shù),或者把它們保存到一個可以訪問到的地方

繼承

  • 函數(shù)化
    • 以任何方式創(chuàng)建一個新對象
    • 有選擇地定義私有實例變量和方法
    • 給新創(chuàng)建的對象擴充方法,這些方法有特權訪問參數(shù)、第 2 步中定義的私有變量和方法
    • 返回新創(chuàng)建的對象