Tüm Yazılar
KategoriAI
Okuma Süresi
14 dk okuma
Yayın Tarihi
...
Kelime Sayısı
2.072kelime

Kahveni hazırla - bu içerikli bir makale!

Gemini Code Assist ile VS Code ve Android Studio entegrasyonu, akilli kod tamamlama, kod inceleme, refactoring ve coklu dosya duzenleme. AI kodlama rehberi.

Gemini Code Assist: AI Destekli Kodlama

# 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


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 IDEA
5├── PyCharm
6├── WebStorm
7├── GoLand
8└── Cloud Shell Editor
9 
10Dil Destegi:
11├── Python, JavaScript, TypeScript
12├── Java, Kotlin, Dart(Flutter)
13├── Swift, Objective-C
14├── Go, Rust, C, C++
15├── SQL, HTML, CSS
16└── 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 yukle
2# VS Code Extensions'dan "Gemini Code Assist" ara ve yukle
3 
4# 2. Google Cloud hesabi ile baglantı kur
5# Extension yuklendikten sonra "Sign in with Google" butonuna tikla
6 
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 > Gemini
2├── Enable Gemini: ✓
3├── Code Completion: ✓
4├── Smart Actions: ✓
5├── Code Transformations: ✓
6└── Context: Workspace(tum proje)

JetBrains IDE'leri

swift
11. File > Settings > Plugins
22. "Gemini Code Assist" ara ve yukle
33. Tools > Gemini ile aktif et
44. Google Cloud hesabi ile baglan

3. 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 tamamlasin
2class UserService {
3 private let networkManager: NetworkManager
4 
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 Endpoint
12 // tiplerini analiz ederek dogru oneriyi uretir
13}

Cok Satirli Tamamlama

kotlin
1// Android projede Gemini'nin cok satirli onerisi
2class MainViewModel @Inject constructor(
3 private val repository: UserRepository
4) : 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.Loading
13 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 : UiState
24 data class Success(val users: List) : UiState
25 data class Error(val message: String) : UiState
26 }
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 dosyalar
4├── Import edilen moduller
5├── 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 in
6 timer?.invalidate()
7 timer = Timer.scheduledTimer(withTimeInterval: delay, repeats: false) { _ in
8 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 gibi
19// 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 hatalar
3├── Guvenlik — SQL injection, XSS, sensitive data
4├── Performance — N+1 sorgu, gereksiz rendering
5├── Best practices — naming, SOLID, DRY
6├── Test kapsamı — eksik test senaryolari
7└── Documentation — eksik yorumlar ve aciklamalar
typescript
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 fonksiyonu
8// 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:) eklendi
52. UserRepository.swift — paginated query eklendi
63. UserViewModel.swift — loadMore() + isLoading state eklendi
74. UserListView.swift — infinite scroll + loading indicator
85. UserServiceTests.swift — pagination testleri eklendi

Diff Preview

Degisiklikleri uygulamadan once Gemini bir diff gosterir:

diff
1// UserService.swift
2- func fetchUsers() async throws -> [User] {
3+ func fetchUsers(page: Int = 1, limit: Int = 20) async throws -> PaginatedResponse {
4 let endpoint = Endpoint.users
5+ .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 / b
7 }
8}
9 
10// Gemini'nin olusturdugu testler:
11import XCTest
12@testable import MyApp
13 
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 = nil
24 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 in
49 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 fonksiyon
2func processOrder(_ order: Order) {
3 // Validasyon
4 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 hesaplama
9 var discount = 0.0
10 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 hesaplama
15 let tax = order.total * 0.18
16 let finalTotal = order.total * (1 - discount) + tax
17 
18 // Kayit
19 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.0
40 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 discount
44}
45 
46private func calculateFinalTotal(_ subtotal: Double, discount: Double) -> Double {
47 let taxRate = 0.18
48 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:

  1. Android Studio kullaniyorsan zaten dahili — aktif et ve kullan
  2. Kod tamamlama kalitesini artirmak icin dosya basina yorum ekle
  3. PR review ozelligini CI/CD pipeline'ina entegre et
  4. Test olusturma icin AAA pattern yonlendirmesi ver
  5. 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.

Etiketler

#Gemini#Code Assist#AI#VS Code#Android Studio#Code Review#Developer Tools
Muhittin Çamdalı

Muhittin Çamdalı

Senior iOS Developer

12+ yıllık deneyime sahip iOS Developer. Swift, SwiftUI ve modern iOS mimarileri konusunda uzman. Apple platformlarında performanslı ve kullanıcı dostu uygulamalar geliştiriyorum.

iOS Geliştirme Haberleri

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.

Paylaş

Bunu da begenebilirsiniz