Существующая практика следует закону Постеля: "Будьте консервативны в том, что вы делаете; будьте либеральны в том, что вы принимаете". от других».
В этом случае это означает, что документация вашего плагина должна показывать правильное использование, но она должна допускать неправильное использование. Мудрость этого подхода должна быть очевидна из изучения успеха HTML по сравнению с любой другой гипертекстовой системой, которая появилась раньше или была изобретена позже. Большинство неудач были связаны с кабалой и дисциплиной, где малейшая ошибка приводила к тому, что документ становился нечитаемым.
Точно так же, как люди регулярно пишут плохой HTML, некоторые из ваших пользователей, вероятно, передают вам неверный ввод. Скажем, у вас есть логическое свойство, задокументированное как "истина" или "ложь". Что делать, если вы получите 1 или 0? Должен ли он рухнуть или просто справиться? Закон Постеля гласит: справляться. Что делать, если вы получите -1? Опять же, справьтесь, например, выбрав правило C, согласно которому ненулевое значение является «истинным». Переходя к вашему конкретному вопросу, если логическое свойство задокументировано как доступное только для чтения, и кто-то дает ему значение, ваш плагин должен просто съесть его.
Вся эта специальная обработка случаев требует от вас большего количества кода, но делает ваш плагин более простым в использовании и, следовательно, более популярным.
Другая половина закона Постела означает, что свойства только для чтения должны иметь только задокументированные значения. Опять же, возьмем случай логического свойства: если ваши документы говорят, что значение «истинно» или «ложно», никогда не возвращайте вместо этого «1», даже если JavaScript понимает, что это истинное значение. Следуйте своим собственным спецификациям, даже если вы пишете код, который позволяет другим безнаказанно нарушать его.
Кстати, мне не нравится идея свойств только для записи. Вместо этого вы должны сделать эти функции. То есть:
pluginInstance.setWriteOnlyProperty(5);
нет:
pluginInstance.writeOnlyProperty = 5;
Переменные только для чтения — это хорошо понятные вещи. Переменные только для записи встречаются редко. Единственный раз, когда я когда-либо видел его, был в маленьком 8-битном микроконтроллере, и причина этого была ясна из-за конструкции оборудования. Я не вижу места для таких хороших оправданий в программном обеспечении.
person
Warren Young
schedule
09.10.2009