1. C# / Говнокод #26036

    +1

    1. 1
    if (tableOfVariables[i].Name == "replace".ToUpper())

    )))00

    Запостил: neonmystery, 19 Ноября 2019

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

    • Я иногда пишу что-то типа
      if (s.StartsWith("cock-length="))
        CockLength = int.parse(s.Substring("cock-length=".Length));
      Ответить
      • Парсилку конфигов не завезли?
        Ответить
        • Сериализация в эсемель из коробки, но ебададаы не ющут легких путей.
          Ответить
          • При чем тут эсемель? Это и есть лёгкий путь.
            Ответить
            • вручную парсить строки это самый легкий путь, действительно.

              Кстати, в джаве регулярно встречаю такой код
              void load(Json json) {
                this.name = json.getString("name");
                this.lastName = json.getString("lastName");
                this.roomNumber = json.getInteger("roomNumber");
                this.email = json.getString("email");
              }
              
              void save(Json json) {
                json.setString("name", this.name);
                json.setString("lastName", this.lastName);
              / ...
              }

              Всё просто и понятно. Никакой блядь ненужной интерпрайзной хуйни, которая тормозит
              Ответить
              • Не ебу, а как в этой вашей жабе правильно?
                Ответить
                • В языках с рефлекисей (не только жабе) для этого используется сериализация. В рантайме собирают поля, и сохраняют их.
                  В языках без оной используют кодогенерацию.


                  В острых сях под точка сеть я бы взял
                  https://docs.microsoft.com/en-us/dotnet/api/system.xml.serialization.xmlserializer?v iew=netframework-4.8
                  Ответить
                  • Фу, икс эм эль.
                    Ответить
                    • типизация, автогенерация проксиклассов, валидация из коробки, буээээ
                      Ответить
                      • Что мешает тоже самое с Json сделать?
                        Ответить
                        • Отсутствие в JSON хоть сколько-нибудь работающих, и поддерживаемых кем-либо схем.
                          Ответить
                          • Ничего не понял.
                            Известно какие типы должны быть в Json из типов в коде - типизация и проверка типов есть.
                            Также можно проверить каких в Json полей нет.
                            Что ещё нужно?
                            Ответить
                            • Схемы он хочет. Но со схемами пропадет совместимость с человеком, таки да, если нужно well-formed то это злоебучий хмл
                              Ответить
                            • Допустим, я пишу на C#, и делаю какой-то API.
                              В этом API можно по сети (допустим, через HTTP) передать структуру с сорока двумя полями.

                              Ты пишешь клиент этого дела на Java.

                              В случае JSON тебе придется написать объект с 42 полями вручную и сериализовать его в JSON.

                              Если у тебя такой пиздец как в примере выше, то тебе придется написать 84 строчки бойлерплейта.

                              Если ты возьмешь нормальный сериализатор, то придется написать всего 42 строчки: по одной на каждое поле.

                              Если же бы я использовал XML, то я описал бы свой класс в C#, затем сгенерировал бы по нему схему (это такой XML документ с описанием всех полей) и передал бы его тебе.

                              Ты по нему сгенерировал бы себе готовый класс, и писать тебе ничего не пришлось бы вообще.

                              В XML есть схема и утилиты для генерации по ней клиентов.
                              В JSON таких инструментов нет.
                              Ответить
                          • 1. Схемы есть.
                            2. На уровне языка DTO высрать реально.
                            Ответить
                            • 1. нет
                              2. нет (если это не JavaScript).

                              Хочешь доказать, что я обосрался?
                              Это очень просто: покажи хотя-бы один сервис, у которого есть схема, и тулу, с помощью которой я могу сгенерировать клиентский прокси класс для C# или Java.
                              Ответить
                              • 1. Устроит? https://kodi.wiki/view/JSON-RPC_API/v8
                                2. https://lmgtfy.com/?q=java+json+dto
                                Ответить
                                • >IETF Draft 03
                                  >November 22, 2010
                                  >Expires: May 26, 2011

                                  спасибо. А есть какой-то более солидный стандарт? что-то, что не драфт, и не протухло 10 лет назад?

                                  1. спасибо. А как мне схему-то скачать?

                                  2. спасибо, удалось найти тулу
                                  http://www.jsonschema2pojo.org/

                                  Скачал схему для примера из педивикии, вроде что-то генерит

                                  Я првда так и не понял, кто эту схему дает

                                  По твоей ссылке я так и не понял, как ее скачать
                                  Ответить
                                  • Пожалуйста, заходите еще.

                                    1. В глаза ебемся?
                                    JSON Schema Description
                                    {
                                      "description": "Retrieves the values of the given properties",
                                      "permission": "ReadData",
                                      "type": "method",
                                      "params": [
                                        {
                                          "items": {
                                            "$ref": "Application.Property.Name"
                                          },
                                          "type": "array",
                                          "name": "properties",
                                          "required": true
                                        }
                                      ],
                                      "returns": {
                                        "$ref": "Application.Property.Value"
                                      }
                                    }

                                    2. Вторая ссылка https://stackoverflow.com/questions/40216700/how-to-map-given-json-to-dto
                                    public class Dto {
                                      @JsonProperty("status");
                                      String status;
                                    
                                      @JsonProperty("years");
                                      List<List<Object>> years;
                                    }

                                    Это то что ты хотел?
                                    Ответить
                                    • 2. нигде не написано, что этот код сгенерен по схеме, а не написан вручную

                                      1. действительно, грешу этим. Дизайнеру этого веб-сайта нужно отпилить руки, но с пятой попытки я всё таки нашел.

                                      Осталось понять:
                                      A. Как сгенерить схему по прокси-классу?
                                      B. Какова хуя так мало людей этим пользуется?
                                      Ответить
                                      • 1. Апинсорсное говно, что ты хотел?

                                        2. Он и написан вручную. А как ты хотел?

                                        >B. Какова хуя так мало людей этим пользуется?
                                        Чем?
                                        Ответить
                                        • 1. Я хотел, чтобы автор сервиса описал класс, потом тулой сгенерировал по нему схему, и отдал клиенту. А клиент тулой по схеме сгенерировал класс.

                                          2. Я хотел, чтобы автор сервиса описал класс, потом тулой сгенерировал по нему схему, и отдал клиенту. А клиент тулой по схеме сгенерировал класс.

                                          3. JSON схемами
                                          Ответить
                                          • Такого не видел. Тебе что-то вроде ICE нужно?

                                            3. Эм хз. Их вообще можно сгенерировать из жысона? Для языков со статической типизацией - вещь, но ее задолбешься генерить. А может для твоего сценария уже есть что-то вроде ICE.
                                            Ответить
                    • ради бога
                      https://docs.microsoft.com/en-us/dotnet/api/system.text.json.jsonserializer.serializ e?view=netcore-3.0
                      Ответить
                • Вообще в приведеннном мною коде знание о том, что есть атрибут nameи он строка написано два раза, а на самом деле три, потому что есть еще сам атрибут.

                  Писать одно и тоже знание три раза в разных местах это плохо на ЛЮБОМ языке программирования, кмк
                  Ответить
                  • Приведу пример на условной сишке.

                    Допустим у нас так:
                    typedef struct nemyx_tag {char name[20]; int iq;} nemyx_type;
                    
                    nemyx_type unskilled = { .name = "Анскильный", .iq = 30};

                    Ты хочешь, чтобы вызов make_json(unskilled) генерировал что-то типа {"name": "Анскильный", "iq": 30}. Для этого придётся использовать либо RTTI (царям не понравится, ибо эта анскильная питушня засоряет оперативку), либо генератор кода (цари это сделают мокросами, но мокросы — это зло).
                    Ответить
                    • В сишке нет рефлексии (rtti в няшной нету, да он не нужен), потому я конечно такого не хочу.

                      Я хочу, чтобы была некая модель (пусть на любом языке) из которой должны генерироваться и сишкин код, и код для его сериализации.
                      Ответить
                      • Google protobuf?
                        Ответить
                        • например да.

                          Или например IDLи как у COM или как там было у Corba или winmd (как у современной винды)
                          Ответить
                        • Представь себе как было бы круто, если бы станлдартом в вебе стал Google protobuf?
                          Ответить
                      • На правах офтопика: я снова вспомнил, что единственным вменяемым сложным типом данных является массив. В массиве мы можем пробегать циклом по элементам, а в структуре — нет.
                        Ответить
                        • в сишке не можем

                          в других языках можем. JS, Python, Java, C# (рефлексией правда), Ko, Perl можем
                          Ответить
                          • Со скриптушнёй (JS, Python, Perl) всё понятно: там нет структур в том смысле, в котором они есть в статических языках. Там рантайм хранит слишком много мусора.

                            А как это выглядит на Java и на C#?
                            Ответить
                            • Почему в списке отсутствует «PHP»?
                              Ответить
                              • Потому что любой петух знает, что в «PHP» можно пробегать foreach по полям объекта и по ключам ассоциативного массива.
                                Ответить
                                • забыл упомняуть Objective C: там есть KV Coding, это примерно как бины в джаве: класс обязуется иметь список пропертей и всем про них рассказать

                                  ну и там можно по ним итерироваться
                                  Ответить
                                • Шамо Корея тоза убийца: 550 000 сум - Птицы Пап
                                  Ответить
                              • Я не знаю пхп просто
                                Ответить
                            • вот так
                              https://www.logicbig.com/how-to/code-snippets/jcode-java-introspector.html
                              Ответить
                        • Если перепутать in и of, то можно случайно пробежаться по элементам структуры в жопаскрипте
                          Ответить
                          • Угадайте, для чего в жопоскрипте метод hasOwnProperty.
                            Ответить
                            • А хуй его знает.
                              Ответить
                              • Но ведь хуй — луашник.
                                Ответить
                                • тогда он наверняка умеет в
                                  local petushok = {grebeshok = 'zolotoy', golovyshka = 'maslana'}
                                  petushok['borodushka'] = 'masljana'
                                  
                                  for k,v in pairs(petushok) do
                                  	print(k)
                                  end
                                  Ответить
                            • чтобы проверить откель у пацана пропертя: своя-ли, или у папки отжал
                              Ответить
                          • Именно поэтому я за «PHP».
                            Ответить
          • > эсемель
            Дискотека 2000-ых, XML, доткомы, чеки от Yahoo

            https://www.youtube.com/watch?v=pcr8kBeA_kE
            Ответить

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