Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Modüller ve Organizasyon

BERK'te modül sistemi, kodunuzu organize etmek, yeniden kullanılabilirliği artırmak ve büyük projeleri yönetmeyi kolaylaştırmak için tasarlanmıştır.

Modül Temelleri

Her BERK dosyası bir modül olarak değerlendirilir. Modüller, ilgili fonksiyonları, yapıları ve sabitleri bir araya getirmenizi sağlar.

Basit Modül Örneği

// matematik.berk
dışa_aktar fonksiyon topla(a: sayı, b: sayı) -> sayı
yap
    dön a + b
son

dışa_aktar fonksiyon çarp(a: sayı, b: sayı) -> sayı
yap
    dön a * b
son

dışa_aktar sabit PI = 3.14159

Modül Kullanımı

Kullan İfadesi (Yerel Modüller)

kullan ifadesi ile yerel modüllerden sembol içe aktarabilirsiniz:

// Tek fonksiyon içe aktarma
kullan matematik::topla;

// Birden fazla öğe içe aktarma
kullan matematik::{topla, çarp, PI};

// Tüm dışa aktarılanları içe aktarma
kullan matematik::*;

// Takma ad ile içe aktarma
kullan matematik::PI olarak pi_sayısı;

İçe_aktar İfadesi (Harici Paketler)

içe_aktar ifadesi harici paketleri yüklemek için kullanılır:

// Harici paket içe aktarma
içe_aktar "serde" olarak json;

// Seçici içe aktarma
içe_aktar "http"::{get, post, İstek};

Modül Organizasyonu

Dizin Yapısı

Modüller dosya sistemi yapısını takip eder:

proje/
├── ana.berk
├── matematik/
│   ├── temel.berk
│   ├── geometri.berk
│   └── istatistik.berk
└── metin/
    ├── işlemler.berk
    └── biçimlendir.berk

Modül Yolları

// Alt modül kullanımı
kullan matematik::geometri::alan_hesapla;

// İç içe modüller
kullan matematik::geometri::{alan, çevre};

Dışa Aktarma

Tek Öğe Dışa Aktarma

dışa_aktar fonksiyon hesapla() -> sayı
yap
    dön 42
son

Birden Fazla Öğe Dışa Aktarma

// Gruplama sözdizimi
dışa_aktar { fonk1, fonk2, YapıAdı };

// Her birini ayrı ayrı
dışa_aktar fonksiyon fonk1() yap son
dışa_aktar fonksiyon fonk2() yap son
dışa_aktar yapı YapıAdı yap son

Görünürlük Kuralları

BERK'te görünürlük varsayılan olarak özeldir (private):

  • Dışa aktarılan öğeler diğer modüller tarafından kullanılabilir
  • Dışa aktarılmayan öğeler yalnızca modül içinde kullanılabilir
// Bu fonksiyon dışa aktarıldı - dışarıdan erişilebilir
dışa_aktar fonksiyon genel_işlev() yap son

// Bu fonksiyon dışa aktarılmadı - yalnızca modül içinde
fonksiyon özel_işlev() yap son

Modül Çözümleme

Arama Yolları

BERK derleyicisi modülleri şu sırayla arar:

  1. Geçerli dizin (.)
  2. ./src/ dizini
  3. ./stdlib/ dizini
  4. Harici paket yolları (~/.berk/packages/)

Sembol Önceliği

İsim çakışmaları durumunda öncelik sırası:

  1. Yerel kapsam değişkenleri
  2. İçe aktarılan semboller
  3. Modül global'leri

En İyi Uygulamalar

Modül Organizasyon Önerileri

  • İlgili kodu grupla: Aynı fonksiyonaliteyi sağlayan kod aynı modülde olmalı
  • Açık isimler kullan: Modül isimleri içeriği net bir şekilde belirtmeli
  • Gereksiz dışa aktarma yapma: Sadece API'nin parçası olması gereken öğeleri dışa aktar
  • Döngüsel bağımlılıklardan kaçın: A -> B -> A şeklinde bağımlılıklar sorun yaratır

İçe Aktarma Stilleri

// ✅ İyi: Açık ve okunabilir
kullan matematik::geometri::{alan, çevre};

// ⚠️ Dikkatli kullan: Tüm içe aktarmalar isim çakışmasına neden olabilir
kullan matematik::*;

// ✅ İyi: Uzun isimler için takma ad
kullan matematik::trigonometri olarak trig;

Gelişmiş Özellikler

Modül Tanımı

Bir dosya içinde satır içi modül tanımlayabilirsiniz:

modül yardımcılar yap
    dışa_aktar fonksiyon yardımcı() yap
        yazdır("Yardımcı fonksiyon")
    son
son

kullan yardımcılar::yardımcı;

Yeniden Dışa Aktarma

Bir modülden içe aktardığınız öğeleri kendi modülünüzden dışa aktarabilirsiniz:

// matematik/index.berk
kullan matematik::temel::*;
kullan matematik::geometri::*;

// Tüm alt modül fonksiyonlarını dışa aktar
dışa_aktar *;

Paket Yönetimi (BPM)

BERK Paket Yöneticisi (BPM) ile harici paketleri yönetebilirsiniz:

berk.toml Yapılandırması

[package]
name = "projemiz"
version = "1.0.0"

[dependencies]
serde = "1.0"
http = "0.2"

Paket Kullanımı

içe_aktar "serde" olarak json;

fonksiyon ana() yap
    değişken veri = json::serileştir({isim: "Ali", yaş: 30})
    yazdır(veri)
son

Örnek Proje Yapısı

// src/matematik/temel.berk
dışa_aktar fonksiyon topla(a: sayı, b: sayı) -> sayı yap
    dön a + b
son

// src/matematik/geometri.berk  
dışa_aktar fonksiyon alan(r: kesir) -> kesir yap
    kullan matematik::temel::çarp;
    dön 3.14159 * r * r
son

// src/ana.berk
kullan matematik::temel::topla;
kullan matematik::geometri::alan;

fonksiyon ana() yap
    değişken sonuç1 = topla(5, 3)
    değişken sonuç2 = alan(2.5)
    
    yazdır("Toplam: " + sonuç1)
    yazdır("Alan: " + sonuç2)
son

Özet

  • Her dosya bir modüldür
  • kullan yerel modüller için, içe_aktar harici paketler için
  • dışa_aktar öğeleri diğer modüllere açar
  • Modüller dizin yapısını takip eder
  • Görünürlük varsayılan olarak özeldir
  • BPM ile paket yönetimi desteklenir