• Сравниваем c# операторы ?: vs if-else vs switch

      Сегодня на ревью прилетела очередная фабрика животных:

      public static class AnimalsFactory
      {
          public static Animal CreateAnimalByTernaryOperator(bool isCat)
          {
              return isCat ? (Animal)new Cat() : new Dog();
          }
      }
      

      В который раз расстроился, что C# заставляет делать каст объекта Cat к Animal. Но пусть лучше будет каст, ведь через if-else оператор код получается ещё длиннее:
      public static class AnimalsFactory
      {
          public static Animal CreateAnimalByIfElseOperator(bool isCat)
          {
              if (isCat)
                  return new Cat();
      
              return new Dog();
          }
      }
      

      Отвлечёмся на минуту от ревью и попробуем разобраться:

      • будет ли отличаться IL-код в этих примерах?
      • будет ли один из примеров в выигрыше по производительности?

      Читать дальше →
    • Как начисляются проценты по кредиту и как это применить

      Всем привет! Когда я взяла ипотеку, решила досконально разобраться в том, как начисляются проценты, как лучше вносить досрочку и так далее. Сама я экономист. В общем, делюсь, надеюсь, будет полезно.

      Платёж по кредиту состоит из двух частей — процентов банку и погашения основного долга.
      При этом ежемесячно начисляемые проценты рассчитываются по формуле:



      Исходя из этого:

      1. Сумма ежемесячно начисляемых процентов самая большая в начале, потому что в начале самый большой остаток основного долга. По мере его снижения снижаются и проценты.
      2. Сумма процентов “скачет” от месяца к месяцу, потому что зависит от количества дней в месяце.
      3. Срок кредита в расчёте ежемесячно начисляемых процентов не фигурирует, а это значит, что неважно, на какой срок брать ипотеку — переплата будет одинаковой, если одинаковы ежемесячные платежи.
      4. При внесении частичного досрочного погашения с уменьшением ежемесячного платежа переплата будет точно такой же, как в случае сокращения срока, если продолжать платить прежний ежемесячный платёж, а не уменьшенный.

      Приведу расчёты по каждому пункту.
      Читать дальше →
    • Осторожно доктор



        Это ответ на неожиданную статью на Хабре психиатра с тридцатипятилетним стажем Александра Геннадьевича Данилина, также довольно известного youtube влогера. До его статьи на Хабре я не обращал на его творчество внимания, как выяснилось, зря.

        Но сначала короткое предисловие.

        Для меня психиатрия болезненная и личная история. К сожалению, это очень специфичная область медицины, в которой эзотерика и мракобесие очень успешно сопротивляются научному знанию. Дело в том, что доказательной медицине вообще чуть более тридцати лет. И медицинское сообщество только сейчас с кровавой рвотой исторгает из себя всякую гомеопатию. В психиатрии же ввиду объективных факторов процесс идет тяжелее всего. Эта область все еще является заповедником для шарлатанов, невежд, идиотов и фриков от науки со своими особыми трактовками и истинами, почерпнутыми из “философских размышлений”. Революция в нейронауках, в частности, в психологии и психиатрии происходит прямо сейчас. Увы, не для всех.
        К не слишком компетентным, но придерживающимся стандартных программ и методик лечения психиатрам, я отношусь довольно холодно. Тем не менее, они делают то, чему их научили. Как правило, это позволяет им вывести пациента из острого психотического состояния. Ну, а дальше у него по крайней мере будет шанс. Возможно, в будущем разработают лучшие методики, будут лучше лечить. Но вот фрики, выковыривающие свои антинаучные гипотезы из известного места и применяющие их при лечении тяжелых пациентов, вызывают во мне острое нестерпимое желание жечь, жечь, жечь в драконьем пламени. Я слишком хорошо знаю, к чему приводит их невежество.

        Я был в этом аду, я в нем горел.
        Читать дальше →
      • Что нового в C# 8?

          «Восьмерка» еще даже не вышла RTM а я уже пишу про нее пост. Зачем? Ну, основная идея что тот, кто предупрежден — вооружен. Так что в этом посте будет про то что известно на текущий момент, а если это все подстава, ну, поделом.


          Читать дальше →
        • Организация системы эвентов в Unity — глазами геймдизайнера

            Всем привет!

            Заранее извиняюсь за дилетантизм, но я почитал статью о том, как человек пытался бороться с чрезмерной связностью сущностей в Unity, и подумал, что было бы интересно рассказать о своём велосипеде, который я сколотил для создания игровых прототипов как геймдизайнер.

            Передо мной стояла задача создать систему эвентов и сообщения различных сущностей, избежав той самой связанности, когда у каждого объекта присутствует большое количество ссылок на другие объекты.

            В итоге моя система позволяет не делать таких ссылок вовсе. Она решает главную задачу: мне с ней удобно работать, она не захламляет код лишним мусором и, вроде бы, не так ужасна по производительности как постоянные вызовы GetComponent().

            Буду рад любой критике на тему, почему так делать не надо, и как делать всё-таки надо.
            Читать дальше →