# Gemini Code Assist: AI Destekli Kodlama
Kod yazarken en çok zaman kaybettiğin anlar hangileri? Büyük ihtimalle API dokümantasyonu aramak, boilerplate kod yazmak, test oluşturmak ve kod incelemek. Gemini Code Assist, Google'in AI destekli kodlama asistani olarak tam da bu noktalarda devreye giriyor. VS Code, Android Studio, JetBrains IDE'leri ve hatta terminal üzerinden çalışarak kodlama sürecini kökten değiştiriyor. Cursor AI IDE deneyimini ve Claude Code IDE entegrasyonunu zaten denediysen, Gemini'nin bu arenada nasıl farklılaştığını görmek isteyeceksin. Entegrasyon sürecinden çoklu dosya düzenlemesine, test oluşturmadan refactoring yeteneklerine kadar tum detayları burada keşfedeceksin.
Not: Bu rehber Gemini Code Assist'in en güncel versiyonunu (Subat 2026) kapsar. Enterprise ve bireysel kullanım arasindaki farklar belirtilmiştir.
İçindekiler
- Gemini Code Assist Nedir?
- IDE Entegrasyonu
- Akıllı Kod Tamamlama
- Kod Inceleme ve Açıklama
- Çoklu Dosya Düzenleme
- Test Oluşturma
- Refactoring Yetenekleri
- Alternatif AI Asistanlarla Karşılaştırma
- Sonuç ve Öneriler
1. Gemini Code Assist Nedir?
Gemini Code Assist, Google'in Gemini AI modelini temel alan bir kod yazma asistanıdır. GitHub Copilot'a benzer şekilde IDE'nin içine entegre olur, ancak bazı önemli farklarla:
Temel Özellikler
Özellik | Açıklama |
|---|---|
Kod Tamamlama | Satır ici ve çok satırlı otomatik öneri |
Chat | IDE içinde sohbet ile soru-cevap |
Kod Açıklama | Seçili kodu Türkçe/Ingilizce açıklama |
Test Üretimi | Fonksiyon/sinif için otomatik test |
Refactoring | Akıllı yeniden yapılandırma önerileri |
Çoklu Dosya | Birden fazla dosyada koordineli değişiklik |
Code Review | PR inceleme ve öneri |
Customization | Organizasyon kod stiline uyum |
Desteklenen IDE ve Diller
swift
1IDE Desteği:2├-- VS Code (resmi extension)3├-- Android Studio (dahili)4├-- IntelliJ IDEA5├-- PyCharm6├-- WebStorm7├-- GoLand8└-- Cloud Shell Editor9 10Dil Desteği:11├-- Python, JavaScript, TypeScript12├-- Java, Kotlin, Dart (Flutter)13├-- Swift, Objective-C14├-- Go, Rust, C, C++15├-- SQL, HTML, CSS16└-- 20+ dil daha💡 Pro Tip: Android Studio kullananlar için Gemini Code Assist zaten dahili olarak gelmektedir (2024.2+ sürümlerinde). Ayrıca extension yüklemenize gerek yok — Settings > Gemini'den aktif edin.
2. IDE Entegrasyonu
VS Code Kurulumu
bash
1# 1. Extension yükle2# VS Code Extensions'dan "Gemini Code Assist" ara ve yükle3 4# 2. Google Cloud hesabi ile baglantı kur5# Extension yüklendikten sonra "Sign in with Google" butonuna tikla6 7# 3. Proje ayarları (settings.json)json
1{2 "gemini.codeAssist.enabled": true,3 "gemini.codeAssist.inlineSuggestions": true,4 "gemini.codeAssist.chat.enabled": true,5 "gemini.codeAssist.contextWindow": "workspace",6 "gemini.codeAssist.language": "tr",7 "gemini.codeAssist.model": "gemini-2.5-pro"8}Android Studio Entegrasyonu
swift
1Android Studio > Settings > Gemini2├-- Enable Gemini: ✓3├-- Code Completion: ✓4├-- Smart Actions: ✓5├-- Code Transformations: ✓6└-- Context: Workspace (tum proje)JetBrains IDE'leri
swift
11. File > Settings > Plugins22. "Gemini Code Assist" ara ve yükle33. Tools > Gemini ile aktif et44. Google Cloud hesabi ile bağlan3. Akıllı Kod Tamamlama
Gemini Code Assist'in kod tamamlama özelliği, sadece mevcut satır değil, tum dosya ve proje bağlamını anlayarak öneri sunar.
Satır Ici Tamamlama
swift
1// Yazmaya başla, Gemini tamamlasin2class UserService {3 private let networkManager: NetworkManager4 5 // "func" yazdığında Gemini su öneri sunar:6 func fetchUser(id: String) async throws -> User {7 let endpoint = Endpoint.user(id: id)8 let data = try await networkManager.request(endpoint)9 return try JSONDecoder().decode(User.self, from: data)10 }11 // Gemini, proje baglamindaki NetworkManager ve Endpoint12 // tiplerini analiz ederek doğru öneri üretir13}Çok Satırlı Tamamlama
kotlin
1// Android projede Gemini'nin çok satırlı önerisi2class MainViewModel @Inject constructor(3 private val repository: UserRepository4) : ViewModel() {5 6 // Gemini, Repository pattern'i algılayarak tum fonksiyonu oluşturur:7 private val _uiState = MutableStateFlow<UiState>(UiState.Loading)8 val uiState: StateFlow<UiState> = _uiState.asStateFlow()9 10 fun loadUsers() {11 viewModelScope.launch {12 _uiState.value = UiState.Loading13 try {14 val users = repository.getUsers()15 _uiState.value = UiState.Success(users)16 } catch (e: Exception) {17 _uiState.value = UiState.Error(e.message ?: "Bilinmeyen hata")18 }19 }20 }21 22 sealed interface UiState {23 data object Loading : UiState24 data class Success(val users: List<User>) : UiState25 data class Error(val message: String) : UiState26 }27}Bağlam Farkindaligi
Gemini Code Assist, sadece mevcut dosyayi değil, tum workspace'i anlayarak öneri sunar:
swift
1Bağlam Kaynakları:2├-- Mevcut dosya (en yüksek öncelik)3├-- Aynı klasordeki dosyalar4├-- Import edilen moduller5├-- Proje yapılandırması (tsconfig, Package.swift vb.)6├-- Test dosyaları (pattern önceleme)7└-- README ve dokümantasyon💡 Pro Tip: Kod tamamlama kalitesini artır için dosyanın başına yorum ekle: // Bu dosya MVVM pattern'i ile UserService'i implement eder. Gemini bu yorum bağlamını kullanarak çok daha isabetli öneriler sunar.4. Kod Inceleme ve Açıklama
Kod Açıklama
IDE içinde bir kodu seçip "Explain this code" dediğinde, Gemini detaylı bir açıklama sunar:
swift
1// Bu kodu seç ve "Explain" de:2func debounce<T>(_ function: @escaping (T) -> Void,3 delay: TimeInterval) -> (T) -> Void {4 var timer: Timer?5 return { value in6 timer?.invalidate()7 timer = Timer.scheduledTimer(withTimeInterval: delay, repeats: false) { _ in8 function(value)9 }10 }11}12 13// Gemini'nin açıkla:14// "Bu fonksiyon bir 'debounce' mekanizması oluşturur.15// Generic <T> tipi herhangi bir parametre tipini destekler.16// Her çağırıldığında önceki timer iptal edilir ve yeni timer başlar.17// Belirlenen 'delay' süresi geçtiğinde gerçek fonksiyon çalıştırılır.18// Kullanım alanı: Arama cubugu input'u, scroll event'i gibi19// sık tetiklenen olaylarda performans optimizasyonu sağlar."PR Code Review
Gemini Code Assist, GitHub PR'larini inceleyerek otomatik yorum ve öneri sunabilir:
swift
1PR Review Yetenekleri:2├-- Bug tespiti — potansiyel hatalar3├-- Güvenlik — SQL injection, XSS, sensitive data4├-- Performance — N+1 sorgu, gereksiz rendering5├-- Best practices — naming, SOLID, DRY6├-- Test kapsamı — eksik test senaryoları7└-- Documentation — eksik yorumlar ve açıklamalartypescript
1// Gemini'nin PR yorumu örneği:2// 🔴 Bug: Bu fonksiyonda null check eksik.3// user.email.toLowerCase() — eger user.email null ise crash olur.4// Öneri: Optional chaining kullan: user.email?.toLowerCase() ?? ''5 6// ⚠️ Performance: Bu useEffect her render'da çalışıyor.7// Dependency array bos bırakılmış ama fetchData fonksiyonu8// component dışında veya useCallback ile sarilmali.9 10// 💡 Suggestion: Bu switch-case yerine bir Map kullanabilirsin.11// Daha okunabilir ve genişletilebilir olur.5. Çoklu Dosya Düzenleme
Gemini Code Assist'in en yeni ve güçlü özelliklerinden biri, birden fazla dosyada koordineli değişiklik yapabilmesidir.
Çoklu Dosya Senaryo
swift
1Görev: "UserService'e pagination desteği ekle"2 3Gemini'nin değiştirdiği dosyalar:41. UserService.swift — fetchUsers(page:limit:) eklendi52. UserRepository.swift — paginated query eklendi63. UserViewModel.swift — loadMore() + isLoading state eklendi74. UserListView.swift — infinite scroll + loading indicator85. UserServiceTests.swift — pagination testleri eklendiDiff Preview
Değişiklikleri uygulamadan önce Gemini bir diff gösterir:
diff
1// UserService.swift2- func fetchUsers() async throws -> [User] {3+ func fetchUsers(page: Int = 1, limit: Int = 20) async throws -> PaginatedResponse<User> {4 let endpoint = Endpoint.users5+ .queryItems([6+ URLQueryItem(name: "page", value: String(page)),7+ URLQueryItem(name: "limit", value: String(limit))8+ ])9 let data = try await networkManager.request(endpoint)10- return try JSONDecoder().decode([User].self, from: data)11+ return try JSONDecoder().decode(PaginatedResponse<User>.self, from: data)12 }6. Test Oluşturma
Gemini Code Assist, mevcut kodu analiz ederek kapsamlı test dosyaları üretir.
Otomatik Test Üretimi
swift
1// Kaynak kod:2class Calculator {3 func add(_ a: Double, _ b: Double) -> Double { a + b }4 func divide(_ a: Double, _ b: Double) throws -> Double {5 guard b != 0 else { throw CalculatorError.divisionByZero }6 return a / b7 }8}9 10// Gemini'nin oluşturduğu testler:11import XCTest12@testable import MyApp13 14final class CalculatorTests: XCTestCase {15 private var sut: Calculator!16 17 override func setUp() {18 super.setUp()19 sut = Calculator()20 }21 22 override func tearDown() {23 sut = nil24 super.tearDown()25 }26 27 func testAdd_positiveNumbers_returnsSum() {28 XCTAssertEqual(sut.add(2, 3), 5)29 }30 31 func testAdd_negativeNumbers_returnsSum() {32 XCTAssertEqual(sut.add(-2, -3), -5)33 }34 35 func testAdd_mixedNumbers_returnsSum() {36 XCTAssertEqual(sut.add(-2, 3), 1)37 }38 39 func testAdd_zeros_returnsZero() {40 XCTAssertEqual(sut.add(0, 0), 0)41 }42 43 func testDivide_validNumbers_returnsQuotient() throws {44 XCTAssertEqual(try sut.divide(10, 2), 5)45 }46 47 func testDivide_byZero_throwsError() {48 XCTAssertThrowsError(try sut.divide(10, 0)) { error in49 XCTAssertEqual(error as? CalculatorError, .divisionByZero)50 }51 }52 53 func testDivide_decimalResult_returnsAccurate() throws {54 XCTAssertEqual(try sut.divide(7, 3), 2.333, accuracy: 0.001)55 }56}💡 Pro Tip: Test oluşturma sırasında Gemini'ye "edge case'leri de ekle" veya "AAA (Arrange-Act-Assert) pattern'i kullan" gibi yonlendirmeler vererek test kalitesini artırabilirsin.
Swift Testing Framework yazımızda modern Swift test yaklaşımlarini detaylı ele aldık. Claude Code Hooks ile otomasyon yazımız da test otomasyonunu farklı bir aciyla ele alıyor.
7. Refactoring Yetenekleri
Akıllı Refactoring
swift
1// ONCE: Uzun ve karmaşık fonksiyon2func processOrder(_ order: Order) {3 // Validasyon4 guard order.items.count > 0 else { return }5 guard order.total > 0 else { return }6 guard let customer = order.customer else { return }7 8 // Indirim hesaplama9 var discount = 0.010 if customer.isPremium { discount += 0.1 }11 if order.total > 500 { discount += 0.05 }12 if order.items.count > 10 { discount += 0.03 }13 14 // Vergi hesaplama15 let tax = order.total * 0.1816 let finalTotal = order.total * (1 - discount) + tax17 18 // Kayit19 database.save(order)20 analytics.track("order_completed", ["total": finalTotal])21 notificationService.send(to: customer, message: "Siparişini aldık!")22}23 24// Gemini "Refactor this" → SONRA:25func processOrder(_ order: Order) throws {26 try validateOrder(order)27 let discount = calculateDiscount(for: order)28 let finalTotal = calculateFinalTotal(order.total, discount: discount)29 try completeOrder(order, finalTotal: finalTotal)30}31 32private func validateOrder(_ order: Order) throws {33 guard !order.items.isEmpty else { throw OrderError.emptyCart }34 guard order.total > 0 else { throw OrderError.invalidTotal }35 guard order.customer != nil else { throw OrderError.noCustomer }36}37 38private func calculateDiscount(for order: Order) -> Double {39 var discount = 0.040 if order.customer?.isPremium == true { discount += 0.1 }41 if order.total > 500 { discount += 0.05 }42 if order.items.count > 10 { discount += 0.03 }43 return discount44}45 46private func calculateFinalTotal(_ subtotal: Double, discount: Double) -> Double {47 let taxRate = 0.1848 return subtotal * (1 - discount) * (1 + taxRate)49}50 51private func completeOrder(_ order: Order, finalTotal: Double) throws {52 try database.save(order)53 analytics.track("order_completed", ["total": finalTotal])54 notificationService.send(to: order.customer!, message: "Siparişini aldık!")55}8. Alternatif AI Asistanlarla Karşılaştırma
Özellik | Gemini Code Assist | GitHub Copilot | Cursor | Claude Code |
|---|---|---|---|---|
IDE Desteği | VS Code, JetBrains, AS | VS Code, JetBrains | Cursor IDE | Terminal |
Kod Tamamlama | Iyi | Çok iyi | Çok iyi | N/A |
Chat | Evet | Evet | Evet | Evet |
Çoklu Dosya | Evet | Sınırli | Evet | Mukemmel |
Code Review | Evet | Evet | Sınırli | Evet |
Otonom Çalışma | Sınırli | Sınırli | Orta | Tam |
Context Penceresi | 1M token | 128K | 200K | 200K |
Fiyat (bireysel) | Ücretsiz tier var | $10/ay | $20/ay | Kullanıma göre |
Fiyat (enterprise) | $19/kullanıcı/ay | $39/kullanıcı/ay | Custom | Custom |
Google Cloud | Native | Yok | Yok | Yok |
💡 Pro Tip: Birden fazla AI asistani aynı anda kullanabilirsin. Gemini Code Assist satır ici tamamlama, Claude Code karmaşık görevler için ideal bir kombinasyon oluşturur.
Flutter Performance ve iOS App Launch yazılarinda performans optimizasyonu konularını detaylı ele aldık. ChatGPT Codex otonom kodlama ve n8n AI Agent yazılarinda da alternatif AI kodlama araçları inceleyebilirsin.
Sonuç ve Öneriler
Gemini Code Assist, özellikle Google ekosistemiyle çalışanlar için güçlü bir AI kodlama asistani. VS Code ve Android Studio entegrasyonu seamless, kod tamamlama kalitesi yüksek ve ücretsiz tier ile başlama imkani veriyor.
Temel çıkarımlar:
- Android Studio kullanıyorsan zaten dahili — aktif et ve kullan
- Kod tamamlama kalitesini artır için dosya başına yorum ekle
- PR review özelliğini CI/CD pipeline'ina entegre et
- Test oluşturma için AAA pattern yonlendirmesi ver
- Çoklu dosya değişikliklerinde diff preview'u mutlaka kontrol et
Resmi Kaynaklar:
ALTIN İPUCU
Bu yazının en değerli bilgisi
Bu ipucu, yazının en önemli çıkarımını içeriyor.
Easter Egg
Gizli bir bilgi buldun!
Bu bölümde gizli bir bilgi var. Keşfetmek ister misin?
Okuyucu Ödülü
🎉 **Sonuna Kadar Okuyan Kahraman!** Tebrikler! İşte sana özel bir kaynak: Google'in [Gemini Code Assist quickstart](https://cloud.google.com/gemini/docs/codeassist/quickstart) rehberi. 5 dakikada kurulum yapip ilk öneri alabilirsin. Ayrıca Google Cloud'un ücretsiz $300 kredisini kullanarak enterprise özellik de deneyebilirsin.

