Kedua gotchas dengan global dan lajang adalah testability dan deployable.
Untuk pengujian, saya telah melihat terlalu banyak memanfaatkan pengujian yang terlalu kompleks hanya untuk berurusan dengan masa hidup global dan tunggal yang tidak terencana dengan baik. Pastikan bahwa objek tersebut memiliki aturan start up dan down yang jelas dan sederhana.
Adapun penyebaran, ada dua kasus untuk dipertimbangkan. Pertama, bagaimana objek global Anda akan hidup? Apakah itu di perpustakaan statis atau dinamis? Jika objek global itu digunakan kembali untuk sebuah plugin, apakah Anda akan mendapatkan salinan tambahan? Kedua, apa yang terjadi ketika objek global dijatuhkan ke aplikasi paralel? Apakah ini aman?
Secara keseluruhan, saya pikir alasan itu berarti bahwa global dan lajang hanya digunakan secara luar biasa.