Creating Documentation Standards for JavaScript Projects
Establish comprehensive documentation practices that support team collaboration and knowledge sharing across JavaScript projects.
0 likes
41 views
Rule Content
{ "title": "Creating Documentation Standards for JavaScript Projects", "description": "Establish comprehensive documentation practices that support team collaboration and knowledge sharing across JavaScript projects.", "category": "JavaScript Cursor Rules", "rules": [ { "name": "Use JSDoc for Function Documentation", "description": "Annotate all functions and methods with JSDoc comments to provide clear descriptions, parameter details, and return types.", "examples": [ { "before": "function add(a, b) {\n return a + b;\n}", "after": "/**\n * Adds two numbers together.\n * @param {number} a - The first number.\n * @param {number} b - The second number.\n * @returns {number} The sum of the two numbers.\n */\nfunction add(a, b) {\n return a + b;\n}" } ] }, { "name": "Document Classes and Constructors", "description": "Provide JSDoc comments for all classes and their constructors, detailing their purpose and usage.", "examples": [ { "before": "class User {\n constructor(name, email) {\n this.name = name;\n this.email = email;\n }\n}", "after": "/**\n * Represents a user.\n * @class\n */\nclass User {\n /**\n * Creates an instance of User.\n * @param {string} name - The user's name.\n * @param {string} email - The user's email address.\n */\n constructor(name, email) {\n this.name = name;\n this.email = email;\n }\n}" } ] }, { "name": "Include Module-Level Documentation", "description": "At the beginning of each module, include a JSDoc comment summarizing the module's purpose and functionality.", "examples": [ { "before": "// utility.js\nfunction helper() {\n // ...\n}", "after": "/**\n * Utility functions for common operations.\n * @module utility\n */\n\nfunction helper() {\n // ...\n}" } ] }, { "name": "Use Inline Comments for Complex Code", "description": "Add inline comments to explain complex logic or algorithms within functions to enhance readability.", "examples": [ { "before": "function calculateFactorial(n) {\n if (n === 0) return 1;\n return n * calculateFactorial(n - 1);\n}", "after": "function calculateFactorial(n) {\n // Base case: factorial of 0 is 1\n if (n === 0) return 1;\n // Recursive case: n! = n * (n-1)!\n return n * calculateFactorial(n - 1);\n}" } ] }, { "name": "Document Object Properties", "description": "Use JSDoc to describe the properties of objects, especially for complex data structures.", "examples": [ { "before": "const user = {\n name: 'John Doe',\n email: 'john.doe@example.com'\n};", "after": "/**\n * @typedef {Object} User\n * @property {string} name - The user's name.\n * @property {string} email - The user's email address.\n */\n\n/** @type {User} */\nconst user = {\n name: 'John Doe',\n email: 'john.doe@example.com'\n};" } ] }, { "name": "Maintain Updated README Files", "description": "Ensure that each project contains a README file with up-to-date information on setup, usage, and contribution guidelines.", "examples": [ { "before": "No README file present.", "after": "# Project Name\n\n## Description\n\nA brief description of the project.\n\n## Installation\n\nSteps to install the project.\n\n## Usage\n\nInstructions on how to use the project.\n\n## Contributing\n\nGuidelines for contributing to the project." } ] }, { "name": "Use Consistent Comment Style", "description": "Adopt a consistent style for comments throughout the codebase to improve readability and maintainability.", "examples": [ { "before": "//This function does something\nfunction doSomething() {\n //do stuff\n}", "after": "// This function performs a specific task.\nfunction doSomething() {\n // Execute the task.\n}" } ] }, { "name": "Leverage TypeScript for Enhanced Documentation", "description": "Utilize TypeScript to enforce type safety and generate comprehensive documentation using tools like TSDoc.", "examples": [ { "before": "function greet(name) {\n return 'Hello, ' + name;\n}", "after": "/**\n * Greets a user by name.\n * @param {string} name - The name of the user.\n * @returns {string} A greeting message.\n */\nfunction greet(name: string): string {\n return `Hello, ${name}`;\n}" } ] } ] }