Adhering to Official Kotlin Coding Conventions
Modern Kotlin and Android software architecture emphasizes clean, expressive syntax through features like higher-order functions, trailing lambdas, companion objects, and exhaustive when expressions. Standardizing code according to JetBrains style guidelines enhances team velocity, keeps git diffs minimal, and ensures full compatibility with automated tools like ktlint and ktfmt.
Standard 4-Space Indentation
JetBrains mandates 4 spaces per nesting level for class bodies, functions, and block expressions. Hard tabs are strictly avoided to ensure identical rendering across IDEs.
Trailing Lambda Formatting
Kotlin allows trailing lambdas to reside outside method parentheses (e.g., items.filter { it.isActive }). Formatting these blocks cleanly prevents horizontal code drift.
Kotlin Style Guidelines: Official Standards vs. Non-Standard Habits
| Construct | Unformatted / Messy | Standard Formatted Kotlin | Convention Rule |
|---|---|---|---|
| Class Declaration | class UserRepo(val id: Int){ fun fetch(){ return } } |
class UserRepo(val id: Int) { fun fetch() { return } } |
Space before opening brace; 4-space method body indent. |
| When Expressions | when (state) { is Loading -> show() is Success -> hide() } |
when (state) { is Loading -> show() is Success -> hide() } |
Branches indented 4 spaces relative to the when keyword. |
| Brace Placement | fun compute() { return 42 } |
fun compute() { return 42 } |
Opening braces ({) stay on the same line as the header (K&R style). |
Frequently Asked Questions
What indentation style does this Kotlin formatter follow?
By default, it follows official JetBrains and Android Kotlin style guidelines, utilizing 4 spaces per indentation level without hard tabs.
Does it format raw strings with triple quotes (""") and lambdas correctly?
Yes. It tracks curly braces, parentheses, and square brackets while preserving multiline raw string blocks ("""..."""), annotations, and trailing lambda closures.
Is my proprietary Kotlin source code sent to a remote server?
No. All formatting logic runs entirely within your browser using client-side JavaScript lexical tokenization. Zero code or telemetry is transmitted across the network.