Büyük kod tabanlarıyla çalışmak, küçük projelere kıyasla bambaşka bir dizi zorluk getirir. Cursor’ın kendi kod tabanını ölçeklendirme deneyimimiz ve devasa kod tabanlarını yöneten müşterilerden edindiğimiz içgörüler doğrultusunda, artan karmaşıklığı yönetmek için bazı işe yarar kalıplar keşfettik. Bu rehberde, büyük kod tabanlarında işimize yaradığını gördüğümüz bazı teknikleri birlikte gözden geçireceğiz.

Chat’i kullanarak aşina olmadığın kodu hızlıca kavra

Özellikle sana yeni olan büyük bir kod tabanında gezinmek zor olabilir. Çoğu zaman grep yapar, arar ve aradığın bölümleri 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ıyor, hatta anlamayı kolaylaştırması için bazı örnekler istiyoruz.

Alan-özel bilgi için kurallar yaz

Kod tabanına yeni bir ekip arkadaşı dahil etseydin, anlamlı katkılar yapmaya başlayabilmeleri için onlara 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, belgelerde tam yakalanmamış örtük bilgi bulunur. Kuralları etkili kullanmak, Cursor’ın resmi tam görmesini sağlamanın en iyi yoludur. Örneğin, yeni bir özellik veya servis nasıl uygulanır diye talimat yazıyorsan, bunu kalıcı olarak belgelemek için kısa bir kural yazmayı düşün.
Boilerplate
---
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` alanını eklediğ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 aktarıp yüklemek için bir contribution dosyası oluştur ve ana entrypoint’te kaydet.

4. **Bağlam Entegrasyonu:**
   - Uygulama genelinde erişim sağlamak için context’i yeni servisi içerecek şekilde güncelle.
Cursor’ın uymasını istediğin yaygın biçimlendirme kalıpları varsa, glob desenlerine göre otomatik eklenen kuralları kullanmayı düşün.
Formatting
---
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
- Sabit değerler için UPPERCASE_SNAKE_CASE kullan
- `const foo = () =>` yerine `function foo()` tercih et
- `T[]` yerine `Array<T>` kullan
- Varsayılan export yerine adlandırılmış export’ları tercih et, örn. (`export const variable ...`, `export function `)

Plan oluşturma sürecine yakın kal

Daha büyük değişikliklerde, net ve iyi kapsamlandırılmış bir plan oluşturmak için ortalamanın üzerinde emek harcamak, 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 sıfırdan 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 kullanmanın bir yolu Ask modunu kullanmak. 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 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 komple bir klasör olabilir. İşte bir örnek istem:
Planning prompt
- create a plan for how we shoud create a new feature (just like @existingfeature.ts)
- ask me questions (max 3) if anything is unclear
- make sure to search the codebase

@Past Chats (my earlier exploration prompts)

here's some more context from [project management tool]:
[pasted ticket description]
Modelden bir plan çıkarmasını ve insana sorular sorarak bağlam toplamasını, önceki keşif istemlerine ve ayrıca bilet açıklamalarına referans vermesini istiyoruz. Değişikliğin amacını anlayıp planı daha iyi sentezleyebildikleri için claude-3.7-sonnet, gemini-2.5-pro veya o3 gibi bir düşünme modeli kullanman önerilir. Bundan yola çıkarak, uygulamaya başlamadan önce planı Cursor’ın yardımıyla yinelemeli olarak şekillendirebilirsin.

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

Cursor’ı etkili kullanmanın en önemli becerilerinden biri, işe 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 sınırlı/kapsamlı değişikliklerOdaklı düzenlemelerTek dosya
ChatDaha büyük, çok dosyalı değişikliklerBağlamı otomatik toplar, derin düzenlemelerDaha yavaş, bağlama bağımlı
Her aracın en iyi olduğu bir alan var:
  • Tab, direksiyonda olmak istediğin hızlı düzenlemeler için başvuracağın araç
  • Inline Edit, belirli bir kod bölümünde odaklı değişiklikler yapman gerektiğinde parlıyor
  • Chat, Cursor’ın daha geniş bağlamı anlamasına ihtiyaç duyduğun daha büyük değişiklikler için ideal
Chat modunu kullanırken (biraz 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 projenin yapısını daha iyi anlaması için @folder kullan. Ayrıca, daha büyük değişiklikleri daha küçük parçalara bölmekten çekinme — yeni sohbetler başlatmak işleri odaklı ve verimli tutmaya yardımcı olur.

Çıkarımlar

  • Değişikliklerin kapsamını daralt ve aynı anda çok fazla şey yapmaya çalışma
  • 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 oluştur
  • Ask mode ile planla, Agent mode ile hayata geçir