별도의 작성 및 편집 조치를 사용하거나 작성 및 편집을 하나로 결합하는 것이 더 낫습니까?


15

우리는 비즈니스 로직 계층, 데이터 액세스 계층으로 구성된 컨트롤러 / 뷰 프리젠 테이션 계층 및 모델과 함께 ASP.NET MVC 2를 사용하고 있습니다.

비즈니스 계층 이상에서 대부분의 목적으로 Edit는 개체 생성과 개체 편집을 모두 나타낼 수있는 것으로 보입니다. 이는 "저장"방법을 정의하는 리포지토리 디자인 패턴과 잘 일치합니다. ID가 0이면 저장 프로 시저를 확인한 다음 0이면 새 객체를 만들 수 있습니다. 그렇지 않으면 기존 객체를 업데이트 할 수 있습니다. 범주 ID는 1과 일치해야합니다.

토론의 주요 요점은 생성을 포함하는 편집을 DAL 레이어를 넘어서 생성 및 편집의 별도 부분으로 분할하는 것이 가장 합당한 지 여부입니다.

명백한 예는 경로로 표시 될 수 있습니다.

만들기 - 에 http : // someurl / somearea / 편집 / 0

편집 - 에 http : // someurl / somearea / 편집 / 254

vs.

만들기 - 에 http : // someurl / somearea 생성 /

편집 - 에 http : // someurl / somearea / 편집 / 254

이와 관련하여 확립 된 표준 또는 모범 사례가 있습니까?

나는 이것이 작은 세부 사항이라는 것을 알고 있지만 논리적으로 중요한 것으로 생각합니다.


4
필자는 개인적으로 별도의 만들기 및 편집 작업이 훨씬 깔끔하고 유지 관리하기 쉽다고 생각합니다.
Adam Lear

1
DAL의 한 가지 방법, API에 적합한 두 가지 방법.
CaffGeek

내 관점에서 볼 때 별도의 생성 및 편집이 자연스럽게 mvc에 제공되며 그 접근 방식을 사용하면 mvc를 최대한 활용할 수 있다는 이점이 있으며 모두가 목표로 삼아야합니다.
maz3tt

답변:


5

단일 책임 원칙 을 준수하지 않으면 Create / Edit를 분리 할 가치가 있다고 분명히 말하고 싶습니다 .

URL에서 올바른 작업을 수행하는 데 더 나은 SEO가 있다고 주장 할 수 있습니다.

둘을 분리하지 않으면 코드를 단위 테스트하기가 더 어려워집니다.

코드를 읽는 새로운 프로그래머는 아마도 "편집"방법으로 객체를 생성해야하는 코드를 직관적으로 찾지 못할 것입니다. 의미 상 의미가 없습니다. 그러나 DAL에서 Save () 메서드를 사용하여 동정 할 수 있습니다.

그것에 대해 생각할 때, 나는 그것을 Edit 메서드에 넣는 것의 이점을 실제로 볼 수 없습니다.


4

나는 보통 SaveDAL에서 하나의 메소드 를 만드는 것을 선호 하지만 실제로 Create/ Edit/를 Delete별도로 구현합니다 .

예를 들어, 내 Save메소드는 Object State를 확인하고 필요한 것에 따라 Create / Edit / Delete 메소드를 호출합니다.

switch(obj.State)
{
    case ObjectState.New:
        CreateObject(obj);
        break;
    case ObjectState.Modified:
        UpdateObject(obj);
        break;
    case ObjectState.Deleted:
        DeleteObject(obj);
        break;
}

이렇게하면 객체를 저장하기 위해 하나의 일반적인 메소드를 호출 할 수 있지만 각 구현 (생성, 편집, 삭제)은 분리되어 유지됩니다.


삭제를 어떻게 알 수 있습니까?
NoChance

일반적으로 내 객체에는 State속성이 있습니다. 예를 들어, 버튼을 클릭하면 Delete객체가 삭제됨으로 표시되고SaveChanges()
Rachel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.