How to deal with Python ~ static typing? [closed]

11
задан Etam 20 October 2010 в 09:28
поделиться

2 ответа

Нравится ли вам это в Python?

Это часть Python. Глупо любить в Python.

У вас есть пример, когда это помогло в большом проекте?

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

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

Разве это не подвержено ошибкам?

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

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

5
ответ дан 3 December 2019 в 01:44
поделиться

Многие шаблоны (например, из GoF) не нужны или могут быть реализованы с меньшими усилиями в языках с динамической типизацией с функциональным вкусом. На самом деле, многие шаблоны «встроены» в python, поэтому, если вы пишете короткий и «питоновский» код, вы получите все преимущества бесплатно. Вам не нужны Iterator, Observer, Strategy, Factory Method, Abstract Factory и куча других паттернов, которые распространены в Java или C++.

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

2
ответ дан 3 December 2019 в 01:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: