Необходимы интерфейсы в JavaScript?

Сколько стоит час процессорного времени?

, Сколько делает час времени программиста, стоят?

22
задан kangax 14 September 2009 в 04:09
поделиться

3 ответа

Динамические языки часто поощряют Duck Typing , в котором методы объекта определяют способ его использования, а не явный контракт (например, интерфейс).

10
ответ дан 29 November 2019 в 05:43
поделиться

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

4
ответ дан 29 November 2019 в 05:43
поделиться

То же самое для PHP; вам действительно не нужны интерфейсы. Но они существуют для архитектурных нужд. В PHP вы можете указать подсказки типа для функций, которые могут быть полезны.

Во-вторых, интерфейс - это контракт. Это формальный договор, что все объекты из этого интерфейса имеют эти функции . Лучше убедиться, что ваши классы соответствуют этим требованиям, чем помнить: « мм, этот класс имеет isEnabled () , а другой - checkIfEnabled () ». Интерфейсы помогают стандартизировать. Другим, работающим с производным объектом, не нужно проверять, является ли имя isEnabled или checkIfEnabled (лучше позволить интерпретатору уловить эти проблемы).

3
ответ дан 29 November 2019 в 05:43
поделиться
Другие вопросы по тегам:

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