再構築-不要なオブジェクトを作成しない
7596 ワード
#概要
この機能java ITEM 6のトピックは、「不要なオブジェクトの作成を避ける」です.
詳細については、リンクを参照してください.
クライアントから入力データを処理する検証中に、
関連する内容があるので、応用してみたいです.
#検証
サービスロジックは、クーポン数の値または入力されていない値の検証を処理しています.DTOオブジェクトでJavaのValidationを使用して、ロールをコントローラレイヤに移動します.
問題は、
エラー内容はStringをint型に変換できないエラーです.
@ModelAttribute宣言を使用して、クライアントから要求されたデータを
Setterを使用して、指定したクラスに値をバインドします.
JavaのValidationが有効になる前に、バインド時にエラーが最初にトリガーされ、指定されたメッセージが出力されず、Springのエラーメッセージがそのまま露出します.
#取引終了
パフォーマンス:
また、機能Javaからの不要なオブジェクトの作成も避ける必要があります.
COUPONDtoオブジェクトを作成するたびに、
また、割引率を計算するロジックとクーポン数を減らすロジックのため、自動追跡はパフォーマンスの低下を招きます.
もちろん,クーポン生成要求自体はadminアカウントのみが許可され,クーポンの種類がいくら多くても数百個は生成されない.
可用性ユーザが値を入力していない場合、未知のエラー情報をユーザに表示することは、サービスにおいて非常に重要である.開発者でない限り、このエラーメッセージを見て値を入力しなかったとは思いません. n/a.結論
つまり、パフォーマンスとサービスの可用性の面で取引が中断されています.
機能javaからも、「最近のJVMでは、何もしない小さなオブジェクトの作成と回収に大きな負担はありません.プログラムの明確性、簡潔性、機能のために追加のオブジェクトを作成したり回収したりするのは、通常良いことです.」という言葉がある
これは、プログラムの明確性、機能性、可用性のためにより多くのオブジェクトを作成する必要があることを意味します.
この機能java ITEM 6のトピックは、「不要なオブジェクトの作成を避ける」です.
詳細については、リンクを参照してください.
クライアントから入力データを処理する検証中に、
関連する内容があるので、応用してみたいです.
サービスロジックは、
CouponDto
@Getter
@Setter
public class CouponDto {
...
@NotNull(message = "필수로 입력해야 합니다.")
@Max(message = "할인율은 100 미만이여야 합니다.", value = 99)
@Min(message = "할인율은 0 초과여야 합니다.", value = 1)
private Long discountRate;
@NotNull(message = "필수로 입력해야 합니다.")
@Max(message = "수량은 1000 미만이여야 합니다.", value = 999)
@Min(message = "수량은 0 초과여야 합니다.", value = 1)
private int totalCount;
...
}
問題は、
totalCount
に値が入力されていない場合、次のエラーメッセージが表示されることです.エラー内容はStringをint型に変換できないエラーです.
@ModelAttribute宣言を使用して、クライアントから要求されたデータを
Setterを使用して、指定したクラスに値をバインドします.
JavaのValidationが有効になる前に、バインド時にエラーが最初にトリガーされ、指定されたメッセージが出力されず、Springのエラーメッセージがそのまま露出します.
totalCount
のタイプをIntegerに変更すると、正常に動作します.パフォーマンス:
また、機能Javaからの不要なオブジェクトの作成も避ける必要があります.
COUPONDtoオブジェクトを作成するたびに、
Long타입의 discountRate
とInteger 타입의 totalCount
が生成されます.また、割引率を計算するロジックとクーポン数を減らすロジックのため、自動追跡はパフォーマンスの低下を招きます.
もちろん,クーポン生成要求自体はadminアカウントのみが許可され,クーポンの種類がいくら多くても数百個は生成されない.
つまり、パフォーマンスとサービスの可用性の面で取引が中断されています.
機能javaからも、「最近のJVMでは、何もしない小さなオブジェクトの作成と回収に大きな負担はありません.プログラムの明確性、簡潔性、機能のために追加のオブジェクトを作成したり回収したりするのは、通常良いことです.」という言葉がある
これは、プログラムの明確性、機能性、可用性のためにより多くのオブジェクトを作成する必要があることを意味します.
discountRate
totalCount
のタイプがWrapperタイプとして発表された.CouponDto
@Getter
@Setter
public class CouponDto {
...
@NotNull(message = "필수로 입력해야 합니다.")
@Max(message = "할인율은 100 미만이여야 합니다.", value = 99)
@Min(message = "할인율은 0 초과여야 합니다.", value = 1)
private Long discountRate;
@NotNull(message = "필수로 입력해야 합니다.")
@Max(message = "수량은 1000 미만이여야 합니다.", value = 999)
@Min(message = "수량은 0 초과여야 합니다.", value = 1)
private Integer totalCount;
...
}
Reference
この問題について(再構築-不要なオブジェクトを作成しない), 我々は、より多くの情報をここで見つけました https://velog.io/@znftm97/리팩토링-불필요한-객체-생성을-피하라テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol