Ana içeriğe geç

Kod stil kılavuzu

Bu kılavuz, BeeWare için kod yazmaya ilişkin bilgiler ve yönergeler içerir.

Kod stili

BeeWare, kod tabanımızda PEP 8 kurallarını takip eder, ancak satır uzunluğu 79 karakterden 88 karaktere çıkarılmıştır. Mümkün olduğunda PEP 8 kurallarını uygulamak için Ruff kullanıyoruz. Kodunuzu kaydettiğinizde, pre-commit Ruff dahil olmak üzere çeşitli kontroller yapar. Mümkün olduğunda, kodunuzu biçimlendirme ve stil standartlarımıza uygun hale getirmek için otomatik olarak biçimlendirir. Bazı IDE'leri kaydetme sırasında Ruff'ı otomatik olarak çalıştıracak şekilde ayarlayabilirsiniz, bu da sürece yardımcı olabilir.

PEP 8'in en önemli kısmının Bölüm 0: Aptalca Tutarlılık Küçük Zihinlerin Hobgoblinidir olduğunu unutmayın. PEP 8 ile tutarlı kalmanın mantıklı olmadığı durumlar vardır ve uygun olduğunda, listelenen kurallara uymayan kod yazmanın kabul edilebilir ve bazen tercih edilebilir olduğunu anlamak önemlidir. Bu kurallara ne zaman tutarsız olunması gerektiğini bilmek, çoğu durumda tutarlılığı korumak kadar önemlidir.

Bunun bir örneği, adlandırma kurallarında görülebilir. BeeWare kütüphaneleri sıklıkla diğer dillerle entegrasyon kurmak zorundadır. Diğer dillere yönelik sarmalayıcılar oluşturulurken, Python yerine hedef dilin adlandırma kurallarına uymak tercih edilir (ve bazı durumlarda zorunludur). Örneğin, Java kodunu çağırırken veya referans verirken, işlevler PEP 8'in mixedCase tercihini değil, Java'nın snake_case tercihini benimsemelidir.

API adlandırma, değişkenler vb. için ABD yazım kurallarını takip ediyoruz.

PEP 8'e BeeWare'e özgü bazı eklemeler de yapılmıştır:

Uzun işlev çağrılarını bölme

Birden fazla argüman içeren bir işlev çağrısı tek bir satıra sığmadığında, her argümanı ayrı bir satıra yerleştirin ve son argümanın sonuna virgül ekleyin. Ruff, birden fazla argümanın tek bir satıra sığdırılmasına izin verir (ve bunu önerir):

my_function(
    arg1, arg2, arg3
)

Bu biçim kullanılmamalıdır. Bunun yerine, son argümana sondan virgül ekleyerek argümanları her satıra bir tane olacak şekilde dağıtın:

my_function(
    arg1,
    arg2,
    arg3,
)

Uzun dizeleri bölme

Bir dize argümanının satır uzunluğu kısıtlamalarına uymak için satırlara bölünmesi gerektiğinde, birleştirilmiş dize sabitlerini parantez içine alın; böylece dizenin tek bir argüman olduğu açıkça anlaşılır. Yani, şu şekilde yazmayı tercih ederiz:

my_function(
    (
        "this is a very long string "
        "that is wrapped over two lines"
    ),
    second_argument,
)

yukarıda:

my_function(
    "this is a very long string "
    "that is wrapped over two lines",
    second_argument,
)

Kaçınılması gerekenler

Bazen kaçınılmaz olduklarını bilerek, utils modüllerini mümkün olduğunca kullanmamaya çalışıyoruz. Tercih edilen alternatif, utils modülünü kullanmak yerine, kaynak kodun başka bir yerinde bu özelliği bulmaktır.

Genel bir kural olarak, uygulamanın daha hızlı başlatılması için pahalı başlatma kodlarını önlemeye veya ertelemeye çalışırız. Örneğin, toga-core paketindeki modüller "tembel yükleme" ile çalışır; yani, önceden değil, yalnızca talep edildiğinde içe aktarılır. Bu, başlatma sürecini hızlandırır ve yalnızca uygulamanın gerçekten kullandığı şeyler için zaman harcanmasını sağlar.