2013-08-15 1 views
-1

프로그래밍에 대한 공식 교육이 없으며 코딩의 적절한 방법이 무엇인지 알지 못합니다. 그러나 이것은 내 눈을 정말로 긁는 것입니다. 나는 개발자가 상대적인 시간을 갖기 위해 무언가를 가지고 있습니다.Java의 코딩 스타일이 개선 되었습니까? 상대 시간 구현

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"; 
      } 
    } 
} 

그러나 이것은 실제로보기 흉한데, 심지어 작동합니까? 더 아름답고 효과적인 방법으로 그것을 적어 둘 수 있습니까? 아니면 어떻게 할거야?

+0

"아름다운"것을 정교하게 기입하십시오. –

+0

나는 이것을 못생긴 것이 아닙니다. 확실히 중괄호가 많이 있으며 반복적으로 보입니다.하지만 적어도 그것이하는 일은 분명합니다. 종종 나는 사람들이 자신의 코드에서 약간의 반복을 두려워하여 눈에 쉽지 않은 정말로 복잡한 솔루션을 작성하기 시작합니다. 때로는 코드를 "벙어리 방식"으로 작성하는 것이 가장 좋습니다. – Kayaman

+0

눈을 code고 코드를 읽는 것이 더 낫습니까? –

답변

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 ; 
    } 
} 
+0

여러 번의 반품은 좋은 스타일이 아닙니다. – nachokk

+0

@nachokk 전적으로 동의합니다.하지만 OP가 가지는 조건으로는 더 좋은 방법이 없을 것입니다. 모든 제안을 부탁드립니다. 나는 코드의 가독성과 단순화에 초점을 맞추고 있었다. – JNL

0

우리가 분 시간을 먼저 채워지는 방법을 알고 있다면 그것은 도움이 될 것이다. 예를 들어, 2 일, 11 시간, 23 분이 동시에 모두 일 수 있습니까? 그렇다면 If 문은 다음과 같은 경우에도 입력 조건이 입력되는 유일한 if 문입니다. If 문 :

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

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; 
} 
+0

정확히, 복수형 함수를 만들고 삼항 연산자를 활용하십시오 :) – KevinDTimm