奇妙なコード仕様について話しましょう - 静的インポートの悪用

いくつかの要件はあまりにも奇妙に感じられるため、皆さんを楽しませるためにそれらを集めました。

コード仕様の要件

コードを静的にインポートできる場合は、静的にインポートする必要があります。

すべてのコードが静的にインポートされていない場合は、直接 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

 

おすすめ

転載: blog.csdn.net/huyuchengus/article/details/131118426
おすすめ