日本語

テキストと日常ツール · テキスト ツールキット

大文字と小文字コンバータがキャメルケースと parseHTTPResponse などの頭字語を分割する方法

· 仕組み

テキスト変換 開発者のワークフロー ユニコード

識別子 parseHTTPResponse を解析トークン、HTTP トークン、および応答トークンに分割する
オリジナル ToolAcre ベクトル イラスト

優れた大文字小文字コンバーターが適用する 3 つの境界ルール (区切り記号の実行、下位から上位への遷移、頭字語エッジ) と、なぜ parseHTTPResponse2Json が脆弱な境界ルールを明らかにするテストであるのかについて説明します。

parse_h_t_t_p_response とその他の失敗 — 識別子の変換が「hello world」の変換より難しい理由

「hello world」を hello_world に変えるのは簡単です。 parseHTTPResponse を parse_h_t_t_p_response に変えることは、アルゴリズムが各大文字を単語として扱ったことを示しています。 Python API の JavaScript 識別子の名前を変更する開発者は、その逆、つまり、最初にトークンを識別してから、宛先の結合規則を適用する必要があります。同じ最初のステップで、ヘビ、ケバブ、ラクダ、パスカルの出力が強化されるはずですが、そうでない場合は、単語の開始位置について 4 つのボタンが一致しません。

ルール 1: 区切り記号は連続する - スペース、ハイフン、アンダースコア、句読点はすべて境界を示します (連続する数に関係なく)

一連のスペース、ハイフン、アンダースコア、およびその他の文字/数字以外の文字は、すでに境界をマークしています。実行を 1 つの区切り文字として扱います: button--primary は、ハイフン間の空のトークンではなく、2 つのトークンになる必要があります。 ToolAcre の大文字と小文字のコンバーターは、Unicode 対応の文字と数字の表現で分割するため、一般的な非 ASCII 文字が A ~ Z の外側にあるという理由だけで破棄されることはありません。空白の正規化は命名規則に関するものであり、元のソース ファイルを自動的に変更するものではありません。

ルール 2: 小文字から大文字への移行 — 小文字または数字の後に大文字が続くと、新しい単語が始まります

小文字または数字の後に大文字が続くパターンでは、大文字の前に境界が挿入されます。これにより、parseResponse が parse + Response に変わり、2Json が 2 + Json になることができます。このルール自体は、前の単語と最後の数字を分離しません。ToolAcre は、大文字の J を分割する前に、Response2 を 1 つのトークンとして扱います。Response + 2 が必要かどうかはスタイルガイドの決定であるため、すべてのコンバーターが同じ選択をすると仮定するのではなく、数値識別子を検査してください。

ルール 3: 頭字語のエッジ — 大文字の後に大文字、小文字のペアが続き、最後の大文字の前で頭字語が終了します。

頭字語にはもう 1 回先読みする必要があります。 HTTPResponse では、R の後に小文字の応答が続くため、大文字の実行 HTTP は R の前で終了します。 run と大文字と小文字のペアに一致するルールにより、H + T + T + P + Response ではなく、HTTP + Response という境界がそこに挿入されます。名前がすべて大文字で終わる場合、新しい単語をマークするための小文字の接尾辞はなく、頭字語は一緒のままになります。これが、識別子をトークン化することと、すべての大文字の前に区切り文字を挿入することの違いです。

数字とエッジケース - 「2Json」が分割される場所、およびすべてのスタイルガイドを満たすルールセットがない理由

数字の表記規則はあいまいなままです。version2Parser、HTTP2Json、および IP6Address がすべて同じ単語グループを意味するわけではありません。 ToolAcre は、後続の大文字が次の境界をトリガーするまで、前のトークンを持つ数字をグループ化します。同様に、ロケールに依存する大文字を含む文字は展開されたり、ASCII とは異なる動作をする可能性があります。トルコ語のドット付き/ドットなし i とドイツ語 ß は手動で確認する必要があります。このツールは決定論的な変換を行うものであり、変数の意味論的な名前付けを理解するものではありません。

実用的な例 — スネーク、ケバブ、キャメル、パスカル ケースを使用して parseHTTPResponse2Json とハイフンでつながれた CSS クラスを実行する

実際の大文字と小文字のコンバーターを介して parseHTTPResponse2Json を実行します。スネークケースでは parse_http_response2_json、ケバブケースでは parse-http-response2-json、キャメルケースでは parseHttpResponse2Json、パスカルケースでは ParseHttpResponse2Json が生成されます。 button--primary の場合、連続するセパレータは button_primary と button-primary に折りたたまれます。これらの出力により、成功した頭字語ルールと数字のグループ化の選択の両方が明らかになります。コードベース全体で検索と置換を使用する前に、宛先 API に対してテストしてください。

これでカバーされないもの — 独自のポストを持つトルコ語のドット i などのロケール固有の大文字と小文字

このメカニズムは、すべての言語の大文字と小文字の折りたたみを実装したり、頭字語が特定のドメイン用語を表すと推測したり、プログラム全体で参照の名前を変更したりするわけではありません。文字列と識別子の変換は、シンボルを認識したソース コードのリファクタリングとは異なります。このツールは、Python サービスが名前変更された JSON フィールドを受け入れることを保証できません。発信者は依然として古いスペルに依存している可能性があります。パブリック フィールド名を変更した後、スキーマ テストを実行します。

重要な点 — Text Toolkit の大文字と小文字のコンバーターはこれら 3 つのルールを適用し、結果を即座に表示するため、コードに貼り付ける前に確認できます。

まず、セパレータ、トランジション、頭字語エッジを使用してトークンを識別します。その後、それらを結合してケースに入れてください。テキスト ツールキットを使用すると、これらのルールが即座に出力されて表示され、変換を元に戻すことができます。頭字語が多いフィールド名の場合は、単純な大文字の正規表現をリポジトリ全体に盲目的に適用するのではなく、実際のスネーク/ケバブの結果を比較してください。