程序員寫做模版獻給懵逼的你

專業寫做碼農配圖

嗯,不錯

意義或者目的

描述寫做文章或者梳理總結的出發點。好比,本文章的目的在於給一個寫做的模版供後面技術寫做一個思路指導。android

1. 索引目錄

用於放在文檔首頁,呈現所有文檔的結構,方便搜索查找的標題、連接等。可採用目錄結構,也能夠採用單純的列表樣式,例以下面的表格。長文章用到,短文章能夠不須要。git

寫做指南收集github

文章說明數據庫

知乎問答markdown

做業部落的寫做指引架構

掘金的技術寫做指南,有範文組件化

2. 項目/組件/業務功能介紹

一段話精簡地介紹項目作什麼、項目與同類項目比較的突出亮點、項目當前具有的能力。如果組件,介紹其主要完成功能及完成的效果。如果業務性的功能需求,列出需求單,開發負責人,界面效果。

2.1 需求單(業務功能須要)

需求單

說明

客戶端需求連接

客戶端需求描述

2.2 主要開發人員(業務功能須要)

張3、李4、阿貓和阿狗

2.3 UI顯示效果

例如:Flutter高仿網易雲音樂,排行榜和評論界面

UI界面效果展現

3. 快速接入使用(項目/組件)

主要針對項目或者組件的如何快速的使用,提供用戶項目使用簡單快捷操做指引,可以以最短期運行或者使用,包含下面幾個方面:

  1. 安裝環境要求及說明;
  2. 安裝或者編譯方法,若爲子工程如何添加到項目,有什麼依賴關係;
  3. API的詳細介紹;
  4. 引入圖文或者視頻進行展現,有demo會更加友好;
  5. 可能還須要一個常見問題說明;

例如:facebook.github.io/rebound/

4. 方案總體結構或者類關係

描述項目或者組件的總體的層次關係,並描述每一個層次的做用及每一個層次之間的關係。對於業務功能畫出其類圖或者基本的分層關係圖,並描述每類的做用。

舉個例子:微信Android架構歷史

出自:微信Android架構歷史

5. 方案選型對比或者實現思路、關鍵路徑

5.1 對於項目或者組件來講,重點說明在實現的時候方案的選擇,包括以下幾個方面:

  1. 對比方案的實現方法;
  2. 對比每一個實現方案的優缺點;

舉個例子:愛奇藝組件化方案開源 Andromeda

其中對比了業界幾個方案以下(這裏不是很全,這裏有個小哥總結的很全

易用性

IPC性能

支持IPC

支持跨進程事件總線

支持IPC Callback

Andromeda

Yes

Yes

Yes

DDComponentForAndroid

較差

--

No

No

No

ModularizationArchitecture

較差

Yes

No

No

另一種方式:以問題導向的思路的方式行文 :組件化方案調研(IOS)

問題-->組件方案-->改進-->新問題-->持續改進-->實現

5.2 對於業務功能來講,重點說明代碼實現的關鍵路徑以及每一個類的做用:

好比上面網易雲音樂的排行榜界面:舉個例子

關鍵功能路徑

播放列表功能

PlayListManager-->playAll();

查看評論功能

CommentManager-->enter(int musicId)

分享功能

ShareManager-->shareMusic(int musicId)

再舉個例子:若是你要分析源碼相似的,能夠用以下的結構:Android 基於 Choreographer 的渲染機制詳解

源碼分析行文思路

6. 性能對比測試(組件和項目)

對你對方案或者組件有價值或者說服力,須要有性能的對比說明。

舉個例子:WCDB的性能數據與Benchmark(IOS) Android Benchmark

以下圖,截取了部分對比效果,這裏針對不通平臺的不通方案之間分別作了性能測試,數據在同一標準下比較有說服力。

讀操做性能測試:該測試爲從數據庫中取出全部數據,並拼裝爲object。

WCDB性能對比

Nexus 5X Android 7.1.2 (arm64-v8a)

Create

Insert Transaction

Insert Separated

Insert Rollback

Update One SQL

Update Transaction

Framework

49

1081

7121

91

71

510

Framework(W)

53

1112

1789

80

69

497

SQLCipher

28

857

15208

75

73

397

SQLCipher(E)

303

971

16900

72

115

444

WCDB

28

1027

6601

88

80

492

WCDB(E)

243

1093

17283

94

91

546

WCDB(W)

36

1077

1491

73

68

475

WCDB(EW)

212

1051

3574

76

85

492

7. 協議或者第三方依賴說明

採用了哪些協議,第三方依賴怎麼加入的,一些擴展方案,好比熱重載、插件化如何實現的。

8. 常見的問題及坑

對於項目、組件、業務代碼來講,總會有各類遺留問題點,或者須要特殊注意的地方。這裏能夠作詳細說明,作一個相似Q&A的地方。

例如:Android動態模糊實現的研究中的注意事項

8.1 OpenGL ES Context在多線程環境下的管理

OpenGL在多線程環境下工做須要額外的處理,爲了正常工做須要遵照兩條規則:

  • 一個線程只能有一個渲染上下文(Render context)
  • 一個context只能綁定一個線程

所以在多線程環境下的實現context共享的處理方式以下:

  1. 將context與線程1綁定: eglMakeCurrent(display, surface, surface, context);
  2. 在線程1執行OpenGL操做…
  3. 將context與線程1解綁: eglMakeCurrent(display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
  4. 將context與線程2綁定: eglMakeCurrent(display, surface, surface, context);
  5. 在線程2執行OpenGL操做…

9. 引用文章及說明

引用了哪些其餘的文章一一列舉。

這裏推薦一些寫的比較出色的文章:

推薦文章

描述

方案型文章表明。有條理、思路清晰; 從背景知識點到方案實現再到性能分析

源碼總結分析類型文章表明 原理講解到代碼分析,圖文詳細

相關文章
相關標籤/搜索