Xcode vs VS Code
Apple's Xcode versus Microsoft's VS Code for iOS development: IDE features, performance, debugging, plugins, and the modern dual-IDE workflow.
Yapılandırılmış dal stratejisi — main, develop, feature, release, hotfix
Tek ana dal, sık commit, feature flag ile güvenli deployment
# Git Flow - Tam iş akışı örneği
# Başlangıç kurulumu
git flow init -d
# Dallar: main, develop, feature/, release/, hotfix/
# Yeni özellik geliştirme
git flow feature start user-profile-redesign
# → feature/user-profile-redesign dalı oluşturuldu
# Geliştirme süreci
git add src/views/ProfileView.swift
git commit -m "feat(profile): redesign user profile card"
git add src/viewmodels/ProfileViewModel.swift
git commit -m "feat(profile): add avatar lazy loading"
# Özellik tamamlandı — develop'a birleştir
git flow feature finish user-profile-redesign
# → feature dalı silindi, develop'a merge edildi
# Release hazırlığı
git flow release start 2.4.0
# → release/2.4.0 dalı oluşturuldu
# Release branch'te sadece bug fix!
git commit -m "fix: avatar cache invalidation on logout"
git commit -m "chore: bump version to 2.4.0"
# Release tamamlandı
git flow release finish 2.4.0
# → main'e merge, tag oluşturuldu (v2.4.0), develop'a geri merge
# Üretim hatası tespiti
git flow hotfix start fix-crash-on-launch
git commit -m "fix: nil pointer in AppDelegate startup"
git flow hotfix finish fix-crash-on-launch
# → main ve develop'a merge, v2.4.1 tag# Trunk-Based Development - Günlük iş akışı
# Her sabah: güncel başla
git pull origin main
# Kısa feature branch (max 1-2 gün!)
git checkout -b feat/quick-login-improvement
# Küçük, atomik commitler
git add src/views/LoginView.swift
git commit -m "feat: add biometric login button"
git add tests/LoginTests.swift
git commit -m "test: biometric auth unit tests"
# Hemen trunk'a merge (bitmese bile feature flag ile!)
git checkout main
git pull origin main
git merge feat/quick-login-improvement
git push origin main
git branch -d feat/quick-login-improvement
# Feature flag ile incomplete özelliği gizle (Swift)
# FeatureFlags.swift
enum FeatureFlag: String {
case newLoginUI = "new_login_ui"
case profileV2 = "profile_v2"
case darkModeV3 = "dark_mode_v3"
}
class FeatureFlagService {
static func isEnabled(_ flag: FeatureFlag) -> Bool {
// Remote config'den veya local override'dan oku
return RemoteConfig.shared.bool(forKey: flag.rawValue)
}
}
// View'da kullanım
if FeatureFlagService.isEnabled(.newLoginUI) {
NewLoginView()
} else {
LegacyLoginView()
}
# CI/CD pipeline (GitHub Actions)
# .github/workflows/ci.yml:
# on: push (branches: [main])
# → lint → test → build → deploy staging → smoke test → deploy productionWeb servisleri ve SaaS ürünleri için Trunk-Based Development modern standarttır — CI/CD ile mükemmel uyum, hızlı iterasyon. iOS uygulamaları için Git Flow'un hafifletilmiş versiyonu (sadece main + feature dalları) pratik: App Store review süreci ve sürüm döngüleri bu yapıya daha uygun. GitHub Flow (main + short-lived feature branches) iyi bir orta yol.
Ücretsiz Danışmanlık AlBu yazının en değerli bilgisi
Bu ipucu, yazının en önemli çıkarımını içeriyor.
Haftalık Swift tips, SwiftUI tricks ve iOS best practices. Spam yok, sadece değerli içerik.
Gizliliğinize saygı duyuyoruz. İstediğiniz zaman abonelikten çıkabilirsiniz.
GitHub Flow basitleştirilmiş versiyon: sadece main ve feature branch'leri var. Release branch, develop branch yok. Küçük-orta ekipler için ideal orta yol.