Perl - Kodlama Standardı
Elbette, her programcının biçimlendirme konusunda kendi tercihleri olacaktır, ancak programlarınızı okumayı, anlamayı ve sürdürmeyi kolaylaştıracak bazı genel yönergeler vardır.
En önemli şey, programlarınızı her zaman -w bayrağı altında çalıştırmaktır. Gerekirse, uyarı yok pragması veya $ ^ W değişkeni aracılığıyla belirli kod bölümleri için bunu açıkça kapatabilirsiniz. Ayrıca her zaman katı kullanım altında çalışmalı veya neden olmasın nedenini bilmelisiniz. Sigtrap kullanımı ve hatta teşhis pragmalarının kullanılması da yararlı olabilir.
Kod yerleşiminin estetiğiyle ilgili olarak, Larry'nin önem verdiği tek şey, çok satırlı bir BLOCK'un kapanış küme parantezinin, yapıyı başlatan anahtar kelimeyle aynı hizada olması gerektiğidir. Bunun ötesinde, o kadar güçlü olmayan başka tercihleri de var -
- 4 sütunlu girinti.
- Mümkünse anahtar kelime ile aynı satırda kıvrık açılış, aksi takdirde sıraya dizilir.
- Çok satırlı bir BLOK'un açılış kıvrımından önceki boşluk.
- Tek satırlık BLOK, kıvrımlar da dahil olmak üzere tek satıra konabilir.
- Noktalı virgülden önce boşluk yok.
- "Kısa" tek satırlık BLOK'ta noktalı virgül atlandı.
- Çoğu operatörün etrafında boşluk.
- "Karmaşık" bir alt simge (parantez içinde) etrafındaki boşluk.
- Farklı şeyler yapan parçalar arasında boş satırlar.
- Kucaklanmayan başkaları.
- İşlev adı ve açılış parantezi arasında boşluk yok.
- Her virgülden sonra boşluk.
- Bir operatörden sonra kesilen uzun çizgiler (ve ve veya hariç).
- Geçerli satırdaki son parantez eşleşmesinden sonraki boşluk.
- Karşılık gelen öğeleri dikey olarak sıralayın.
- Netlik zarar görmediği sürece gereksiz noktalama işaretlerini atlayın.
İşte üzerinde düşünülmesi gereken daha sağlam stil sorunları: Sırf bir şeyi belirli bir şekilde YAPABİLMENİZ, o şekilde yapmanız GEREKEN anlamına gelmez. Perl, size her şeyi yapmanın birkaç yolunu sunmak için tasarlanmıştır, bu nedenle en okunaklı olanı seçmeyi düşünün. Örneğin -
open(FOO,$foo) || die "Can't open $foo: $!";
Daha iyi -
die "Can't open $foo: $!" unless open(FOO,$foo);
Çünkü ikinci yol, ifadenin ana noktasını bir değiştiricide gizler. Diğer yandan,
print "Starting analysis\n" if $verbose;
Daha iyi -
$verbose && print "Starting analysis\n";
Çünkü asıl mesele kullanıcının -v yazıp yazmaması değil.
Perl son operatörü sağladığında, ortadan çıkabilmeniz için üstte veya altta bir döngüden çıkmak için aptalca bükülmelerden geçmeyin. Daha görünür hale getirmek için biraz "aşın" -
LINE:
for (;;) {
statements;
last LINE if $foo;
next LINE if /^#/;
statements;
}
Birkaç önemli noktayı daha görelim -
Döngü etiketleri kullanmaktan korkmayın - okunabilirliği artırmak ve çok düzeyli döngü kesmelerine izin vermek için oradalar. Önceki örneğe bakın.
Grep () (veya map ()) veya "ters işaretler" i geçersiz bir bağlamda kullanmaktan kaçının, yani dönüş değerlerini attığınızda. Bu fonksiyonların hepsinin dönüş değerleri vardır, bu yüzden onları kullanın. Aksi takdirde bunun yerine foreach () döngüsü veya system () işlevini kullanın.
Taşınabilirlik için, her makinede uygulanamayabilecek özellikleri kullanırken, başarısız olup olmadığını görmek için yapıyı bir eval içinde test edin. Belirli bir özelliğin hangi sürüm veya yama düzeyinin uygulandığını biliyorsanız, orada olup olmayacağını görmek için $] (İngilizce PERL_VERSION $) test edebilirsiniz. Config modülü, Perl kurulduğunda Configure programı tarafından belirlenen değerleri sorgulamanıza da izin verir.
Anımsatıcı tanımlayıcıları seçin. Anımsatmanın ne anlama geldiğini hatırlayamıyorsanız, bir sorununuz var demektir.
$ Gotit gibi kısa tanımlayıcılar muhtemelen uygun olsa da, daha uzun tanımlayıcılardaki kelimeleri ayırmak için alt çizgi kullanın. $ Var_names_like_this'i okumak genellikle $ VarNamesLikeThis'den daha kolaydır, özellikle de ana dili İngilizce olmayanlar için. Ayrıca, VAR_NAMES_LIKE_THIS ile tutarlı olarak çalışan basit bir kuraldır.
Paket adları bazen bu kuralın bir istisnasıdır. Perl, tamsayı ve katı gibi "pragma" modülleri için küçük harfli modül isimlerini gayri resmi olarak ayırır. Diğer modüller büyük harfle başlamalı ve karışık büyük / küçük harf kullanmalıdır, ancak ilkel dosya sistemlerinin modül adlarının birkaç seyrek bayta sığması gereken dosyalar olarak temsillerindeki sınırlamalar nedeniyle muhtemelen alt çizgi içermemelidir.
Gerçekten tüylü bir düzenli ifadeniz varsa, / x değiştiricisini kullanın ve biraz daha az satır gürültüsü gibi görünmesi için biraz boşluk koyun. Normal ifadenizde eğik çizgi veya ters eğik çizgi varsa ayırıcı olarak eğik çizgi kullanmayın.
Her zaman sistem çağrılarının dönüş kodlarını kontrol edin. İyi hata mesajları STDERR'a gitmeli, soruna hangi programın neden olduğunu, başarısız sistem çağrısının ve argümanların neler olduğunu ve (ÇOK ÖNEMLİ) neyin yanlış gittiğine dair standart sistem hata mesajını içermelidir. İşte basit ama yeterli bir örnek -
opendir(D, $dir) or die "can't opendir $dir: $!";
Yeniden kullanılabilirliği düşünün. Böyle bir şeyi tekrar yapmak isterken neden beyin gücünü tek seferde harcayasın ki? Kodunuzu genellemeyi düşünün. Bir modül veya nesne sınıfı yazmayı düşünün. Sıkı kullanımla kodunuzun temiz çalışmasını sağlayın ve geçerli uyarılar (veya -w) kullanın. Kodunuzu başkasına vermeyi düşünün. Tüm dünya görüşünüzü değiştirmeyi düşünün. Düşünün ... oh, boşver.
Tutarlı olun.
Nazik ol.