Зробіть регулярні вирази випробуваними та зрозумілими
Зробіть регулярні вирази випробуваними та зрозумілимиTL;DR: Ви можете розбити складний регекс перевірки на менші частини, щоб перевірити кожну частину індивідуально і повідомити про точні помилки.TL;DR: Ви можете розбити складний валідаційний регекс на менші частини, щоб перевірити кожну частину індивідуально і повідомити про точні помилки.
Проблеми вирішені
- Hard-to-test зазвичайні виразиUnclear error reporting Debugging nightmares Maintenance challenges Too довгі лінії та методи Unmaintainable вирази a href="https://hackernoon.com/how-to-find-the-stinky-part-of-Hard-to-test Регулярні виразиРегулярні вирази
- Незрозумілі повідомлення про помилки
- Відкриття кошмарів
- Виклики з технічного обслуговування
- Too довгі лінії і методи довгі лінії і методи
- Неприйнятні вирази
- Відкритий сайт Первісні кольори
- Ізоляція помилок
- Знання силоси
- Остарілі коментарі Остарілі коментарі
- Помилки без емпатії для кінцевих користувачів Помилки без емпатії
- Аналізуйте регекс, щоб визначити його логічні компоненти.
- Розбийте регекс на більш дрібні, названі під-шляхи для кожного компонента.
- Напишіть одиничні тести для кожного під-шляху, щоб переконатися, що він працює належним чином.
- Поєднайте перевірені під-шляхи в повну логіку перевірки.
- Refactor код, щоб надати чіткі повідомлення про помилку для кожної дефектної частини.
- Аналізуйте регекс, щоб визначити його логічні компоненти.
- Розбивайте регекс на менші, іменовані підмоделі для кожного компонента.
- Напишіть одиниці тестів для кожного підпатерну, щоб переконатися, що він працює належним чином. одиниці тестування
- Поєднуйте випробувані підшляховики в повну логіку валідації.
- Рефактор коду, щоб надати чіткі повідомлення про помилку для кожної несправної частини.
- [x]Підприємництво
- [x] Напівавтоматичний [x]
- Реєстрація
- Testability
- [x]Внутрішній
Спорідний код пахне
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxv
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxvhttps://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-i-xqz3evd
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-i-xqz3evdhttps://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-i-xqz3evd
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-i-xqz3evdhttps://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxxvii
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxxviihttps://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xx-we-have-reached-100
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xx-we-have-reached-100https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-ix-7rr33ol
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-ix-7rr33olКрок
Код зразка
Попередня
функція validateURL(url) { const urlRegex = /^(https?:\/\//)([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})(\/.*)?$/; // Criptic and untesteable return urlRegex.test(url); }
функція validateURL(url) { const urlRegex = /^(https?:\/\/)([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})(\/.*)?$/; // Criptic і untesteable return urlRegex.test(url); }
Після 👉
Внутрішньоєвропейська конвенція про захист прав людини (англ. Convention on Human Rights and Human Rights and Human Rights Act (англ. Convention on Human Rights and Human Rights and Human Rights and Human Rights Act (англ. Convention on Human Rights and Human Rights and Human Rights and Human Rights Act (англ. Convention on Human Rights and Human Rights and Human Rights and Human Rights and Human Rights Act (англ. Convention on Human Rights and Human Rights and Human Rights and Human Rights and Human Rights and Human Rights and Human Rights Act (англ. Convention on Human Rights and Human Rights and Human Rights and Human Rights and Human Rights and Human Rights and Human Rights Act (англ. Convention on Human Rights and Human Rights and Human Rights and Human Rights and Human Rights and Human Rights and Human Rights Act (англ. Convention on Human Rights and Human Rights and Human Rights and Human Rights and Human RightsВнутрішньоєвропейський валютний ринок (англ. Invalid Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate Rate RateТип
Безпека ️
Це перезавантаження є безпечним, якщо уважно слідувати крокам.
Тестування кожного компонента гарантує раннє виявлення помилок.
Чому код краще? ✨
Рефакторизований код краще, тому що він покращує читання, підтримуваність та випробуваність.
Розбиття регекса на менші частини полегшує розуміння того, що робить кожна частина.
Ви також можете повідомляти про конкретні помилки, коли перевірка не вдається, що допомагає користувачам виправити свій вхід.
Це також чудова можливість застосувати техніку Test-Driven Development, поступово збільшуючи складність шляхом введення нових підрозділів.
Тестовий розвитокЯк це покращує бієцію? ️
Розбиваючи регекс на менші, значущі компоненти, ви створюєте ближче зображення між Real-World вимоги (наприклад, "URL повинен мати дійсний протокол") і код.
Реальний світЦе зменшує неоднозначність і гарантує, що код точно відображає домен проблеми.
Зміни ⚠️
Цей підхід може додати деякі переваги для дуже простих шаблонів регекса, де їх розбивання було б непотрібним.
Реактор з AI
Ви можете використовувати інструменти AI, щоб допомогти визначити компоненти regex.
Наприклад, ви можете запитати: «Що робить цей регекс?» і потім: «Як я можу розділити його на менші частини?».Це 2025, жоден програміст не повинен писати нові Регулярні вирази більше.
Регулярні виразиВи повинні залишити це механічне завдання AI.
Suggested Prompt: 1.Analyze the regex to identify its logical components.2.Break the regex into smaller, named sub-patterns for each component.3.Write unit tests for each sub-pattern to ensure it works correctly.4.Combine the tested sub-patterns into the full validation logic.5.Refactor the code to provide clear error messages for every failing part.
Запропонований проміжок: 1.Аналізуйте регекс, щоб визначити його логічні компоненти.2.Розбийте регекс на менші, названі підпатерини для кожного компонента.3.Напишіть одиничні тести для кожного підпатерина, щоб переконатися, що він працює правильно.4.Об'єднайте перевірені підпатерини в повну логіку перевірки.5.Рефактуйте код, щоб надати чіткі повідомлення про помилку для кожної дефектної частини.
Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція ПозиціяВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВБез відповідних інструкцій
З конкретними інструкціями
Без відповідних інструкцій
Без відповідних інструкцій
З конкретними інструкціями
З конкретними інструкціями
Таги ️
Рівень
Пов'язані рефакторинг
Див. також
Кредити 🙏
Зображення від Герд Альтман на Pixabay
УкрзалізницяPixabay«Р»Ця стаття є частиною серії Реферат.