NetBeansの自動修正

みなさんこんにちは! NetBeansの正規表現の自動置換に関連する1つの問題の解決策を共有したいと思います。



問題の説明



多くのプロジェクトを実装する場合、プログラマはローカライズの問題、特に多言語ユーザーインターフェイスサポートの実装を解決する必要があります。 私はよくこの問題に遭遇し、適切な場所でキーによって呼び出されたトークンのリスト(配列)を使用してこれを実行していました(以下、 PHPのプロジェクトについて説明しますが、この記事はNetBeans IDEを使用する開発者に役立ちます):





<?php



$_CONFIG['errors'] = array();



$_CONFIG['errors']['db_connection'] = "Database connection error:";

$_CONFIG['errors']['no_user'] = "No user with this e-mail and password.";

$_CONFIG['errors']['wrong_user_data'] = "Wrong user data.";



...



?>







しかし、このソリューションには多くの欠点があります。

  1. コードに挿入される値を正確に確認するには、言語ファイルのあるタブに絶えず切り替えて、目的の値を探す必要があります。
  2. 配列の複数のネストから生じる不便(この例では、ネストは2レベルですが、それ以上になる場合があります)。
  3. このデータ構造は変数です。このようなタスクの場合、これらのトークンの値はスクリプトの実行中に変化しないため、定数を使用する方が論理的です。


問題の声明



上記の問題を解決するために、次の問題に従ってサブタスクに分解します。

  1. 開発環境のコードの任意の部分からトークンの意味にすばやく切り替える機能を実装します。
  2. トークンの主なタイプを識別し、プレゼンテーションの最も便利で理解しやすい構造を構築します(大規模なプロジェクトでは、トークンの数は数千に達することがあります)
  3. 変数の代わりに定数を使用します。


したがって、定数クラスを使用してこの問題を解決するのが最も便利です。

<?php



class __ERRORS {

/**

* Database errors

*/

const DB_CONNECTION = "Database connection error:";

const NO_USER = "No user with this e-mail and password.";

const WRONG_USER_DATA = "Wrong user data.";



/**

* Forms validation errors

*/

const WRONG_CAPTCHA = "Wrong captcha code";



.....



?>








このようなアプローチにより、トークンを必要なクラスに分割することが可能になります。 クラス__TIPS__MESSAGES__WARNINGSなどを簡単に作成できます。 また、 Ctrlキーを押しながらIDEのコードの任意の部分でクラス定数をクリックすると、すぐに宣言に移動するため、開発プロセスが大幅に高速化されます。



私が遭遇した問題



それでも、1つの問題が残っています。配列内にトークンを含む巨大なファイルが既にある場合の対処方法です。 多くのシステムは、ローカライズへのこのアプローチで書かれています。 多くのトークンがありますが、それらを新しい構造に割り込むのは自然なことです。 IDE自体の論理的な解決策はオートコレクトのようです。



それで、私が記事を書いている理由になります。 まず、トークンのストレージ構造を変更するために、NetBeansで正規表現\ $ \ _ CONFIG \ ['errors' \] \ ['(。+)' \]でオートコレクトを使用しました。



画像



次に、すべての定数の名前を大文字に変更する必要があり、その後停止しました。 NetBeansでこれを実現する方法を探し始めました。 そして、 公式ソースでも 。 これは自動的に実行できないことが判明しました。 それから私はマクロについて思い出しました。 コード内の定数名を検索する別の正規表現を記述し、見つかった定数名を大文字に変換するマクロを記述するだけです。



これを行うには、 [編集]-> [マクロ記録の開始]に移動し、正規表現([az] {1} [a-z _] *)を探します=



画像



マクロ記録を停止します編集->マクロ記録停止し、名前を付けます。

マクロコントロールパネルの[ ツール]-> [オプション]-> [エディター]-> [マクロ ]に移動し、マクロを見つけます。



画像



大文字から大文字への変換コマンドを追加し、迅速なマクロ呼び出しのためにキーの組み合わせを割り当てます。 これで、コードをすばやくリファクタリングできるようになりました。



画像



おわりに



この記事では、特定の実用的な問題の解決策について説明します。 しかし、これは単なる例として選択されたものであり、むしろ、歴史的に見ても、そのような解決策を探求する原動力となりました。 ただし、上記の手順は、NetBeans IDEで大量のコードをすばやく見つけて置き換える必要性に関連するこれらのタスクの多くを解決するのに役立ちます。 この記事が誰かの役に立つことを願っています。



文学



PS記事著者には招待が必要です。



UPD著者dzarezenkoが招待を受けました。 どうもありがとう!



All Articles