Си диез / Говнокод #26036 Ссылка на оригинал

0

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

)))00

Запостил: neonmystery neonmystery, (Updated )

Комментарии (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?view=netframework-4.8
                Ответить
                  • типизация, автогенерация проксиклассов, валидация из коробки, буээээ
                    Ответить
                      • Отсутствие в 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.
                            Ответить
                              • >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.
                                          Ответить
              • Вообще в приведеннном мною коде знание о том, что есть атрибут 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 в няшной нету, да он не нужен), потому я конечно такого не хочу.

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

                        Или например 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 сум - Птицы Пап
                                Ответить
                      • Если перепутать in и of, то можно случайно пробежаться по элементам структуры в жопаскрипте
                        Ответить
                              • тогда он наверняка умеет в
                                local petushok = {grebeshok = 'zolotoy', golovyshka = 'maslana'}
                                petushok['borodushka'] = 'masljana'
                                
                                for k,v in pairs(petushok) do
                                	print(k)
                                end
                                Ответить
                          • чтобы проверить откель у пацана пропертя: своя-ли, или у папки отжал
                            Ответить

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

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


    8