user_of_toster
@user_of_toster

Лучше ли по дефолту качество кода в статически типизированных языках?

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

Плюс типы = документация и код писать легче, не нужно гадать, что подразумевается под каким аргументом. (мое субъективное мнение)
Иначе говоря, можно ли сказать, что в среднем код на статически типизированном языке имеет качество выше, чем код на динамически типизированном языке? Или у соседа просто трава зеленее?
  • Вопрос задан
  • 334 просмотра
Решения вопроса 9
gbg
@gbg Куратор тега Программирование
Любые ответы на любые вопросы
Начнем с того, что типизация статическая, а не статистическая.

Закончим тем, что качество кода - довольно эфемерное понятие, потому что оно очень субъективно и зависит от предпочтений того человека, который читает данный код.

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

Решать о том, делает ли это код лучше в широком смысле - это уже вопрос приоритетов команды, потому что для кого-то лучше тот код, который можно быстро накидать за три дня и который покрывает 80% поставленных задач и приносит прибыль раньше, чем код, который нужно вылизывать две недели.
Ответ написан
BojackHorseman
@BojackHorseman
...в творческом отпуске...
говнокод мультиязычен
Ответ написан
Комментировать
Griboks
@Griboks
Качество кода зависит от программиста, а не от языка.
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега Программирование
software engineer
Статическое типизирование предотвращает путаницу в типах данных и следовательно сокращает количество потенциальных ошибок.
Но к качеству кода это не вообще не относится.

Скажем так - малоквалифицированный разработчик совершит меньше ошибок.
Ответ написан
Комментировать
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
Или у соседа просто трава зеленее?
Да.
Все упирается в компетенцию и опыт. Джуны на любом языке будут косячить, и приведение типов лишь небольшой процент от ошибок.

К вопросу о типах - вряд ли вы будете помнить какого типа переменная была объявлена 3 экрана назад, конкретно в этом месте, по этому в чтении кода и проверке его на потенциальные ошибки это мало помогает.
Опять же, практически любые операции с переменными со временем стараешься прогнать в голове на мистип, и от типизации языка это не зависит, даже я бы сказал что динамика приучает к этому быстрее.
Ответ написан
Комментировать
wataru
@wataru
Разработчик на С++, экс-олимпиадник.
Я думаю в среднем это не влияет. Субъективное ощущение и мифы на эту тему могут возникать, потому что у многих популярных языков с динамической типизацией порог вхождения ниже, чем у многих популярных языков со статической типизацией. Дело не столько в типизации, сколько в совокупности всяких свойств языков.

В итоге в языках с динамической типизацией больше менее квалифицированных новичков, которые пишут борлее плохой код.
Ответ написан
Комментировать
Alexandroppolus
@Alexandroppolus
кодир
По поводу качества сказать не могу, но имея опыт кодинга и на JS, и на TS, согласен что сопровождать проект с типизацией намного легче, имхо. Причем иногда это влияет даже на качество кода - замечал несколько раз, как не получается легко протипизировать идею или конструкцию, котороя при свежем взгляде оказывалась не совсем гармоничной.
Ответ написан
Комментировать
sarapinit
@sarapinit
Точу водой камень
Добавлю еще, что туллинг для статически типизированных языков проще, и качество кода еще поэтому может улучшаться. И от того что компилятор заметил что-то на ранней стадии и от того что инспекции IntellijIdea/Resharper/Rider сработали.
Ответ написан
Комментировать
@AlexSku
Программист по автоматике
Зависит от языка. Напр., в Матлабе можно вообще не заморачиваться, по умолчанию все переменные - матрицы типа double (ничего объявлять вообще не надо).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы