《Practical API Design 软件架构设计的艺术》读书笔记

2014-10-10 10:49:16

请关注唯心的个人微信公众号:craft6-cn(中划线,也可以搜索:领域驱动业务建模)

    《软件框架设计的艺术》帮助你解决api 设计方面的问题,共分3 个部分,分别指出学习api 

设计是需要进行科学的训练的、java 语言在设计方面的理论及设计和维护api 时的常见情况,

并提供了各种技巧来解决相应的问题。

    《软件框架设计的艺术》作者是netbeans 的创始人,也是netbeans 项目最初的架构师。

相信在api 设计中遇到问题时,本书将不可或缺。

    《软件框架设计的艺术》适用于软件设计人员阅读。


Practical API Design 软件架构设计的艺术.jpeg

============================================================= Practical API Design 软件架构设计的艺术 ============================================================= ------------------------------------------------------------- 1 明明是“API设计实战”,为了销量硬是翻译为软件架构设计的艺术。。。。 ------------------------------------------------------------- ------------------------------------------------------------- 2 二、设计API的动力之源 ------------------------------------------------------------- 2.1 分布式开发 2.1.1 以装配的方式来开发应用程序。要尽可能多地复用 2.1.2 组装时,整合各个模块是通过API来完成 2.2 模块化应用程序 2.2.1 软件版本的非线性 2.2.1.1 发布一个新版本,前一个版本的功能和约定对新版本应依然有效 2.3 交流互通才是一切 2.3.1 API自身尽量做到自描述 2.3.2 各个团队基于组织架构来独立开发,时间表自行控制,前提就是稳定的沟通契约——API 2.4 经验主义编程方式 2.4.1 设计API时,在类、方法、参数名称、组合和注释等方面均为用户提供理解上帮助。 ------------------------------------------------------------- 3 三、评价API好坏的标准 ------------------------------------------------------------- 3.1 方法和字段的访问级别 3.1.1 public/protect/private等,斟酌使用 3.1.2 谨慎使用反射技术 3.2 配置文件 3.2.1 路径、参数、参数值格式、可选值等均需要描述清楚 3.3 对象输出(toString) 3.3.1 该方法返回的对象字符串表达式应该只作为日志参考使用,而无实际用途,避免开发人员误用 3.4 协议 3.4.1 网络协议、信息格式等的良好设计和说明 3.5 国际化支持和信息国际化 3.5.1 API的设计和实现应该使用国际化的键值 3.6 检查API的质量 3.6.1 可理解性 3.6.1.1 注释、方法命名、参数命名等方面 3.6.2 一致性 3.6.2.1 向后兼容 3.6.2.1.1 使用旧版本API所开发或编译的程序,可以在新版本的API上正常运行 3.6.2.2 一致的风格 3.6.3 可见性 3.6.3.1 例子、输出结果、日志、单元测试等方面为用户提供指示 ------------------------------------------------------------- 4 四、不断变化的目标 ------------------------------------------------------------- 4.1 向后兼容 4.2 面向用例的重要性 4.2.1 没有真实用户,何来无错的API 4.2.2 一个用例其实就是对API一种用法的描述 4.2.3 【方法】把API要完成的每一个功能称为场景 4.2.4 场景将抽象的用例与API的具体实现结合在一起 4.3 API设计评审 4.3.1 【方法】优秀API规则 4.3.1.1 用例驱动的API设计 4.3.1.2 API设计的一致性 4.3.1.3 简单明了的API 4.3.1.4 少即是多 4.3.1.4.1 对外的功能应该只包括用例说明的功能 4.3.1.5 支持改进 4.3.1.5.1 可以维护 4.3.1.5.2 出现新需求时,不会出现放弃这个类库的情况 4.4 API的分类方式 4.4.1 供内部使用。Private 4.4.2 为系统内部其它模块提供相应功能的API。Friend 4.4.3 开发版本。需要在版本中标识。Alpha/Beta 4.4.4 稳定版本 4.4.5 正式版本——稳定版本经过时间考验,并遵照某个约定的发布规则 4.4.6 弃用的API ------------------------------------------------------------- 5 五、只公开你要公开的内容 ------------------------------------------------------------- 5.1 基于用例 5.1.1 只有一个有效的用例才能证明一个方法应该公开 5.2 逐步公开 5.2.1 不要一下子公开太多的接口,将不必要的内容从API中移走 5.2.2 【忠告】每公开一个API,意味着你对该API的用户做出了一个未来的兼容性承诺 5.3 方法优于字段 5.3.1 不要把类中的字段直接对外公开 5.3.2 除了static/final/String常量/枚举/不变对象 外,其它的都不应该公开 5.4 工厂方法优于构造函数 5.4.1 因为公开构造函数,就意味着创建的对象一定是类的实例,而不能是该类的子类实例 5.4.2 通常工厂是静态方法 5.4.3 可以缓存、返回子类实例、接口不同实现等 5.5 让所有内容都不可更改 5.5.1 如果不考虑让其拥有子类,请加上final关键字 5.6 避免滥用setter方法 5.6.1 如无必要,不要在接口中提供setter方法 5.7 尽可能通过友元的方式来公开功能 5.7.1 避免外部类对包内功能的调用 5.7.2 把API设计模式比作电话接口 5.7.2.1 彼此在交流,却无法观测他们之间的互动 5.8 避免深层次继承 5.8.1 不容易把握接口方法是否也支持子类、子类的子类等 ------------------------------------------------------------- 6 六、面向接口而非实现进行编程 ------------------------------------------------------------- 6.1 编写代码时,让系统的其他部分只依赖于接口 6.2 如果需要为以后添加方法留有余地,使用final 类比较合适 6.3 API是否使用抽象类? 6.3.1 不! 6.4 要为增加参数做好准备 6.4.1 将接口方法的入参和出参均设计为接口的内部类(final关键字) ------------------------------------------------------------- 7 七、模块化架构 ------------------------------------------------------------- 7.1 组件的定位和交互 7.1.1 解耦和注入 7.1.1.1 将API解耦,放入不同的JAR包中 7.1.1.2 API的实现只需要依赖这些接口JAR接口 7.1.1.3 通过依赖注入的方式,在调用API时注入实现 7.1.2 方式 7.1.2.1 Spring 7.1.2.2 Lookup机制 7.2 编写扩展点 7.2.1 扩展点就是抽象服务,其他模块通过实现该服务来为原来的基础模块提供功能扩展 7.3 不允许循环依赖 ------------------------------------------------------------- 8 十、与其他API协作 ------------------------------------------------------------- 8.1 通过包装模式避免不兼容性 8.1.1 如在本JAR中通过包装(适配器)的方式引用外部的API 8.1.2 但会增加API的数量 8.2 只暴露抽象内容 8.2.1 避免将实体对象(如File)直接暴露给外部 8.2.2 因为用户拿到后可以做超出接口控制范围的操作 8.3 强化API的一致性 8.3.1 如对输出参数 8.3.1.1 单值和集合对应的对象应该是一致的


可通过扫描左侧二维码阅读本文。本站文章均为颜超敏原创,欢迎转载,请注明出处即可,转载可通过下面的社会化工具快速完成。

分享到:


《Practical API Design 软件架构设计的艺术》读书笔记

软件框架设计的艺术,Practical API Design,API设计,API协作;评价API好坏的标准;API设计实战

《软件框架设计的艺术》帮助你解决api 设计方面的问题,共分3 个部分,

分别指出学习api 设计是需要进行科学的训练的、java 语言在设计方面的理论

及设计和维护api 时的常见情况,并提供了各种技巧来解决相应的问题。

《软件框架设计的艺术》作者是netbeans 的创始人,也是netbeans 项目

最初的架构师。相信在api 设计中遇到问题时,本书将不可或缺。

《软件框架设计的艺术》适用于软件设计人员阅读。


颜超敏,唯心六艺,Craft6.cn,电子商务博客,电子商务研发,电商研发,电子商务研究,电商研究,电子商务专家,电商专家,电子商务知识,电商知识,电子商务教程,电商教程,电子商务模式,电子商务平台,电子商务商业模式,电子商务数据库设计,电商数据库设计,电子商务系统分析,Java架构设计,Java软件架构,B2C,O2O,o2o模式,o2o电子商务,o2o电子商务平台,中国电子商务,电子商务平台建设方案
粤ICP备14060523号 Copyright @2014 -唯心六艺软件