Pull to refresh

JodaTime — учите матчасть, или важность существительных

Reading time1 min
Views908
Нашел у себя баг. Нужно было по некоторой логике получить временной интервал, причем без привязки к конкретным датам, то есть просто обертку вокруг количества милисекунд между некими событиями.

В моем коде я высчитывал startDate и endDate, и возвращал Duration вот таким образом:
  return new Period(startDate, endDate).toDuration();


Выяснилось, что если startDate и endDate отстояли друг от друга больше, чем на месяц, JodaTime кидал исключение. Решение было найдено быстро:

  return new Interval(startDate, endDate).toDuration();


Починил, и задумался, почему я допустил такой ляп. JodaTime имеет очень богатый набор классов для описания всего, что связано со временем, и мне некогда было разбираться в разнице между Period, Interval, Duration и т.д. И очень зря.
Когда я писал код, в голове вертелось «за отчетный период хлеборобы Кубани убрали и намолотили....». Я, хотя и свободно говорю по-английски, выбрал первый попавшийся класс, похожий на «отчетный период», т.е. Period.

К чему я это все? К тому, как важно правильно называть свои классы/методы/переменные. Почитал я (вовремя, ага, после того, как закончил проект) документацию к JodaTime и позавидовал белой завистью. Ребята приложили кучу усилий к тому, чтобы назвать каждый класс нужным существительным. Interval — это не Period, и понятно почему (ага, теперь понятно). У меня так, к сожалению, получается не всегда. А жаль.
Tags:
Hubs:
+1
Comments2

Articles