2012-02-15 17 views
15

"SCM" adlı bir modülde "SVN" yi temsil eden bir sınıf oluşturmam gerekiyor. Ama Ruby'de kısaltmalar ile uğraşırken konvansiyonun ne olduğunu bilmiyorum ve "Camel case tercih edilir" dışında Google ile alakalı hiçbir şey bulamadım.Ruby - Adlandırma Kuralı - sınıf/modül adlarındaki kısaltmaların harf durumu?

SCM::SVN veya Scm::Svn mu arayayım? Bunun için bir sözleşme var mı?

+3

Ruby sözleşmesi, [trollop] (https://rubygems.org/gems/trollop), [asset_hat] (https://github.com/mintdigital/asset_hat) veya hatta Tenpuku (Google Translate'e göre Subversion için Japonca). ;-) –

+1

@MarkThomas Fun fact: _tenpuku_ (転 覆) "subversion" anlamına gelebilir, ancak daha yaygın kullanım [capsizing and rollovers] gibi şeyler içindir (https://www.google.com/search?q=%E8 % BB% A2% E8% A6% 86 ve TBM = isch & BIW = 1438 & bh = 719 & sei = bKs7T-3qDcydmQX1rri8Cw). Ve şimdi biliyorsun. ;) – brymck

cevap

14

SCM::SVN bana en iyi görünüyor. Raylar, ERB, ORM ve OMFGIMATEAPOT gibi sınıflarla dolu. Ve bu JSONSerializer gibi şeylerden bahsetmiyor. Ruby'nin kaynağı da a bunch of acronyms. Bana en açık örnek, YAML. Gördüğüm gibi standart CamelCase için mektuplar açmak ama genellikle onları downcase için değil (Rails model isimleri hakkında fikirleri olmasına rağmen).

grep varsa ve kaynak kodu config/initializers/inflections.rb aşağıdakileri ekleyin

grep -r 'class [A-Z]\{3,\}' <path/to/source> 
# or, if you only want acronyms and nothing like YAMLColumn: 
grep -rw 'class [A-Z]\{3,\}' <path/to/source> 
+0

Ruby kaynak koduna göz atmak ve kısaltma aramak için bana gelmedi. Çok zeki! SCM: SVN kullanacağım. Teşekkürler! – kikito

3

Bence SCM::SVN daha iyi görünüyor (estetik olarak) ve aynı sözleşmeyi kullanan kütüphaneleri gördüm. Gerçekten düşündüğün şeyin daha iyi bir meselesi.

(Ancak, bir Raylar projeyi inşa ediyoruz eğer unutmayın ve bu modül/lib dizinden otomatik yüklenmesi olmak istiyorum, sen Scm::Svn kullanmak gerekebilir.)

+0

Raylar hakkında iyi nokta. Teşekkürler! – kikito

15

gibi bir şeyle örnekler bol görebiliyorsanız.

ActiveSupport::Inflector.inflections(:en) do |inflect| 
    inflect.acronym 'SVN' 
end 

Şimdi $ rails g model SVN… çalışan svn.rb adlı bir dosyaya ve ilişkili bir tabloda svns yılında SVN adında bir sınıf oluşturur.

+4

Eh, benim sorum, genel olarak ruby ​​ile ilgili, özellikle raylar değil, ama cevabınız başka birine yardımcı olabilir. Teşekkürler! – kikito

+0

Teşekkür ederim. Bu tüm farkı yaratır. Daha önce ve daha sonra bu siteye ekledikten sonra 'svn'.classify'ı deneyin. Diğer dillerde/platformlarda böyle bir şey yoktur, bu yüzden otomatik bir şekilde dönüştürülebilecek bir şey kullanmak mantıklıdır. Ama activesupport, daha iyi görünen her şeyi yazmamı sağlıyor. Sonuçta Ruby'yi daha çok seviyorum. –

İlgili konular