fegin 参数丢失

代码越少越好? 对象越少越好? 是真的吗 像往常一样,这取决于。

在某些情况下,通过添加更多内容,我们会添加不必要的复杂性。 当我们仅出于“将来可能需要这种额外的灵活性”而创建接口或其他抽象时,就会发生这种情况。 当我们忘记了YAGNI原理而我们编写的代码可能会使我们的生活变得更轻松,而这些新需求可能永远不会出现。

另一方面,我们遇到的情况与我在最近的文章中描述的情况类似。 我向您展示了一个示例,其中我们添加了一些内部执行几乎相同的方法。 但是,通过添加它们,我们收获了很多–代码变得更易于理解。 此附加代码为我们提供了有关对象正在执行的操作的信息,而不是如何实现的。

今天,我想与大家分享另一个例子,该例子表明,有时更少的代码可能意味着更少的可读性代码。

很久以前…

今天,我想和您谈谈历史:

public class History {public void store(
Author author, RefactoringType type, Scope scope,
RefactoringJustification justification, Date today) {// some code
}

是否容易弄清楚要存储哪种存储方法? 有可能理解吗? 好吧,即使是这样,我相信我们所有人都可以同意这绝对是困难的。

您如何从方法的声明中提取必要的信息? 我可以假设首先阅读类和方法名称以找到上下文。 好,我们有。 我们要存储一些历史信息。 现在最困难的部分开始了–您必须找出我们要存储的内容。 您不能只是简单地阅读此信息,因为该信息不存在于代码中。 在这种情况下,您可能会尝试通过查看参数列表来查找此信息。 您将阅读它们,并希望能够弄清楚代码的作者想要存储什么。

或者,您可以查看引入此代码的提交消息。

或者,您可以查看方法的定义并在实现中寻找答案。

虽然不是最好的主意。

您是否认为轻松获得这些信息会很棒? 要拥有我们无需付出额外努力就能理解的代码? 我相信这正是我们应该如何编写的方式。

救援参数对象

为什么在阅读完方法的声明后还不了解所有内容?

通过某种方式,我们可以在这里找到有关历史的信息–班级名称为我们提供了这些信息。

我们知道这与存储内容有关–该方法的名称具有很强的描述性。

问题在于我们不知道要在历史记录中存储什么。 为什么? 因为输入参数没有给我们这些信息。

这些参数指示我们要存储的块,但是,不解释将所有这些块放在一起时应该知道的内容。 我们正在获取有关实现(使用的部分)的信息,我们不知道此代码应该做什么。

我们能做什么? 我们应该隐藏实现,并解释我们希望通过此代码实现的目标。 那就是当
参数对象可以解决。 您可以将其视为一些不同对象的盒子,作为可以减少依赖性的解决方案。 但是,对我而言,使用此模式的最大好处是您将不得不命名该对象,并因此而不得不提供有价值的信息。

让我给你演示:

public class History {public void store(CodeDelta delta) {// some code
}

现在很明显我们要存储什么。 我们与阅读我们代码的人共享有用的信息。 我们还隐藏了一个实现。 他们可以专注于重要的事情,而不会被仅在编写或修改方法时才感兴趣的所有其他细节所打扰。

那么,您说的越少越好?

翻译自: https://www.javacodegeeks.com/2016/07/many-parameters-lost-information.html

fegin 参数丢失

fegin 参数丢失_许多参数和丢失的信息相关推荐

  1. mysql不定参数函数_可变参数函数(一)

    一个函数可以接受不定数的参数个数,这就是可变参数函数,比较常见的比如printf(),scanf(): printf(const char*format,-); printf("%d&quo ...

  2. k2677场效应管参数引脚_场效应管参数大全2.doc

    场效应管参数大全2 型号PDF资料厂商特性用途极限电压Vm(V)极限电流Im(A)耗散功率(W)代换型号2SK2518-01MRFUJI?N-MOSFET,用于开关整流.UPS电源.DC-DC转换.一 ...

  3. 埃斯顿驱动器参数设置_驱动器参数设置讲解(伺服步进)

    一.松下伺服参数及说明 海宝系统松下驱动器参数设置: 参数编号 Pr00 Pr01 Pr03 Pr06 Pr07 Pr08 Pr11 Pr422 参数含义 旋转方向 控制模式 刚性设定 脉冲极性 脉冲 ...

  4. 方法参数泛型_无参数泛型方法反模式

    方法参数泛型 最近,有关Java泛型的一个非常有趣的问题发布到Stack Overflow和reddit上. 请考虑以下方法: <X extends CharSequence> X get ...

  5. 两种参数类型_布尔参数这些缺点不能忍?不如试试枚举吧

    全文共2222字,预计学习时长9分钟 图源:unsplash 在代码库中使用布尔标志值来管理状态机似乎听起来是个不错的办法,但事实并非如此.布尔值恐怕是很多程序员接触到的第一种数据类型,它非常简单,只 ...

  6. k2677场效应管参数引脚_场效应管参数

    TL431怎么可能缺货.K790我也缺,我要做的东西跟你的一样K790用K725代替吧,参数都是一样的 型号规格 IRFP254 23A 250V 200W IRFP260 46A 200V 280W ...

  7. java 实际参数列表_实际参数列表和形式参数列表长度不同

    class ButtonDemo2 extends JFrame//输出结果窗口 { public static final int WIDTH=1000; public static final i ...

  8. tensorflow超参数优化_超参数优化

    什么是超参数 所谓超参数,就是机器学习模型里面的框架参数,比如聚类方法里面类的个数,或者话题模型里面话题的个数等等,都称为超参数.它们跟训练过程中学习的参数(权重)是不一样的,通常是手工设定,不断试错 ...

  9. sql查询mysql参数配置_查询参数配置

    示例 请求示例 http(s)://rds.aliyuncs.com/?Action=DescribeParameters &DBInstanceId=rm-uf6wjk5xxxxxxx &a ...

最新文章

  1. 大佬共话AI:“三马二宏”等亮相2020年世界人工智能大会
  2. 安全篇之手机数字密码九宫格究竟哪个更安全?
  3. Xilinx Platform Cable USB II 下载器驱动安装教程——Win10
  4. Spring Bean作用域实例
  5. 【LeetCode笔记】剑指 Offer 21-. 调整数组顺序使奇数位于偶数前面(Java、双指针)
  6. 4.3.2模拟匹配的一种改价算法(KMP及KMP优化算法)
  7. 4.01~ios开发常用的宏
  8. css命中与jquery命中
  9. 如何在blog中添加背景音乐
  10. 炼丹手册——数据增广
  11. mysql cluster error 4010 157_关于mysql-cluster的一些问题想讨教各位经验人事
  12. Tabular Editor学习笔记_2
  13. Eclipse使用教程
  14. 用大约 10 万字的内容对 Java 的核心知识点和常见的 1000 多道面试题,做了详细的介绍
  15. c++ 随机生成数独(不保证唯一解)
  16. nvidia-driver-460防止驱动更新
  17. datanlysis
  18. 目标检测入坑指南3:VGGNet神经网络
  19. COMFAST CF-WU785AC在Ubuntu无法上网问题的解决
  20. 宏观经济学gdp计算方法_宏观经济学GDP中存货是怎么算的,能说一下吗

热门文章

  1. Message Decoding密码翻译
  2. 牛客练习赛69E-子串【树状数组】
  3. P3810-[模板]三维偏序(陌上花开)【CDQ分治,树状数组】
  4. jzoj1267-路障【最短路,SPFA】
  5. 【二分】Distinct
  6. 初一模拟赛总结(3.23)
  7. L3-002 堆栈 树状数组+二分答案
  8. Zookeeper超详细的面试题
  9. Java(enum)枚举用法详解
  10. Java架构师必看的10本书