2009-04-21 17 views
6

Tôi đang tìm cách viết một thư viện Scala nhỏ để có được một cảm giác cho mô hình lập trình diễn viên của nó.Các thư viện Scala có tuân thủ cùng quy ước miền ngược để đặt tên các gói như Java không?

Trong mã ví dụ tôi đã gặp, một số thư viện sử dụng tên miền ngược (ví dụ: org.foo.bar) cho các gói và một số không (có thể chỉ để ngắn gọn).

Thư viện Scala có nên sử dụng các quy ước đặt tên giống như Java không? Nói chung, có bất kỳ đề xuất phong cách mã hóa Scala nào tốt như Python có với PEP 8 không?

Có, có thể đặt giỏ trước ngựa, nhưng tôi thấy tôi có thể có được cảm giác tốt cho một ngôn ngữ bằng cách xem một số quy ước đã bị lung lay.

Cảm ơn

Trả lời

8

Lift, một trong những dự án lớn tại Scala, sử dụng quy ước tên miền ngược, mà thực sự làm cho rất nhiều ý nghĩa, như Scala và Java có thể hoạt động, nó đứng vào lý do bạn muốn giữ mọi thứ càng không đau càng tốt, và tôi thực sự không thể nghĩ ra bất kỳ lợi thế đáng giá nào khi thực hiện nó theo bất kỳ cách nào khác.

+0

Cảm ơn bạn, nhìn vào cách Nâng được cấu trúc giúp tôi hiểu rõ hơn về đóng gói/mô-đun. Quy ước miền ngược là OK, nhưng tôi đã sử dụng Python đủ lâu để tôi cũng có thể đánh giá cao các phân cấp gói phẳng hơn. Khả năng nhập khẩu bí danh có vẻ là một giải pháp tốt cho những trường hợp hiếm hoi trong đó xảy ra xung đột không gian tên, mặc dù thừa nhận nó không hoàn toàn giải quyết được vấn đề. –

+0

Xem http://www.drmaciver.com/2009/07/how-packages-work-in-scala/ để biết ví dụ về vấn đề tiềm ẩn. Tuy nhiên, nó làm cho tinh thần để làm theo các tiêu chuẩn Java. – mauhiz

2

Scala cơ bản kế thừa hầu hết các quy ước của Java (trong hầu hết mọi thứ). Có một vài ngoại lệ cho điều này. Ví dụ, Scala "getter và setter" đang thực sự thực hiện theo cách sau:

class Person { 
    private var _name: String = _ 

    def name = _name 

    def name_=(s: String) { 
    _name = s 
    } 
} 

Khi nghi ngờ, mượn ước từ Java, Ruby hoặc Haskell (theo thứ tự ưu tiên). Liên quan đến các gói, câu trả lời là "có", gói Scala được đặt tên bằng cách sử dụng quy ước miền ngược.