程序员写作模版献给懵逼的你

2019-11-09 11:43:32 浏览数 (1)

前言:主要描述文章主要内容及要点,可适当UI配图

比如:本文主要讲述了文章写作等构成部分

专业写作码农配图

嗯,不错嗯,不错

意义或者目的

描述写作文章或者梳理总结的出发点。比如,本文章的目的在于给一个写作的模版供后面技术写作一个思路指导。

1. 索引目录

用于放在文档首页,呈现全部文档的结构,方便搜索查找的标题、链接等。可采用目录结构,也可以采用单纯的列表样式,例如下面的表格。长文章用到,短文章可以不需要。

写作指南收集

文章说明

1.如何提高技术写作能力?

知乎问答

2.markdown写作语法指南

作业部落的写作指引

3.掘金专栏写作指南

掘金的技术写作指南,有范文

2. 项目/组件/业务功能介绍

一段话精简地介绍项目做什么、项目与同类项目比较的突出亮点、项目当前具备的能力。若是组件,介绍其主要完成功能及完成的效果。若是业务性的功能需求,列出需求单,开发负责人,界面效果。

2.1 需求单(业务功能需要)

需求单

说明

客户端需求链接

客户端需求描述

2.2 主要开发人员(业务功能需要)

张三、李四、阿猫和阿狗

2.3 UI显示效果

例如:Flutter高仿网易云音乐,排行榜和评论界面

UI界面效果展示UI界面效果展示

3. 快速接入使用(项目/组件)

主要针对项目或者组件的如何快速的使用,提供用户项目使用简单快捷操作指引,能够以最短时间运行或者使用,包含下面几个方面:

  1. 安装环境要求及说明;
  2. 安装或者编译方法,若为子工程如何添加到项目,有什么依赖关系;
  3. API的详细介绍;
  4. 引入图文或者视频进行展示,有demo会更加友好;
  5. 可能还需要一个常见问题说明;

例如:http://facebook.github.io/rebound/

4. 方案整体结构或者类关系

描述项目或者组件的整体的层次关系,并描述每个层次的作用及每个层次之间的关系。对于业务功能画出其类图或者基本的分层关系图,并描述每类的作用。

举个例子:微信Android架构历史

出自:微信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性能对比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. 引用文章及说明

引用了哪些其他的文章一一列举。

这里推荐一些写的比较出色的文章:

推荐文章

描述

Android动态模糊实现的研究

方案型文章代表。有条理、思路清晰; 从背景知识点到方案实现再到性能分析

Android 基于 Choreographer 的渲染机制详解

源码总结分析类型文章代表 原理讲解到代码分析,图文详细

0 人点赞