kotlin-development
Kotlin development guidelines with best practices for clean code, naming conventions, function design, and data handling
Works with
--- name: kotlin-development description: Kotlin development guidelines with best practices for clean code, naming conventions, function design, and data handling license: Apache-2.0 --- # Kotlin Development Best Practices ## General Principles - Use English for all code and documentation - Always declare the type of each variable and function - Avoid the `any` type; create necessary types instead - No blank lines within function bodies ## Naming Conventions ### Case Standards - **PascalCase**: Classes, interfaces, enums - **camelCase**: Variables, functions, methods, parameters - **UPPERCASE**: Environment variables, constants - **underscores_case**: Files and directories ### Naming Guidelines - Start each function with a verb (get, set, create, update, delete, etc.) - Use complete words over abbreviations - Allowed abbreviations: API, URL, i/j for loops, err, ctx, req/res/next - Avoid magic numbers; define constants instead - Boolean variables use prefixes: `isLoading`, `hasError`, `canDelete` ## Function Design ### Size and Responsibility - Keep functions under 20 instructions - Each function should have a single responsibility - Extract logic into utility functions when complexity increases ### Naming Functions - Use verb-based naming that describes the action - Prefix boolean-returning functions with `is`, `has`, or `can` - Prefix void functions with action verbs like `execute`, `save`, `send` ### Reducing Nesting - Use early returns to handle edge cases first - Extract nested logic into separate functions - Employ higher-order functions (map, filter, reduce) to minimize loops - Prefer arrow functions for simple operations; use named functions otherwise ### Parameters - Use default parameters instead of null checks - When functions have multiple parameters, consolidate them into objects (RO-RO pattern) - Keep parameter lists short (max 3-4 parameters) ## Data Handling ### Data Classes - Use data classes for data structures - Encapsulate primitive types in composite types when they represent domain concepts - Validate data internally within data classes ### Immutability - Prefer immutability for data - Use `val` for variables that don't change - Use immutable collections when possible - Create new instances instead of mutating existing ones ## Classes and Objects ### Size Guidelines - Keep classes under 200 instructions - Limit to fewer than 10 public methods - Limit to fewer than 10 properties ### Design Principles - Follow SOLID principles - Favor composition over inheritance - Use interfaces for abstraction - Keep classes focused on a single responsibility ## Exception Handling ### When to Use Exceptions - Reserve exceptions for truly unexpected errors - Don't use exceptions for control flow - Catch exceptions only to: - Fix an anticipated issue - Add context before re-throwing ### Best Practices - Create custom exception types for domain-specific errors - Include meaningful error messages - Log exceptions at appropriate levels ## Testing ### Unit Tests - Follow Arrange-Act-Assert convention - Write unit tests for all public functions - Use test doubles (mocks, stubs, fakes) for dependencies - Name tests descriptively to document behavior ### Acceptance Tests - Follow Given-When-Then convention - Test user-facing behavior and scenarios - Keep tests independent and repeatable ## Code Organization - Group related functionality together - Keep files focused and cohesive - Use packages/modules to organize code by feature or layer - Maintain consistent file structure across the project
More Mobile skills
animation-vocabulary
emilkowalski/skills
Reverse-lookup glossary that turns a vague description of a web animation or motion effect into its exact term ("the bouncy thing when a popover opens" → Pop in; "the iOS rubber-band scroll" → Rubber-banding). Use when the user asks "what's it called when…", or describes a motion effect without knowing its name and wants the right word to prompt an AI or designer with. For naming an effect, not designing or building one.
xcode-project-setup
firebase/agent-skills
Safely modifies Xcode projects (.pbxproj) to add Swift Packages and link files. Use this skill whenever an iOS project needs dependencies installed (e.g. Firebase, Alamofire).
cross-border-ecommerce
nexscope-ai/ecommerce-skills
Cross-border e-commerce expansion advisor. Scores target markets on 8 weighted dimensions (market size, ecommerce penetration, competition, regulatory complexity, logistics infrastructure, payment ecosystem, cultural distance, IP protection), compares 5 fulfillment models with cost and transit data, provides country-by-country tax/duty compliance guides (EU VAT/IOSS, UK VAT, US sales tax, CA GST, AU GST, JP consumption tax), maps local payment preferences by market, and builds a phased expansion roadmap. No API key required.

