定期的な表現をテスト可能かつ理解可能にする
Make Regular Expressions Testable and UnderstandableTL;DR:複雑な検証レジェックスを小さい部分に分割して、個別に各部品をテストし、正確なエラーを報告できます。
TL;DR:複雑な検証レジェックスを小さなパーツに分解して、個別に各パーツをテストし、正確なエラーを報告できます。
問題解決
トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ >Hard-to-test 普通の表現 通常の表現不明確なエラーレポート 悪夢の解消 メンテナンスの課題 Too 長い行と方法 長い行と方法不適切な表現 トップページ トップページエラー隔離 知識シロス 古いコメント 古いコメントエラーなしの共感エラーなし Related Code Smells
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ステップ
- REGEXを解析してその論理的構成要素を識別します。
- REGEXをそれぞれの構成要素に対してより小さい、命名されたサブパターンに分割します。
- Write unit tests for each sub-pattern to ensure it works correctly.
- Combine the tested sub-patterns into the full validation logic.
- Refactor the code to provide clear error messages for every failing part.
- regexを分析してその論理的構成要素を識別する。
- regexをそれぞれのコンポーネントの名前を付けた小さいサブパターンに分割します。
- Write ユニットテスト for each sub-pattern to ensure it works correctly.
単位テスト- テストされたサブパターンを完全な検証論理に組み合わせる。
- Refactor the code to provide clear error messages for each failing part.
- すべてのエラーメッセージを提供するためにコードを再現します。
サンプルコード
前
機能 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 and untesteable return urlRegex.test(url); }
トップページ > トップページ > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト >トップページ > トップページ > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト > テスト >
タイプ
- [x]セミ自動
[x]セキュリティ ️
このリファクタリングは、注意深く手順に従って安全です。
各コンポーネントをテストすると、早期にエラーを発見できます。
Why is the Code Better? ✨
The refactored code is better because it improves readability, maintenanceability, and testability.
リファクター化されたコードは、読み取り、メンテナンス、およびテスト可能性を向上させます。regexを小さな部分に分割すると、それぞれの部分が何をしているかを理解しやすくなります。
Validation が失敗した場合の特定のエラーを報告することもできますので、ユーザーが入力を修正するのに役立ちます。
This is also a great opportunity to apply the Test-Driven Development technique, gradually increasing complexity by introducing new subparts.
テストドライブ開発How Does it Improve the Bijection? ️
regexをより小さく、意味のあるコンポーネントに分割することにより、あなたは Real-World要求(例えば、「URLは有効なプロトコルを持たなければならない」)とコードの間のより近いマッピングを作成します。リアルワールド
これは曖昧さを減らし、コードが問題ドメインを正確に反映することを保証します。
制限 ⚠️
このアプローチは、非常に単純なregexパターンにいくつかのオーバーヘッドを追加する可能性がありますが、それらを破壊することは不要です。
Refactor with AI
AI ツールを使用して regex コンポーネントの識別に役立つことができます。
AI に regex のそれぞれの部分が何をしているかを説明するように依頼し、次にそれをより小さいテスト可能なパーツに分解する方法を教えてください。例えば、「この regex は何をしているのですか?」と尋ね、次に「どのようにしてそれを小さなパーツに分割できますか?」と答えます。
It's 2025, No programmer should write new Regular Expressions anymore.
普通の表現あなたはこの機械的なタスクをAIに残すべきです。
Suggested Prompt: 1. regex を分析してその論理的構成要素を識別する2. regex をそれぞれの構成要素に対してより小さい、命名されたサブパターンに分割する3.それぞれのサブパターンのユニットテストを書き、正しく機能することを確認する4.テストされたサブパターンを完全な検証論理に組み合わせる5.コードをリファクターして、すべての失敗した部分に対して明確なエラーメッセージを提供する。
Suggested Prompt: 1. regex を分析してその論理的構成要素を識別する。2. regex をそれぞれの構成要素のためのより小さい、名付けられたサブパターンに分割します。3.各サブパターンのユニットテストを書き、正しく動作するようにします。4.テストされたサブパターンを完全な検証論理に組み合わせます。5.コードをリファクターして、すべての失敗した部分に明確なエラーメッセージを提供します。オオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオオ
Without Proper Instructions
With Specific Instructions
Without Proper Instructions
適切な指示なし
With Specific Instructions
With Specific Instructions
トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ >
トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップトップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ >
トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ >
トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップページ > トップトップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ >
トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ >ジェミニ
ジェミニ DeepSeek DeepSeek Meta AI Meta AI Qwen Qwen タグ ️
- テスト
- テスト性
レベル
トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ >[x]
Related Refactorings
また見る
クレジット ↓
イラスト: Gerd Altmann on Pixabay
エイド・オルトマンPixabay「hr」This article is part of the Refactoring Series.
この記事はリファクターシリーズの一部です。