[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Строгая типизация и ее преимущества
rapik
Всем привет.

как известно строгая типизация была введена в PHP 7, благодаря ей появилась возможность указывать типы аргументов функций(методов) и тип возвращаемого значения.

Но зачем это нужно в плане практики применения? Я вижу лишь один + это командная разработка, что бы на каждом участке системы были четко указаны возможности ее реализации.

Можете пояснить почему типизация, как говорят вдохнула жизнь в php?
Valick
При строгой типизации отпадает необходимость постоянных проверок как аргументов, так и возвращаемого значения, а так же типизация позволяет котролировать корректность данных на уровне интерпретатора РНР.

_____________
Стимулятор ~yoomoney - 41001303250491
rapik
корректность данных на уровне интерпретатора РНР.

можете развернуть мысль?
для чего это нужно?
killer8080
Цитата (rapik @ 13.06.2022 - 13:04)
как известно строгая типизация была введена в PHP 7, благодаря ей появилась возможность указывать типы аргументов функций(методов) и тип возвращаемого значения.

Нет, ты путаешь понятия в PHP мягкая типизация была и остаётся по сей день, кстати в C/C++ также не строгая типизация wink.gif
В общем типизация состоит из 3- х составляющих
1 статическая/динамическая
2 строгая/мягкая
3 явная/не явная

В PHP типизация динамическая, мягкая, не явная. То что в языке появилась возможность указывать типы в сигнатурах функций и методов, ничего не меняет так как эта возможность опциональна, ЯП не обязывает программиста ее применять.
Чем хороша явная типизация - предсказуемостью и читабельностью кода, ты гарантировано знаешь что прилетит на вход, отпадает надобность в дополнительных проверках.
Valick
Цитата (rapik @ 13.06.2022 - 15:25)
можете развернуть мысль?
для чего это нужно?

Это нужно для получения корректного ответа.
Например если бизнесс логика построена на основании того что переменная должна быть integer, а в метод по ошибке передали string, то результат может быть искажён. И это может продолжаться очень долго, пока такая ошибка не всплывёт. При строгой типизации аргументов, интерпретатор на это отреагирует сразу, скрипт просто упадёт и ошибку будет не трудно обнаружить.

_____________
Стимулятор ~yoomoney - 41001303250491
rapik
killer8080
Нет, ты путаешь понятия в PHP мягкая типизация была и остаётся по сей день, кстати в C/C++ также не строгая типизация

этот текст из статьи

https://sergeymukhin.com/blog/strogaya-tipi...qk4cts712479046


killer8080, Valick

я вот что-то понять не могу, это новшество больше необходимо для коллективной работы?

В любом случае программист должен знать, как у него функции работают и в каком виде аргументы должны подаваться


Valick
Цитата (rapik @ 14.06.2022 - 09:46)
В любом случае программист должен знать, как у него функции работают и в каком виде аргументы должны подаваться

Подозреваю, что вы не писали код больше 100 строк smile.gif
Без разницы коллективная или одиночная работа. Просто возмите за правило типизировать аргументы и возвращаемые значения. Сразу всплывут куча ошибок, включая ошибки в алгоритмах.
Решив которые вы сделаете код лучше, чище и стрессоустойчивее.

_____________
Стимулятор ~yoomoney - 41001303250491
twin
Это хорошая практика, но я бы не советовал увлекаться ей ниже 8-й версии PHP, так как только в ней появился тип mix. Довольно гемморно придется, если потребуются нестрогие типы, допустим работа с кэшем, где и на входе и на выходе могут быть любые типы.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
rapik
Это хорошая практика, но я бы не советовал увлекаться ей ниже 8-й версии PHP, так как только в ней появился тип mix. Довольно гемморно придется, если потребуются нестрогие типы, допустим работа с кэшем, где и на входе и на выходе могут быть любые типы.

но тип можно просто не задавать, если идет мультизначение?
Valick
Цитата (rapik @ 17.06.2022 - 14:59)
но тип можно просто не задавать, если идет мультизначение?

можно, но это плохая практика
лучше применить DTO, что бы отутвие типов небыло разбросано по всему коду, а было где-то в единственном месте.

_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.