3

私たちのチームでは、コードの小さな平和について大きな議論がありました。

例1の開発者は、コードを読みやすくするためにローカル変数を追加しました。ローカル変数で、彼は定数から値を保存しました。

例2余分な変数がない同じコードですが、開発者の観点からは読みにくいです。

何が読みやすいと思いますか?リファクタリングの観点から良いですか?

1.1。

var tolerance = Constants.DateTypeGeneratorTolerance;

var dayType = DateTypeGenerator.GenerateDateType(
                courseTripValidity,
                tolerance,
                symbols,
                startDate,
                endDate);

2.2。

var dayType = DateTypeGenerator.GenerateDateType(
                courseTripValidity,
                Constants.DateTypeGeneratorTolerance,
                symbols,
                startDate,
                endDate);
4

1 に答える 1

1

これに対する決定的な答えはありませんが、個人的には後者のバージョンを好みます。IMHOConstants.DateTypeGeneratorToleranceは耐えられないほど長くはありません (ただし、それほど遠くないわけではありません)。その名前が適切に選ばれていれば、それが何を意味するかを正確に伝えます。一方、ローカル変数を導入すると、スペースが乱雑になり、何が起こっているのかを追跡するのが難しくなります。コードを直接読み取るときだけでなく、この定数の使用法を検索するのも面倒です。

さらに、名前自体が長いのは主に、スコープ情報が含まれているためです。すべてのグローバル定数を 1 つのクラスに入れることで、命名プレフィックス ( など) を使用してそれらを区別する必要があると感じますDateTypeGenerator。一方、定数を論理的に属している場所 (それDateTypeGenerator自体または別DateTypeGeneratorConstantsのクラス) に移動すると、定数名自体が短く簡潔になります。

修飾子の必要性を減らして名前を短縮するための特別な機能を提供する言語がいくつかあることに注意してください。Java の静的インポートやusingC# のディレクティブなど。

上記を C# ディレクティブと組み合わせると、次のようにusingなります。

using Tolerance = DateTypeGenerator.Tolerance;

...

DateType dayType = DateTypeGenerator.GenerateDateType(
                courseTripValidity,
                Tolerance,
                symbols,
                startDate,
                endDate);
于 2012-06-22T12:20:10.637 に答える