# Gemini Code Assist: AI Destekli Kodlama
Kod yazarken en cok zaman kaybettigin anlar hangileri? Buyuk ihtimalle API dokumantasyonu aramak, boilerplate kod yazmak, test olusturmak 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 uzerinden calisarak kodlama surecini kokten degistiriyor. Cursor AI IDE deneyimini ve Claude Code IDE entegrasyonunu zaten denediysen, Gemini'nin bu arenada nasil farklistigini gormek isteyeceksin. Entegrasyon surecinden coklu dosya duzenlemesine, test olusturmadan refactoring yeteneklerine kadar tum detaylari burada kesfedeceksin.
Not: Bu rehber Gemini Code Assist'in en guncel versiyonunu (Subat 2026) kapsar. Enterprise ve bireysel kullanim arasindaki farklar belirtilmistir.
Icindekiler
- Gemini Code Assist Nedir?
- IDE Entegrasyonu
- Akilli Kod Tamamlama
- Kod Inceleme ve Aciklama
- Coklu Dosya Duzenleme
- Test Olusturma
- Refactoring Yetenekleri
- Alternatif AI Asistanlarla Karsilastirma
- Sonuc ve Oneriler
1. Gemini Code Assist Nedir?
Gemini Code Assist, Google'in Gemini AI modelini temel alan bir kod yazma asistanidir. GitHub Copilot'a benzer sekilde IDE'nin icine entegre olur, ancak bazi onemli farklarla:
Temel Ozellikler
Ozellik | Aciklama |
|---|---|
Kod Tamamlama | Satir ici ve cok satirli otomatik oneri |
Chat | IDE icinde sohbet ile soru-cevap |
Kod Aciklama | Secili kodu Turkce/Ingilizce aciklama |
Test Uretimi | Fonksiyon/sinif icin otomatik test |
Refactoring | Akilli yeniden yapilandirma onerileri |
Coklu Dosya | Birden fazla dosyada koordineli degisiklik |
Code Review | PR inceleme ve oneri |
Customization | Organizasyon kod stiline uyum |
Desteklenen IDE ve Diller
swift
1IDE Destegi:2├── VS Code(resmi extension)3├── Android Studio(dahili)4├── IntelliJ IDEA5├── PyCharm6├── WebStorm7├── GoLand8└── Cloud Shell Editor9 10Dil Destegi: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 icin Gemini Code Assist zaten dahili olarak gelmektedir (2024.2+ surumlerinde). Ayrica extension yuklemenize gerek yok — Settings > Gemini'den aktif edin.
2. IDE Entegrasyonu
VS Code Kurulumu
bash
1# 1. Extension yukle2# VS Code Extensions'dan "Gemini Code Assist" ara ve yukle3 4# 2. Google Cloud hesabi ile baglantı kur5# Extension yuklendikten sonra "Sign in with Google" butonuna tikla6 7# 3. Proje ayarlari (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 yukle33. Tools > Gemini ile aktif et44. Google Cloud hesabi ile baglan3. Akilli Kod Tamamlama
Gemini Code Assist'in kod tamamlama ozelligi, sadece mevcut satirda degil, tum dosya ve proje baglamini anlayarak oneri sunar.
Satir Ici Tamamlama
swift
1// Yazmaya basla, Gemini tamamlasin2class UserService {3 private let networkManager: NetworkManager4 5 // "func" yazdiginda Gemini su oneriyi 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 dogru oneriyi uretir13}Cok Satirli Tamamlama
kotlin
1// Android projede Gemini'nin cok satirli onerisi2class MainViewModel @Inject constructor(3 private val repository: UserRepository4) : ViewModel() {5 6 // Gemini, Repository pattern'i algilayarak tum fonksiyonu olusturur:7 private val _uiState = MutableStateFlow(UiState.Loading) 8 val uiState: StateFlow = _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) : UiState 25 data class Error(val message: String) : UiState26 }27}Baglam Farkindaligi
Gemini Code Assist, sadece mevcut dosyayi degil, tum workspace'i anlayarak oneri sunar:
swift
1Baglam Kaynaklari:2├── Mevcut dosya(en yuksek oncelik)3├── Ayni klasordeki dosyalar4├── Import edilen moduller5├── Proje yapilandirmasi(tsconfig, Package.swift vb.)6├── Test dosyalari(pattern onceleme)7└── README ve dokumantasyon💡 Pro Tip: Kod tamamlama kalitesini artirmak icin dosyanin basina yorum ekle: // Bu dosya MVVM pattern'i ile UserService'i implement eder. Gemini bu yorum baglamini kullanarak cok daha isabetli oneriler sunar.4. Kod Inceleme ve Aciklama
Kod Aciklama
IDE icinde bir kodu secip "Explain this code" dediginde, Gemini detayli bir aciklama sunar:
swift
1// Bu kodu sec 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 aciklamasi:14// "Bu fonksiyon bir 'debounce' mekanizmasi olusturur.15// Generic <T> tipi herhangi bir parametre tipini destekler.16// Her cagirildiginda onceki timer iptal edilir ve yeni timer baslar.17// Belirlenen 'delay' suresi gectiginde gercek fonksiyon calistirilir.18// Kullanim alani: Arama cubugu input'u, scroll event'i gibi19// sik tetiklenen olaylarda performans optimizasyonu saglar."PR Code Review
Gemini Code Assist, GitHub PR'larini inceleyerek otomatik yorum ve oneri sunabilir:
swift
1PR Review Yetenekleri:2├── Bug tespiti — potansiyel hatalar3├── Guvenlik — SQL injection, XSS, sensitive data4├── Performance — N+1 sorgu, gereksiz rendering5├── Best practices — naming, SOLID, DRY6├── Test kapsamı — eksik test senaryolari7└── Documentation — eksik yorumlar ve aciklamalartypescript
1// Gemini'nin PR yorumu ornegi:2// 🔴 Bug: Bu fonksiyonda null check eksik.3// user.email.toLowerCase() — eger user.email null ise crash olur.4// Oneri: Optional chaining kullan: user.email?.toLowerCase() ?? ''5 6// ⚠️ Performance: Bu useEffect her render'da calisiyor.7// Dependency array bos birakilmis ama fetchData fonksiyonu8// component disinda veya useCallback ile sarilmali.9 10// 💡 Suggestion: Bu switch-case yerine bir Map kullanabilirsin.11// Daha okunabilir ve genisletilebilir olur.5. Coklu Dosya Duzenleme
Gemini Code Assist'in en yeni ve guclu ozelliklerinden biri, birden fazla dosyada koordineli degisiklik yapabilmesidir.
Coklu Dosya Senaryo
swift
1Gorev: "UserService'e pagination destegi ekle"2 3Gemini'nin degistirdigi 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
Degisiklikleri uygulamadan once Gemini bir diff gosterir:
diff
1// UserService.swift2- func fetchUsers() async throws -> [User] {3+ func fetchUsers(page: Int = 1, limit: Int = 20) async throws -> PaginatedResponse { 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.self, from: data) 12 }6. Test Olusturma
Gemini Code Assist, mevcut kodu analiz ederek kapsamli test dosyalari uretir.
Otomatik Test Uretimi
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 olusturdugu 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 olusturma sirasinda Gemini'ye "edge case'leri de ekle" veya "AAA (Arrange-Act-Assert) pattern'i kullan" gibi yonlendirmeler vererek test kalitesini artirabilirsin.
Swift Testing Framework yazimizda modern Swift test yaklasimlarini detayli ele aldik. Claude Code Hooks ile otomasyon yazimiz da test otomasyonunu farkli bir aciyla ele aliyor.
7. Refactoring Yetenekleri
Akilli Refactoring
swift
1// ONCE: Uzun ve karmasik 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: "Siparisini 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: "Siparisini aldık!")55}8. Alternatif AI Asistanlarla Karsilastirma
Ozellik | Gemini Code Assist | GitHub Copilot | Cursor | Claude Code |
|---|---|---|---|---|
IDE Destegi | VS Code, JetBrains, AS | VS Code, JetBrains | Cursor IDE | Terminal |
Kod Tamamlama | Iyi | Cok iyi | Cok iyi | N/A |
Chat | Evet | Evet | Evet | Evet |
Coklu Dosya | Evet | Sinirli | Evet | Mukemmel |
Code Review | Evet | Evet | Sinirli | Evet |
Otonom Calisma | Sinirli | Sinirli | Orta | Tam |
Context Penceresi | 1M token | 128K | 200K | 200K |
Fiyat (bireysel) | Ucretsiz tier var | $10/ay | $20/ay | Kullanima gore |
Fiyat (enterprise) | $19/kullanici/ay | $39/kullanici/ay | Custom | Custom |
Google Cloud | Native | Yok | Yok | Yok |
💡 Pro Tip: Birden fazla AI asistani ayni anda kullanabilirsin. Gemini Code Assist satir ici tamamlama, Claude Code karmasik gorevler icin ideal bir kombinasyon olusturur.
Flutter Performance ve iOS App Launch yazilarinda performans optimizasyonu konularini detayli ele aldik. ChatGPT Codex otonom kodlama ve n8n AI Agent yazilarinda da alternatif AI kodlama araclarini inceleyebilirsin.
Sonuc ve Oneriler
Gemini Code Assist, ozellikle Google ekosistemiyle calisanlar icin guclu bir AI kodlama asistani. VS Code ve Android Studio entegrasyonu seamless, kod tamamlama kalitesi yuksek ve ucretsiz tier ile baslama imkani veriyor.
Temel cikarimlar:
- Android Studio kullaniyorsan zaten dahili — aktif et ve kullan
- Kod tamamlama kalitesini artirmak icin dosya basina yorum ekle
- PR review ozelligini CI/CD pipeline'ina entegre et
- Test olusturma icin AAA pattern yonlendirmesi ver
- Coklu dosya degisikliklerinde 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! Iste sana ozel bir kaynak: Google'in [Gemini Code Assist quickstart](https://cloud.google.com/gemini/docs/codeassist/quickstart) rehberi. 5 dakikada kurulum yapip ilk onerini alabilirsin. Ayrica Google Cloud'un ucretsiz $300 kredisini kullanarak enterprise ozelliklerini de deneyebilirsin.

