2012-04-10 3 views
0

컨트롤러 ("main"이라고 함)와 함수 묶음 (10)을 수행하는 관련 모델이 있다고 가정합니다.하나의 함수 codeigniter/php 만 사용하는 경우 모델로드시 오버 헤드

기본 모델에 존재하지 않는 하나의 기능을 수행하기 위해 2 차 모델을로드하는 것과 관련하여 주 모델에서 해당 기능 (코드 복제)을 추가하는 것과 관련하여 궁금합니다.

두 번째 모델을로드 할 때 장점은 코드/관리하기가 쉽지 않습니다.

단점은 두 번째 모델을로드하는 오버 헤드입니다.

오버 헤드에 대한 두려움은 유효합니까? 나는 CS가 아닌 사람이고 여기서 가장 좋은 방법이 무엇인지 궁금합니다.

덕분에, 그것은 당신이 당신의 객체를 실체화하는 방법에 따라 달라 팀

답변

5

Don't Repeat Yourself. 당신이한다면 당신은 당신의 삶을 훨씬 더 어렵게 만들 것입니다. 유능한 OOP의 원칙은 특정 책임 영역이있는 클래스를 만들고 해당 클래스를 사용하여 빌드 된 상황을 처리하도록 권장합니다. 클래스 X의 기능을 클래스 Y로 복제하면이 원칙에 위배됩니다. 클래스 Y가 클래스 X가하는 일을 할 필요가 있다면 클래스 Y가 클래스 X의 인스턴스와 통신해야하거나 클래스 Y가 클래스 X로부터 상속되어야 함을 의미합니다.

또한 이는 기껏해야 입니다. 다른 클래스를로드 할 때 성능에 미치는 영향은 무시할 만합니다. 걱정할 가치는 없습니다.

+0

안녕하세요 고든, 고마워. 퍼포먼스에 대한 감각이 없지만 그것이 내가 궁금해하는 부분입니다. 네가 그 말을하는 것은 무시할 만하다고 나를 위해 충분하다. –

1

. PHP 클래스의 경우 객체를 만들 때로드 할 항목을 정의 할 수 있습니다 (생성자 참조). 대부분의 경우 유지 관리를 위해 깨끗하고 명확한 코드를 사용하는 것이 더 좋지만 때로는 비즈니스상의 이유로 일부 코드를 복제하는 것이 좋으며 유지 관리하기도 어렵습니다. 여기에서 개발자의 관점 만 읽었지만 (필자는 ...), 훌륭한 개발자는 더 나은 사용자 경험을 위해 더 많은 코드를 생성해야 함에도 불구하고 항상 기능/비즈니스에 대해 먼저 생각해야합니다. 때로는 더티/빠른/유지하기 어려운 코드를 작성해야하지만 사용자에게 적합합니다!

+0

안녕하세요, 나는 laziest/easiest 접근 방식이더라도 생성자에서로드하지 않아도됩니다. 일반적으로 코드를 복제하도록 옹호하고 있습니까? –

+0

아니요, 저는 여러분의 필요에 따라 다르다고했습니다 ... 다른 모델을 포함하고 메소드를 호출하면 유지 관리 및 재사용에 도움이됩니다. 그러나 당신의 요구가 진화하기 때문에 당신이 당신의 방법을 너무 많이 수정한다면, 당신은 그것에 대해 재고해야합니다 ... 당신의 질문은 우리가 모든 세부 사항을 모르기 때문에 우리에게 대답하기가 어렵습니다 ... –

+0

고맙습니다. 코드를 재사용하는 가장 간단한 접근 방식을 취하십시오. 내 필요가 바뀌면 나중에 언제든지 리펙토링 할 수 있습니다. 감사! –