Как стать автором
Обновить

Как очистить карму своему коду?

Время на прочтение3 мин
Количество просмотров1.9K
Часто ли у так бывает, что вы встречаете плохой код и мысленно ругаете автора?
А потом приходите к выводу, что код не так уж и плох, и автора ругали зря… Но осадок-то остался!

В общем, медитировал я давеча перед монитором, и посетил меня такой вот код:

class Graph
{
  /**
   * retrieve min value for y-axis
   */

  public int getYaxisMin() {
    int result = getMinAmount();
    result = result / 100 * 100;
    return result;
   }

  /**
   * retrieve max value for y-axis
   */

  public int getYaxisMax() {
    int result = getMaxAmount();
    result = ( result + 100 ) / 100 * 100;
    return result;
  }

  // Да, это самый настоящий код, написанный не сто лет назад, а в 2010 году,
  // и не студентами какими-нибудь, а вполне солидными программистами.
  // Так-то!

  ...
}



Вслед за этим кодом меня посещает, конечно, Негативная Эмоция. Недоумевание.
Почему надо делить на сто и тут же умножать на сто?
Зачем надо прибавлять сто и делать на сто? Что тут вообще происходит? WTF?

Разгадка

В ходе дебага выясняется, что код этот вполне работает. Поскольку речь идёт о целых числах, то при делении на 100 результат округляется, а при повторном умножении на сто получается меньшее число. Например, из 666 получается (666/100) * 100 = 6*100 = 600. То есть значение округляется до ближайшей сотни.

Что получается? Код как бы есть, он как бы работает, то есть обвинить программиста как бы и не в чем. Но в то же время я потратил силы, чтобы в нём разобраться, а самое главное — я произнёс вслух "What The Fuck" что увеличило мою карму на единичку.

Карма — космический закон

В Махабхарате есть такое понятие, как карма кода. Карма кода тем чернее, чем больше человек сказало "What The Fuck", глядя на него. Веды говорят, что язык, на котором код будет имплементирован в следующей реинкарнации, зависит от количества WTF'ов, вызванных в прошлой имплементации. Если про код хотя бы раз сказали "What the fuck", то в следующей раз ему уже точно не быть имплементированным на Scala, если сказали пять раз «What the fuck», то ему светит максимум Java, а если 20 раз и больше — то родиться ему в PHP или даже Perl'e.

Избавление от кармы

Как же очистить карму своего кода?

Как утверждается в ведических текстах, любой программер может изменить судьбу кода, если в день Бхадра Пурнима откроет для себя священное писание «import org.junit.Test» и напишет очищающую мантру:
public class GraphTest
{
   @Test
   public void yaxisMinTruncatesToLower100()
   {
     assertEquals(0, new Graph(48, 415).getYaxisMin());
     assertEquals(100, new Graph(100, 415).getYaxisMin());
     assertEquals(900, new Graph(914, 415).getYaxisMin());
   }

   @Test
   public void yaxisMaxTruncatesToUpper100()
   {
     assertEquals(100, new Graph(48, 96).getYaxisMax());
     assertEquals(200, new Graph(48, 100).getYaxisMax());
     assertEquals(500, new Graph(914, 415).getYaxisMax());
   }
}



Кстати, Шастры рекомендуют ещё и подчистить чутка свою собственную карму, стерев нафик непотребные комментарии и сделав код втрое короче:
class Graph
{
   ...
   public int getYaxisMin() {
     return getMinAmount() / 100 * 100;
   }

   public int getYaxisMax() {
     return getMaxAmount() + 100 ) / 100 * 100;
   }
   ...
}


Ну вот, теперь карма вашего кода немного очистилась. Но на этом наше обучение jЙоге не законено. Мы лишь в начале Пути. В следующий раз мы рассмотрим, почему нашему коду необходимо ежемесячно исповедоваться и проходить причастие. А лучше — ежедневно, в идеале — даже ежечасно. В древних писаниях этот процесс называется Continuous Integration.

А на сегодня урок окончен.

Резюмируем полученные знания:

Думайте своей головой, не верьте во всякую фигню — и вы достигнете высшей трансцендентальной обители!


Такие дела.





Теги:
Хабы:
+6
Комментарии63

Публикации

Изменить настройки темы

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн