Hac*_*g J 3 scala sun-coding-conventions
我正在学习 scala,我正在查看 scala 风格指南的官方文档。但我很困惑为什么同样的表达同时是鼓励和劝阻。
根据Scala 风格指南,第一个package coolness是错误的,但在package coolness示例中间的第二个是正确的。
// wrong! this is definitely wrong
package coolness
// right! puts only coolness._ in scope
package com.novell.coolness
// right! puts both novell._ and coolness._ in scope
package com.novell
package coolness //but why is it OK?
// right, for package object com.novell.coolness
package com.novell
/**
* Provides classes related to coolness
*/
package object coolness {
}
Run Code Online (Sandbox Code Playgroud)
已解决:我不知道超过 2 行的包声明与用点分隔的一行声明相同。
说起来
package com.novell.coolness都一样package com.novell; package coolness
它在您引用的代码正上方说包名称应遵循 Java 包命名约定。Java 包命名约定规定包名应该是全局唯一的,这是通过使用在包作者控制下的 Internet 域名作为包名前缀来实现的。
例如,如果您控制 domain example.com,那么您可以使用任何包名称,例如com.example._您的包,但不能使用,例如com.microsoft.coolness.
所以,com.novell.coolness可以,因为它遵循上述规则(假设您是 Ray Noorda),但coolness不是,因为它不遵循该规则(或者,如果它遵循该规则,那么这意味着您在.根域命名空间的控制权,这几乎肯定不是真的,除非您是 ICANN)。
这实际上根本不是关于 Scala 的问题,而是关于 Java 包命名约定的问题,Scala 风格指南建议您遵循这些约定。