Section 5/71 menit

5. Kapan Tidak Digunakan

5. Kapan Tidak Digunakan

Hindari package ketika:

1. Single-module project (app tanpa library)

swift
// App target biasa — hanya satu module
// 'package' = 'internal' di sini karena tidak ada module lain dalam "package"
// Gunakan 'internal' saja — lebih jelas intent-nya

// JANGAN: penggunaan tidak berguna
package class ViewModel { }  // sama saja dengan internal di single-module app

// GUNAKAN: internal (default)
class ViewModel { }  // otomatis internal

2. API yang memang harus public

swift
// Jika end-user SDK perlu menggunakan type ini, harus public
// 'package' menyembunyikannya dari end-user

// JANGAN jika ini adalah public API:
package class UserProfile { }  // end-user tidak bisa pakai!

// GUNAKAN: public
public class UserProfile { }

3. Implementation detail yang hanya relevan dalam satu module

swift
// Ini cukup internal — tidak perlu diakses dari module lain dalam paket

// JANGAN: terlalu luas
package func validateEmail(_ email: String) -> Bool { }  // tidak perlu lintas module

// GUNAKAN: internal (atau private)
func validateEmail(_ email: String) -> Bool { }  // default internal

4. Ketika package boundary tidak sesuai dengan logical boundary

swift
// Hati-hati: "package" berarti SEMUA module dalam Package.swift
// Jika package-mu sangat besar, ini mungkin terlalu luas

// Lebih baik rancang module boundary yang tepat daripada
// menggunakan 'package' sebagai workaround untuk design yang buruk