# Coding Standards

> Projemizin kodlama standartları. KOD YAZARKEN veya CODE REVIEW yaparken otomatik uygula.

- Skill: `erhankaraarslan/coding-standards` (Agent Skill)
- Install (CLI): `npx skillmds@latest add erhankaraarslan/coding-standards`
- Raw SKILL.md: https://api.skillmd.com/api/skills/erhankaraarslan/coding-standards/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: erhankaraarslan (https://skillmd.com/u/erhankaraarslan)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/erhankaraarslan/coding-standards

---


# Kodlama Standartları

## Genel Kurallar

| Kural | Değer |
|-------|-------|
| Max satır | 100 karakter |
| Indent | 2 space |
| Trailing comma | Kullan |
| Semicolon | Kullanma |
| Quote | Single ('') |

## İsimlendirme

| Tür | Format | Örnek |
|-----|--------|-------|
| Değişken | camelCase | `userName` |
| Fonksiyon | camelCase | `getUserById` |
| Sınıf | PascalCase | `UserService` |
| Constant | SCREAMING_SNAKE | `MAX_RETRY` |
| Dosya | kebab-case | `user-service.ts` |
| DB table | snake_case | `user_profiles` |
| API endpoint | kebab-case | `/user-profiles` |

### Prensipler
- ✅ Açıklayıcı: `getUserById` not `getUser`
- ✅ Boolean: `is`, `has`, `can` prefix
- ✅ Array: çoğul `users`, `items`
- ❌ Kısaltma: `configuration` not `cfg`
- ❌ Type prefix: ~~`IUser`~~

## Fonksiyon Kuralları

- Max satır: 20 (ideal: 10-15)
- Max parametre: 3 (fazlaysa options object)

```typescript
async function getUserById(userId: string): Promise<User | null> {
  // 1. Early return / validation
  if (!userId) {
    throw new ValidationError('userId required')
  }

  // 2. Main logic
  const user = await userRepository.findById(userId)
  
  // 3. Return
  return user
}
```

## Error Handling

```typescript
// ✅ Specific error, meaningful message
throw new ValidationError('Email format invalid', { field: 'email' })

// ✅ Error'ı yakala ve handle et
try {
  await riskyOperation()
} catch (error) {
  if (error instanceof ValidationError) {
    // handle
  } else {
    logger.error('Unexpected', { error })
    throw error
  }
}

// ❌ Generic error
throw new Error('Error')

// ❌ Error yutma
try { ... } catch { /* sessiz */ }
```

## Import Sırası

```typescript
// 1. Built-in
import path from 'path'

// 2. External (alphabetical)
import express from 'express'

// 3. Internal (@/ paths)
import { UserService } from '@/services/user-service'

// 4. Relative
import { helper } from './helper'

// 5. Types
import type { User } from '@/types'
```

## Code Smells

| Smell | Çözüm |
|-------|-------|
| Magic numbers | Constant kullan |
| Deep nesting (3+) | Early return, extract function |
| Long function (30+) | Böl |
| Long param list (4+) | Options object |
| Duplicate code | Extract function |

## Edit/str_replace Best Practices

> Anthropic SWE-Bench araştırmasına göre, doğru edit stratejisi başarı oranını önemli ölçüde artırır.

### Temel Kurallar

| Kural | Açıklama |
|-------|----------|
| Absolute path | Her zaman tam yol kullan |
| Unique context | old_str en az 5 satır context içermeli |
| One change at a time | Büyük değişiklikleri parçala |
| Verify after | Edit sonrası dosyayı oku ve doğrula |

### str_replace Stratejisi

```typescript
// ✅ DOĞRU: Yeterli context ile unique match
old_str: `
  async function getUserById(userId: string) {
    if (!userId) {
      throw new Error('userId required')
    }
    return await db.users.findById(userId)
  }
`

// ❌ YANLIŞ: Çok kısa, unique olmayabilir
old_str: `return await db.users.findById(userId)`
```

### Hata Durumunda

```
Hata: "old_str not found" veya "multiple matches"

1. Dosyayı oku → mevcut içeriği gör
2. Daha geniş context ekle (±3 satır)
3. Whitespace'leri kontrol et (tab vs space)
4. Tekrar dene
```

### Edit Sırası

1. **Önce oku** → Dosyanın mevcut halini anla
2. **Küçük parçalar** → Tek seferde 20 satırdan fazla değiştirme
3. **Doğrula** → Her edit sonrası oku
4. **Lint kontrol** → Syntax hatası olmadığından emin ol

---

## Commit Messages

```
<type>(<scope>): <description>

[body]
[footer]
```

| Type | Kullanım |
|------|----------|
| feat | Yeni özellik |
| fix | Bug fix |
| docs | Dokümantasyon |
| refactor | Refactoring |
| test | Test |
| chore | Build, config |

