java - 修改 else if 和 |运营商

标签 java if-statement refactoring

我有这段代码,想知道是否存在使其更具可读性的方法?

我的代码:

     public String getMonthName()
{
    if (1 == this.monthNumber) {
        monthName = "January";
    } else if (2 == this.monthNumber) {
        monthName = "February";
    } else if (3 == this.monthNumber) {
        monthName = "March";
    } else if (4 == this.monthNumber) {
        monthName = "April";
    } else if (5 == this.monthNumber) {
        monthName = "May";
    } else if (6 == this.monthNumber) {
        monthName = "June";
    } else if (7 == this.monthNumber) {
        monthName = "July";
    } else if (8 == this.monthNumber) {
        monthName = "August";
    } else if (9 == this.monthNumber) {
        monthName = "September";
    } else if (10 == this.monthNumber) {
        monthName = "Oktober";
    } else if (11 == this.monthNumber) {
        monthName = "November";
    } else if (12 == this.monthNumber) {
        monthName = "December";
    }

    return monthName;
}

/**
 * Gets the number of days in this month
 * @return the number of days in this month in a non-leap year
 */
public int getNumberOfDays()
{
    int numberOfDays;
    if (monthNumber == 1 || monthNumber == 3 || monthNumber == 5 || monthNumber == 7 || monthNumber == 9 || monthNumber == 11) {
        numberOfDays = 31;
    } else if (monthNumber == 4 || monthNumber == 6 || monthNumber == 8 || monthNumber == 10 || monthNumber == 12) {
        numberOfDays = 30;
    } else {
        numberOfDays = 28;
    }

    return numberOfDays;
}
}

如何更好地重构代码?使其更具可读性。

最佳答案

使用枚举

public enum Month
{
  JANUARY( "January", 31 ),
  FEBRUARY( "February", 28 ),
  ...
  DECEMBER( "December", 31 );

  private String monthName;
  private int numOfDays;

  private Month ( String monthName, int numOfDays )
  {
    this.monthName = monthName;

    this.numOfDays = numOfDays;
  }

  public String getDisplayName ( )
  {
    return monthName;
  }

  public int getNumOfDays ( )
  {
    return numOfDays;
  }
}

关于java - 修改 else if 和 |运营商,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17367192/

相关文章:

if-statement - 电源查询: how to add one to a column when a specific values appear in an other column

asp-classic - 经典ASP的推荐引用

java - 如何将单个元素列表转换为java 8可选

Java 用 lambda 替换方法

java - 确定年份是否为闰年以及日期在 Blackberry 中是否有效

Java RegEx 删除英文单词但排除一些单词

java - 优化ArrayList条件

if-statement - knockout 数组中的 if 语句

javascript - 如何重构多个 if...else 以提高效率?

Python:子类可以重载继承的方法吗?