Чесно кажучи, ваша функція може "зробити одне", але, як ви самі заявили
Я міг би почати розбивати регулярний вираз на кілька функцій,
а це означає, що ваш reg ex код робить багато речей. І я здогадуюсь, що це може бути розбито на менші, індивідуально перевірені блоки. Однак, якщо це гарна ідея, відповісти непросто (особливо не бачачи фактичного коду). І правильна відповідь може бути ні "так", ні "ні", але "ще немає, але наступного разу вам доведеться щось змінити в цьому регістрі exp".
але відчуваю, що я би фактично втратив читабельність таким чином, оскільки я ефективно перемикаю мови
І це головний момент - у вас є фрагмент коду, написаний мовою reg ex . Ця мова не забезпечує жодного хорошого засобу абстракції (і я не вважаю "названі групи захоплення" заміною функцій). Таким чином, рефакторинг "мовою reg ex" не є дійсно можливим, а переплетення менших ex regps з мовою хосту може насправді не покращити читабельність (принаймні, ви так відчуваєте , але у вас є сумніви, інакше ви не поставили б питання) . Тож ось моя порада
покажіть свій код іншому просунутому розробнику (можливо, на /codereview// ), щоб переконатися, що інші думають про читабельність так, як ви. Будьте відкриті до думки, що інші, можливо, не знайдуть 100-лінійний рег-реп настільки читабельним, як ви. Іноді поняття "його не легко зламати на більш дрібні шматки" можна подолати лише другою парою очей.
дотримуйтесь фактичної еволюційності - чи виглядає ваш блискучий регп досі так добре, коли надходять нові вимоги, і вам доведеться їх впровадити та протестувати? Поки ваш reg exp працює, я б його не торкався, але щоразу, коли щось потрібно міняти, я б переглядав, якби це справді гарна ідея вкласти все в цей великий блок - і (серйозно!) Переосмислити, якщо розколотись на менші шматки не були б кращим варіантом.
дотримуйтесь ремонтопридатності - чи можете ви ефективно налагоджувати reg exp у поточній формі? Особливо після того, як вам доведеться щось змінити, і тепер ваші тести говорять про те, що щось не так, чи є у вас налагоджувач reg exp, який допомагає вам знайти першопричину? Якщо налагодження стає важким, це також буде приводом переглянути свій дизайн.