2010-04-22 8 views
34

나는 객체 지향 패러다임으로 코드 작성하는 법을 배우려는 프로그래머이다. 주로 PHP로 작업하고 젠드 프레임 워크를 배울 생각을했다. .... OO PHP 코드에 문제는, 꽤 오랜 시간 동안 함수를 사용하여 코드를 수행하는 데있다객체 지향 방법으로 생각하는 법 배우기

을 배우고, 난 그냥 .... 객체 지향 방식으로 생각하는 내 머리를 얻을 수

또한 아마 나는이 문제에 직면 한 유일한 사람이 아니라고 느꼈다 ...

그래서 사람들은 어떻게 객체 지향 프로그래밍을 배웠는가? 특히 어떻게 성공 했는가? n "unlearning"함수를 사용하여 코드 작성 ... 그리고 코드를 객체로 보는 법을 배웁니다 ...?

도움을 얻을 수있는 훌륭한 리소스 도서 나 사이트가 있습니까? ?? 자신의 지식과 경험을 공유하기위한

감사합니다 ...

+1

http://stackoverflow.com/questions/2235986/how-can-i-think-in-oop –

답변

11
  1. 다른 사람의 코드 읽기 - 언어의 "숙어 사용"을 가르쳐 당신이
  2. 도서/기사를 알고 좋은 개발자 명을
  3. ("21 일 안에"이라는 말을 사용하지 마십시오)
+3

+1 다른 사람의 코드를 읽는 중입니다. – JeremyFromEarth

+3

+1 21 일 코스 피하기. 진실로, 당신은 21 일 동안 OOP만큼 크고 흥미로운 것을 배울 수 없습니다. 사람들은 더 효율적이고 전문적으로되기 위해 수년간 그것을 배우고 있습니다. – Ankur

5

시간이 걸립니다.

절차 적 프로그래밍에서 객체 지향으로 이동하는 것은 어렵습니다. 요즘 많은 사람들 은 객체 지향적이므로으로 시작하므로이 패러다임의 변화에 ​​어려움을 겪지 않습니다.

  • OOP의 fundamentals에 대해 자세히 알아보고 계속해서 참조하십시오.
  • OO 코드 읽기 - 샘플링 할 수있는 많은 오픈 소스 프로젝트가 있습니다.
+3

많은 시간이 걸립니다 ... –

33

저는 20 년 넘게 OO로 소프트웨어 개발을 해오 고 있으며, 다른 사람들의 코드를 보는 것이 객체 지향 프로그래밍에서 어떻게 프로그래밍하는 방법을 가르쳐주지 않는 것보다 더 자주 말할 수 있습니다 언어.

다음 기술을 사용하는 것이 좋습니다. 사용자가 아직 익숙하지 않을지라도, 자유롭게 적용하면 OO 기술을 사용해야합니다.

  1. 코드를 복사하여 붙여 넣지 마십시오.
  2. 예를 들어 주문 입력 시스템에 주문, 고객, 계정, 주문 항목, 재고 항목 등이있는 기능에 대해 이야기 할 때 이야기하는 것을 나타내는 클래스를 만듭니다.
  3. 이러한 클래스를 만들 때는 코드를 작성하지 마십시오. 모든 public set 및 클래스 데이터 멤버에 액세스하는 메서드를 가져옵니다.
  4. 문제의 개체에 대한 작업을 수행하는 도메인 모델 클래스에 메서드를 추가합니다. Order.invoice(), account.close(), InventoryItem.decrement(). public get 메소드가 없다면 코드의 올바른 위치 (적절한 도메인 객체에있는 데이터)가 표시됩니다. 객체는 데이터와 객체에서 작동하는 코드라는 것을 기억하십시오. 두 객체 모두 부족한 객체는 객체가 아닙니다.
  5. 일부 클래스 멤버에게는 public get 메서드를 추가해야한다는 것을 알게 될 것입니다. 그러면 강제로 그렇게 할 때까지 기다리지 마십시오. 마지 못해 public get 메소드를 추가하십시오.
  6. 응용 프로그램 수준에서 거의 모든 코드 줄이 산을 움직여야합니다. 즉, 응용 프로그램 수준의 코드 줄 대부분은 도메인 모델 메서드를 호출해야합니다.
  7. 도메인 모델 개체의 모든 기능을 넣은 다음 사용자 인터페이스에 연결하여 해당 기능을 응용 프로그램에 표시하십시오. 반복하지 않고 응용 프로그램이 아니라 도메인 모델에 기능을 추가합니다.

이러한 지침을 따르면 분명히 객체 지향 코드를 생성 할 수 있으며 많은 경험이 풍부한 개발자보다 능숙도가 훨씬 뛰어납니다.

마지막으로 주사를 피하십시오 - 즉 봄, 화합 등 !! 아마도 사출 사용에 대한 몇 가지 유효한 사례가있을 수 있습니다. 대부분의 용도는 객체 지향 설계 경험이 부족하여 발생합니다. 주입 여부에 대한 지침으로, 주입에 대해 생각하는 것이 얼마나 자주 변경 될지 고려하십시오. 많은 경우에, 나는 주사되는 것이 결코 바뀌지 않을 것임을 알았습니다.이 경우 주사되는 것은 순수한 간접비뿐입니다.

행운을 빈다.

+0

진실에 대해 '3'과 '4'를 인용하십시오. –

+0

왜 주사는 일반적으로 '소수의 유효한 경우에만'으로 제한되는 나쁜 것입니까? 코드를 단위 테스트 할 수 있습니다. – dmwong2268