SORU
21 HAZİRAN 2009, Pazar


Açıkça Ruby dönmek için iyi bir stil mi?

Gelen bir Python arka plan, orada her zaman bir "doğru yol" ("Pythonic") gelince, stil, merak ediyorum eğer aynı var Ruby. Kendi stil kuralları ama benim kaynak kodu serbest bırakmayı düşünmem kullanıyorum, ve mevcut herhangi bir yazılı olmayan kurallarına uymak istiyorum.

"Açıkça yöntemleri? return türü" Ruby Yoludur Ve olmadan böyle bir şey yapıldığını görmüştüm, ama bunu yapmak için doğru bir yolu var mı? Belki de hakkı varzamanbunu yapmak için? Örneğin:

def some_func(arg1, arg2, etc)
  # Do some stuff...
  return value # <-- Is the 'return' needed here?
end

CEVAP
29 Kasım 2012, PERŞEMBE


("") Cevap soru, ama cevap olarak benim iki kuruş atacağım. eski

Ama kesin bir dönüş "kullanarak, programcılar yabancı kod ile çalışmak, ya da Ruby bu özelliği aşina. için kafa karıştırıcı" Ruby yol olmayabilir

Örneğin bir sayı geçmiş bir ekler ve örnek bir değişkene atar gibi bir işlevi olabilir.

def plus_one_to_y(x)
    @y = x   1
end

Bu bir değer verdiğini, ya da bir işlevi olması gerekiyordu? Gerçekten zor geliştirici örnek değişkeni atar hem olarak VE değer olarak tespit edilmiş demek döndürür ne demek.

Sanırım uzunca bir süre sonra başka bir programcı (belki de değil tanıdık ile nasıl Yakut mu verir dayalı son kod satırı idam) gelip istediği için bazı baskı tablolar için günlük ve işlevi haline gelir

def plus_one_to_y(x)
    @y = x   1
    puts "In plus_one_to_y"
end

Şimdi fonksiyonu bozulureğer bir şey bekliyor döndürülen bir değer. Eğer hiçbir şey döndürülen bir değer bekliyor, sorun yok. Eğer yere uzak, kod zincirine bir şey bu arama döndürülen bir değer bekliyor açıkçası, eğer bir numara almak değil gibi başarısız olacak.

Bu gerçek şimdi soru: her şeyi gerçekten döndürülen bir değeri olacağını mı sandın? Bu bir şey ya da bozmak değil mi? Gelecekte elbet bir şey çıkacak? Kim bilir? Tüm aramalar sadece tam kod Gözden Geçirme size bildiririz.

Bu yüzden (en azından benim için), en iyi uygulama yaklaşımı ise önemli bir şeyler dönüyor bu çok açık olmanız, ya da hiçbir şey, geri dönmek için.

Küçük demo fonksiyonu durumunda, bir değer vermek istediğimizi varsayarsak, bu şekilde yazılı olacaktır

def plus_one_to_y(x)
    @y = x   1
    puts "In plus_one_to_y"
    return @y
end

Ve farkında olmadan bir değeri döndürür herhangi bir programcı için, ve onları kırmak için çok daha zor, çok açık olurdu.

Alternatif olarak, bu şekilde yaz ve return ifadesini bırak bir

def plus_one_to_y(x)
    @y = x   1
    puts "In plus_one_to_y"
    @y
end

Ama neden? Neden sadece neler var içinde 0 net yapmak değil.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Eric Magidson

    Eric Magidso

    4 Ocak 2009
  • geraldnonadoez

    geraldnonado

    3 Temmuz 2013
  • SuppressedStorm

    SuppressedSt

    11 AĞUSTOS 2013