SORU
16 Kasım 2009, PAZARTESİ


Modül alma işlevi `` den alma modülü `daha iyi bir kodlama stili`?

from module import function FMİF kodlama tarzı denilen olsun.

import module İM kodlama tarzı denilen olsun.

from package import module FPİM kodlama tarzı denilen olsun.

Neden İM FPİM FMİF daha iyi bir kodlama tarzı olarak kabul edilir? (Bu soru için ilham için this post.)

İşte benim İM üzerinde FMİF tercih etmelerine neden olan bazı kriterler:

  1. Kod darlığı: bana daha kısa fonksiyon isimlerini ve sütun, satır başına 80 sözleşmeye sadık yardımcı böylece sağlar.
  2. Okunabilirlik: chisquare(...) görünür scipy.stats.stats.chisquare(...) Daha okunabilir. Bu öznel bir kriter olmasına rağmen, çoğu insan kabul edeceğini düşünüyorum.
  3. Kolay yönlendirme: Eğer kullandığım FMİF ve nedense biraz daha zaman istiyorum yönlendirmek için python tanımlamak function alt_module yerine module ihtiyacım değiştirmek için sadece tek bir satır: from alt_module import function. Eğer SOHBET eklemek isterseniz, kod satırı değiştirmek istiyorum.
FPİM ilk iki konu feshetmek için bazı yol gidiyor farkındayım, ama üçüncü ne olacak?

İM FPİM FMİF daha iyi olabilir neden, sebep ilgileniyorum ama özellikle şu noktaları mentioned here incelikleri ilgi duyarım:

SOHBET için artıları:

  1. alay/kolaylığı testlerinde enjekte. (Ben bu terimi ne demek olduğunu yakın zamanda öğrendim ama alaycı, çok aşina değilim. İM FMİF burada daha iyi olduğunu nasıl gösterir? kodu göster)
  2. bazı girdilerini yeniden tanımlanması esnek değiştirmek için bir modül için yeteneği. (Bu SOHBET üzerinden FMİF bir avantaj gibi görünüyor, çünkü bir yanlış anlama olmalı. FMİF yana yukarıda benim üçüncü bir neden görmüyorum.)
  3. veri seri hale getirme ve kurtarma, öngörülebilir ve kontrol edilebilir bir davranış. (Ben veya FMİF seçimi bu sorunu nasıl etkilediğini anlamıyorum. Ayrıntılı lütfen.)
  4. FMİF "", ama olumsuz görünen bir cümle olmanın ötesinde, bu kadar somut bir şekilde.kodu nasıl acı veriyor hoşuma gitmiyor benim ad kirletiyor anlıyorum
PS. Bu soruyu yazarken soru öznel görünür ve kapalı olması muhtemel bir uyarı aldım. Lütfen kapatmayın. İM FPİM FMİF daha açıkça daha iyi olduğu öznel bir görüş, ancak yerine beton kodlama durumlar aramıyorum.

Çok teşekkürler.

CEVAP
16 Kasım 2009, PAZARTESİ


İM/FPİM seni listeye negatifleri sık as bir fıkra uygun kullanımı ile bir iyileşme olabilir. from some.package import mymodulewithalongname as mymod olabilir yararlı kısaltmak kodunuzu ve geliştirmek, okunabilirliği ve yeniden adlandırmak mymodulewithalongname somethingcompletelydifferent Yarın as fıkra olarak kullanılabilir bir tek deyimi düzenleyin.

Düşünün pro-FMİF noktası 3 (çağrı yönlendirme R) vs pro-FPİM noktası 2 (çağrı klar esneklik): R miktarda kolaylaştırmak kaybı bütünlüğü modül sınırları ise F ediyor. Birden fazla fonksiyonu bir modül sınıfları ve değişkenleri genellikle birlikte çalışmak için tasarlanmıştır: farklı anlamlar için bağımsız olarak geçiş olmamalı. Örneğin, düşünün modülü random ve fonksiyonları seed uniform: olsaydın geçin alma sadece onlardan biri için farklı bir modül, o zaman elinden gelenin sonu normal bağlantı arasında aramalar için seed ve sonuçlarının aramalar için uniform. Modül çok iyi tasarlanmış, uyum ve bütünlük ile, modülün sınırları parçalayarak R kolaylaştırma aslında daha kolay bir şey bilmemen daha iyi yapmak için yapar olumsuzdeğilyapıyor.

Tam tersi, F sağlayan şeydirkoordinebirleştiğinde fonksiyonları, sınıfları ve değişkenleri (yani, genel olarak, idari bölümler . anahtarlama ^em>aitbirlikte tarafından oluşturulur). Örneğin, test tekrarlanabilir (FPİM pro-nokta 1), sahte hem seed random random modül ve eğer kodu aşağıdaki FPİM, söyleyeceklerin bitti mi, koordinasyon garantili; ama eğer bir kod var ithal fonksiyonlarını doğrudan, sen avlamak için her tür modül ve tekrar alay tekrar ve tekrar ve tekrar. Yapma testleri mükemmel tekrarlanabilir genellikle de gerektirir "eşgüdümlü alay" tarih ve saat işlevi kullanırsanız from datetime import datetime bazı modüller bulmalısın ve alay edip, onları bütün olarak tüm bu yapmak from time import time vb.) emin olmak için her zaman alınan çeşitli yerlerinde sistemi sor "saat kaç şimdi?" gayet tutarlı (eğer kullandığınız FPİM, sadece sahte iki ilgili modülleri).

Gerçekten çok kullanarak katma değeri yok çünkü FPİM seviyorumçarpıntam adı yerine tek bir yetkili kişi (barenames arasındaki fark ve nitelikli adları vardırbüyük-- olsunbu yüzdennitelikli bir adı ile çok daha fazla kontrol, tek başına veya çarpma olabilir, belki hiç bir barename ile daha!).

Ah evet, her puan her biri için -- sorunuza muhtemelen yarım düzine sorulara yanıt olması için çalışma günün her adamak olabilir mi;-). Bu en azından "neden R" ve alay bazı aşağı kaynar test sorunları --/. daha iyi F giderir umarım ^em>korunması ve iyi tasarlanmış artırılması verme imkanı(F) (R) baltalamak yerine.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BiGSH0TROB

    BiGSH0TROB

    7 NİSAN 2011
  • Glove and Boots

    Glove and Bo

    1 ŞUBAT 2007
  • Joshua Benedict

    Joshua Bened

    26 EKİM 2013