Building Modular Functions for Reusability
Focus on creating modular and reusable functions to foster clean code and reduce redundancy.
0 likes
4 views
Rule Content
{ "title": "Building Modular Functions for Reusability", "description": "Focus on creating modular and reusable functions to foster clean code and reduce redundancy.", "category": "JavaScript Cursor Rules", "rules": [ { "name": "function-length-limit", "description": "Limit function length to enhance readability and maintainability.", "applyTo": "src/**/*.js", "maxLines": 50 }, { "name": "single-responsibility-principle", "description": "Ensure each function performs a single, well-defined task.", "applyTo": "src/**/*.js", "pattern": "function\\s+\\w+\\s*\\(.*\\)\\s*{[^}]*}", "validate": "functionBody => countStatements(functionBody) <= 10" }, { "name": "avoid-nested-functions", "description": "Discourage the use of nested functions to maintain modularity.", "applyTo": "src/**/*.js", "pattern": "function\\s+\\w+\\s*\\(.*\\)\\s*{[^}]*function\\s+\\w+\\s*\\(.*\\)\\s*{[^}]*}" }, { "name": "prefer-arrow-functions", "description": "Encourage the use of arrow functions for concise syntax and lexical scoping.", "applyTo": "src/**/*.js", "pattern": "function\\s+\\w+\\s*\\(.*\\)\\s*{[^}]*}", "suggest": "Replace with arrow function syntax." }, { "name": "use-const-for-immutable", "description": "Use 'const' for variables that are not reassigned to promote immutability.", "applyTo": "src/**/*.js", "pattern": "var\\s+\\w+\\s*=\\s*[^;]+;", "suggest": "Replace 'var' with 'const' if the variable is not reassigned." }, { "name": "consistent-naming-convention", "description": "Use camelCase for function names to maintain consistency.", "applyTo": "src/**/*.js", "pattern": "function\\s+[A-Z]\\w*\\s*\\(.*\\)\\s*{[^}]*}", "suggest": "Rename function to use camelCase." }, { "name": "modular-file-structure", "description": "Organize functions into separate modules based on functionality.", "applyTo": "src/**/*.js", "pattern": "function\\s+\\w+\\s*\\(.*\\)\\s*{[^}]*}", "validate": "functionName => isFunctionInCorrectModule(functionName)" }, { "name": "avoid-magic-numbers", "description": "Replace magic numbers with named constants for clarity.", "applyTo": "src/**/*.js", "pattern": "\\b\\d+\\b", "suggest": "Define a constant with a descriptive name for this number." }, { "name": "use-descriptive-parameters", "description": "Use descriptive names for function parameters to enhance readability.", "applyTo": "src/**/*.js", "pattern": "function\\s+\\w+\\s*\\(([^)]*)\\)\\s*{[^}]*}", "validate": "parameters => parameters.every(param => isDescriptive(param))" }, { "name": "document-functions", "description": "Provide JSDoc comments for all functions to improve maintainability.", "applyTo": "src/**/*.js", "pattern": "function\\s+\\w+\\s*\\(.*\\)\\s*{[^}]*}", "validate": "functionName => hasJSDocComment(functionName)" } ] }