Читать книгу Programming Kotlin Applications - Бретт Мак-Лахлин, Brett McLaughlin - Страница 54

Organize Your Classes with Packages

Оглавление

While it's great that you've got Person separate from the test main function, you've still not really solved the original problem: class organization. If having all your classes in one file is a pain, then by extension, so is having all your classes in a single directory.

What you really want is to organize your classes by functionality. So let's assume that you want your Person class, but you also think you might later want some specific types of people; maybe a Mother class or a Child class. Suppose you're building software to model a genealogy, for example.

In that situation, you really want your classes related to Person grouped together. But you might also have some classes related to the customer, with their account information: username, password, email. These aren't instances of Person, they're (perhaps) instances of a User. You might even have a UserPreferences class at some point, too, letting you store that user's information. So that might all belong to a group of classes related to User.

Kotlin—and many other languages—use the concept of packages to provide this organization. A package is just a logical grouping of classes, with a particular namespace: some way to prefix and identify classes as being related. You could have a person package with Person, Mother, Father, and so forth, and a user package with User, UserPreferences, and the like.

Naming your package is important, though, so a few best practices:

 Packages should begin with lowercase letters. Use person instead of Person. (Classes begin with capitals; packages with lowercase.)

 Start the package with a dot-separated name that identifies the organization, like org.wiley or com.myCodeShop.

 If you might use languages other than Kotlin, you may want to also add kotlin as part of the package name, to distinguish the package from other code (such as Java).

Put all this together and separate the pieces with a dot delimiter (.). For this book, the package will usually be org.wiley.kotlin.[general category]. Person will be in org.wiley.kotlin.person and User will be in org.wiley.kotlin.user.

NOTE You don't always have to have the last part of the package name (like person) match a class in that package (like Person). You might have an org.wiley.kotlin.sport package that has various sports-related classes like Football, Baseball, Hockey, and Volleyball, but not have an actual Sport class. It really depends on your own preferences and style.

Programming Kotlin Applications

Подняться наверх