2012-05-28 2 views
0

개체 모델을 만드는 코드에서 작업하고 있지만 모델에 일반 키가 있습니다. 예를반 패턴입니까? 그렇다면 왜? 왜 안되면?

class myContact { 
var key; 
var value; 
} 

들어 그리고 코드에서 모델이기 때문에이 잘못 느낌이 나에게

myBank = new company(); 
myBank.addContact(myContact); 
myBank.addContact(myContact2); 

같은 부모 개체에 부착 한 후

myContact = new myContact() 
myContact.key = 'address' 
myContact.value = '123 my address' 

myContact2 = new myContact() 
myContact2.key = 'secondAddress' 
myContact2.value = '123 my other address' 

을 다음과 같이 그들을 인스턴스화 그리고 그렇게 느슨하게 정의됩니다. 그러나 클래스 이름에서 일종의 연락 정보가 될 것입니다.

동시에이 유형의 방법론을 사용하면 나중에 다른 유형의 연락처를 추가하려는 것처럼 유용 할 수 있습니다.

이것이 우수 사례라면 누구에게 설명 할 수 있습니까? 나쁜 연습과 그 이유는 무엇입니까?

내 최초의 생각 :

좋은 연습

  • 쉬운 미래에 접촉 유형을 확장합니다.
  • myBank에 대한 연락처 정보를 쉽게 반복하고 데이터를 가져옵니다.

    • 올바른 키를 찾을 수를 통해 루프 에있는 특정 연락처 유형을 업데이트하려면

    나쁜 관행.

  • 필자는 이런 코드를 작성한 적이 없기 때문에 이것이 완벽하게 수용 가능하지만 나쁜 연습 인 것 같은 느낌입니다.
  • 빈혈 모델은 실제 수업이 필요하지 않습니다.
  • 정의 된 키가 없으므로 연락처를 모두 검색하지 않고 쉽게 삭제하거나 추가 할 수 없습니다.
  • 연락처가 무엇인지 정의해야합니다.

모든 의견을 크게 기뻐할 것입니다.

편집 : 내 생각에 혼자

+0

이 유형의 모델로 작업하는 동안 천천히 내 자신의 질문에 대답하고 있습니다 .... –

답변

0

가서 좀 더 생각을 추가, '사용자 정의 필드'나쁜 아무것도 없다. 사용자가 자신의 필드 (예 : jira, 전화 번호부 등)를 정의 할 수있는 모든 시스템에서 인기가 있습니다. 일반적으로 이름, ID, 전자 메일 등과 같은 몇 가지 기본적이고 미리 정의 된 필드/키가 있습니다. 검색 또는 인증 용. 이 코드에서 내가 싫어할 수있는 유일한 것은 빈혈 모델입니다. myClass 클래스를 만들고 (그 이름을 변경하면!) 모든 필드를 공개적으로 액세스 할 수 있다면 클래스가 필요한 이유는 무엇입니까? 클래스는 캡슐화에 관한 것입니다.

+0

캡슐화 및 검색에 대한 좋은 점. 나는 그것이 위의 코드가 현재 나를 위해 쓰러지고있는 곳이라고 생각한다. 몇 가지 조사를 해본 결과 http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model에 해당한다고 생각합니까? 동의하니? –

+0

일 수 있습니다. 하나의 클래스와 두 개의 예제 만 볼 수있는 경우 Entity-attribute-value 모델에 대해 이야기하기는 어렵습니다. 확실히'Map '을 가진 뱅크보다'Contact' 콜렉션을 가진 은행 객체를 갖는 것이 더 낫습니다. 그래서 클래스를 지워야 만한다는 것을 말하는 것이 아니라 무엇인지 알고 있어야합니다. 전송 값 전용 서버 인 경우 클래스 대신 구조체 (공용 필드, 인공 getters 및 setters 등)를 사용하십시오. 프로젝트의 미래를위한 계획을 모르고 더 나은 조언을하기가 어렵다. – piotrek

0

저에게이 모델은 매우 느슨하게 정의되어 있기 때문에 잘못 생각합니다.

"의사, 이럴 때 아파요."- "그러지 마라."

을 표현할 때 느슨한 모델이 필요합니까? 그럼 그걸로 가라. 그렇지 않다면 부담이된다고 생각한다면 간단한 해결책을 선택하십시오.

분명히 현재 필요하지 않습니다. 미래에 이러한 필요성이 발생할 가능성은 무엇입니까? 그러한 리팩토링은 여러분의 코드베이스에 어떤 영향을 미칩니 까? 당신은 아직 그것에 대해 가정을 할 수 있습니까?

이 경우 YAGNI 원칙을 적용하는 것이 좋습니다.

관련 문제