Flutter’da print ve debugPrint

 

print ve debugPrint ile test

Merhaba,

Flutter ile ilgili do’s & dont’s postlarına bakarken karşılaştığım bir konu vardı: print ve debugPrint. print ile test etmek, aşama aşama nerede olduğumu görmek için program yazarken breakpoint koymak kadar çok kullanıyorum console ekranını. Ancak print ile ilerlersem “Don’t invoke ‘print’ in production code” uyarısı ile karşılaşıyorum. Aynı satırı debugPrint ile yazarsam bu uyarı kayboluyor. O yüzden bugün bu ikisinin farkını, birinde neden uyarı verdiğini, diğerinde vermediğini araştırmak istedim. Şimdi ikisini de detaylıca inceleyelim.

print Nedir?

print Dart dilinin standart çıktı fonksiyonu. Terminalde veya konsolda belirtilen metni yazdırmayı sağlıyor.

void main() {
print("Bu bir print fonksiyonu örneğidir.");
}

Dezavantajı nedir?

  • Birinci dezavantajı uzun metinler veya çok fazla satır çıktısı yazdırmak istediğimizde konsolda “output truncated” (çıktı kesildi) hatası verebiliyor (daha önce başıma geldi, debugPrint ile onu araştırdığımda karşılaşmıştım). Yani, çok fazla veriyi aynı anda yazdırırken problem yaşayabiliyoruz.
  • İkinci konu da aslında birinci ile bağlantılı. Çok sayıda veya büyük veri çıktıları almak istediğimizde performans kaybı oluşabiliyor. Yani performans açısından daha az verimli.

debugPrint Nedir?

debugPrint Flutter uygulamaları için optimize edilmiş, Flutter çerçevesine özel bir fonksiyondur. Aynı şekilde konsola metni yazdırıyor ancak uzun metinlerin bölünmesini ve kesilmesini engelliyor.

void main() {
debugPrint("Bu bir debugPrint fonksiyonu örneğidir.");
}

Avantajı nedir?

  • debugPrint fonksiyonu, metinlerin satır sınırlarını kontrol edip gerektiğinde çıktıyı parçalara bölüyor. Bu sayede, uzun metinler düzgün şekilde kesilmeden yazdırılıyor.
  • Bu sayede büyük verileri yazdırırken debugPrint daha performanslı ve uygulamanın performansını olumsuz etkilememiş oluyor.
  • debugPrint çıktıyı varsayılan olarak 800 karakterle sınırlıyor. Ancak daha uzun çıktılar için debugPrint'in “wrapWidth” parametresini kullanabiliriz.

wrapWidth Kullanımı

debugPrint fonksiyonunun wrapWidth parametresi, uzun metinlerin nasıl sarılacağını (wrap) kontrol etmemizi sağlar. Burada sarmak, her bir satırın kaç karakterden sonra bölüneceğini belirlemek anlamına geliyor.

String longText = 'Bu çok uzun bir metin örneğidir. ' * 20;  //Bu metni arka
//arkaya 20 kez yazdırmak demek.

// wrapWidth olmadan debugPrint kullanımı (standart olan)
debugPrint("wrapWidth olmadan:", wrapWidth: 800);
debugPrint(longText);

// wrapWidth parametresi ile debugPrint kullanımı (50. karakterden sonra bölünmesi))
debugPrint("\nwrapWidth ile (50 karakter):", wrapWidth: 800);
debugPrint(longText, wrapWidth: 50);
  • wrapWidth OlmadandebugPrint varsayılan sarma genişliğiyle (800 karakter) kullanılır.
  • wrapWidth ile (50 Karakter)wrapWidth parametresi 50 karakter olarak ayarlanır, böylece her satır 50 karakterden sonra bölünür.

Aşağıda bu kodların çıktısını göreceğiz: metinler belirlenen karakter sayısından sonra yeni satıra geçiyor olacak. Bu, uzun log mesajlarını daha okunabilir hale getirmek için özellikle yararlı bir kullanım.

wrapWidth olmadan:
Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir.

wrapWidth ile (50 karakter):
Bu çok uzun bir metin örneğidir.Bu çok uzun bir
metin örneğidir.Bu çok uzun bir metin örneğidir.Bu
çok uzun bir metin örneğidir.Bu çok uzun bir metin
örneğidir.Bu çok uzun bir metin örneğidir.Bu çok
uzun bir metin örneğidir.Bu çok uzun bir metin
örneğidir.Bu çok uzun bir metin örneğidir.Bu çok
uzun bir metin örneğidir.Bu çok uzun bir metin
örneğidir.Bu çok uzun bir metin örneğidir.Bu çok
uzun bir metin örneğidir.Bu çok uzun bir metin
örneğidir.Bu çok uzun bir metin örneğidir.Bu çok
uzun bir metin örneğidir.Bu çok uzun bir metin
örneğidir.Bu çok uzun bir metin örneğidir.Bu çok
uzun bir metin örneğidir.Bu çok uzun bir metin
örneğidir.

Hangi Durumda Hangisi Kullanılmalı?

  • Kısa ve Basit Çıktılar: Basit ve kısa çıktılar için print’i halen kullanabiliriz (sarı uyarıdan rahatsız olmuyorsak).
  • Uzun ve Karmaşık Çıktılar: Uzun metinler veya çok fazla veri yazdırmak gerektiğinde debugPrint’i tercih edilmek daha akıllıca olur.
  • Genel Kullanım: Yine de Flutter projelerinde hata ayıklama yaparken genellikle debugPrint kullanmak daha uygun ve güvenilir.

Gördüğümüz gibi uygulamada yapacağımız ufak değişiklikler performansta ve kullanımda büyük farklar yaratabiliyor. Ben araştırmamı yaptıktan sonra artık tüm testlerimde print yerine debugPrint kullanmaya karar verdim, sarı uyarıdan da kurtuldum. Umarım faydalı olmuştur.

Teşekkürler.

Selin.

Hiç yorum yok: