Исходя из мира .NET. У меня есть сложная документация для фреймворков javascript. В качестве примера я возьму «Node.js MongoDB Driver API». Существует объект Collection
, который имеет метод count()
. Вот ссылка на него: http://mongodb.github.io/node-mongodb-native/2.0/api/Collection.html#countКак читать документацию фреймворков javascript?
Оттуда я вижу, что count()
принимает три параметра:
count(query, options, callback)
Сначала я думал, что я должен предоставить все три из них для того, чтобы использовать этот метод. Тем не менее, в примере кода для этого метода я вижу, что он иногда использует только один, а иногда только один параметр:
// Perform a total count command
collection.count(function(err, count) {
test.equal(null, err);
test.equal(4, count);
// Peform a partial account where b=1
collection.count({b:1}, function(err, count) {
test.equal(null, err);
test.equal(1, count);
db.close();
});
В первом случае она вызывает подсчет() только с callback
параметром а во втором оно обеспечивает options
и callback
. Нет примера использования всех трех параметров, как указано в описании исходного метода.
Мой вопрос в том, как можно знать такие вещи? Я имею в виду, если бы в этой документации не было примеров, как бы я знал, что это будет возможно? Также как я могу быть уверенным, что есть другие возможные способы использования метода, если это не покрывается примерами, подобными этому?
Я знаю, что вполне законно вызывать функции javascript только с предоставленными некоторыми параметрами, и функция должна иметь возможность обрабатывать его на основе реализации. Но, как потребитель API, я не хочу заглядывать в реализацию функции, чтобы выяснить, какую комбинацию параметров я могу пройти. Мне кажется, что эта документация не завершена (я взял этот драйвер mongodb как пример, но я столкнулся с подобной проблемой с другими документами js framework).
Есть ли какие-то рассуждения, которые я должен иметь при чтении документации по javascript, как думать об этом при попытке понять API разных фреймворков, как узнать, что возможно, а что нет и т. Д.??
Я предполагаю, что предполагается, что вы знакомы с Javascript. Если параметр не вводится в функцию, он не определен в функции. Если параметров больше, чем определено, они игнорируются. Кроме того, они могут быть доступны через переменную аргументов. Это недостаток документации, если он не специфицирует все его параметры, но я нахожу, что они всегда это делают. – tmcgoo
Например, пример подсчета, который вы дали, четко перечисляет его параметры. И это следует за общим шаблоном проектирования, данными/опциями/обратным вызовом. e. coll.count ({b: 1}, {limit: true, skip: false, hint: 'derp'}, function (err, count) {}); – tmcgoo