둘 중 제 선호는 첫 번째 방법입니다.
function insertIntoDatabase(Account account, Otherthing thing) {
database.insertMethod(account.getId(), thing.getId(), thing.getSomeValue());
}
변경 사항이 해당 게터를 유지하여 변경 사항이 객체 외부에서 투명하게 유지되는 한 변경 사항이 길 아래로 객체를 변경했기 때문에 변경 및 테스트 할 코드가 적고 앱을 방해 할 가능성이 적습니다.
이것은 제가 생각하는 과정입니다. 주로이 자연의 것들을 어떻게 작업하고 구조화하고 장기적으로 관리 및 유지 관리가 가능한지에 기초합니다.
명명 규칙에 들어가지는 않겠지 만이 방법에는 "데이터베이스"라는 단어가 있지만 그 저장 메커니즘이 변경 될 수 있음을 지적합니다. 표시된 코드에서, 사용중인 데이터베이스 스토리지 플랫폼 또는 데이터베이스 인 경우에도 기능을 연관시키는 것은 없습니다. 이름에 있기 때문에 방금 가정했습니다. 다시 말하지만, 해당 게터가 항상 보존된다고 가정하면 이러한 객체가 저장되는 방법 / 위치를 쉽게 변경할 수 있습니다.
두 객체 구조, 특히 사용되는 게터에 종속되는 함수가 있기 때문에 함수와 두 객체를 다시 생각할 것입니다. 또한이 함수는이 두 개체를 하나의 누적 항목으로 묶어 지속되는 것처럼 보입니다. 내 직감은 세 번째 물건이 의미가 있다고 말해줍니다. 이 객체들과 이들이 실제로 어떻게 예상 로드맵과 관련되어 있는지에 대해 더 알아야합니다. 그러나 내 직감은 그 방향으로 기울고 있습니다.
코드가 지금 서있는 것처럼, 질문은 "이 기능은 어디에 또는 어디에 있어야합니까?" 계정 또는 기타 사항의 일부입니까? 어디로 갑니까?
세 번째 개체 "데이터베이스"가 이미 있다고 생각 하고이 기능을 해당 개체에 넣는 데 기울고 있습니다. 그러면 계정과 기타를 처리하고 결과를 유지할 수있는 개체 작업이됩니다. .
세 번째 객체가 ORM (Object-Relational Mapping) 패턴을 준수하도록 만드는 것이 더 좋습니다. 따라서 코드를 사용하는 모든 사람에게 "아, 계정과 기타 정보가 서로 뭉개 져서 지속되는 곳"이라는 것을 이해하게 될 것입니다.
그러나 Account와 OtherThing을 결합하고 변환하는 작업을 처리하지만 지속 메커니즘을 처리하지 않는 네 번째 객체를 도입하는 것도 의미가 있습니다. 이 두 객체와의 상호 작용이 더 많을 것으로 예상되는 경우 지속성 비트 만 지속성 만 관리하는 객체로 고려하기를 원합니다.
Account, OtherThing 또는 세 번째 ORM 개체 중 하나를 다른 세 개도 변경하지 않고도 변경할 수 있도록 디자인을 유지하려고 노력했습니다. 합당한 이유가 없다면, Account와 OtherThing이 독립적이기를 원하고 서로의 내부 활동과 구조를 알 필요가 없습니다.
물론 이것이 될 것이라는 전체 맥락을 알고 있다면 내 아이디어를 완전히 바꿀 수 있습니다. 다시, 이것은 내가 이런 것을 볼 때 어떻게 생각하는지, 어떻게 마른 지에 대한 것입니다.