257 показання

Рефакторинг 025 - Розкладання регулярних виразів

за Maximiliano Contieri5m2025/03/31
Read on Terminal Reader

Надто довго; Читати

Ви можете розбити складний регекс валідації на менші частини, щоб перевірити кожну частину індивідуально і повідомити про точні помилки.
featured image - Рефакторинг 025 - Розкладання регулярних виразів
Maximiliano Contieri HackerNoon profile picture
0-item

Зробіть регулярні вирази випробуваними та зрозумілими

Зробіть регулярні вирази випробуваними та зрозумілими

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 довгі лінії і методи
  • довгі лінії і методи
  • Неприйнятні вирази
  • Відкритий сайт
  • Первісні кольори
  • Ізоляція помилок
  • Знання силоси
  • Остарілі коментарі
  • Остарілі коментарі
  • Помилки без емпатії для кінцевих користувачів
  • Помилки без емпатії

    Спорідний код пахне

    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-xxv

    https://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-xqz3evd

    https://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-xqz3evd

    https://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-xxxvii

    https://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-100

    https://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

    Крок

    1. Аналізуйте регекс, щоб визначити його логічні компоненти.
    2. Розбийте регекс на більш дрібні, названі під-шляхи для кожного компонента.
    3. Напишіть одиничні тести для кожного під-шляху, щоб переконатися, що він працює належним чином.
    4. Поєднайте перевірені під-шляхи в повну логіку перевірки.
    5. Refactor код, щоб надати чіткі повідомлення про помилку для кожної дефектної частини.
      1. Аналізуйте регекс, щоб визначити його логічні компоненти.
      2. Розбивайте регекс на менші, іменовані підмоделі для кожного компонента.
      3. Напишіть одиниці тестів для кожного підпатерну, щоб переконатися, що він працює належним чином.
      4. одиниці тестування
      5. Поєднуйте випробувані підшляховики в повну логіку валідації.
      6. Рефактор коду, щоб надати чіткі повідомлення про помилку для кожної несправної частини.
      7. Код зразка

        Попередня

        функція 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

        Тип

        • [x]Підприємництво
      8. [x] Напівавтоматичний
      9. [x]

        Безпека ️

        Це перезавантаження є безпечним, якщо уважно слідувати крокам.

        Тестування кожного компонента гарантує раннє виявлення помилок.


        Чому код краще? ✨

        Рефакторизований код краще, тому що він покращує читання, підтримуваність та випробуваність.

        Розбиття регекса на менші частини полегшує розуміння того, що робить кожна частина.


        Ви також можете повідомляти про конкретні помилки, коли перевірка не вдається, що допомагає користувачам виправити свій вхід.

        Це також чудова можливість застосувати техніку 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.Рефактуйте код, щоб надати чіткі повідомлення про помилку для кожної дефектної частини.

        Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція Позиція ПозиціяВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВ

        Без відповідних інструкцій

        З конкретними інструкціями

        Без відповідних інструкцій

        Без відповідних інструкцій

        З конкретними інструкціями

        З конкретними інструкціями

        Джеміні

        Джеміні

        Джеміні

        Джеміні

        Джеміні

        Джеміні

        Джеміні

        Джеміні

        DeepSeek

        DeepSeek

        DeepSeek

        DeepSeek

        DeepSeek

        DeepSeek

        DeepSeek

        DeepSeek

        Мета АІ

        Мета АІ

        Мета AI

        Мета AI

        Мета AI

        Мета AI

        Мета AI

        Мета AI

        Qwen

        Qwen

        Qwen

        Qwen

        Qwen

        Qwen

        Qwen

        Qwen

        Таги ️

        • Реєстрація
        Перевірка
      10. Testability
      11. Рівень

        • [x]Внутрішній
        [x]Підвічний[x]

        Пов'язані рефакторинг

        Див. також

        Кредити 🙏

        Зображення від Герд Альтман на Pixabay

        УкрзалізницяPixabay«Р»

        Ця стаття є частиною серії Реферат.


L O A D I N G
. . . comments & more!

About Author

Maximiliano Contieri HackerNoon profile picture
Maximiliano Contieri@mcsee
I’m a sr software engineer specialized in Clean Code, Design and TDD Book "Clean Code Cookbook" 500+ articles written

ПОВІСИТИ БИРКИ

ЦЯ СТАТТЯ БУЛА ПРЕДСТАВЛЕНА В...

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks