일일 코드 - 6/27 불법 대상 만들기 방지

2071 단어 대상
 
public class BuyerHelper
{
    private static final UserRepository userRepository;

    public static void createAndCheckBuyer(Cart cart)
    {
        int userId = cart.getUserId();
        User user = userRepository.getUserById(userId);

        Buyer buyer = BuyFactory.createFrom(user);
        BaseCheckResult checkResult = BuyerChecker.checkBuyerPermission(buyer);
        
        if (checkResult.isSuccess())
            cart.setBuyer(buyer);
        else
            throw new InvaildBuyerException();        
    }
}

 
다음과 같은 문제가 있는 간단한 코드 세그먼트
1. 책임이 명확하지 않다.
이 방법은 사용자가 합법적인 바이어인지 검증하는 기능을 포함할 뿐만 아니라, 사용자에 따라 바이어를 만드는 기능을 실현할 뿐만 아니라, 매우 위험한 기능도 숨겼으며, 이 만들어진 바이어를 카드의 속성에 설정하는 것도 책임진다.한편, 카트는 외부 매개 변수이다. 이것은 후속 코드에서 카트에 추가된 바이어 속성에 의존할 가능성이 높다는 것을 의미한다. 이 점은 사실 비교적 은밀하다.
2. 불법 객체를 작성합니다.
이 방법이 실현된 기능은 한 사용자가 효과적인 구매자인지 아닌지를 판단하는 것이다. 이론적으로 말하자면 만약에 한 사용자가 효과적인 구매자가 아니라면 구매자 대상이 나타나지 말아야 한다.그러나 이 코드에서 Buyer 대상을 무작정 만들고 검증하는 것이 확실합니다.우리는 반드시 힘껏 불법 대상을 만드는 것을 피해야 한다.

좋은 웹페이지 즐겨찾기