Koko / Говнокод #26408 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 Gorr, (Updated )

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

  • Жабоеб не может без бойлерплейта.
    Когда он видит класс из одной строчки, у него начинает дергаться глаз

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

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

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

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

          Не понял, что по твоей ссылке должно было опровергнуть такую вероятность?
          Для котлина невозможна кодогенерация?
          Ответить
          • data class совсем не говорит о кодогеренации, с чего ты взял, что это она?
            Ответить
            • Я не утверждаю, что это она, я просто говорю, что глупо предполагать, будто такой код написан руками, когда любой жаваёб сгенерит его сниппетом в один хоткей. А значит и бугурт про бесконечный бойлерплейт который, якобы, кто-то пишет руками, когда дефолтные методы делают тоже самое — более или мене надуман.
              Ответить
              • Я вообще не высокого мнения о людях, и если нет явного доказательства кодогенерации, то я предполагаю, что это написал человек, который не знал про то, как пользоваться дата классами

                тустринг то зачем генерить? Датаклассы сами это умеют
                Ответить
                • Давай сойдёмся на следующем: дефолтный сниппет в IDEA, который кроме полей генерит ещё и toString с телом — избыточен. Ай-яй-яй, разработчики из intelliJ, ай-яй-яй. Пожурили и забыли. Повода для срача про " Когда он видит класс из одной строчки, у него начинает дергаться глаз" вообще не вижу.

                  А этот класс вообще-то можно записать в одну строчку, или аннтоации не накинуть будет? Не знаю, дефолтные ли это аннотации для котлиновского дата-класса.
                  Ответить
                  • Дефолтный снипет идеи генерит тустринг для Java. Для Kotlin он его не генерит.

                    Аннотации это для сериализации, но любая нормальная сиситема сереализации умеет брать имена филдов по умолчанию.
                    Ответить
                    • То есть для тебя тут есть реально признаки написания вручную?
                      Ответить
                      • import com.google.gson.Gson
                        
                        data class Foo(val name: String, val iq: Int)
                        
                        
                        fun main() {
                            val foo = Foo("S", 12)
                            val str = Gson().toJson(foo) //
                            println(str)//{"name":"S","iq":12}
                            val foo2 = Gson().fromJson("{\"name\":\"S\",\"iq\":13}", Foo::class.java)
                            val foo3 = Gson().fromJson("{\"name\":\"S\",\"iq\":13}", Foo::class.java)
                            println(foo2)//Foo(name=S, iq=13)
                            println(foo2 == foo) //false
                            println(foo2 == foo3) //true
                        }


                        обрати внимание на класс Foo.
                        Ответить
                          • котлин очень многое спиздил у скалы
                            Ответить
                            • На «Скале» писа́ть с детства не умел.
                              Видимо, «Котлин» — это мой удел.
                              А «Скала»? Да что «Скала»? Вечно мне лгала.
                              И меня никогда понять бы не смогла.

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

          Он берет, и пишет над полем username.
          Казалось бы, зачем? Это ведь и так понятно по рефлексии, но нет А в чём смысл ключегого слова "override", почему это происходит столь просто - подумаешь каст сменили, - и имеет длительные последствия! Едить-твою за ногу! Обратно-то некому кастануть!
          Ответить
          • Именно поэтому я за Javascript Моча: Object.prototype.toString=function(){return JSON.stringify(this)};
            Ответить
          • Блин. Второй раз меня подловил.
            Но теперь я даже пытался вчитаться в эти вореции.
            Ответить
            • Подтверждаю. Тоже сначала пытался понять 63 вареций этой информации. Даже лёгкое головокружение появилось, когда пытался скобенировать психозу в наталиозу.
              Ответить
            • А ведь это классические вореции, та самая кнопка Ответить бредом из тех времён, когда Инканус был "не ходи по мне", и из его учётки не сделали Те-ле-фун-кен.

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

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

                EDIT: OH SHI~. Просто он у меня скрыт.
                Ответить
      • Я понял! Я теперь понял!
        Когда педофил растлевает ребенка или гей соблазняет натураста, он просто приводит его к другому типу!!! Вот, почему это происходит столь просто - подумаешь каст сменили, - и имеет длительные последствия! Едить-твою за ногу! Обратно-то некому кастануть!

        "В чем отличие геев и натуралов"? Ответ - ни в чем, ведь базовый тип у них один.
        Ответить
      • хуй сосет жава скрипт
        груви хуев не сосет
        print([groovy: "rocks"].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].
          Ответить
  • Пиздец этот ваш котлин.
    Жаба под коричневым соусом.
    Ответить
    • Самое смешное - это то, что этот прогрессивный, современный язык начали делать под жвм, со всеми её тайп эрейжами и прочей хуетой.
      Поэтому даже сейчас, соскочив на нейтив, они все равно выглядят как ёбаная скала и тащат туда говно из жвм, к которой отношения вроде бы уже и не имеют.

      Какой reified )))
      Ответить
        • нужна плашка "уебок" возле ника, потому что я вообще ебал разбираться во всех этих юзернеймах
          Ответить
          • Дополненная реальность. Идёшь по улице, а там над прохожими плашка "уёбок" всплывает. Удобно, сразу знаешь кого обойти стороной.
            Ответить

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8