Code Style
Coding conventions and style preferences. Updated by the Reflect skill.
Last Updated
2025-01-28
TypeScript / JavaScript
General
- •Use TypeScript for all new files
- •Enable strict mode in
tsconfig.json - •Avoid
anytype at all costs - •Use interface for object shapes, type for unions/primitives
Naming
- •Components: PascalCase (
UserProfile.vue,DataManager.ts) - •Functions/Methods: camelCase (
getUserData(),handleSubmit()) - •Constants: UPPER_SNAKE_CASE (
API_BASE_URL,MAX_RETRIES) - •Private properties: underscore prefix (
_internalState)
Async/Await
- •Prefer async/await over Promise chains
- •Always handle errors with try/catch
- •Don't forget
awaitkeyword (common bug!)
Vue 3 Composition API
- •Use
<script setup lang="ts">syntax - •Composables start with
useprefix (useUserData(),useAuth()) - •Reactive primitives use
ref(), objects usereactive() - •Destructure refs with
.valuewhen needed
PHP / Laravel
General
- •Follow PSR-12 coding standard
- •Use strict types (
declare(strict_types=1)) - •Type all method parameters and return values
Naming
- •Classes: PascalCase (
UserController,UserService) - •Methods: camelCase (
getUserById(),createOrder()) - •Variables: snake_case (
$user_id,$order_data) - •Constants: UPPER_SNAKE_CASE (
API_TIMEOUT,MAX_ATTEMPTS)
Laravel Specifics
- •Use Form Request classes for validation
- •Put business logic in Services, not Controllers
- •Use Laravel's dependency injection
- •Eloquent: use relationships, avoid N+1 queries
Testing
General
- •Write tests BEFORE fixing bugs (regression tests)
- •One assertion per test when possible
- •Use descriptive test names (
should_return_error_when_user_not_found())
PHPUnit (Laravel)
- •Test classes end with
Testsuffix - •Use
@testattribute for test methods - •Mock external dependencies (APIs, databases)
Vitest (Frontend)
- •Group related tests with
describe() - •Use
test()instead ofit()for consistency - •Mock async operations properly
Learned Patterns
This section grows as the Reflect skill learns from sessions
Session 2025-01-28
- •Learned: Always use
?.optional chaining for nested object access - •Learned: Prefer
for...ofloops over.forEach()for better TypeScript inference - •Learned: Use early returns to reduce nesting