Jujur, fungsi Anda mungkin "melakukan satu hal", tetapi seperti yang Anda nyatakan sendiri
Saya bisa mulai memecah regex menjadi beberapa fungsi,
yang berarti kode reg Anda melakukan banyak hal. Dan saya kira itu bisa dipecah menjadi lebih kecil, unit yang dapat diuji secara individual. Namun, jika ini adalah ide yang baik tidak mudah dijawab, (terutama tanpa melihat kode yang sebenarnya). Dan jawaban yang benar mungkin bukan "ya" atau "tidak", tapi "belum, tapi lain kali Anda harus mengubah sesuatu di reg exp itu".
tapi rasanya saya akan benar-benar kehilangan keterbacaan seperti itu, karena saya secara efektif beralih bahasa
Dan ini adalah intinya - Anda memiliki kode yang ditulis dalam bahasa reg ex . Bahasa ini tidak menyediakan sarana abstraksi yang baik (dan saya tidak menganggap "kelompok penangkap" sebagai pengganti fungsi). Jadi refactoring "dalam bahasa reg ex" tidak benar-benar mungkin, dan menjalin exp yang lebih kecil dengan bahasa host mungkin tidak benar-benar meningkatkan keterbacaan (setidaknya, Anda merasa begitu, tetapi Anda memiliki keraguan, jika tidak, Anda tidak akan memposting pertanyaan) . Jadi inilah saran saya
tunjukkan kode Anda ke pengembang lanjutan lain (mungkin di /codereview// ) untuk memastikan orang lain berpikir tentang keterbacaan seperti yang Anda lakukan. Bersikaplah terbuka terhadap gagasan bahwa orang lain mungkin tidak menemukan reg line 100 exp yang dapat dibaca seperti Anda. Kadang-kadang gagasan "tidak mudah pecah menjadi potongan-potongan kecil" dapat diatasi hanya dengan sepasang mata yang kedua.
mengamati evolvabilitas aktual - apakah reg Anda yang mengkilap masih terlihat begitu baik ketika persyaratan baru tiba dan Anda harus menerapkan dan mengujinya? Selama reg exp Anda berfungsi, saya tidak akan menyentuhnya, tetapi setiap kali sesuatu harus diubah, saya akan mempertimbangkan kembali jika itu benar-benar ide yang baik untuk menempatkan setiap orang ke dalam satu blok besar ini - dan (serius!) Memikirkan kembali jika membelah menjadi potongan yang lebih kecil tidak akan menjadi pilihan yang lebih baik.
amati rawatan - dapatkah Anda secara efektif men-debug reg exp dalam bentuk saat ini dengan sangat baik? Terutama setelah Anda harus mengubah sesuatu, dan sekarang tes Anda memberi tahu Anda ada sesuatu yang salah, apakah Anda memiliki debugger reg exp yang membantu Anda menemukan akar masalahnya? Jika debugging menjadi sulit, itu juga akan menjadi kesempatan untuk mempertimbangkan kembali desain Anda.