2016-10-27 16 views
1

私はいくつかのコードを書いていましたが、どちらが良いのか分かりません。 1つの方法では、何が起こっているのかをより簡単に読むことができますが、私はより多くのコード行を持っています。 他の方法では、コードの行は少なくなりますが、理解することは難しいと思います。どのコードが優れていますか?

String imp = importance.getSelectedItem().toString(); 
String title_str = title.getText().toString(); 
String body_str = body.getText().toString(); 
String location_str = location.getText().toString(); 
int day = date.getDayOfMonth(); 
int month = date.getMonth()+1; 
int year = date.getYear(); 
int hh = time.getCurrentHour(); 
int mm = time.getCurrentMinute(); 
String date_str = year+"/"+month+"/"+day+" " + hh+":"+mm +":00"; // yyyy/MM/dd HH:mm:ss 
long dateMilliseconds = new Timeconversion().timeConversion(date_str); 

Conference conference = ConferenceBuilder.conference() 
     .id(idConf) 
     .importance(Double.parseDouble(imp)) 
     .title(title_str) 
     .body(body_str) 
     .location(location_str) 
     .timeInMilliseconds(dateMilliseconds) 
     .build(); 

または

Conference conference2 = ConferenceBuilder.conference() 
           .id(idConf) 
           .importance(Double.parseDouble(importance.getSelectedItem().toString())) 
           .title(title.getText().toString()) 
           .body(body.getText().toString()) 
           .location(location.getText().toString()) 
           // yyyy/MM/dd HH:mm:ss 
           .timeInMilliseconds(new Timeconversion().timeConversion(date.getYear()+"/"+date.getMonth()+1+"/"+date.getDayOfMonth()+" " + time.getCurrentHour()+":"+time.getCurrentMinute() +":00")) 
           .build(); 
+3

可読性に備えてください。ところで、その言葉は「平和」ではなく、「断片」です。 「平和」は戦いを意味しない。 –

+0

ありがとう@MikeDunlavey – mavi

+0

また、これはJavaの質問としてよく役立つと思います。私はAndroidに関連するものやAndroidの知識が必要なものは何もないと思います。 –

答えて

1

違いを分割します。あなたのtextviewsがかなり明確に命名されているので、私はあなたのtextviewsからStringオブジェクトを抽出することは、物事がどの読みやすくすることを考えていない

Conference conference2 = ConferenceBuilder.conference() 
      .id(idConf) 
      .importance(Double.parseDouble(importance.getSelectedItem().toString())) 
      .title(title.getText().toString()) 
      .body(body.getText().toString()) 
      .location(location.getText().toString()) 
      // yyyy/MM/dd HH:mm:ss 
      .timeInMilliseconds(getTimeInMillis(datePicker, timePicker)) 
      .build(); 
} 

private long getTimeInMillis(DatePicker datePicker, TimePicker timePicker) { 
    Calendar calendar = Calendar.getInstance(); 
    calendar.set(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth(), 
    timePicker.getCurrentHour(), timePicker.getCurrentMinute(), 0); 
    return calendar.getTimeInMillis(); 
} 

:私はこのような何かをしたいです。

+0

'SimpleDateFormat'は答えに素敵な追加になります –

+0

私はTimeconversion()が何であるか、それが何か別のことをしているのか分かりません。私は戻り値がtimeInMillis部分に基づいて長いと推測しました。 OPが特定の価値について解説したいのであれば、答えを最適化して喜んでください。ここで重要な点は、その特定のチャンクは少し重いので、それを明示的に名前を付けたメソッドに入れると、コードが読みやすくなります。 –

+0

明らかに、 'date.getYear()+"/"+ date.getMonth()'は文字列を取得しています。それは私のポイントだった –

関連する問題