Ketika bekerja dalam bahasa yang tidak memiliki struktur bawaan dan fitur organisasi (misalnya jika tidak memiliki ruang nama, paket, rakitan dll ...) atau di mana ini tidak cukup untuk menjaga basis kode dari ukuran yang terkendali, respons alami adalah untuk mengembangkan strategi kita sendiri untuk mengatur kode.
Strategi organisasi ini mungkin termasuk standar yang berkaitan dengan di mana file yang berbeda harus disimpan, hal-hal yang perlu terjadi sebelum / setelah jenis operasi tertentu, dan konvensi penamaan dan standar pengkodean lainnya, serta banyak "ini adalah bagaimana hal itu diatur - jangan macam-macam dengan itu! " ketik komentar - yang valid selama mereka menjelaskan alasannya!
Karena strategi kemungkinan besar akan berakhir disesuaikan dengan kebutuhan spesifik proyek (orang, teknologi, lingkungan dll ...) sulit untuk memberikan solusi satu ukuran untuk semua untuk mengelola basis kode yang besar.
Oleh karena itu saya percaya saran terbaik adalah merangkul strategi spesifik proyek, dan menjadikan pengelolaannya sebagai prioritas utama: mendokumentasikan struktur, mengapa demikian, proses untuk membuat perubahan, mengauditnya untuk memastikan itu dipatuhi, dan yang terpenting: ubah ketika perlu diubah.
Kita sebagian besar terbiasa dengan kelas dan metode refactoring, tetapi dengan basis kode besar dalam bahasa seperti itu itu adalah strategi pengorganisasian itu sendiri (lengkap dengan dokumentasi) yang perlu di refactored jika diperlukan.
Alasannya sama dengan untuk refactoring: Anda akan mengembangkan mental block untuk bekerja pada bagian kecil dari sistem jika Anda merasa bahwa keseluruhan organisasi itu berantakan, dan pada akhirnya akan membiarkannya memburuk (setidaknya itulah pendapat saya tentang saya t).
Peringatannya juga sama: gunakan pengujian regresi, pastikan Anda dapat dengan mudah kembali jika refactoring salah, dan rancang sedemikian untuk memfasilitasi refactoring di tempat pertama (atau Anda tidak akan melakukannya!).
Saya setuju bahwa ini jauh lebih sulit daripada refactoring kode langsung, dan lebih sulit untuk memvalidasi / menyembunyikan waktu dari manajer / klien yang mungkin tidak mengerti mengapa itu perlu dilakukan, tetapi ini juga merupakan jenis proyek yang paling rentan terhadap pembusukan perangkat lunak. disebabkan oleh desain tingkat atas yang tidak fleksibel ...