|
@@ -1,125 +0,0 @@
|
|
|
-# Global coding preferences
|
|
|
|
|
-
|
|
|
|
|
-Apply these preferences across all projects unless repository-specific
|
|
|
|
|
-instructions override them.
|
|
|
|
|
-
|
|
|
|
|
-## General philosophy
|
|
|
|
|
-
|
|
|
|
|
-I prefer clean, readable, maintainable code with strong structural discipline,
|
|
|
|
|
-inspired by 42-style constraints but adapted pragmatically to each language,
|
|
|
|
|
-framework, and project.
|
|
|
|
|
-
|
|
|
|
|
-These rules are important, but they are not absolute dogma:
|
|
|
|
|
-- apply them by default
|
|
|
|
|
-- report clearly when code does not follow them
|
|
|
|
|
-- if a deviation is justified, keep it and explain why
|
|
|
|
|
-- if a deviation is not clearly justified, ask whether it should be kept or fixed
|
|
|
|
|
-
|
|
|
|
|
-## Design principles
|
|
|
|
|
-
|
|
|
|
|
-- Prefer simple, readable, maintainable code over clever or overly compact code.
|
|
|
|
|
-- Each function, method, or equivalent unit should have one clear responsibility.
|
|
|
|
|
-- Preserve existing behavior unless explicitly asked to change it.
|
|
|
|
|
-- Avoid unrelated changes during a fix or refactor.
|
|
|
|
|
-- Keep modifications scoped and intentional.
|
|
|
|
|
-
|
|
|
|
|
-## Function and method size
|
|
|
|
|
-
|
|
|
|
|
-- Prefer keeping the core logic of a function or method within 25 useful lines.
|
|
|
|
|
-- Empty lines do not count toward this limit.
|
|
|
|
|
-- Multi-line wrapped statements count as one logical instruction for this rule.
|
|
|
|
|
-- Error handling may extend the total size when necessary, but the main logic
|
|
|
|
|
- should remain compact and easy to understand.
|
|
|
|
|
-- If a unit becomes too large, split it into small helpers.
|
|
|
|
|
-- Use private/internal/file-local helpers when the language supports them.
|
|
|
|
|
-
|
|
|
|
|
-## Line length
|
|
|
|
|
-
|
|
|
|
|
-- Prefer a maximum of 80 characters per line when reasonably possible.
|
|
|
|
|
-- If a line is too long, split it cleanly for readability.
|
|
|
|
|
-- Long calls, conditions, and expressions should be formatted clearly.
|
|
|
|
|
-
|
|
|
|
|
-## Parameters
|
|
|
|
|
-
|
|
|
|
|
-- Prefer no more than 5 parameters per function or method.
|
|
|
|
|
-- If more inputs are needed, group them into a meaningful structure adapted
|
|
|
|
|
- to the language, such as an object, record, struct, dataclass, DTO,
|
|
|
|
|
- config object, or equivalent.
|
|
|
|
|
-
|
|
|
|
|
-## Local variables
|
|
|
|
|
-
|
|
|
|
|
-- Prefer no more than 5 local variables per function or method.
|
|
|
|
|
-- If more local state is needed, consider:
|
|
|
|
|
- - splitting the logic
|
|
|
|
|
- - extracting a helper
|
|
|
|
|
- - introducing a dedicated small structure adapted to the language
|
|
|
|
|
-
|
|
|
|
|
-## Shared and global state
|
|
|
|
|
-
|
|
|
|
|
-- Global state is discouraged.
|
|
|
|
|
-- Prefer explicit data flow through parameters, return values, objects,
|
|
|
|
|
- context structures, dependency injection, or another justified mechanism.
|
|
|
|
|
-- If shared or global state is used, mention it explicitly and justify it.
|
|
|
|
|
-
|
|
|
|
|
-## Comments and documentation
|
|
|
|
|
-
|
|
|
|
|
-- Functions and methods should be documented when their purpose, parameters,
|
|
|
|
|
- return value, or intent are not immediately obvious.
|
|
|
|
|
-- The comment should help explain intent and usage, not restate the code line by line.
|
|
|
|
|
-- Apply the documentation style that fits the language and project conventions
|
|
|
|
|
- (docstring, block comment, JSDoc, Doxygen, XML docs, etc.).
|
|
|
|
|
-- Internal/private helpers are not exempt if their role is unclear.
|
|
|
|
|
-
|
|
|
|
|
-## Readability
|
|
|
|
|
-
|
|
|
|
|
-- Use explicit, consistent, and meaningful names.
|
|
|
|
|
-- Prefer straightforward control flow.
|
|
|
|
|
-- Simplify or extract complex conditions.
|
|
|
|
|
-- Avoid hidden side effects unless clearly necessary.
|
|
|
|
|
-- Prefer code that is easy to review, test, and modify.
|
|
|
|
|
-
|
|
|
|
|
-## Refactoring and modifications
|
|
|
|
|
-
|
|
|
|
|
-- During refactoring, prioritize:
|
|
|
|
|
- 1. safety
|
|
|
|
|
- 2. readability
|
|
|
|
|
- 3. consistency with the project
|
|
|
|
|
-- Keep behavior unchanged unless explicitly asked otherwise.
|
|
|
|
|
-- After modifying a function, feature, or behavior, verify that no residue from
|
|
|
|
|
- the previous implementation remains.
|
|
|
|
|
-- Remove obsolete code, dead branches, unused helpers, stale flags, outdated
|
|
|
|
|
- comments, legacy conditions, and old-version leftovers when they are no longer needed.
|
|
|
|
|
-- If something from the previous implementation is intentionally retained,
|
|
|
|
|
- explain why.
|
|
|
|
|
-
|
|
|
|
|
-## Handling deviations from the standard
|
|
|
|
|
-
|
|
|
|
|
-- Treat these rules as strong preferences, not rigid mechanical laws.
|
|
|
|
|
-- If existing code is outside the standard, report it clearly.
|
|
|
|
|
-- If the deviation is minor and acceptable, mention it briefly.
|
|
|
|
|
-- If the deviation is significant and not obviously justified, ask whether to:
|
|
|
|
|
- - keep the deviation
|
|
|
|
|
- - or refactor toward compliance
|
|
|
|
|
-- If a deviation is clearly justified by language constraints, framework style,
|
|
|
|
|
- performance needs, safety requirements, or project architecture, keep it and explain it.
|
|
|
|
|
-
|
|
|
|
|
-## Language adaptation
|
|
|
|
|
-
|
|
|
|
|
-- Adapt these rules to the language and ecosystem instead of applying C/C++
|
|
|
|
|
- terminology blindly.
|
|
|
|
|
-- Interpret "function" broadly as the relevant unit of logic:
|
|
|
|
|
- function, method, procedure, hook, handler, endpoint, callback, class method, etc.
|
|
|
|
|
-- Interpret "structure" broadly as any suitable grouping construct:
|
|
|
|
|
- struct, object, class, record, dataclass, DTO, tuple wrapper, options object,
|
|
|
|
|
- config object, context object, or equivalent.
|
|
|
|
|
-
|
|
|
|
|
-## Expected workflow after code changes
|
|
|
|
|
-
|
|
|
|
|
-After making changes, when applicable:
|
|
|
|
|
-1. run relevant tests
|
|
|
|
|
-2. run lint, format, build, and type-check steps if available
|
|
|
|
|
-3. report what was verified
|
|
|
|
|
-4. report what could not be verified
|
|
|
|
|
-5. summarize remaining risks or uncertainties
|
|
|
|
|
-6. mention any remaining deviation from these preferences
|
|
|
|
|
-7. confirm whether old implementation residue remains or has been removed
|
|
|