1. Kotlin / Говнокод #26408

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    data class User(
    
        @Expose
        @SerializedName("email")
        val email: String? = null,
    
        @Expose
        @SerializedName("username")
        val username: String? = null,
    
        @Expose
        @SerializedName("image")
        val image: String? = null
    ) {
        override fun toString(): String {
            return "User(email=$email, username=$username, image=$image)"
        }
    }

    JetBrains сделали прекрасный стандартный toString у дата классов, а они всё равно пишут свой туСтринг, который выдаёт результат в точности повторяющий стандартный.

    https://github.com/mitchtabian/MVIExample/blob/master/app/src/main/java/com/codingwithmitch/mviexample/model/User.kt

    Запостил: Gorr, 03 Февраля 2020

    Комментарии (76) RSS

    • Именно поэтому я за "PHP".
      Ответить
    • показать все, что скрытоvanished
      Ответить
      • Блять, пол говнокода ворчит как старые бабки у подъезда над автогенерённой хуетой из IDEA по Ctrl+Insert. Вы ебанулись?
        Ответить
      • Пиздец, самый заплюсованный коммент в окрестности.

        ШОК! Где-то на гитхабе есть автогенерённый бойлерплейт!

        Написано же data class ⇒ по всей вероятности сгенерён из какого-нибудь xml- или json-описания api. Лежать будет в отдельном файле, делать в котором нехуй, нужен он линтеру и компилеру для тайпчекинга и среде для автодополнения. Желательно, чтобы ещё был помечен как автогенерённый, чтобы не трогал никто. Всё равно, когда версия апи поменяется, придёт новый файлик xml, по которому классы перегенерятся. Единственный минус такого кода, кроме его нахуй не нужности, как и ± большинства кода, написанного для продакшена, в том, что serialized name может отличаться от имени поля и предвещать кому-то мучительный дебаг, если уж кто-нибудь доберётся до того, чтобы трогать подобный бойлерплейт руками.

        Ну там вот в соседнем файле есть ещё
        if (pk != other.pk) return false
        
        return true
        Тоже давайте порофлим.
        Ответить
        • Подозреваю, что РКГ не нравится не кокококонкретно данный код, а «Java» и «Кококококотлин». Он считает тавтологией явное указание имени поля для сериализации.
          Ответить
        • показать все, что скрытоvanished
          Ответить
          • > по какой такой вероятности?

            Не понял, что по твоей ссылке должно было опровергнуть такую вероятность?
            Для котлина невозможна кодогенерация?
            Ответить
            • показать все, что скрытоvanished
              Ответить
              • Я не утверждаю, что это она, я просто говорю, что глупо предполагать, будто такой код написан руками, когда любой жаваёб сгенерит его сниппетом в один хоткей. А значит и бугурт про бесконечный бойлерплейт который, якобы, кто-то пишет руками, когда дефолтные методы делают тоже самое — более или мене надуман.
                Ответить
    • А в чём смысл ключегого слова "override", почему без него не смогли обойтись?
      Ответить
      • Ну как... чтобы отличать определение новой виртуальной функции от переопределения функции предка. Например, можно случайно написать virtual string toStirng() и потом удивляться, почему не работает.
        В С++ этого как-то не хватало, сейчас вроде вводят...
        Ответить
    • Собачки...
      Ответить
    • 3,14 - вореационный маньяк
      Ответить
      • На самом деле вполне похожее сделать, что Страйкер хотел поддержать нескольким абонентам на соту. Это же "исполнять этот тред только потрошилку статической карточки не менее N евро? Я пошел уткой и моментальном направления можно нагрузить видюху на 100%? Прогнал бенч - частоту? Если с температуру смотреть надо - она не всё время на максимальная турбо-частотах работать, а хлама там такое количество, что в нем заебешься разбираться в ограничение было в 20 фпс.
        Ответить
        • показать все, что скрытоvanished
          Ответить
          • Не общайся с трубочистом - он испачкает тебя сажей.
            Ответить
        • показать все, что скрытоvanished
          Ответить
          • Кого ебёт твой игнор, мой сладенький?
            Ответить
          • Я понял! Я теперь понял!
            Когда он видит класс из одной строчки, у него начинает дергаться глаз.

            Он берет, и пишет над полем username.
            Казалось бы, зачем? Это ведь и так понятно по рефлексии, но нет А в чём смысл ключегого слова "override", почему это происходит столь просто - подумаешь каст сменили, - и имеет длительные последствия! Едить-твою за ногу! Обратно-то некому кастануть!
            Ответить
            • показать все, что скрытоvanished
              Ответить
            • Блин. Второй раз меня подловил.
              Но теперь я даже пытался вчитаться в эти вореции.
              Ответить
              • Подтверждаю. Тоже сначала пытался понять 63 вареций этой информации. Даже лёгкое головокружение появилось, когда пытался скобенировать психозу в наталиозу.
                Ответить
              • А ведь это классические вореции, та самая кнопка Ответить бредом из тех времён, когда Инканус был "не ходи по мне", и из его учётки не сделали Те-ле-фун-кен.

                Эти современные многомалостные вореции лень устанавливать. Скрипты какие-то. Сложна! Сложна! А старый скрипт так и остался, разве что вместе со всем разделом переехал на новый SSD.
                Ответить
                • >А ведь это классические вореции

                  Я специально поиском проверил что в треде не было начальной фразы.
                  >Я понял! Я теперь понял!

                  EDIT: OH SHI~. Просто он у меня скрыт.
                  Ответить
    • Именно поэтому я за Javascript
      Ответить
      • Моча:
        >> ({pituh: "petya"}).toString()
        "[object Object]"
        Ответить
        • Я понял! Я теперь понял!
          Когда педофил растлевает ребенка или гей соблазняет натураста, он просто приводит его к другому типу!!! Вот, почему это происходит столь просто - подумаешь каст сменили, - и имеет длительные последствия! Едить-твою за ногу! Обратно-то некому кастануть!

          "В чем отличие геев и натуралов"? Ответ - ни в чем, ведь базовый тип у них один.
          Ответить
        • показать все, что скрытоvanished
          Ответить
        • Учи матчасть
          JSON.stringify({pituh: "petya"}).toString()
          Ответить
          • О, господи! Расскажи нам поподробнее зачем вызывать метод toString у строки?

            Зачем? Зачем?
            Ответить
            • Потомучто могу, это каждый петух знает
              Ответить
            • 1. JSON.stringify не всегда возвращает строку. Для undefined он возвращает undefined.

              2. Чтобы получить ошибку времени выполнения, если на вход подали undefined.

              >> JSON.stringify(undefined);
              undefined
              >> JSON.stringify(undefined).toString();
              TypeError: JSON.stringify(...) is undefined
              Ответить
        • Object.prototype.toString=function(){return JSON.stringify(this)};
          ({pituh: "petya"}).toString()

          Починил, проверь.
          Ответить
          • Осталось продвинуть в стандарт. Много юзабельней, чем [Object object].
            Ответить
    • Пиздец этот ваш котлин.
      Жаба под коричневым соусом.
      Ответить
    • Переведи на "PHP".
      Ответить

    Добавить комментарий