2019独角兽企业重金招聘Python工程师标准>>>

本条目是若干API 设计技巧的总结:

1、谨慎选择方法的名称

  • 始终遵循标准的命名习惯
  • 易于理解,与同包的其他名称保持一致风格
  • 选择大众认可名称相一致的名称,参见 java 类库 api

2、不要过于追求提供便利的方法

  • 每个方法尽其所能,方法太多增加学习、使用、文档化、测试和维护的难度
  • 只有一项操作被经常使用时,才考虑提供便捷方式;否则,不提供为好

3、避免过长参数列表

  • 目标是四个参数,或者更少
  • 相同类型长参数危害格外大,使用者顺序搞错后,仍能编译通过(运行时暴漏错误,不易排查)

4、有三种方法可以缩短参数列表

(1)把方法分解成多个方法,每个方法参数仅仅是参数列表子集

  • 一不小心,会导致方法数量过多
  • 多提炼公共子方法

(2)创建辅助类用来保存参数分组

  • 辅助类一般是静态成员类
  • 对于频繁出现的参数序列,可以被看做是作为某个独特实体,建议使用辅助类

(3)结合前两种,使用Builder(建造者)模式

  • 详情参看建造者设计模式

5、对于参数类型优先使用接口,而不是类

  • 比如应该使用Map 做参数而不是 HashMap等实现类
  • 方便以后扩展

6、对于Boolean 参数,优先使用两个参数的 枚举类型

  • 代码更加易于阅读和编写

转载于:https://my.oschina.net/u/3847203/blog/1839749

谨慎设计方法签名(40)相关推荐

  1. java已被弱化签名,高效Java第四十条建议:谨慎设计方法签名

    作用 有助于设计易于学习和使用的API. 如何做--谨慎地选择方法的名称 1.选择易于理解的,并且与同一个包中的其他名称风格一致的名称. 2.选择与大众认可的名称相一致的名称. 如何做--不要过于追求 ...

  2. Effective-Java 仔细设计方法签名

    51. 仔细设计方法签名 这一条目是 API 设计提示的大杂烩,但它们本身并足以设立一个单独的条目.综合起来,这些设计提示将帮助你更容易地学习和使用 API,并且更不容易出错. 仔细选择方法名名称.名 ...

  3. 实战小课 | 深入剖析 「事件设计方法与规范」,夯实数据分析基础!

    神策数据立足于"重构中国互联网数据根基",凭借已有的 1000 + 家付费企业的服务和成功实践经验,开辟线下活动"神策数据实战学堂",以数据驱动为主题聚焦不同热 ...

  4. 界面设计方法 (2) — 4.界面设计的原则与标准

    前面介绍了5种基本的界面形式,如果从构成界面的要素(构件)层面看,实际上所有的界面都是一样的,因为它们都是由同样的控件构成的,只是控件的位置不同而已,因此就有必要对界面的布置进行统一的标准化,建立了界 ...

  5. 三级网络技术_中小型网络系统总体规划与设计方法

    一.考点分析 本章在考试中一般出现3个选择题. 考点1:路由器技术指标 考点2:网络系统分层设计(上下级之比.核心层设计) 考点3:交换机技术指标(总带宽计算方法) 考点4:网络服务器性能(系统高可用 ...

  6. 写出一下Java方法对应的签名_Java中的方法签名是否包含其返回类型?

    Java类/接口中的方法签名是否包括其返回类型? 例: Java是否知道这两种方法之间的区别: public class Foo { public int  myMethod(int param) { ...

  7. 基于MIission planner的VTOL垂直起降固定翼航线设计方法

    基于MIission planner的VTOL垂直起降固定翼航线设计方法 在此感谢 作者 ID:小明 QQ:1228401538提供的文档帮助资料 航线设计方法一: 1. 连接飞机之前需要做的工作 1 ...

  8. 测试用例设计方法(2)

    https://www.cnblogs.com/molrang/p/6420918.html  转载 本篇由本人整理黑盒.白盒.接口测试一系列用例设计方法. 黑盒测试用例设计方法包括等价类划分法.边界 ...

  9. 测试用例设计方法(转)

    本篇由本人整理黑盒.白盒.接口测试一系列用例设计方法. 黑盒测试用例设计方法包括等价类划分法.边界值分析法.错误推测法.因果图法.判定表驱动法.正交试验设计法.功能图法.场景图法等. (一)等价类划分 ...

最新文章

  1. gitzip没有作用以及github如何下载单个文件或目录
  2. VC字体安装相关方法总结
  3. 远程桌面连接“发生身份验证错误。 无法连接到本地安全机构”解决方法
  4. Android StateFlow详解
  5. s7.net 写数据到plc_西门子1200复位PLC、欧姆龙常见问题解答
  6. 如果误删谷歌浏览器的书签,怎么恢复
  7. Android自定义控件学习(一)-----属性
  8. Bootstrap3.0入门学习系列规划[持续更新]
  9. 数据结构 2-0 线性表总结
  10. 智能车学习(一)—— 硬件准备
  11. .net模式子窗口传值给父窗口
  12. 续费Namecheap域名教程附如何便宜续费域名方法
  13. 反相器有时候为了强调低电平有效,将反相器的图形符号中的小圆圈画在输入端,如数电中的画法。有时候小圆圈在前面只表示低电平有效,没有反相的意思,例如与非门组成的RS触发器
  14. java 注解 @Deprecated
  15. 都市丽人“正青年”设计大赛结果出炉 感召中国新生设计力量
  16. 树莓派安装Ubuntu系统详细过程
  17. JAVA程序开发参考手册
  18. K8S之taint\cordon\uncordon\drain使用案例——筑梦之路
  19. 黑马Redis学习——实战篇(4)
  20. 优先级队列PriorityQueue

热门文章

  1. mysql间隙锁触发条件,详解系列文章
  2. jdk-14.0.2_linux-x64_bin.tar.gz
  3. 计算机中¥符号按哪个键,在电脑设计中人民币¥这个符号咋弄出来
  4. ui自动化测试框架_自动化测试框架--Instrumentation
  5. python计算2的20次方_Python学习二运算符
  6. delphi连接mysql不用添加dsn_jsp中有没有像asp的非DSN连接数据库方法呢?(20分)
  7. python教案 md文件_python操作pdf文件.md
  8. 让vue文件直接在浏览器中运行
  9. 等长子网划分、变长子网划分(网络整理)
  10. 2021年南菁高中高考成绩查询,2021年无锡高考各高中成绩及本科升学率数据排名及分析...