28. Sona Kalanlar

Bu bölüm pratik bir kaç konuyu kapsar.

28.1. Deyim sınırlayıcılar

Bazı diller deyimleri sonlandırmak için, noktalı virgül ; gibi noktalama işaretleri gerektirir. Ruby bunun yerine sh ve csh'ın geleneğini takip eder. Birden fazla deyim noktalı virgülle ayrılmalıdır ancak bir satırın sonuna noktalı virgül koymanız gerekmez, satır sonu karakteri bir noktalı virgülmüş gibi davranır. Eğer bir satır tersbölü (\) ile biterse o zaman onu takip eden satır sonu karakteri dikkate alınmaz, bu da çok sayıda satıra bölünmüş tek bir satır oluşturmanızı sağlar.

28.2. Yorum Satırları

Niçin yorum yazmalıyız? İyi yazılmış bir kodun kendi kendini belgelemesi yanında başkalarının da çiziktirdiğimiz koda bakabileceği ihtimalini göz ardı etmemeliyiz. Öte yandan siz ve kendiziniz iki gün önceki sizle farklı kişilersiniz; hangimiz uzun bir süre sonra bakıp, "bunu yazdığımı hatırlıyorum, ama ne cehennemi kastettim!" dememişizdir ki?

Bazı deneyimli yazılımcılar, güncelliğini yitirmiş ve tutarsız yorumların hiç yorum yazmamaktan daha kötü olduğuna dikkat çeker. Tabii ki yorumlar okunabilir bir kodun vekili olmamalıdır; eğer kodunuz yeterince açık değilse muhtemelen yanlışlarla doludur. Ruby'yi öğrenirken yorum yazmaya sık sık ihtiyacınız olacak, ancak daha iyi duruma geldiğiniz zaman basit, şık ve okunabilir kodlar yazmaya başladığınızda daha az yorum satırına ihtiyaç duyacaksınız.

Ruby yorum satırını belirtmek için # işareti kullanarak betik dillerinin izlediği geleneksel yolu izler. # ile başlayan her satır yorumlayıcı tarafından gözardı edilir.

Ayrıca büyük yorum bloklarını mümkün kılmak için Ruby yorumlayıcısı "=begin" ve "=end" arasındaki satırları da gözardı eder.

#!/usr/bin/env ruby

=begin
**********************************************************************
  Bu bir yorum öbeği. Daha sonra kodunuzu okuyanların (kendiniz de dahil)
  rahatlıla kodunuzu anlayabilmeleri için bir şeyler yazabilirsiniz.
  Yorumlayıcı bu öbeği görmezden gelir. Her satır başında '#' işaretine
  ihtiyacımız yok.
**********************************************************************
=end

28.3. Kodunuzu düzenlemek

Ruby yorumlayıcısı kodları okuduğu gibi işletir. Derleme aşaması gibi bir şey söz konusu değildir; eğer birşey henüz okunmamışsa basitçe tanımsızdır.

#sonuç bir tanımsız yöntem ("undefined method") hatası olacaktır:

print successor(3),"\n"

def successor(x)
  x + 1
end

Bu, ilk bakışta öyle gibi gözükse de, kodunuzu baştan aşağı bir tasarım harikasına dönüştürmeniz için zorlamaz. Yorumlayıcı, bir yöntem tanımlamasıyla karşılaştığında tanımlanmamış başvuruları da rahatlıkla ekleyebilir ve yöntem çağrıldığında tanımlı olabileceğinden emin olabilirsiniz:

# fahrenhaytı santigrata çevirir,
# iki adımdan olusur.

def f_to_c(f)
  scale(f - 32.0)
end

def scale(x)
  x * 5.0 / 9.0
end

printf "%.1f iyi bir sıcaklık.\n", f_to_c(72.3)

Perl ya da Java'da alıştığınızdan daha az elverişli olsa da prototip yazmadan C yazmaktan daha az kısıtlayıcıdır. Bir kaynak kodunun altındaki kodu en üste koymak her zaman çalışır. Üstelik başlangıçta göründüğünden daha az can sıkıcıdır. Tanımlamak istediğiniz davranışı yaptırmak için en ağrısız ve uygun yol dosyanın başında bir main işlevi tanımlamak ve en altta çağırmaktır.

#!/usr/bin/env ruby

def main
  # Ana mantığı burada açıklayın...
end

# ... destek kodunu buraya koyun ...

main # ... burada çalıştırmaya başlayın.

Bu yöntem ayrıca Ruby'nin karmaşık yazılımları, okunabilir, tekrar kullanılabilir ve mantıksal ilişkilendirilmiş parçalara bölünmesini desteklemesine yardımcı olur. Daha önce modüllere ulaşmak için include özelliğinin kullanımını görmüştük. Ayrıca load ve require özellikleri de yararlı olabilir. load başvurduğu dosya kopyalanıp yapıştırılmış gibi işlev görür (C'deki #include ön işlemcisine benzer). require biraz daha yetenekli bir özelliktir: kodun bir kere ve ihtiyaç duyulduğu zaman yüklenmesini sağlar. load ve require arasındaki diğer farklılıklar için Ruby SSS'a bakın.

28.4. İşte bu kadar!

Bu kılavuz Ruby'de yazılım geliştirmeye başlamanıza yetecek kadar bilgi içerir. Eğer başka sorularınız olursa Ruby sitesine göz atabilirsiniz. Ruby SSS ve Ruby Başvuru Kütüphanesi de yararlı kaynaklardan bir kaç tanesidir.

Şansınız bol olsun, iyi kodlamalar!