README文档的规范写法

article/2025/9/23 15:09:40

看过很多开源库,发现有些库的文档写的一团糟,有的甚至就是一个标题,让你自己下载之后运行,自己摸索,看的很头疼。而那些使用量大的库的文档写的很标准,很详细,看的很舒服。

README文档写的好的话能减少很多使用成本,能帮助这个库让更多人了解,更多的人用,可以说好的文档就是一个门面。
有好的 README 文档的项目不一定是一个好开源项目,但一个好开源项目一定有一个好的 README。

下面就简单的总结一下README文档规范写法。(这只是我个人根据github上几百个大型开源库总结出来的,如你有更好的意见,欢迎留言。)

一、README文档的组成部分

看过很多开源框架的README文档,综合一下,大概有以下几部分组成:

  • (一)国际化
  • (二)项目工程介绍
  • (三)项目的使用效果图
  • (四)项目特点
  • (五)项目的基本结构(架构)
  • (六)集成方式
  • (七)使用方法
  • (八)混淆
  • (九)关于作者/组织及交流方式等信息。
  • (十)贡献者/贡献组织
  • (十一)鸣谢
  • (十二)版权信息

二、下面就每个部分简单的分析一下:

(一)国际化

github是面向全球的一个开源网站,所以不要局限于中文文档,建议写一个英文的README,让来自全球的人都能更方便的了解你的项目。推荐写法,在REAMDE开头写上国际化引用地址:

比如:
国际化

(二)项目工程介绍

项目介绍是必不可少的,它能让别人快速了解项目。项目介绍主要包括:

  • 项目名称、logo(没有logo就不写)
  • 这个开源项目是做什么的?
  • 这个项目是什么语言编写的?
  • 这个项目目前被多少人用到了,有多少好评等?
  • 项目维护、依赖更新状态(如果有的话,这也可以用)等
  • 项目可用版本及其他版本,以及每个版本的更新信息记录
  • Demo 或官网地址(如果有)

效果图如下所示:

英文版:

英文版项目介绍

中文版:

中文版项目介绍


  • 上述案例里面那些图标,请参考这个网站 Shields.io,打开之后想用哪个直接复制就可以了,同时它也支持自定义样式。

(三) 项目的使用效果图

如果是一些自定义控件或者项目的演示效果的,基本都会放上演示效果图,可以是图片,也可以是gif图。
建议:静态的页面的放截图,交互很复杂的建议放gif图。 如果功能比较多,建议每个功能一张效果图。

示例如下:

LoveHeartView使用示意图如下图所示:


(四)项目特点

主要是介绍项目的特点,方便别人查看和了解该项目。

比如 360的RePlugin框架的特点就写的很详细:

360的RePlugin的项目特点


(五)项目的基本结构(架构)

这里主要介绍项目的各个组成部分,如果是框架,可以附带架构图解;如果是其他的,可以提供一些UML分析图,顺便分析一下源码也行的。

比如 360的RePlugin架构图解 如下所示:

360的RePlugin架构图解

关于RePlugin架构的相关说明


(六)集成方式

一般的项目传到jcenter上面或者AS插件传到jetbrains的话 一般会附带相关的集成方式的说明。(如果没有这些措施的话,这一步可以略过不看。)

比如 okhttp 就有详细的3种集成方式:

一个是下载Jar包;一个是引用Maven库;第三个是添加Gradle依赖:

okhttp的集成方式


(七)使用方法

一般的README必不可少的,最重要的就是用法,主要包括:安装,运行,编译,部署,debug,该github上的这个库如何在自己的项目中使用,以及需要注意的问题,版本更新适配问题等等。

这里就拿 Glide 举例说明,Glide里面有一个详细的wiki使用文档的,首页的README里面也写了一个简单的基本用法,如下图所示:

Glide的基本用法


(八)混淆

一般来说,开源库都会设置一些混淆规则的,部分项目由于项目类型特殊之处,所以就没有混淆这一项,具体的看开源项目来定。

例如LitePal这个开源库的混淆 如下图所示:

LitePal混淆规则


(九)关于作者/组织及交流方式等信息。

这个就很灵活了,不是每一个必备,当然写出来方便大家联系作者,也是很好的。可以写一下作者或者组织的联系方式,微信,邮箱,博客,微博,甚至支付宝转账二维码等都是可以放上去的。

例如 blankj的AndroidUtilCode这个库为例,为了避免打广告嫌疑,我做了打码处理:

(十)贡献者/贡献组织

比如 谷歌推出的 sample 里面就有贡献者/贡献组织信息,如下图所示:

谷歌推出的sample的贡献者/贡献组织信息

(十一)鸣谢

这个主要是引用了哪些开源技术,这里可以做一些鸣谢,表示对别人的尊重,其实也是一个引用声明,避免因为版权而引起不必要的纠纷。

例如:我写的这个库 https://github.com/AweiLoveAndroid/CommonDevKnowledge/blob/master/interview/summary.md 里面就写了鸣谢。

https://github.com/AweiLoveAndroid/CommonDevKnowledge里面的鸣谢


(十二)版权信息

版本很重要,开源许可证很重要,如果没有生命版权,可能会因为一些侵权行为而无法很好的维权,版权信息可以保护作者的权益(个人理解)。

世界上的开源许可证,大概有上百种。很少有人搞得清楚它们的区别。最流行的有六种:GPL、BSD、MIT、Mozilla、Apache、LGPL

乌克兰程序员Paul Bagwell,画了一张分析图,说明应该怎么选择。这是我见过的最简单的讲解,只用两分钟,你就能搞清楚这 六种许可证之间的最大区别。

六种开源许可证之间的区别

比如 Picasso 里面的版权信息,如下图所示:

Picasso 里面的版权信息


http://chatgpt.dhexx.cn/article/FwL0Ic86.shtml

相关文章

你真的知道README吗?

目录 README MarkDown README的要素 API文档 总结 README是我们开发项目必备的文件,之前没有认真的研究过,都是大概的了解下,没想到里面也是一门大学问,话不多说,直接码起来。 README README是项目自我描述文件…

软件项目规范(1):README文件的基本写作规范

看Github的开源项目,我们都能看到README.md文件的身影。 有不少同学都喜欢将自己的项目上传到Git托管起来,但是总能发现一个问题:明明自己这个项目挺有市场的啊,怎么这个代码放上去,就显得很“非官方”! …

Java基础-快速入门

Java基础 Java基础-快速入门java简介java介绍java版本为什么学习javajava特点java优缺点优点缺点 java应用范围适用于不适用于 java规范java平台 安装JDK第一个Java程序安装并使用EclipseEclipse介绍Eclipse安装使用Eclipse创建第一个项目 安装Eclipse插件 Java基础-快速入门 …

Java-基础入门

1.发展历史 1995年Sun公司发布Java1.0版本 1997年发布Java1.1版本 1998年发布Java1.2版本 2000年发布Java1.3版本 2002年发布Java1.4版本 2004年发布Java1.5版本 2006年发布Java1.6版本 2009年Oracle甲骨文公司收购Sun公司,并于2011发布Java1.7版本 2014年…

java入门笔记

1. Java相关概念 编程:用倾向于自然语言的方式编写指令代码的过程 编译:将自然语言指令代码转化为机器语言(二进制)的过程系统差异化:为了用不同类型的芯片实现相同的功能,就需要用不同的指令代码操作不同…

一、Java基础入门

一、java简介 1.1 前言 Java语言是美国Sun公司(stanford University Network),在1995年推出的高级编程语言。所谓编程语言是计算机的语言,人们可以使用编程语言对计算机下达命令,让计算机完成人们需要的功能。 1996年1月,Sun公司发布了Java的…

Java基础及入门

一、软件开发基础 1.什么是JavaEE JavaEE是一门接收来自客户端的请求,并通过响应返回给客户端数据的技术。 2.JavaEE理解图 2.常用的开发语言 二、Java开发环境搭建 1.什么是JDK及JRE 安装JRE的目的是什么?(是为了编译代码) JDK&…

java入门的基础(入门必读)

Java入门基础 什么是java程序开发Java的运行环境开发Java程序的步骤java的基本框架数据类型、变量数据类型变量变量名命名规则 运算符关系运算符逻辑运算符算术运算符 扫描仪的使用if选择结构多重if选择结构嵌套if选择结构 switch选择结构循环结构while循环结构do-while循环结构…

JAVA基础学习入门

JAVA入门之基本语法(一) 最近开始复习JAVA语言为找工作做准备,方便以后再次复习或者用到的时候回顾。先是从JAVA的基本语法学起,因为有c和c语言的基础知识铺垫,所以这部分的笔记会比较粗略,毕竟语言都是贯…

Java基础入门(六)

Java基础入门(六) 1 Debug调试1.1 Debug概述1.2 Debug操作流程1.2.1 设置断点1.2.2 运行加了断点的程序1.2.3 Debugger窗口和Console窗口1.2.4 分步执行1.2.5 取消断点1.2.6 结束Debug1.2.7 注意事项 2.基础中常用的类2.1 Random随机数2.2 Scanner获取用…

Java基础之入门(一)

文章目录 Java帝国的诞生1. Java初生2. Java的发展3. Java特性和优势4. JVM、JRE、JDK5. Java程序的运行机制6.注释7. 标识符和关键字7.1 关键字7.2 标识符 8. 数据类型8.1 基本数据类型8.1.1 字符案例8.1.2 整型案例8.1.3 浮点型案例 8.2 引用数据类型 9. 类型转换9.1 转换方式…

java入门基础

语法基础 变量和常量 字符串 tring 类型是引用类型 字符串拼接可以直接用加号连接 自动类型转换 向上类型转换,是小类型到大类型的转换。 和C语音一样 int类型可以自动转换为double 但是double需要强制转换才能转换为int 强制类型转换 向下类型转换&…

JAVA基础入门学习

书籍推荐和视频推荐 Java核心卷I java核心卷II可以买也可以不买。java核心卷I只看前9章,其他不用看。身边同学都认为这本书不适合初学者,但是如果你之前看过java学习视频,那么这本书很适合你。这本书主要让你对java知识有个系统的学习&…

JAVA入门及基础

随着技术的不断发展,编程语言的种类也在越来越多,由全国知名TIOBE编程语言社区发布的编程语言排行榜来看,我们的JAVA在近两年来仍然占据榜二榜三,那么能一直稳居前排必然是有他的原因的:我们的JAVA具有使用广泛&#x…

《Java基础入门》第三版--黑马程序员课后习题(编程部分)

第 1 章 Java 开发入门 第 2 章 Java 编程基础 1. 编写程序,计算13…99的值,要求如下: (1)使用循环语句实现1~99的遍历 (2)在遍历过程中,通过条件判断当前的数是否为奇数,如果是就累加,否则不加。 public class getSum { 2 public static void main(String[] ar…

《Java基础入门》笔记——01 Java初步

1 关于Java 1.1 Java的发展简史 Java之父——Gosling(高司令)98年,Java2企业平台J2EE发布99年发布J2SE(标准版)、J2EE(企业版)、J2ME(微型版)04年,发布JavaSE5.009年,Oracle收购Sun14年,发布JavaSE8 1.2 Java语言的特点 简单。…

java基础入门(完整详细版)

前言: 这篇教程对没学过java的完全适用这篇教程是一个学习方向的引导,且只针对基础入门。 一.入门篇 1.安装JDK的运行环境 1.1 下载JDK 直接官网下载:http://www.oracle.com/;链接:网盘安装JDK点击就可以下载(推荐…

Linux udev规则编写

编写本文的目的: 看完本章,朋友们可以进行随心所欲的运用udev,编写udev规则,更好的管理Linux设备。例如,把硬盘sda根据盘的SN码生成一个软连接,使得SN码当做sda一样使用。 在文章结束后,既可以有方案可以实现。 udev是什么? udev 是 Linux2.6 内核里的一个功能,它替代…

udev的rules编写

1.综述 本文简单介绍udev机制,并编写udev规则,实现手机即U盘自动挂载 2.udev介绍 udev 是 Linux2.6 内核里的一个功能,它替代了原来的 devfs,成为当前 Linux 默认的设备管理工具。udev 以守护进程的形式运行,通过帧听内…

[Linux 基础] -- udev 和 rules 使用规则

前言: 本文以通俗的方法阐述 udev 及相关术语的概念、udev 的配置文件和规则文件,然后以 Red Hat Enterprise Server 为平台演示一些管理设备文件和查询设备信息的实例。本文会使那些需要高效地、方便地管理 Linux 设备的用户受益匪浅,这些用…