2012-11-21 25 views
14

Gerçekten kesinlikle otomatik olarak kontrol eden bir linter sahip PEP 8. belirtilenler gibi stil standartları takip ve benzeri benim kod bu nedenle çok daha iyidir.Python hizalama

PEP 8'de sadece bir nokta var, E251 & E221 çok iyi hissetmiyorum.

var var1  = 1234; 
    var2  = 54; 
    longer_name = 'hi'; 

var lol = { 
    'that'  : 65, 
    'those'  : 87, 
    'other_thing' : true 
}; 

Ve benim düşünceme göre, bu dramatik okunabilirliği artırır: bir JavaScript kökenli geliyor, ben aşağıdaki gibi değişken atamaları hizalamak için kullanılır.

dictionary = { 
    'something':  98, 
    'some_other_thing': False 
} 

elimden hizalama olmadan değişken atamaları ile "canlı", ama şeyse: boşluk kolon sonra izin verilmiş olduğundan Sorun, bu sözlükleri ile PEP 8. tarafından dis-önerilir, bu kötü değil mi hiç böyle t böyle bir işlev çağrısında adlandırılmış argümanları geçmek mümkün değildir:

some_func(length=  40, 
      weight=  900, 
      lol=   'troll', 
      useless_var= True, 
      intelligence=None) 

Yani, aşağıdaki gibi bir sözlük kullanıyor yapıyor sonunda neler:

specs = { 
    'length':  40, 
    'weight':  900, 
    'lol':   'troll', 
    'useless_var': True, 
    'intelligence': None 
} 

some_func(**specs) 

veya sadece si mply

some_func(**{'length':  40, 
      'weight':  900, 
      'lol':   'troll', 
      'useless_var': True, 
      'intelligence': None}) 

Ama his var bu iş etrafında PEP 8 E251/E221 göz ardı etmek yerine sadece kötüdür.

iyi yöntem nedir?

DÜZENLEME yıllar sonra

düzeltmeyin. Er ya da geç daha uzun olan yeni bir değişken gelecek ve her şey tekrar güzelleşinceye kadar bir süre boyunca buraya ve ara çubuğuna vurmak zorunda kalacaksınız. Değmez.

+11

En iyi uygulama PEP 8'i takip etmektir. Ödev operatörlerini ve sözlük değerlerini hizalamamak için kullanılır. Her gün onunla çalışmaya tabi tutulursa, mütevazı fikriniz kolayca değişebilir. – delnan

+0

Argümanları Javascript'te isme bile aktarabilir misiniz? Öyleyse neden bu korkunç şeyi yapardın? – jadkik94

+0

JS, 15 sıralı argüman yerine bir teknik özellik nesnesini geçmek için iyi bir uygulamadır. Douglas Crockford dixit ve tamamen katılıyorum. – bgusach

cevap

13

En iyi uygulama özneldir, ancak en yaygın uygulama PEP8'e yapışmaktır.

Kesinlikle sözlükleri adlandırılmış bağımsız değişken içeren bir işlevi çağırmak istediğiniz her zaman oluşturma önermiyoruz. Bu oldukça savurganlık. Orijinal some_func aramanızın neden çalışmadığını göremiyorum. Çok uzun ve beceriksizlerse işlev çağrılarımı hatlara ayırırım. Ama ben onları hizalamıyorum. Tavsiyenin nedeninin, zamanla tüm aralıkları doğru bir şekilde sürdürmek için büyük bir acıya sahip olacağından ve fikir birliğinin prettyness'in kazancı üzerinde sürdürülebileceğinden kaynaklandığını düşünüyorum.

uzakta align kendi kod üzerinde çalışıyorsanız, kimin umurunda? PEP8 bir kılavuz değil, bir yasadır.

+1

Bazı noktalarda haklısınız, ama iyi ... Neyse ki IDE'm otomatik olarak özel bir karaktere dayanıyor: ":", "=" vb. "Güzel" tutmak için hiçbir zaman gerekmiyor. Benim için bakım da hızlı ve rahat okuma ile ilgili. – bgusach

+0

Yani IDE ayarlarınızı değiştirin ya da hizalamaya devam edin. Bana bir kazan-kazan gibi görünüyor :) – acjay

+0

En iyi cevap. Yalnız kodladığım sürece, standartları (öznel olarak) okunabilirliği artırmak için biraz değiştireceğim :) – bgusach

2

Yani, aşağıdaki gibi bir sözlük kullanıyor yapıyor sonunda neler:

specs = { 
    length:  40, 
    weight:  900, 
    lol:   'troll', 
    useless_var: True, 
    intelligence:None 
} 

IMHO - bu (o anahtarları alıntı olmadan geçerli söz dizimi idi) daha az okunabilir ve eğer ben some_longer_named_varible eklemek istediğinizde, ben gerçekten her şeyi yeniden spacing hakkında muck yapmak isteyip istemediğimden emin değilim.

Ben sadece korkarım kabullenmesini gerektiğini düşünüyorum.

+0

Anahtar değerlerin yazım hatası düzeltildi. Bazı adların çok uzun olması durumunda, hizalamanın kafa karıştırıcı olabileceği doğrudur. Bu nadir durumlarda, uzun pozisyonda son pozisyonda ve hizalama olmadan beyan ettim. Ama bana göre, çoğu durumda okunabilirlik artırıldı, gözler nereye bakılacağını biliyor. – bgusach

+0

Makul bir şekilde yakın uzunluktaki ödevleri seviyorum, ancak uzun bir adamı alabilmek için çok çirkin mekanlarla uğraşmayacağım. Çoğunlukla dizilmiş, karmakarışık bir karışıklıktan daha iyidir. Ve saatlerce orada ve orada birkaç saat fazladan kendilik memnuniyeti ve güzel kod fiyatı ise, bu bir bedel ödemek için daha fazla bir bedel. –

1

PEP8'e yapışmasını öneriyorum.Değişkenlerinizden birinin adını değiştirmek gerekirse ne olur? Otomatik bir yeniden düzenleme aracı bu değişecek:

var1  = 1234 
var2  = 54 
longer_name = 'hi' 

Buna:

var1  = 1234 
var2  = 54 
even_longer_name = 'hi' # not aligned any more! 

Kendini hizalanmış tutmak için daha fazla iş yapma bitireceğiz.

+1

Kod yazmak için kullandığım editör otomatik olarak basit bir tuş vuruşuyla kod yazıyor. Yani, büyük bir anlaşma değil. Tek sorun çok uzun değişkenler ile birlikte gelir, ancak bu durumlarda, o ödevi hizalamıyorum ve mümkünse, son pozisyona getirdim. – bgusach

+0

@ ikaros45: alt satır, bu kişisel bir seçimdir. Kodunuzu okuyacak tek kişi sizseniz, en çok istediğinizi yapın ve PEP8 gibi stil rehberlerine bağlı kalın. Tersine, eğer bir takımın bir parçası olarak kod yazıyorsanız, takımın üzerinde anlaştığı herhangi bir stil rehberine sadık kalmak önemlidir, böylece kodunuzu okuması gereken herkesi kızdırma. –

+0

Düşüncelerimi istiyorsanız, PEP8'in önerdiği gibi hizalanmayan stili tercih ederim. Gözün, bir boşluktan diğerine uzanan bir yanından kaybolmak eğiliminde olduğunu düşünüyorum. Bölüm kitaplarının sayfa numaralarından ayrıldığı bir kitabın içerik sayfasını okuduğunuzda olduğu gibi. –