Building Modular Functions for Reusability
Focus on creating modular and reusable functions to foster clean code and reduce redundancy.
0 likes
175 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)"
}
]
}