专栏首页计算机视觉及音视频工程程序员写作模版献给懵逼的你
原创

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

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

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

专业写作码农配图

嗯,不错

意义或者目的

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

1. 索引目录

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

写作指南收集

文章说明

知乎问答

作业部落的写作指引

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

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

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

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

需求单

说明

客户端需求链接

客户端需求描述

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

张三、李四、阿猫和阿狗

2.3 UI显示效果

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

UI界面效果展示

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

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

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

例如:http://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. 引用文章及说明

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

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

推荐文章

描述

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

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

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java 8中集合优雅快速的处理方式

    相信现在大多数的伙伴们,都在使用Java 8了,而 Java 8相比以前的版本,是作出了革命性的改变。Java8的特性大致可总结为,开发速度更快,代码更少,增加...

    攻城狮的那点事
  • Spring组成

    百科上的一段对于spring的定义,从中可以提取到Spring是开源、面向接口编程的轻量级框架,解决了业务逻辑和其他层之间的耦合问题。 Spring如何实现解藕...

    OPice
  • JS 中可以提升幸福度的小技巧

    本文主要介绍一些JS中用到的小技巧,可以在日常Coding中提升幸福度,将不定期更新~

    Nealyang
  • 从bug看11种编程语言演化史,果然如今Python最流行

    在本文中,作者选择了 11 种最流行的编程语言(通过 Stack Overflow 标签出现的频率衡量),希望可以找出这些问题的共性及差异性。

    机器之心
  • java 序列化Serializable

    张工是一名java程序员,工作5年了,一直从事java开发。最近到某互联网公司面试,做了笔试题后,有一道笔试题是这样子的:Serializable有什么作用,张...

    葫芦
  • lambda与函数式

    前面两篇文章介绍了什么是响应式编程?和响应式流的特性,一味讲概念终是枯燥,还是上手敲一敲代码实在感受一下响应式编程的“手感”吧。

    Java3y
  • SparkRDD转DataSet/DataFrame的一个深坑

    原需求:希望在map函数中将每一个rdd转为DataSet或者DataFrame。

    王知无
  • Qml组件小知识

    Qt君
  • 链表的实现

    链表分为单向链表、双向链表和循环链表。链表这种数据结构就像是火车车厢一样,每个车厢可以插入到任意的的位置。与数组不同的是,数组的数据存储是连续的存储单元,就好比...

    多云转晴
  • 一文读懂Spring MVC执行流程

    说到Spring MVC执行流程,网上有很多这方面的文章介绍,但是都不太详细,作为一个初学者去读会有许多不理解的地方,今天这篇文章记录一下我学习Spring M...

    用代码征服天下

扫码关注云+社区

领取腾讯云代金券