React
Yalnızca fonksiyonel bileşenler
Her zaman named export’larla TSX fonksiyonel bileşenlerini kullanın.Özellikler
{ComponentName}Props adında bir type oluşturun. Destructuring kullanın. React.FC kullanmayın.
Tek değişken için prop spread kullanmayın
Durum Yönetimi
Global durum için Jotai atomları
- Prop drilling yerine atomları tercih edin
- Durum için
useRefkullanmayın —useStateveya atomları kullanın - Listeler için atom ailelerini ve seçicileri kullanın
Gereksiz yeniden render’ları önleyin
useEffectve veri çekmeyi kardeş sidecar bileşenlere ayırınuseEffectyerine olay işleyicilerini (handleClick,handleChange) tercih edinReact.memo()kullanmayın — bunun yerine kök nedeni düzeltinuseCallback/useMemokullanımını sınırlayın
TypeScript
interfaceyerinetype— daha esnek, birleştirmesi daha kolay- enum yerine string literal’lar — GraphQL codegen enum’ları ve dahili kütüphane API’leri hariç
anyyok — katı TypeScript zorunludur- Type import’ları yok — normal import’lar kullanın (Oxlint
typescript/consistent-type-importstarafından uygulanır) - Zod kullanın tiplenmemiş nesnelerin çalışma zamanı doğrulaması için
JavaScript
İsimlendirme
- Değişkenler: camelCase, açıklayıcı (
emaildeğilvalue,fieldMetadatadeğilfm) - Sabitler: SCREAMING_SNAKE_CASE
- Tipler/Sınıflar: PascalCase
- Dosyalar/dizinler: kebab-case (
.component.tsx,.service.ts,.entity.ts) - Olay işleyicileri:
handleClick(işleyici fonksiyon içinonClickdeğil) - Bileşen prop’ları: önek olarak bileşen adını kullanın (
ButtonProps) - Styled bileşenler:
Styledöneğini kullanın (StyledTitle)
Stil
Linaria ile stillendirilmiş bileşenleri kullanın. Tema değerlerini kullanın — kodda sabit tanımlanmışpx, rem veya renklerden kaçının.
İçe Aktarımlar
Göreli yollar yerine alias kullanın:Klasör Yapısı
- Modüller diğer modüllerden import edebilir, ancak
ui/bağımlılıksız kalmalıdır internal/alt klasörlerini modüle özel kod için kullanın- Bileşenler 300 satırın altında, servisler 500 satırın altında