いくつかの要件はあまりにも奇妙に感じられるため、皆さんを楽しませるためにそれらを集めました。
コード仕様の要件
コードを静的にインポートできる場合は、静的にインポートする必要があります。
すべてのコードが静的にインポートされていない場合は、直接 PR され、マージが拒否されます。
例:equalsAnyIgnoreCase("test","test");
これは次を使用する必要があります import static org.apache.commons.lang3.StringUtils.equalsAnyIgnoreCase;
次のように書くとします。StringUtils.equalsAnyIgnoreCase("test","test");
素晴らしいアーキテクトは、これを静的インポートに変更する必要があると要求しています。
素晴らしい解釈
Java の静的インポート (import static) は JDK 1.5 バージョンから提供されており、その目的は、文字入力の量を減らし、コードの可読性を向上させ、プログラムをよりよく理解することです。
これは、特定の静的メンバー変数、メソッド、または指定されたクラスのすべての静的メンバー変数とメソッドをインポートするために使用されます。クラス内のすべてのメソッドが static で宣言された静的メソッドである場合、それらは import static によって直接インポートできます。
静的インポートを誤って使用すると、プログラムが読みにくくなり、保守が困難になる可能性があります。
静的インポートの後、コードにクラス名を記述する必要はありませんが、クラスが「物事のクラスの記述」であることがわかります。クラス名を変更しなくても、静的属性の明らかな意味がわかります。また、静的メソッドは無限メソッドに置き換えられます。これにより、特に複数の静的インポートがある場合、読者がそのプロパティやメソッドが何を表しているのか、さらにはどのクラスのプロパティ (メソッド) がそれについて考慮する必要があるのかを理解することが困難になります。クラスとワイルドカード (*) が使用されている この静的インポートは悪夢です。
ここでも例として StringUtils を使用します。
StringUtils は Apache Commons に固有のものではありません。
プロジェクトをプルするだけで、StringUtil の数がわかります。パッケージ内ではメソッド名qualsAnyIgnoreCase が使用されていません。
このメソッド名は多くのパッケージで使用される可能性があります。
静的インポートの使用を強制するというこの奇妙な要件はまったく法外であり、特定の段階でプログラムの可読性を破壊します。
実際の使用では、一部のパブリック メソッド名には静的インポートを使用しないようにしてください。
ただし、一部のテスト クラスでテストに使用されるアサーションは、引き続き静的にインポートできます。
import static org.apache.commons.lang3.StringUtils.split;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;
上記の一般的に使用されるテストの一部でアサーションが使用されている場合。
奇妙なコード仕様について話す - 静的インポートの悪用 - Java - OSSEZ