java已被弱化签名,高效Java第四十条建议:谨慎设计方法签名
作用
有助于设计易于学习和使用的API。
如何做——谨慎地选择方法的名称
1.选择易于理解的,并且与同一个包中的其他名称风格一致的名称。
2.选择与大众认可的名称相一致的名称。
如何做——不要过于追求提供便利的方法
每个方法都应该尽其所能。
方法太多会使类难以学习、使用、文档化、测试和维护。
只有当一项操作被经常用到的时候,才考虑为它提供快捷方法。
如果不能肯定,还是不提供快捷方法为好。
如何做——避免过长的参数列表
目标是四个参数以内。
相同类型的长参数序列格外有害。
避免过长的参数列表——把方法分解成多个方法,每个方法只需要这些参数的一个子集
注意提升分解出的多个方法的正交性。
避免过长的参数列表——创建辅助类(helper class),用来保存参数的分组
如果一个频繁出现的参数序列可以被看作是代表了某个独特的实体,建议使用这种方法。
避免过长的参数列表——从对象构建到方法调用都采用Builder模式
如果方法带有多个参数,尤其是当它们中有些是可选的时候,最好定义一个对象来表示所有参数,并允许客户端在这个对象上进行多次“setter”调用,每次调用都设置一个参数,或者设置一个较小的相关的集合。
一旦设置了需要的参数,客户端就调用对象的“执行(execute)”方法,它对参数进行最终的有效性检查,并执行实际的计算。
其他建议
优先使用接口而不是类定义参数类型。
对于boolean参数,要优先使用两个元素的枚举类型。
Thermometer.newInstance(TemperatureScala.CELSIUS)比Thermometer.newInstance(true)更有用,而且支持在未来对TemperatureScala对进行扩展。
枚举是可以有方法的,有时候这个特性也非常有用。
java已被弱化签名,高效Java第四十条建议:谨慎设计方法签名相关推荐
- 谨慎设计方法签名(40)
2019独角兽企业重金招聘Python工程师标准>>> 本条目是若干API 设计技巧的总结: 1.谨慎选择方法的名称 始终遵循标准的命名习惯 易于理解,与同包的其他名称保持一致风格 ...
- Effective-Java 仔细设计方法签名
51. 仔细设计方法签名 这一条目是 API 设计提示的大杂烩,但它们本身并足以设立一个单独的条目.综合起来,这些设计提示将帮助你更容易地学习和使用 API,并且更不容易出错. 仔细选择方法名名称.名 ...
- 什么是java工具类_常用高效 Java 工具类总结
一.前言 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码 ...
- java桌面版_长大了Java! 提出Java桌面版
java桌面版 不,这不是另一个" Java已死"的咆哮. Java非常活跃. 它是可用的最佳开发和运行时平台之一. 迄今为止,最稳定的平台. 那可能只是它最大的祸根. 荒谬! 稳 ...
- 反编译工具java知乎_GDA反编译器更新至3.66:支持污点传播分析、方法签名、python脚本...
本帖最后由 gjden 于 2019-9-24 16:44 编辑 GDA3简介(下载链接: www.gda.wiki:9090) GDA是一款由本人对反编译理论的长期研究和实践而形成的全交互式反编译器 ...
- 阿里巴巴Java 开发手册 码出高效,码出质量 1.4.0
前言 <阿里巴巴Java 开发手册>是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,系统化地整理成册,回馈给广大开发者.现代软件行业的高速发展对开 ...
- 高效Java编程工具集锦
Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松.目前,市面上涌现出越来越多的高效编程工具.所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用.正在使用或 ...
- 高效 Java Web 开发框架 JessMA v3.2.1 正式发布
JessMA(原名:Portal-Basic)是由 JessMA Open Source 开发的一套高效 Java Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 ...
- 写出一下Java方法对应的签名_Java中的方法签名是否包含其返回类型?
Java类/接口中的方法签名是否包括其返回类型? 例: Java是否知道这两种方法之间的区别: public class Foo { public int myMethod(int param) { ...
最新文章
- HDU 2034 人见人爱A-B
- 怎么通过MQTT查看数据是否上云端_干货 | 设备快速上云,轻松搞定设备与云端通信...
- MySQL 行锁功过:怎么减少行锁对性能的影响
- 显卡RTX 3090运行pytorch报错CUDA error: no kernel image is available for execution on the device
- springMVC环境搭建
- 实战:基于服务端开发和前后端分离开发区别
- 联想m7400 linux驱动下载,联想M7400W驱动-联想M7400W打印机驱动下载 v1.6.0.0官方版--pc6下载站...
- Python编程基础及应用
- 第二届网络安全、人工智能与数字经济国际学术会议(CSAIDE 2023)
- android系统 备份恢复,Android系统备份及系统还原方法介绍
- 女性三围的检测验证js-------格式 20,30,40
- 消费者人群画像 python_如何正确打开相似人群画像算法
- 机器学习:软件漏洞分析
- 安装并使用Ghidra的Eclipse插件的过程
- clone别人远程仓库的代码,运行npm install报错npm ERR! Maximum call stack size exceeded
- 不用代码免费采集网站内容_看一遍就能上手的火车头采集图文全流程教程
- WARN Error while fetching metadata with correlation id 5 : {testtopic=LEADER_NOT_AVAILABLE}
- 「GoCN酷Go推荐」go语言位操作库 — bitset
- 【附代码实现】Attention注意力模块的keras\tf实现(ECA、BAM、Coordinate、DualAttention、GlobalContext等)
- 京沪深仍为经济发展水平最高的城市,平均薪酬增长率均在7%以上
热门文章
- Java包装类与基本数据类型的自动 手动装箱与自动 手动拆箱
- linux 制作box文件夹,用busybox制作自己简易的根文件系统
- auto.js 实现信息发送、QQ点赞、微信点赞、健康日报签到
- Win7系统转到Win10系统的装机方法
- python中加减乘除是什么数据类型_python中,数字类型计算
- java请假审批怎么实现_java实现请假时间判断
- strtotime()加半个小时_椰子鸡这样做太好吃了,一滴水不用加,鲜香嫩滑,做法非常简单...
- python wget安装_Macbook系统环境安装wget的2个方法 - 传统包及Homebrew安装
- java++记录+运行_记录java+testng运行selenium(三)---xml、ini、excel、日志等配置
- html 图片墙效果,基于html5实现的图片墙效果