Рубрики
Без рубрики

Типы: Когда я использую, когда нет.

Для больших приложений я использую типы. Помечено программированием, функциональностью, java, языками.

Вступление

Ниже приведена моя личная точка зрения 🙂

Если я напишу одностраничную программу, я не возражаю против отсутствия типов, нулевых типов, -1 типов, и я доволен этим .

Если я напишу более крупное приложение, управляемое несколькими программистами команды, которое, как ожидается, будет поддерживаться, я считаю, что типы должны быть обязательными! Я все еще доволен этим!

Когда мне нравятся типы

Сегодня в современных языках есть вывод типа , поэтому набранный код выглядит очень лаконично, как и нетипизированный код, Scala, Haskell, OCaml, Kotlin, ELM , лаконичный типизированный код в значительной степени красив и правилен!

Когда мне не нравятся типы

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

Вывод типа + Типы => Краткий читаемый код!

Но все же иногда вы обнаруживаете, что ждете компилятора, я обычно беру кофе:) но это похоже на менее приятное время .

Снижение производительности при выводе типа

Вы платите цену во время компиляции. Как упоминалось ранее, Я предпочитаю платить кому-то за компиляцию, чем платить кому-то за чтение и непонимание кода.

Программы, которые трудно понять, также компилируются медленнее.

Так что, если вы напишете читаемый код, он будет компилироваться быстрее 😉

Параметрический полиморфизм

Параметрический полиморфизм: Тот же подтип [A] для контейнера, который мы определили.

Массив[A] Таким образом, у вас может быть одна реализация, которая что-то делает с массивом и использует его для другого типа – полиморфизм .

Полиморфизм подтипов

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

Полиморфизм подтипов – большой клубок грязевого кода, при прохождении массива существует несколько типов.

Простая система Ввода

Как в java мы по-прежнему получаем так много пользы от инструментов , от того, что делают наши функции, как построена программа.

Системы простого типа дают нам отличный инструментарий!

Простые системы типов предоставляют нам отличную документацию, проверенную компилятором!

Вам нужно объяснить компилятору, что вы имеете в виду под этими языками вывода без типов.

Богатая система Типов

(например, scala, ocaml, haskell).

Богатые системы типов позволяют нам иметь чистый и простой код!

Это звучит неестественно, но, например, дженерики для выражения единого кода, который может использоваться полиморфно по типам, повторное использование кода. Я возвращаю Int, Мне все равно, я возвращаю A но я возвращаюсь A .

Системы С Богатым Типом Обнаруживают Ошибки

Ложь: Если он компилируется, то работает!

Я не отношусь к этому как к истине. Но многие ошибки просто исчезают:

  1. Исключение нулевого указателя, я не помню, чтобы у меня было такое с момента использования Scala.
  2. Неопределенное – это не функция, забудьте об этом с помощью ELM.
  3. Вводящее в заблуждение имя переменной: это был номер телефона но я получил электронное письмо.
  4. Забудьте изменить имя вызывающего абонента после мини-рефакторинга.

Резюме

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

Оригинал: “https://dev.to/tomerbendavid/types-when-i-use-when-i-dont-1p65”