Büyük kod tabanlarıyla çalışmak, küçük projelere göre bambaşka türden zorluklar getirir. Cursor’un kendi kod tabanını ölçeklerken edindiğimiz deneyimlerden ve devasa kod tabanlarını yöneten müşterilerden aldığımız içgörülerden yola çıkarak, artan karmaşıklığı yönetmeye yardımcı bazı faydalı örüntüler keşfettik. Bu rehberde, büyük kod tabanları için faydalı bulduğumuz bazı teknikleri birlikte inceleyeceğiz.

Tanımadığın kodu hızla kavramak için Chat’i kullan

Özellikle sana yeni olan büyük bir kod tabanında gezinmek zor olabilir. Çoğu zaman grep yapar, arar ve aradığın kod tabanının belirli kısımlarını bulmak için oraya buraya tıklarsın. Chat ile aradığını bulmak için sorular sormaya başlayabilir ve nasıl çalıştığına dair ayrıntılı açıklamalar alabilirsin. Burada Cursor’da kod tabanı indekslemesinin uygulama ayrıntılarını bulmak için yardım alıyoruz; hatta anlamayı kolaylaştırmak için bazı örnekler istiyoruz.

Alana özgü bilgi için kurallar yaz

Kod tabanına yeni bir ekip arkadaşını alıştırıyor olsan, anlamlı katkılar yapmaya başlaması için ona hangi bağlamı verirdin? Bu soruya vereceğin yanıt, Cursor’ın da anlaması için muhtemelen değerli bir bilgi. Her organizasyon veya projede, dokümantasyonda tam olarak yer almayan örtük bilgi bulunur. Kuralları etkili kullanmak, Cursor’ın tabloyu eksiksiz görmesini sağlamanın en iyi yoludur. Örneğin, yeni bir özellik ya da servisin nasıl uygulanacağına dair talimatlar yazıyorsan, bunu kalıcı olarak belgelemek için kısa bir kural yazmayı düşün.
Şablon
---
description: Yeni bir VSCode frontend servisi ekle
---

1. **Arayüz Tanımı:**
   - `createDecorator` kullanarak yeni bir servis arayüzü tanımla ve hataları önlemek için `_serviceBrand`’in eklendiğinden emin ol.

2. **Servis Uygulaması:**
   - Servisi yeni bir TypeScript dosyasında `Disposable`’ı genişleterek uygula ve `registerSingleton` ile singleton olarak kaydet.

3. **Servis Katkısı:**
   - Servisi içe aktarmak ve yüklemek için bir contribution dosyası oluştur ve ana giriş noktasında kaydet.

4. **Bağlam Entegrasyonu:**
   - Uygulamanın tamamında erişim sağlamak için bağlamı yeni servisi içerecek şekilde güncelle.
Cursor’ın takip etmesini istediğin yaygın biçimlendirme kalıpları varsa, glob kalıplarına göre kuralları otomatik olarak eklemeyi düşün.
Biçimlendirme
---
globs: *.ts
---
- Paket yöneticisi olarak bun kullan. Betikler için [package.json](mdc:backend/reddit-eval-tool/package.json) dosyasına bak
- Dosya adlarında kebab-case kullan
- Fonksiyon ve değişken adlarında camelCase kullan
- Sabitlenmiş (hardcoded) sabitler için UPPERCASE_SNAKE_CASE kullan
- `const foo = () =>` yerine `function foo()` tercih et
- `T[]` yerine `Array<T>` kullan
- Varsayılan dışa aktarımlar yerine adlandırılmış dışa aktarımları tercih et, örn. (`export const variable ...`, `export function `)

Plan oluşturma sürecine yakın kal

Daha büyük değişiklikler için, net ve iyi kapsamı belirlenmiş bir plan oluşturmak adına ortalamanın üzerinde düşünmek, Cursor’ın çıktısını ciddi şekilde iyileştirebilir. Aynı istemin birkaç farklı varyasyonunu denedikten sonra hâlâ istediğin sonuca ulaşamıyorsan, biraz geri çekilip sanki bir iş arkadaşın için PRD yazıyormuşsun gibi en baştan daha detaylı bir plan oluşturmayı düşün. Çoğu zaman zor olan kısım, neyin değişmesi gerektiğini bulmaktır; bu görev insanlara daha uygundur. Doğru talimatlarla, uygulamanın bazı kısımlarını Cursor’a devredebiliriz. Plan oluşturma sürecini güçlendirmek için AI’den yararlanmanın bir yolu da Ask modunu kullanmaktır. Bir plan oluşturmak için Cursor’da Ask modunu aç ve proje yönetim sistemlerinden, dahili dokümanlarından veya dağınık düşüncelerinden elindeki tüm bağlamı aktar. Kod tabanında dahil etmek istediğini zaten bildiğin dosyaları ve bağımlılıkları düşün. Bu, entegre etmek istediğin kod parçalarını içeren bir dosya ya da belki de bütün bir klasör olabilir. İşte bir örnek istem:
Planlama istemi
- yeni bir özelliği nasıl geliştireceğimize dair bir plan hazırla (tıpkı @existingfeature.ts gibi)
- bir şey net değilse bana soru sor (en fazla 3)
- kod tabanında mutlaka arama yap

@Geçmiş Sohbetler (önceki keşif istemlerim)

[proje yönetim aracı]’ndan biraz daha bağlam:
[yapıştırılmış tiket açıklaması]
Modelden, insana sorular sorarak; önceki keşif istemlerine ve ticket açıklamalarına atıf yaparak bir plan oluşturmasını ve bağlam toplamasını istiyoruz. Değişikliğin amacını anlayıp daha iyi bir plan sentezleyebildikleri için claude-3.7-sonnet, gemini-2.5-pro veya o3 gibi bir düşünme modeli kullanman önerilir. Bunun üzerinden, uygulamaya başlamadan önce Cursor’ın yardımıyla planı yinelemeli şekilde şekillendirebilirsin.

İş için doğru aracı seç

Cursor’ı etkili kullanmanın en önemli becerilerinden biri, işe en uygun aracı seçmek. Ne başarmaya çalıştığını düşün ve seni akışta tutacak yaklaşımı seç.
ToolUse caseStrengthLimitation
TabHızlı, manuel değişikliklerTam kontrol, hızlıTek dosya
Inline EditBir dosyada kapsamlı değişiklikOdaklı düzenlemelerTek dosya
ChatDaha büyük, çok dosyalı değişimBağlamı otomatik toplar, derin düzenDaha yavaş, bağlam yoğun
Her aracın parladığı bir alan var:
  • Tab, direksiyonda olmak istediğin hızlı düzenlemeler için başvuracağın araç
  • Inline Edit, kodun belirli bir bölümünde odaklı değişiklik yapman gerektiğinde parlıyor
  • Chat, Cursor’un daha geniş bağlamı anlamasına ihtiyaç duyduğun daha büyük değişiklikler için mükemmel
Chat modunu kullanırken (biraz daha yavaş hissettirebilir ama inanılmaz güçlüdür), iyi bağlam vererek ona yardımcı ol. Taklit etmek istediğin benzer koda işaret etmek için @files kullan, ya da proje yapısını daha iyi anlaması için @folder kullan. Ve daha büyük değişiklikleri daha küçük parçalara bölmekten çekinme — yeni sohbetlerle başlamak odağı ve verimliliği artırır.

Özetler

  • Değişikliklerin kapsamını daralt, aynı anda çok fazla şeye girişme
  • Mümkün olduğunda ilgili bağlamı ekle
  • Chat, Inline Edit ve Tab’i en iyi oldukları yerlerde kullan
  • Sık sık yeni sohbetler başlat
  • Ask mode ile planla, Agent mode ile hayata geçir