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

15 ИЮНЯ 2022

------------------------------------------------------------------------

Наш телеграм-канал: t.me/@mailsgun_online

Youtube: youtube.com/@mailsgun_online

------------------------------------------------------------------------

Обновить

asolntsev 20 июл 2010 в 01:40

Время на прочтение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.

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

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

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

Такие дела.

Всего голосов 70: ↑38 и ↓32+6

One day offer от ВСК

Дата
Время09:00 – 18:00
Место

Онлайн

Конференция «Я.Железо»

Дата
Время14:00 – 23:59
Место

Москва • Онлайн

Антиконференция X5 Future Night

Дата
Время11:00 – 23:00
Место

Онлайн

Конференция «IT IS CONF 2024»

Дата
Время09:00 – 19:00
Место

Екатеринбург

Summer Merge

Дата
Время
Место

Ульяновская область

Ну и напоследок напоминаю вам о нашем новом проекте vkserfing bot.