Perl kodunuzda her zaman use strict ve use warnings kullanın!
Eğer Perl Maven Başlangıç dersleri veya sınıf derslerimden Perl dilini öğrenmiş iseniz bu konuyu çoktan öğrenmişsiniz demektir. Maalesef hala use strict ve use warnings kullanımının öneminin farkında olmayan Perl geliştiricileri bulunmakta.
Perl'i kendi başına veya meslektaşlarından öğrenenlerin bazıları bu 2 kullanımın önemini kavrayamıyor veya internetten rastgele örnekler bulup kopyala-yapıştır yaptıklarından kullanmamaya meyilli oluyor.
Kullansalar bile, bunlara neden ihtiyaç duyulduğunu anlayamayabiliyorlar.
Bunun sebebi aslında açık, birçok eski ders notu ve kitaplarda Bu 2 onemli konudan sonlara doğru bahsediliyor. Tonlarca koda ek olarak, şirketlerde ve webde yayınlanan programlar bu 2 önemli yapı kullanılmadan yazılmış. Daha kötüsü, bu 2 yapıyı kullanmaya savaş açmış insanlar bulunmakta çünkü bu durumu "özgürlüğün genişlemesi" olarak görüyorlar.
Küçük ekstra maliyet ya da bu araçları kullanmanın vermiş olduğu rahatsızlık sağladıkları değerden daha ağır basar.
Kullanımı aşağıdaki gibidir.
Kodunuzun herhangi bir bölümünde her zaman use strict and warnings kullanmanız iyi olacaktır
Bu özelliği sadece çok kısıtlı alanlarda veya gerçekten ekstra güce ihtiyacınız olduğunda kapatınız.
(Kuaföre gittiğinizde kask giymeye büyük olasılıkla ihtiyacınız yoktur, değil mi?)
Zamanla nasıl ve ne zaman bu özelliği kapatacağınızı öğreneceksiniz. Ama bir çoğumuz için bu yapıları default kullanmak iyi bir yaklaşımdır.
strict ve warnings nedir?
Derleyiciye Perl'i daha katı derlemesi için direktif veren derleyici işaretçileridir.
Varlık sebepleri birçok ortak program hatasından kaçınmaya yardımcı olmaktır.
Ayrı bir makalede karşılaşabileceğiniz ortak hata mesaj ve uyarılarını görebilirsiniz.
use warnings
-w işaretçisini şimdiye kadar perl derleyici tanımının yapıldığı satırda aşağıdaki gibi görmüş olabilirsiniz: #!/usr/bin/perl -w.
use warnings, -w işaretçisinin "yeni" ve gelişmiş versiyonudur.
Sayısız avantajı vardır ve her perl scriptinin -w kullanımından
"new" 2000 yılında 5.6 versiyonu ile Perl diline eklenmiştir.
Bu nedenle gerçekten yeni değildir, ama maalesef hala birçok Perl
geliştiricisine yenidir.
warnings kullanımı potansiyel bir soruna sebep olabilecek
birçok çalışma zamanı hatasını görmemizi sağlar.
Genelde uyarıları görmek iyidir fakat son kullanıcıların uygulamada
bu uyarıları görmesini istemeyiz.
Bazı durumlarda bu uyarıları düzeltmeye çalışmak son kullanıcılar
açısından istenmeyen durumların oluşmasına sebep olabilir. Boylece
son kullanıcının ürüne olan guveni sarsılabilir.
Hiç kimse uygulamayı kullanırken etrafta uçuşan her türlü "hata mesajları"nı
gerçekten görmek istemez.
Bu nedenle bazı insanlar warnings yapısının ürün ortamında (production) kullanılmaması
gerektiği yönünde tavsiyede bulunurlar. Son kullanıcılarının Perl'den
gelen bu uyarıları görmesini istemezler. Bu anlaşılabilir bir yaklaşımdır
fakat warnings yapısının istenmeyen etkilerinden kurtulmanın başka
metotları vardır.
Bu linkten görebilirsiniz how to capture and save warnings.
Eğer bir uyarı çalışma boyunca sürekli tetikleniyorsa "bazı" problemlere işaret ediyordur.
Kesinlikle daha dikkatli kodlama ile uyarıları en aza indirecek birisi olabilir.
Bu nedenle kesinlikle her zaman warnings kullanımını şiddetle tavsiye ediyorum.
Kodumuzda oluşan uyarıları gidermenin birçok yolunu göreceğiz.
Görebileceğiniz bazı uyarılar aşağıdadır:
Bu yapının 3 farklı özelliği vardır. Yukarıdaki gibi kullanıldığında
3 özellik birden aktif edilmiş olur. Bu önerilen kullanım şeklidir.
Bu 3 özellikten en çok görüleni her değişkenin my veya our anahtar
sözcükleri ile tanımlanmasını zorunlu kılan kullanımdır. Sadece bu özelliği aktif etmek gerektiğinde
use strict 'vars'; şeklinde tanımlama yapılır.
Bu özellik aktif edildiğinde eğer ki yukarıda belirtildiği gibi tanımlama
yapılmaz ise aşağıdaki hata mesajı alınır:
Global symbol requires explicit package name
use strict 'refs'; sembolik referans
ie karşılaşıldığında çalışma zamanı hatası üretir. Başka bir bölümde sembolik
referans kavramını açıklayacağız. Perl dosyamızın en başında bu özelliği kullanmış
isek ne zaman faydalı olduğunu ne nasıl kullanılması
gerektiğine değineceğiz.
use strict "subs" kullanımı uygunsuz barewords
kullanımını (derleme zamanında) engeller. Aşağıdaki hata mesajını oluşturur:
Bareword not allowed while "strict subs" in use.
Daha basit bir ifade ile, string değişkenlerini çift veya tek tırnak içine
almanız gerekir.
Uyarılardan kaçınmanın yollarından biri kodunuzu daha kurşun geçirmez
hale getirmektir. Uyarının oluşabileceği her yerde özel koşulları kontrol eden,
varsayılan değerleri atayan ya da uyarıdan kaçınmayı sağlayacak uygun kodun
çalışmasını sağlayacak daha fazla kod yazın.
Tabi bu durumda uyarıların nerede oluşacağını bildiğinizi varsayıyoruz.
Bu iyi bir egzersiz olabilir, ama daha fazla kod ve disiplin gerektirir.
Mutlaka perl ile geliştirilen bir uygulama için gerekli değildir.
Kesinlikle var olan bir uygulamanın içinde kolaylıkla yapabileceğiniz bir şey değildir.
Kodumuzdan net olmayan bir uyarı aldığımızda, use diagnostics;
ifadesini kodumuza ekleyerek daha detaylı açıklama isteyebiliriz. Veya
splain komut satırı aracını kullanarak bunu yapabiliriz.
Aşağıdaki kullanım tüm uyarıları hataya dönüştürür.
Bu üretim (production) kodumuzda iyi bir fikir gibi gözükmeyebilir ama
geliştirme (development) kodumuzda sizi ve takımınızı uyarıları hızlıca temizlemeye zorlar.
use strict
"Foo" # iyi
'Bar' # iyi
Baz # kötü
Uyarılardan kaçınmak
splain ve diagnostics
Ölümcül uyarılar (Fatal warnings)
use warnings FATAL => 'all';

Published on 2015-07-05