Java中更好的编码风格?实现相对时间

时间:2013-08-15 13:18:22

标签: java syntax coding-style code-formatting

我没有正式的编程培训,我不知道什么是正确的编码方式,但这真的让我很烦恼。我在这里开发一些东西以获得相对时间,现在就是这样的。

if (minutes < 59) {
    if (minutes == 1) {
        relativeTifmeString = minutesString+" minute ago";
    } else {
        relativeTifmeString = minutesString+" minutes ago";
    }
} else {        
    if (hours < 23) {
            if (hours == 1) {
                relativeTifmeString = hourstring+" hour ago";
            } else {
                relativeTifmeString = hourstring+" hours ago";
            }
        } else {
            if (days == 1) {
                relativeTifmeString = dayString+" day ago";
            } else {
                relativeTifmeString = dayString+" days ago";
            }
    }
}

但这真的很难看,即使它有效吗?是否有可能以更美丽/更有效的方式写下来?或者你会怎么做?

3 个答案:

答案 0 :(得分:2)

我最终会得到这样的东西,这取决于你实际在做什么以及为什么。伪代码:

public String getRelativeTimeString() {
    return getAppropriateString(minutes, hours days) + " ago";
}

public String getAppropriateString(minutes, hours, days) {
    if (minutes < 59) {
        return pluralize(minuteString + " minute", minutes);
    } 

    if (hours < 23) {
        return pluralize(hourstring + " hour", hours);
    } 

    return pluralize(dayString + " day", days);
}

public String pluralize(String s, int count) {
    return count > 1 ? s + "s" : s;
}

答案 1 :(得分:0)

  

将其包装在返回字符串的函数中。

public String getTime(){

   String outputString = "";

   // Minutes
   if(condition for minutes is true){
       outputString = "SomeText";
       return outputString ;
   }

   // Hours
   if(condition for hours is true){
       outputString = "SomeText";
       return outputString ;
   }

   // Days
   if(condition for daysis true){
       outputString = "SomeText";
       return outputString ;
   }
}

答案 2 :(得分:0)

如果我们知道如何首先填充分钟和小时,这将有所帮助。例如,天可能是2天,小时是11天,而分钟是23天同时?如果是,则if语句:

if (minutes < 59) {
if (minutes == 1) {
    relativeTimeString = minutesString+" minute ago";
} else {
    relativeTimeString = minutesString+" minutit ago";
}

将是条件进入的唯一if语句,即使它已经超过2天。