2011-02-01 3 views
2

저는 OOP의 이론을 최근에 많이 읽고 파고 들었습니다. 한 가지 질문은 항상 저에게 다가오고 있습니다.PHP의 객체 지향 프로그래밍 - 응용 프로그램에 과도한 과업이 있습니까?

이 보인다 같은 개념의 일부 추상 클래스, 인터페이스, 낮은 정도의 가시성, 다른 사람이 코드를 확장한다 상황과 더 가지고 ... 예를 들어

에, 중소 기업이 고객 정보, 연락처 정보, 주문 등을 저장하는 간단한 CRUD 응용 프로그램을 만들고 있다고 가정 해 봅시다. 응용 프로그램의 크기가 OOP 아키텍처를 보증 할 수는 있지만, 다른 누구도이를 확장하지 않는다는 것을 알고 있습니다. 코드를 작성하고 완료하면 '닫힌'프로젝트가됩니다. 따라서 미래에 대한 일을 설정하고 추상 클래스, 인터페이스를 통해 이러한 종류의 보호 및 계약을 생성하는 것이 과도한 것일 수 있습니다. 그게 정확한 것 같니?

내가 말했듯이, 나는 모든 일을 정확하고 철저하게하는 것이 전부입니다. 또한 OOP의 주요 목적 중 하나는 유지 보수 가능성과 미래에 대한 확장 성을위한 것임을 이해합니다. 인터페이스와 추상 클래스를 둘러싼 내 머리를 감싸는 데 어려움을 겪고 있습니다. 소규모 프로젝트에서 코드를 확장하거나 API를 만드는 작업이 거의 필요하지 않기 때문에 기분이 들었습니다.

+0

다른 어떤 것보다 더 이익이됩니다. 그것을 유지하기 위해 돌아 가야 할 때, 당신은 명확하게 조직되고 단순 해지기를 바라십니까? –

+0

사실, 나는 그것을 얻는다. 하지만 나는 그 인터페이스와 추상 클래스가 어떻게 작용하는지 확실히 알지 못한다고 생각합니다. 작은 애플 리케이션을 다룰 때 – dtj

답변

2

응용 프로그램의 크기는 OOP 아키텍처를 보장 할 수 있습니다,하지만 난 다른 사람이 코드를 확장되지 않는다는 오프셋에서 알고 난 마친 일단은 '폐쇄'프로젝트가 될 것입니다 그것. 따라서 미래에 대한 일을 설정하고 추상 클래스, 인터페이스를 통해 이러한 종류의 보호 및 계약을 생성하는 것이 과도한 것일 수 있습니다. 그게 정확한 것 같니?

글쎄, 간단히 말해서 정확하지 않습니다. 어떤 이유로 코드를 작성하는 경우 유지해야 할 좋은 기회가 있습니다. 좋은 OOP 방식을 따르면 향후 문제를 쉽게 디버깅 할 수 있습니다. 하지만 OOP의 핵심은 아닙니다.

OOP 패러다임의 진정한 이점은 미래의 수정에 관한 것입니다. the 60/60 rule에서 우리는 프로젝트 비용의 60 %가 배송 후에 발생한다는 것을 알고 있습니다. 그리고 그 비용의 60 %는 사양 변경으로 발생합니다. 그래서 "일하는 모든 것"을해야합니다.

확실히 일부 프로젝트의 경우 완전히 과잉입니다. 그러나 핵심은 응용 프로그램을 변경하지 않을 때 지나치게 과잉인지 여부를 실제로 알 수있는 유일한 시간입니다. 나는 두 가지 범주에 모두 들어 맞는 많은 프로젝트를 처음으로 보았습니다. (우리가 생각하기에 배달이 끝나기 전에는 죽을 것이라고 생각했으나 실제로는 그렇지 않다고 생각했고 실제로 활성화되었지만 죽을 것이라고 생각했습니다.) 그래서 수정이 필요한 때가 오기 전에는 확실하게 알 수 없으므로, 정확한 상황에 따라 다르지만 모든 프로젝트에 모든 노력을 기울일만한 가치가 있습니다 ...

첫 번째 시간에 제대로 할 시간이 없다면 언제 끝내야할까요?

+0

흠, 좋은 주장입니다. 저것 고마워! – dtj

+0

+1 [this] (http://chat.stackoverflow.com/transcript/message/296658#296658) – Raynos

0

코드를 확장하는 것은 다른 사람이 아니며 미래의 날짜입니다.

응용 프로그램이 한 페이지 또는 아주 작은 경우 절차 적으로 PHP를 코딩 할 수 있습니다.

+0

확신합니다. 제가 말하고자하는 것은 한 페이지가 아니라, 분명히 여러 페이지, 어쩌면 15 개의 클래스입니다. Basic CRUD와 OOP에 가장 잘 어울리는데, 내가 그것을 적용 할까 궁금해한다. 추상 클래스와 인터페이스 같은 것이 그 문맥에서는 조금 불필요한 것처럼 보일 것이다. – dtj

0

And I also understand that one of the main purposes of OOP is for maintainability and extendability for the future. 당신은 꽤 많이 요약했습니다. 현재의 유용성을 위해서가 아니라면 개발 프로세스 초기에 그러한 방법을 사용함으로써 대머리 현상을 막을 수 있습니다.

"닫힌"프로젝트가 어떻게 될 것이라고 확신합니까? 다른 기능/수정이 일어나지 않는 것이 정말로 불가능합니까?

+0

그건 사실이다. 잠재적으로 수정이 필요하다. – dtj

1

정교하게 코드 작성을 시작할 때까지 인터페이스 또는 추상 클래스를 작성하지 않아도됩니다. 그들이 책에서 읽은 예제를 과도하게 생각하는 이유는 그들이 종종 있다는 것입니다. 일단 그 큰 프로젝트 중 하나에 실제로 들어가면, 왜 그들이 유용한 지 알게 될 것입니다.

즉시 혜택을 얻을 수있는 것은 간단한 클래스이며 약간의 상속 가능성이 있습니다. 가장 확실한 장소는 데이터베이스 추상화 및 데이터 모델입니다. 프로그램이 작을 때에도 즉시이를 수행하면 도움이됩니다. 두 곳이 있다면 당신은 다음 블로그 게시물 개체가 즉시 생성하기위한 코드를 이동 가진, 새로운 블로그 포스트를 작성하고 한 장소에 그와 관련된 모든 데이터베이스의 상호 작용을 대신 중복 :

$post = new BlogPost(); 
$post->setTitle("Hello World"); 
$post->setContent("An awesome update about my life!"); 
$post->save(); 

... etc

+0

아하나. 그 정보 주셔서 감사합니다! – dtj

0

OOP는 구문 변형입니다. 절차 적 또는 저수준 언어로 객체 지향 코드를 작성할 수도 있습니다 (glib 참고).

구문 구조이기 때문에 코드를보다 쉽게 ​​읽을 수 있도록 사용해야합니다. 그리고 그것만. 유지 보수성과 확장 성은 보조 속성 (때로는 부적응)입니다.

피한다 개체의 행복,하지만 현명한 구조를 피하지 마십시오.
http://www.codinghorror.com/blog/2007/03/your-code-oop-or-poo.html

관련 문제