1

いくつかの式の正規表現をチェックしているだけで、メソッドで変数を何度も再利用しています

Pattern pattern = Pattern.compile("([^test])");
        Matcher matcher = pattern.matcher("SS");
        if (matcher.find()) {
            return false;
        }
        //Making it 'null' before re-use
        pattern = null;
        matcher = null;
        pattern = Pattern.compile("([newtest]){4,}");
        matcher = pattern.matcher("test");
        if (matcher.find()) {
            return false;
        }
        pattern = null;
        matcher = null;
        pattern = Pattern.compile("[stack]{2,}");
        matcher = pattern.matcher("overflow");
        if (matcher.find()) {
            return false;
        }

null他の新しい値をそれに設定する前に変数を作成するのは良いことですか?

意味はありますか?

注:同じ変数を再度使用することは非標準の兆候かもしれませんが、再割り当ての前に変数を無効にすることが適切かどうかを知りたいだけですか?

4

6 に答える 6

8

他の新しい値をそれに設定する前に、変数をnullにするのは良いことですか?

いいえ - それは無意味であり、コードが読みにくくなります。

とにかく、代わりにループする方法を考え出す必要があるように思えます-現在、同じ種類のコードを何度も何度も取得しているため、これは悪い考えです。変更されているのはデータだけです。そのため、それをパラメータ化します。実際のコードでは、最初からパターン入力データの両方をハードコーディングすることはないと思いますが、たとえば、テストするパターンのリストを簡単に作成できます。

個人的には、メソッド内で変数を別の目的で再利用している場合 (たとえば、現在の値に基づいて変数を変更するのではなく)、とにかくリファクタリングする必要があることを示唆しています。

于 2013-05-23T12:53:21.933 に答える
0

いくつかのテストを実行しましたが、変数を null に設定すると、ガベージ コレクション プロセスに役立つようですどうやら、JVM は、変数が新しいオブジェクトに割り当てられるよりも、null に設定された変数に反応しやすく、以前のオブジェクトがハングしたままになります。これを示した私のコードはここにあります:

http://www.evernote.com/shard/s4/sh/1a067433-722d-4d2c-9487-0ac661261c20/45f571f144a8af40d62d2e48ea1670e9

于 2014-07-28T14:10:16.403 に答える