Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Writing Documentation for Boost - Documentation Structure

Boost , ,

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Writing Documentation for Boost

Documentation Structure

Introduction
Standards Conforming Documentation
Document elements
Summary
Requirements
Detailed specifications
References to the Standard C++ library
References to the Standard C library
Other conventions
Type descriptions
More Information
Function semantic element explanations
Requires
Effects
Postconditions
Returns
Throws
Complexity
Rationale
Web Reference Documentation
Footnotes

Introduction

Boost не требует какой-либо конкретной структуры документации. Однако есть некоторые важные соображения, которые влияют на содержание и структуру. Например, многие библиотеки Boost предлагаются для включения в C++. Стандартные, поэтому их написание с текстом, подходящим для включения в стандарт, может быть полезным. Кроме того, к документации библиотеки Boost часто обращаются через Всемирную паутину, в том числе через поисковые системы, поэтому контекст часто важен для каждой страницы. Наконец, библиотеки Boost должны предоставлять дополнительную документацию, такую как вводный, учебный, примерный и рациональный контент. Имея это в виду, мы предлагаем следующие рекомендации по увеличению документации библиотеки.

Standards Conforming Documentation

Структура документации, необходимая для C++ Стандарт является эффективным способом описания технических характеристик библиотеки. Этот формат знаком многим пользователям Boost и гораздо точнее, чем большинство специальных форматов. Нижеследующее описание основано на подразделе 17.3 Стандарта. (Обратите внимание, что хотя окончательные предложения по стандарту должны включать полную стандартную формулировку, которую комитет не будет делать для вас, этот уровень детализации не ожидается от документации библиотеки Boost.)

Document elements

Каждый документ содержит следующие элементы, если применимо(1):

Summary

Резюме представляет собой синопсис категории и вводит подзаголовки первого уровня. Каждый подзаголовок также содержит резюме, в котором перечислены заголовки, указанные в подзаголовке, и объекты библиотеки, представленные в каждом заголовке.

Пункты с пометкой "Примечание(ы):" или "Пример(ы):" являются информативными, другие пункты являются нормативными.

Резюме и подробные спецификации представлены в порядке:

  • Макрос
  • ценности
  • Типы
  • Классы
  • Функции
  • Объекты

Requirements

Библиотеку можно расширить с помощью программы C++. Каждый пункт, в зависимости от обстоятельств, описывает требования, которым должны соответствовать такие расширения. Такие расширения, как правило, являются одним из следующих:

  • Шаблонные аргументы
  • Производные классы
  • Контейнеры, итераторы и/или алгоритмы, соответствующие стандарту интерфейса

Требования к интерфейсным конвенциям сформулированы как можно шире. Вместо того, чтобы констатировать, что «<class X>должно определить функцию<operator++()>члена», интерфейс требует «для любого объекта<x>из<class X>,<++x>определен». То есть, является ли оператор участником, не уточняется.

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

Требования к аргументам шаблона иногда упоминаются по имени.

В некоторых случаях семантические требования представлены в виде кода C++. Такой код предназначен как спецификация эквивалентности конструкции другой конструкции, а не обязательно как способ реализации конструкции.(2)

Detailed specification

Каждая детальная спецификация содержит следующие элементы:

  • Название и краткое описание
  • Синопсис (классовое определение или прототип функции, в зависимости от ситуации)
  • Ограничения на шаблонные аргументы, если таковые имеются
  • Описание классовых инвариантов
  • Описание функциональной семантики

Описание функций членов класса следует порядку (при необходимости)(3):

  • Конструктор(ы) и деструктор
  • Функции копирования и присвоения
  • Функции сравнения
  • Функции модификатора
  • Функции наблюдателя
  • Операторы и другие нечленские функции

Описание функциональной семантики содержит следующиеэлементы(при необходимости)(4):

Requires: the preconditions for calling the function
Effects: the actions performed by the function
Postconditions: the observable results established by the function
Returns: a description of the value(s) returned by the function
Throws: any exceptions thrown by the function, and the conditions that would cause the exception
Complexity: the time and/or space complexity of the function
Rationale: the rationale for the function's design or existence

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

References to the C++ Standard library

References to the C Standard library

Other conventions

Эти соглашения предназначены для описания определенных типов реализации и функций членов.

Type descriptions

Подпункты «Требования» могут описывать имена, которые используются для указания ограничений на аргументы шаблона.

More Information

Function semantic element explanations

Описание функционального семантического элементавышевзято непосредственно из стандарта C++ и является довольно кратким. Вот более подробное объяснение каждого из элементов.

Обратите внимание на использование тега<<code> ... </code>>шрифта, чтобы отличить фактическое использование C++ от английской прозы.

Requires

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

 
void limit( int * p, int min, int max );
Requires: p != 0 && min <= max

Требования, уже применяемые правилами языка C++ (например, тип аргументов), не повторяются в пунктах Требований.

Effects

Действия, выполняемые функцией, описаны либо в прозе, либо в C++. Описание в прозе часто менее ограничивает реализаторов, но часто менее точно, чем код C++.

Если эффект указан в одном из других элементов, в частностипостусловий,возвратовилибросков, он также не описан в пунктеэффектов. Наличие только одного описания гарантирует наличие одной и только одной спецификации и, таким образом, исключает риск расхождения.

Postconditions

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

 
void make_zero_if_negative( int & x );
Postcondition: x >= 0

Returns

Значение, возвращаемое функцией, обычно в виде выражения C++. Например:

int sum( int x, int y );
Returns: x + y

Только укажите значение возврата; тип уже продиктован правилами языка C++.

Throws

Укажите как тип брошенного исключения, так и условие, которое вызывает выброс исключения. Например, класс<std::basic_string>определяет:

 
void resize(size_type n, charT c);
Throws: length_error if n > max_size().

Complexity

Определение сложности функции во времени и/или пространстве часто нежелательно, поскольку она чрезмерно ограничивает реализаторов и ее трудно правильно определить. Таким образом, сложность часто лучше оставить в качестве проблемы качества реализации.

Однако библиотечный компонент может стать непортативным, если между соответствующими реализациями существуют значительные различия в производительности. Контейнеры являются ярким примером. В этих случаях стоит указать сложность.

Сложность часто указывается в обобщеннойнотации «Big-O».

Rationale

Определение обоснования дизайна или существования функции часто может дать пользователям представление о том, почему библиотека спроектирована именно так. Что еще более важно, это может помочь предотвратить «исправление» чего-то, что не было сломано по мере созревания библиотеки.

Web Reference Documentation

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

  • Describe the enclosing namespace or use fully scoped identifiers.
  • Document required headers for each type or function.
  • Link to relevant tutorial information.
  • Link to related example code.
  • Include the library name.
  • Include navigation elements to the beginning of the documentation.

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

Footnotes

(1) To save space, items that do not apply to a clause are omitted. For example, if a clause does not specify any requirements, there will be no "Requirements" subclause.
(2) Although in some cases the code is unambiguously the optimum implementation.
(3) To save space, items that do not apply to a class are omitted. For example, if a class does not specify any comparison functions, there will be no "Comparison functions" subclause.
(4) To save space, items that do not apply to a function are omitted. For example, if a function does not specify any precondition, there will be no "Requires" paragraph.

Valid HTML 4.01 Transitional

Пересмотрено04 Декабря 200604 December, 2006[ORIG_END] -->

Авторское право и копия; 2001Уильям Э. Кемпф

Распространяется в соответствии с лицензией Boost Software License, Version 1.0. (См. сопроводительный файлLICENSE_1_0.txtили копию по адресуhttp://www.boost.org/LICENSE_1_0.txt)

Статья Writing Documentation for Boost - Documentation Structure раздела может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 06:52:30/0.010469198226929/1