2012-02-15 36 views
15

Tôi cần phải tạo một lớp đại diện cho "SVN" bên trong một mô-đun được gọi là "SCM". Nhưng tôi không biết quy ước khi giao dịch với từ viết tắt trong Ruby là gì và không thể tìm thấy bất kỳ thứ gì có liên quan trong Google, ngoại trừ "trường hợp Camel được ưu tiên".Ruby - Công ước đặt tên - chữ cái viết tắt của các từ viết tắt trong tên lớp/mô-đun?

Tôi có nên gọi nó là SCM::SVN hoặc Scm::Svn? Có một quy ước cho điều này?

+3

Quy ước Ruby là đặt tên cho nó là [trollop] (https://rubygems.org/gems/trollop), [asset_hat] (https://github.com/mintdigital/asset_hat) hoặc thậm chí Tenpuku (Tiếng Nhật cho Subversion theo Google Dịch). ;-) –

+1

@MarkThomas Thực tế thú vị: _tenpuku_ (転 覆) có thể có nghĩa là "lật đổ", nhưng cách sử dụng phổ biến hơn là dành cho những thứ như [capsizing and rollovers] (https://www.google.com/search?q=%E8 % BB% A2% E8% A6% 86 & tbm = isch & biw = 1438 & bih = 719 & sei = bKs7T-3qDcydmQX1rri8Cw). Và bây giờ bạn biết. ;) – brymck

Trả lời

14

SCM::SVN trông tốt nhất đối với tôi. Đường ray có đầy đủ các lớp như ERB, ORM và OMFGIMATEAPOT. Và đó không phải đề cập đến những thứ như JSONSerializer. Nguồn của Ruby cũng có a bunch of acronyms. Ví dụ rõ ràng nhất đối với tôi là YAML. Các tiêu chuẩn như tôi đã nhìn thấy nó là để upcase chữ cho CamelCase nhưng thường không để downcase chúng (mặc dù Rails có ý kiến ​​về tên mô hình).

Nếu bạn có grep và mã nguồn bạn có thể thấy rất nhiều ví dụ với một cái gì đó giống như

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

Nó không xảy ra với tôi để duyệt mã nguồn Ruby và tìm kiếm các từ viết tắt. Rất thông minh! Tôi sẽ sử dụng 'SCM: SVN'. Cảm ơn! – kikito

3

Tôi nghĩ rằng SCM::SVN trông đẹp hơn (về mặt thẩm mỹ) và tôi đã thấy các thư viện sử dụng cùng một quy ước. Nó thực sự chỉ là một vấn đề của những gì bạn nghĩ đọc tốt hơn.

(Tuy nhiên, lưu ý rằng nếu bạn đang xây dựng một dự án Rails, và muốn mô-đun này để được tự động nạp từ thư mục/lib, bạn có thể phải sử dụng Scm::Svn.)

+0

Điểm tốt về Rails. Cảm ơn! – kikito

15

Thêm dòng sau vào config/initializers/inflections.rb.

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

Bây giờ chạy $ rails g model SVN… sẽ tạo ra một lớp có tên SVN trong một file có tên svn.rb và một bảng liên svns.

+4

Vâng, câu hỏi của tôi là về ruby ​​nói chung, không phải là đường ray nói riêng, nhưng câu trả lời của bạn có thể giúp người khác. Cảm ơn! – kikito

+0

Cảm ơn bạn. Điều này tạo nên sự khác biệt. Hãy thử ''svn'.classify' trước và sau khi thêm nó vào inflector. Trong các ngôn ngữ/nền tảng khác, không có thứ gì như vậy, do đó, bạn nên sử dụng thứ gì đó có thể được chuyển đổi theo cách tự động. Nhưng activesupport cho phép tôi viết bất cứ điều gì có vẻ tốt hơn. Kết quả cuối cùng là tôi yêu Ruby hơn nữa. –

Các vấn đề liên quan