SDK设计之我谈

作者: 大贝壳seashell | 来源:发表于2018-04-01 00:04 被阅读155次

最近招聘过程中,看到许多面试者都有编写SDK的经历。于是提问:设计开发一个SDK需要考虑哪些方面内容? 这是一个开发性问题,就像一千个读者有一千个海姆雷特。实际上这个问题非常考验人,综合考虑面试者的思考力、架构设计能力等各方面综合能力。

下面谈谈我对设计实现一个SDK的看法,也不一定对,欢迎大家一起探讨:)

首先,要设计一个SDK一定要考虑用户需求,确定边界,SDK需要包含哪些功能。个人认为SDK应当精简,专注实现一部分功能即可。功能太多反而不利于后面演化,会不会设计成一个app更加合适呢?用户可以通过组合各种sdk来实现各种需求,类似于linux中的shell管道。这方面Retrofit可以说是非常好,只专注实现网络库架构,其他的异步、序列化、网络引擎都可以插拔配置。

确定好需求后一定要明确目标,以目标为导向才能保证过程不会走偏。SDK的功能性需求一定要满足,并且不能有bug,这个是基础。试想下如果你在使用一个sdk,连基本功能都有偏差或者有bug,你是什么感受,还会继续使用吗?实现功能性需求是最重要的。

此外除了功能性需求,软件设计开发中还要考虑非功能性需求。比方说稳定性、性能、安全等。

  1. 稳定性:如果sdk不稳定,功能时好时坏,用户是不是很懵逼。如果sdk有bug,导致了宿主应用崩溃,对实际用户造成体验多不好。故而一个高水准的sdk一定是一个稳定性非常好的sdk。
  2. 性能:性能实际包含多个方面,比方说包体积、电量、内存等。这些因素对于sdk设计者挑战非常大,但又是对用户影响十分深远的部分。要设计好一个sdk,性能必须满足一定标准。
  3. 安全:前两者是面向用户的,安全大多数情况是对自己而言的。在编写sdk中,应当要考虑如何保证容器代码安全,保证核心数据、接口不被暴露,保证核心代码不被获取。

在编码过程中,个人觉得需要遵循几个基本原则。一个是接口隔离,设计应当小而精简;另一个是开闭原则,对于扩展开放,对于内部修改封闭。对外交互部分尽量面向接口编程,实现抽象。另外还要注意接口易用性,设计符合“人性”的接口,面向“大众”的接口,减少奇技淫巧的使用。sdk是给别人使用的,不是用来炫技的,朴实就好。

还有一个部分经常被很多人遗忘,就是在sdk升级时,需要考虑到向后兼容。不能让用户升级你的sdk后原有功能不可用了。想想python吧…需要需要废弃原有可能,请使用Deprecated,并标注在什么版本后会进行下线。请给用户一定时间来升级适配。针对每个版本sdk,也可以提前最晚支持的时间点。

最后,完成sdk编码工作后,一定要记得编写文档。俗话说,程序员最讨厌两件事,一个是写文档,另一个是使用的sdk没有文档。一份好的文档能让用户事半功倍,快速接入使用sdk,并减少后续bug。对于自己来说也能减少技术支持答疑时间。

以上是个人的一些拙见,限于本人的经验和视野,可能有遗漏或错误,欢迎大家拍砖。

相关文章

  • SDK设计之我谈

    最近招聘过程中,看到许多面试者都有编写SDK的经历。于是提问:设计开发一个SDK需要考虑哪些方面内容? 这是一个开...

  • iOS 广告SDK总结(二)

    接上篇,广告SDK设计 SDK接口设计 一个好的SDK应该至少包含三部分: SDK库 接入文档 demo 1.AP...

  • JavaScript SDK 设计指南

    JavaScript SDK 设计指南 一份来自工作实战和个人经验的 JavaScript SDK 设计指南 简介...

  • 移动端SDK接口设计经验总结

    接口设计注意点 对于SDK而言,接口是连接SDK与客户产品的纽带,接口设计的优劣是衡量SDK产品易用性的重要指标。...

  • APP SDK开发

    SDK 研发过程大致如下 1、原型,交互设计,PRD 2、UI设计 3、SDK研发 4、APP研发 5、APP A...

  • 书籍解析器sdk设计(epub)

    by hzwusibo 20190301 一、sdk简介: 二、epub科普 三、解析器sdk设计 四、epub解...

  • 四、SDK 接口设计之SDK 入口页面的跳转

    按照 SDK 是否有界面来进行分类,我们开发的 SDK 无外乎就两类: 带有 UI 界面的 SDK,我们开发的大部...

  • iOS开发之App间账号共享与SDK封装

    iOS开发之App间账号共享与SDK封装 iOS开发之App间账号共享与SDK封装

  • SDK设计原则

    要满足的需求 满足功能需求 首先,要设计一个SDK一定要考虑用户需求,确定边界,SDK需要包含哪些功能。个人认为S...

  • App架构设计

    App架构设计经验谈:技术选型 App架构设计经验谈:接口的设计 App架构设计经验谈:数据层的设计 App架构设...

网友评论

    本文标题:SDK设计之我谈

    本文链接:https://www.haomeiwen.com/subject/fgnncftx.html