【编者按】本文作者为 Gal Lavinsky,文中将列出10个零基础小技巧,帮你创建完美的Java SDK。文章系国内 ITOM 管理平台 OneAPM 编译呈现。以下为正文。

本文起源于笔者朋友的一次问询。他认为,关于如何写好一个简单易用的SDK,没有足够的参考文件。

在过去的十年里,SDK的使用在开发生命周期中已经成为了重要的一部分。事实上,它的使用和在产品中的集成已经如此常见,可以说,相比于深度学习算法来自行实施,开发者们更需要学习大量框架以融会贯通。

本文主要面向想要学习书写最佳SDK,并为之提供参考文档的读者。SDK的出发点是它的参考文档应当是重点明确且清晰的。如果你觉得文档有多个重点,请考虑拆分为多个文档。

以下是笔者希望能帮助你更好地构建SDK并书写其参考文档的清单:

1. 了解墙外的世界

试着去关注你的竞争对手或者与你相似领域的公司都做了什么。这可能会给你一些参考的角度。采纳你喜欢的地方,改善你不喜欢的地方。

2. 简洁

代码简洁——简洁的代码意味着你的客户用起来得心应手。这可能包括尽可能减少与代码交互的方式,比如只公开一个接口类;或是简短的方法签名,比如少量的输入参数,等等。

除了初始化阶段(只发生一次且可能要求进行配置),请让SDK方法使用起来尽可能简单。

同样地,请尽量减少方法签名中的参数。

你可以通过提供默认配置以及允许高级用户进行覆盖的默认实现类来达到这一目的。

隐藏用户不需要使用的类和方法,比如,只将用户必须使用的类/方法设定为公有的,否则就将它们的使用范围设定为局部或者私有。一个 IDEs 提供了代码检查与清除功能,可以帮你自动实现这一点。

参考文档简洁——让你的文档尽可能简单易懂。这意味着有时候你得多写注释,有时候又得尽量少写。内联样本代码通常很有帮助,因为大多数人都是通过例子来学习的。

3. 提供简单的开始步骤

这是指一个人可以在五分钟内上手使用你的代码。这一点非常重要,因为客户往往希望尽可能不费力地进行集成。除此之外,有时候客户想要评估你的产品,但如果无法进行简单的测试,他们就很可能选择跳过你的产品。

4. 短小精悍

保持简短主要是文档的责任,但是同样与用户和SDK代码的交互方式有关;为了保持文档的简短,可以提供代码样例、一目了然的方法名或使用默认数据来实现。

5. 集成

请谨记客户开发环境的多样性。

比如说,如果你在写一个安卓库,它的集成方式在客户使用Android Studio加gradle 框架和使用Eclipse集成开发环境时就非常不同。前者需要aar工件并发布到远程存储库中,而后者需要你提供jar文件,以及关于如何为SDK更改AndroidManifext.xml文件和独立eclipse项目的指导。

这可能会影响你的构建机制及其工件。然而,不要试图取悦所有客户,请先满足你的第一位客户,或者预期中的大多数客户的需求。

6. 项目示例

在GitHub上创建一个最基本的项目,模拟使用SDK包的用户。

这可以向客户展示你的产品如何满足他们的需求,以及如何集成你的产品。如果你想展示高级用法,那就在另一个项目里进行展示。通常,客户会将项目示例作为主要的参考文档,因此,请提供行内评论,并尽量用一目了然的方式书写代码。

7. 概述

在参考文档的开头,或是GitHub项目的README.md文件中,请用直白的语言对你的解决方案进行概述。在此部分,笔者通常会提供一个使用样例来解释SDK的典型用法。如果有可能,请提供一个简单的表格或是图表,这样一来,不喜欢阅读操作指南的用户也可以快速了解该SDK的优势。

8. 初始化

使用在SDK域内可接受的惯例。

这些惯例可能是可重载的构造函数,某种构建模式等。初始化应当巧妙地使用默认值来简化流程。

9. 默认值

默认值对于保持代码的简洁性和减少配置过程(见简洁性部分)是非常重要的。你所提供的默认值(不管是在配置还是实施过程)应该代表在你眼中大多数SDK用户会进行的操作。

你可以提供几个方法重载,使最简单的签名都可以用默认值调用更高级的方法。

10. 发布

  • 离线使用不可编辑模式——PDF。优势是文档创建简单,可以本地存储在Dropbox中。并且对于每次发布,版本可以自动更新。
  • 在线——你的企业网站。这是更推荐的方式。然而,在更新时可能会导致一些额外的IT开销。

希望这些指南对你有所帮助。也欢迎进行反馈。

OneAPM 能为您提供端到端的 Java 应用性能解决方案,我们支持所有常见的 Java 框架及应用服务器,助您快速发现系统瓶颈,定位异常根本原因。分钟级部署,即刻体验,Java 监控从来没有如此简单。想阅读更多技术文章,请访问 OneAPM 官方技术博客

本文转自 OneAPM 官方博客

原文地址:http://blog.mobitech.io/2016/02/sdk-writing-guidelines.html

创建完美SDK的10个技巧的更多相关文章

  1. 编写高性能Web应用程序的10个技巧

    这篇文章讨论了: ·一般ASP.NET性能的秘密 ·能提高ASP.NET表现的有用的技巧和窍门 ·在ASP.NET中使用数据库的建议 ·ASP.NET中的缓存和后台处理 使用ASP.NET编写一个We ...

  2. ExecutorService - 10个技巧和窍门

    ExecutorService已经成为Java并发编程中常用的基础库,几乎所有到线程 任务等执行都要委托ExecutorService.下面是使用过程中10个技巧和窍门. 1.为线程池和线程取名 当我 ...

  3. 让你的 Node.js 应用跑得更快的 10 个技巧(转)

    Node.js 受益于它的事件驱动和异步的特征,已经很快了.但是,在现代网络中只是快是不行的.如果你打算用 Node.js 开发你的下一个Web 应用的话,那么你就应该无所不用其极,让你的应用更快,异 ...

  4. 转自微软内部资料:编写高性能 Web 应用程序的 10 个技巧

    编写高性能 Web 应用程序的 10 个技巧 转自微软资料数据层性能技巧 1 — 返回多个结果集技巧 2 — 分页的数据访问技巧 3 — 连接池技巧 4 — ASP.NET 缓存 API技巧 5 — ...

  5. MAC OS进阶必看——这10个技巧让你秒变MAC达人

    文章内容及图片来源于:什么值得买,如果涉及版权问题,请联系作者删除 文章收录于:风云社区(提供上千款各类mac软件的下载) 使用mac系统也有好几个年头,出色的办公效率以及越来越广的兼容性让mac成为 ...

  6. 快速开发 jQuery 插件的 10 大技巧(转)

    1. 把你的代码全部放在闭包里面 这是我用的最多的一条.但是有时候在闭包外面的方法会不能调用.不过你的插件的代码只为你自己的插件服务,所以不存在这个问题,你可以把所有的代码都放在闭包里面.而方法可能应 ...

  7. 【转】天啦噜!原来Chrome自带的开发者工具还能这么用!(提升JS调试能力的10个技巧)

    天啦噜!原来Chrome自带的开发者工具还能这么用! (提升JS调试能力的10个技巧)   Chrome自带开发者工具.它的功能十分丰富,包括元素.网络.安全等等.今天我们主要介绍JavaScript ...

  8. MasonJS – 创建完美的砌体结构网页布局

    MasonJS 插件用来解决目前大多数的网格系统使用中的问题——间距.当使用 Masonry,Isotope 或任何其他网格插件时,布局中会出现空白或边缘参差不齐的情况.MasonJS 可以帮助你填补 ...

  9. 10个技巧优化PHP程序Laravel 5框架

    10个技巧优化PHP程序Laravel 5框架 性能一直是 Laravel 框架为人诟病的一个点,所以调优 Laravel 程序算是一个必学的技能. 接下来分享一些开发的最佳实践www.itxdl.c ...

随机推荐

  1. tensorflow进阶篇-4(损失函数1)

    L2正则损失函数(即欧拉损失函数),L2正则损失函数是预测值与目标函数差值的平方和.L2正则损失函数是非常有用的损失函数,因为它在目标值附近有更好的曲度,并且离目标越近收敛越慢: # L = (pre ...

  2. 【Java并发编程】:守护线程与线程阻塞的四种情况

    守护线程 JAVA中有两类线程:User Thread(用户线程).Daemon Thread(守护线程) 用户线程即运行在前台的线程,而守护线程是运行在后台的线程. 守护线程作用是为其他前台线程的运 ...

  3. spring boot的拦截器简单使用

    1.spring boot拦截器默认有: HandlerInterceptorAdapter AbstractHandlerMapping UserRoleAuthorizationIntercept ...

  4. CGI PL PERL脚本 提权

    windows 2003 下,安装ActivePerl-5.16.2.1602-MSWin32-x86-296513 IIS 添加CGI支持.并在对应网站配置下面,添加CGI后缀或PL后缀 与 对应的 ...

  5. ActiveMQ发布-订阅消息模式

    一.订阅杂志我们很多人都订过杂志,其过程很简单.只要告诉邮局我们所要订的杂志名.投递的地址,付了钱就OK.出版社定期会将出版的杂志交给邮局,邮局会根据订阅的列表,将杂志送达消费者手中.这样我们就可以看 ...

  6. Go语言学习笔记六: 循环语句

    Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...

  7. Centos虚拟机SVN的安装和使用http方式访问svn服务器

    1.查看是否安装旧版SVNrpm -qa | grep subversion2.卸载旧版本SVNyum remove subversion3.安装SVNyum -y install subversio ...

  8. MVC、MVCS、MVVM、MVP、VIPER等这么多架构模式哪一个好呢?

    在项目开启阶段,其中一个很重要的环节就是选架构. 那么面对目前已知的这么多架构模式我们该怎么选择呢?这确实是个很让人头疼的问题!   下面我就在这里梳理一下目前常见的一些架构模式. 先逐个对它们的分析 ...

  9. Spring整合Hibernate的XML文件配置,以及web.xml文件配置

    利用Spring整合Hibernate时的XML文件配置 applicationContext.xml <?xml version="1.0" encoding=" ...

  10. 2<<3=?

    public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(" ...