The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Релиз языка программирования PHP 8.0"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Подсказка: Доступны два режима работы форума: "Раскрыть нити" и "Свернуть нити".
. "Релиз языка программирования PHP 8.0" +3 +/
Сообщение от Ordu (ok), 27-Ноя-20, 01:10 
> Простейший пример.
> Прилетают данные в JSON от нескольких источников, которые мне неподконтрольны. Там одни
> и те же поля, но кто-то отдаёт их строками, кто-то числами,
> как попало, и никаких гарантий, что завтра не сделают по-другому, не.

Про схему json никто из вас не слышал, конечно?

У вас вообще вся система выстроена как нетипизированная, и естественно в таком варианте получить бонусы от типизации сложно. Точнее, не то чтоб сложно, но чтобы получить бонусы, надо мыслить типизированно.

Типизируй json. Парси json не в json-объект, а в типизированные структуры, согласно схеме. Тут очень полезно будет найти что-нибудь, что будет генерить декларации типов на основании схемы json, или схему json'а на основании деклараций типов (я не могу порекомендовать что-либо конкретное, посколько не знаю, разве если ты пишешь на rust, но если ты пишешь на нём, ты уже знаешь все нужные инструменты). Это приведёт к тому, что в рантайме проверки типов будут выполняться однократно, в процессе парсинга json'а, весь остальной код сможет легко полагаться на статические типы. Что мало того, что быстрее работает, так и ещё избавляет от целых классов рантайм ошибок, посредством статического анализа сорцов.

Организовав валидацию json'а, посылай всех "неподконтрольных", у кого json не проходит валидацию схемой, далеко и надолго. Если послать -- не вариант, то парся json, обрабатывай ошибки парсинга связанные с типизацией, пробуй сконвертать типы, когда они не соответствуют схеме. Таким образом ты сможешь отделить валидацию входящих данных от их использования, тебе же самому будет лучше, потому как декларация данных отдельно, валидация данных отдельно, а логика работы с данными чиста и незамутнена никакими тайпкастами и эксепшнами типа invalid input.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Релиз языка программирования PHP 8.0, opennews, 26-Ноя-20, 18:15  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру