| name | code-comments |
| description | Comment style for the Charty codebase — use when writing or editing any Kotlin in charty/ or composeApp/, and before committing. This codebase is self-documenting: essentially no inline `//` comments. Do NOT add comments that restate what the code, a name, or a test already says (e.g. `LineChartConfig() // must not throw`, `if (x == 0) return // guard`). Keep KDoc; drop inline noise. |
Code comments
Charty is written to read without inline commentary: clear names, small functions, and KDoc on
public declarations. Match that. The bar for adding an inline // comment is very high.
Rule
Do not add inline // comments. Before writing one, assume it should not exist. The codebase
has almost none, and they read as noise against that style.
Never write a comment that restates what the code, a symbol name, or a test name already
conveys. These are all banned:
LineChartConfig()
if (range == 0f) return
val brush = Brush.linearGradient(color.value)
values.filter { it > 0f }
Instead, encode the intent where it belongs:
- What / behaviour → a good function or variable name, or a descriptive
@Test name
(fromMinValue_negativeBar_growsUpward).
- Non-obvious rationale (a real "why") → the function's KDoc, not an inline comment. If a
guard or fallback exists for a subtle reason (overflow, a Compose phase, a platform quirk), state
it in the KDoc of the function that contains it.
Applying it
- When you catch yourself about to write
//, first try to rename something or add/extend KDoc.
- When editing existing code, remove inline
// comments that only restate the code — but keep:
- KDoc (
/** … */) and its @param/@property/@return tags,
- license/copyright headers,
- comments inside KDoc ```kotlin examples (they document the example),
// TODO/// FIXME that track real outstanding work.
- This is a commit gate: a diff that adds inline
// comments restating the code is not ready.
commit-with-stats checks for it.
Quick self-check on a staged diff:
git diff --cached -U0 -- '*.kt' | grep -E '^\+' | grep -E '//' | grep -vE '/\*\*|^\+\s*\*|https?://|TODO|FIXME'
Every line it prints should be justified as a real "why" that could not live in a name or KDoc —
otherwise delete the comment.