From 4e9e8f52acdba97d7f10d16ba440904d9c709425 Mon Sep 17 00:00:00 2001 From: Krzysztof Date: Wed, 16 Nov 2016 20:13:18 +0100 Subject: [PATCH] doc: Documenting Code clean up --- .../_static/doc-code-documentation-inline.png | Bin 52513 -> 52554 bytes docs/documenting-code.rst | 121 +++++++++--------- 2 files changed, 57 insertions(+), 64 deletions(-) diff --git a/docs/_static/doc-code-documentation-inline.png b/docs/_static/doc-code-documentation-inline.png index 72bf22f156224e4e32e7934828ccc73f15cea67e..9de5d51a2bd0c0fca7f0cb53b8b0a6c3ff9ed38c 100644 GIT binary patch delta 14525 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 Ryg_-RB&Q}@BW)h?{{d_m+xP$g delta 14441 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 T@vzEQFV_bd73nHTv%voYSvlc& diff --git a/docs/documenting-code.rst b/docs/documenting-code.rst index 72e3cea147..a73e26de4b 100644 --- a/docs/documenting-code.rst +++ b/docs/documenting-code.rst @@ -40,98 +40,91 @@ Go for it! When writing code for this repository, please follow guidelines below. - 1. Document all building blocks of code: functions, structs, typedefs, enums, macros, etc. Provide enough information on purpose, functionality and limitations of documented items, as you would like to see them documented when reading the code by others. +1. Document all building blocks of code: functions, structs, typedefs, enums, macros, etc. Provide enough information on purpose, functionality and limitations of documented items, as you would like to see them documented when reading the code by others. - 2. Documentation of function should describe what this function does. If it accepts input parameters and returns some value, all of them should be explained. +2. Documentation of function should describe what this function does. If it accepts input parameters and returns some value, all of them should be explained. - 3. Do not add a data type before parameter or any other characters besides spaces. All spaces and line breaks are compressed into a single space. If you like to break a line, then break it twice. +3. Do not add a data type before parameter or any other characters besides spaces. All spaces and line breaks are compressed into a single space. If you like to break a line, then break it twice. - .. image:: _static/doc-code-function.png - :align: center - :alt: Sample function documented inline and after rendering + .. image:: _static/doc-code-function.png + :align: center + :alt: Sample function documented inline and after rendering - 4. If function has void input or does not return any value, then skip ``@param`` or ``@return`` +4. If function has void input or does not return any value, then skip ``@param`` or ``@return`` - .. image:: _static/doc-code-void-function.png - :align: center - :alt: Sample void function documented inline and after rendering + .. image:: _static/doc-code-void-function.png + :align: center + :alt: Sample void function documented inline and after rendering - 5. When documenting members of a ``struct``, ``typedef`` or ``enum``, place specific comment like below after each member. +5. When documenting a ``define`` as well as members of a ``struct`` or ``enum``, place specific comment like below after each member. - .. image:: _static/doc-code-member.png - :align: center - :alt: Sample of member documentation inline and after rendering + .. image:: _static/doc-code-member.png + :align: center + :alt: Sample of member documentation inline and after rendering + + +6. To provide well formatted lists, break the line after command (like ``@return`` in example below). + + :: + + * + * @return + * - ESP_OK if erase operation was successful + * - ESP_ERR_NVS_INVALID_HANDLE if handle has been closed or is NULL + * - ESP_ERR_NVS_READ_ONLY if handle was opened as read only + * - ESP_ERR_NVS_NOT_FOUND if the requested key doesn't exist + * - other error codes from the underlying storage driver + * - 6. To provide well formatted lists, break the line after command (like ``@return`` in example below). - - .. code-block:: c - - ... - * - * @return - * - ESP_OK if erase operation was successful - * - ESP_ERR_NVS_INVALID_HANDLE if handle has been closed or is NULL - * - ESP_ERR_NVS_READ_ONLY if handle was opened as read only - * - ESP_ERR_NVS_NOT_FOUND if the requested key doesn't exist - * - other error codes from the underlying storage driver - * - ... - - 7. Overview of functionality of documented header file, or group of files that make a library, should be placed in the same directory in a separate ``README.rst`` file. If directory contains header files for different APIs, then the file name should be ``apiname-readme.rst``. +7. Overview of functionality of documented header file, or group of files that make a library, should be placed in the same directory in a separate ``README.rst`` file. If directory contains header files for different APIs, then the file name should be ``apiname-readme.rst``. Go one extra mile ----------------- There is couple of tips, how you can make your documentation even better and more useful to the reader. - 1. Add code snippets to illustrate implementation. To do so, enclose snippet using ``@code{c}`` and ``@endcode`` commands. +1. Add code snippets to illustrate implementation. To do so, enclose snippet using ``@code{c}`` and ``@endcode`` commands. - .. code-block:: c + :: - ... - * - * @code{c} - * // Example of using nvs_get_i32: - * int32_t max_buffer_size = 4096; // default value - * esp_err_t err = nvs_get_i32(my_handle, "max_buffer_size", &max_buffer_size); - * assert(err == ESP_OK || err == ESP_ERR_NVS_NOT_FOUND); - * // if ESP_ERR_NVS_NOT_FOUND was returned, max_buffer_size will still - * // have its default value. - * @endcode - * - ... + * + * @code{c} + * // Example of using nvs_get_i32: + * int32_t max_buffer_size = 4096; // default value + * esp_err_t err = nvs_get_i32(my_handle, "max_buffer_size", &max_buffer_size); + * assert(err == ESP_OK || err == ESP_ERR_NVS_NOT_FOUND); + * // if ESP_ERR_NVS_NOT_FOUND was returned, max_buffer_size will still + * // have its default value. + * @endcode + * - The code snippet should be enclosed in a comment block of the function that it illustrates. + The code snippet should be enclosed in a comment block of the function that it illustrates. - 2. To highlight some important information use command ``@attention`` or ``@note``. +2. To highlight some important information use command ``@attention`` or ``@note``. - .. code-block:: c + :: - ... - * - * @attention - * 1. This API only impact WIFI_MODE_STA or WIFI_MODE_APSTA mode - * 2. If the ESP32 is connected to an AP, call esp_wifi_disconnect to disconnect. - * - ... + * + * @attention + * 1. This API only impact WIFI_MODE_STA or WIFI_MODE_APSTA mode + * 2. If the ESP32 is connected to an AP, call esp_wifi_disconnect to disconnect. + * - Above example also shows how to use a numbered list. + Above example also shows how to use a numbered list. - 3. Use markdown to make your documentation even more readable. You will add headers, links, tables and more. +3. Use markdown to make your documentation even more readable. You will add headers, links, tables and more. - .. code-block:: c + :: - ... - * - * [ESP32 Technical Reference](http://espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_en.pdf) - * - ... + * + * [ESP32 Technical Reference](http://espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_en.pdf) + * - .. note:: +.. note:: Code snippets, notes, links, etc. will not make it to the documentation, if not enclosed in a comment block associated with one of documented objects. - 5. Prepare one or more complete code examples together with description. Place them in a separate file ``example.rst`` in the same directory as the API header files. If directory contains header files for different APIs, then the file name should be ``apiname-example.rst``. +5. Prepare one or more complete code examples together with description. Place them in a separate file ``example.rst`` in the same directory as the API header files. If directory contains header files for different APIs, then the file name should be ``apiname-example.rst``. Put it all together -------------------