java - 拆分临时变量重构示例

标签 java variables split refactoring temporary

我正在准备我的考试,我偶然发现了一个奇怪的去年实际考试问题: 对这段代码执行拆分临时变量重构:

 public int createUniqueCasenumber (GregorianCalendar date, int departmentID) {
      int temp = 0;

      temp = date.get(GregorianCalendar.DAY_OF_MONTH);
      temp = temp * 100;

      temp = temp + date.get(GregorianCalendar.MONTH);
      temp = temp * 100;

      temp = temp + date.get(GregorianCalendar.YEAR);
      temp = temp * 100;

      temp = temp + (date.get(GregorianCalendar.HOUR_OF_DAY) * departmentID);

      return temp;
  }

现在我将拆分临时变量重构理解为临时变量用于不同目的的情况,我们只需将其“重命名”为两个不同的有意义的名称。 但是在这种情况下我真的想不出聪明的名字,这个临时变量的作用有点类似于循环收集变量。

唯一接近所需重构的是:

 public int createUniqueCasenumber (GregorianCalendar date, int departmentID) {
      int result= 0;

      int firstStep = 100 * date.get(GregorianCalendar.DAY_OF_MONTH);

      int secondStep = 100 * (firstStep + date.get(GregorianCalendar.MONTH));

      int thirdStep = 100 * (secondStep + date.get(GregorianCalendar.YEAR));

      result = thirdStep + (date.get(GregorianCalendar.HOUR_OF_DAY) * departmentID);

      return result;
  }

但是您为什么要“在现实生活中”这样做呢?还是有什么我看不到的深层含义? 有什么想法吗?

提前谢谢你:)

最佳答案

您的重构不正确;每个-step变量依赖于任何其他变量(请注意,从 tempdate.get 的每个赋值都会覆盖之前的值)。还明确指出,除最后一个赋值外的所有赋值以及所有乘以 100 的赋值都是无用的。

这种重构清楚地表明这些值是独立的,并且可以按任何顺序分配(如果允许的话,甚至可以并行分配)。

关于java - 拆分临时变量重构示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25612898/

相关文章:

java.lang.ClassNotFoundException : org. springframework.aop.config.AopConfigUtils 错误

php - 在PHP中,我们如何获取父类变量?

java - 无法将 Gradle 构建为 Make 项目

java - 在 Java 中解析 A​​ccept-Language header

Codeigniter - 在 View 中使用 session 数据

javascript - 在数组 javascript 中的特定字符串后插入分页符

linux - 使用 AWK 将文件的第一列拆分为多列

java - 基于 Ç 的字符串分割

java - Freemarker断线

PHP - 将一个额外的参数(变量)传递给 set_exception_handler