객체 지향 분석 및 디자인 (OOAD)을 잘 활용하는 방법


26

좋은 분석기와 디자이너가되면 개발자에게 큰 도움이됩니다. 그러나 이것에는 분명히 장애물이 있습니다. 모든 사람이 OOAD에 관심이있는 것은 아니며 관심있는 모든 사람이 그 길을 알고있는 것은 아닙니다. 좋은 OOAD가 여러 OO 언어를 알아야합니까? 아니면 프로젝트에 실패했을까요? 어떻게 좋은 OOAD가 될 수 있습니까?

답변:


34

관심이없는 사람들은 자신의 장애물을 만들고 있습니다. 나는 그것에 대해 걱정할 수 없다.

길을 모르는 사람들을 위해 다음과 같이 제안합니다.

  • 내가 배우는 모든 OO 언어가 나를 더 나은 OO 개발자로 만든다는 것을 알았습니다. 커뮤니티를 찾는 한 각 언어에서 다른 언어로 많은 것을 가져올 수 있습니다.
  • 성공보다는 실패에서 더 많은 것을 배우지 만, 자신의 시간에 그렇게하려고 노력하십시오. 전문적으로는 적어도 어느 정도의 경험이있는 사람들을 신뢰하십시오. 그러나 "왜?"라고 묻는 것을 두려워하지 마십시오.
  • 다섯 가지 SOLID 원칙을 모두 배우고 왜 존재하는지 이해하십시오. 그들 중 어느 것도 규칙은 아니지만 길을 잃었을 때 좋은 지침입니다.
  • Test Driven Development는 내가 배운 것보다 OO 설계 기술을 더욱 향상 시켰습니다.
  • 언더 엔지니어링에서 오버 엔지니어링으로 갈 때까지 올바른 균형을 찾을 때까지 최선이되지 않을 것입니다.
  • 사실, 처음부터 2 년이 지나도 결코 낫지 않을 것입니다.
  • 많은 책과 블로그를 읽지 만 복음으로 아무것도 받아들이지 마십시오. 이 산업은 여전히 ​​완벽한 길을 찾지 못했으며 결코 찾지 못할 수도 있습니다.
  • 반드시 디자인 패턴을 배우십시오. 그러나 디자인 패턴을 사용할 장소를 찾지 말고 단순히 커뮤니케이션을위한 촉진제로 사용하십시오.

그 중 일부가 도움이되기를 바랍니다.


1
좋은 목록 @ pdr. +1
Saeed Neamati

5
+1 "아직도 완벽한 길을 찾지 못했으며 결코 찾지 못할 수도 있습니다."
ocodo

1
+1 "Test Driven Development는 내가 배운 것보다 OO 설계 기술을 향상 시켰습니다."
케빈 클라인


감사합니다. SOLID 토론 프로그래머에
LCJ

5

OO 모델 을 완전히 이해 하려면 비 OO 프로그래밍 기술로 비참하게 실패한 경험이 있어야 한다고 생각합니다 . OO 내부와 외부를 이해할 수는 있지만 그것을 존중하고 존중하기 위해서는 일을하지 않은 오래된 녹슨 도구를 대체하는 반짝이는 새로운 도구 여야합니다.

대학 수준의 Java에서 OO를 배우기 전에 7 년 동안 나 자신을 가르쳤다. 그 전에는 이러한 프로젝트를 지속적으로 구축 할 수 있었으며, 너무 커져서 도대체 무슨 일이 있었는지 잊을 수있었습니다. 그것들은 부피가 크고 구성되지 않았으며 사소한 변경을 위해 많은 유지 보수가 필요 합니다 . 기본적으로 나는 내 코드로 혼란스러워지고 끊임없이 새로 시작하는 것을 계속 발견했습니다.

내가 채택한 선형 디자인에서 머리를 꺼내는 데 시간이 걸렸지 만 일단 OO 모델을 완전히 이해하면 유레카와 같습니다! 상속과 같은 개념을 배우고 나면 훨씬 복잡한 프로젝트를 직접 코딩하고 생산성을 높일 수있었습니다. 객관적으로 모든 것이 의미가 있고 직관적이기 때문에 코드를 다시 작성하거나 다시 시작하는 데 시간을 낭비하지 않습니다.

모든 프로그래머는 가능한 한 많은 언어를 알아야한다고 생각합니다. 이것은 OO 여부에 관계없이 더 노련한 베테랑이 될 것입니다. OO를 이해하면 해당 기술을 사용하여 구현 된 모든 곳에 적용 할 수 있습니다.

IMHO, OO를 이해하지 못하거나 OO를 배우고 싶지 않으면 인생의 전장에 부적절하게 장비됩니다. 점점 더 많은 회사들이 새로운 OO 언어를 사용하고 있습니다. 나는 오늘 시대에 OO 모델을 모르는 이유를 보지 못했습니다 .

사람이 배우는 방법에 따라 모델을 배우려는 방법에 달려 있습니다. 누군가가 나를 가르 칠 때 개인적으로 가장 잘 배우므로 Java I 및 Java II 수업을 듣는 것이 실제로 큰 차이를 만들었습니다. 대학에서 소프트웨어 공학 선택 과목을 수강하거나 대학 과정에 액세스 할 수 없거나 여가 시간에 배우고 싶을 때 단순히 온라인으로 이동하여 OO 자습서를 찾는 것이 좋습니다.

그것이 나에게 어떻게 묘사되었는지를 다시 생각하면, 나는 말한다. 사과는 사과이고 오렌지는 오렌지입니다. 그렇습니다. 둘 다 나무에서 떨어지지 만 완전히 다른 두 가지 과일이며 조화가 있습니다.


1
함수형 프로그래밍으로 비참하게 실패하거나 절차 적 프로그래밍으로 비참하게 실패한다는 의미입니까?
Andrew Grimm

함수형 프로그래밍으로 비참하게 실패했지만 숙달에는 실패하지 않았습니다. 한계로 인해 성공적인 구현에 실패했음을 의미합니다.
Styler

절차 적 프로그래밍이 아니라 함수형 프로그래밍을 의미 했습니까?
Andrew Grimm

비 OO 프로그래밍.
Styler

2
OO가 아닌! = 상상력의 확장 성으로 작동하기 때문에 이것을 편집하는 것이 좋습니다. 상황도 둘 다 될 수 있습니다.
Magus

0

관심이 있거나없는 사람들에게는 항상 장애물이 있지만 상황과 심각성은 다를 수 있습니다.

OO 개념을 위해 다국어를 배울 필요는 없으며, 원하는 언어로 시작하십시오. 시간이 지남에 따라 언어에 대한 강력한 발판을 마련하고이를 실현 가능한 것으로 게시하십시오. 이미 다른 언어로 동일하게 실행하십시오. 한 언어에 대한 전문 지식은 평가할 벤치 마크가 있으므로 새로운 언어로 전환하는 데 도움이됩니다.

모든 프로젝트는 성공하기보다는 학습 경험입니다. 가장 잘 활용하기 위해 기능을 얼마나 잘 조정했는지, 때로는 다른 사람의 코드를 읽기에 좋은 방법과 이유를 파악하는 것이 중요합니다. 멘토를 얻을 수 있다면 좋을 것입니다. 왜 이것이 선택 되었는지 이유 , 다른 방법으로 수행하는 방법을 알고 있어야합니다 . 자신의 논리 및 디자인 모델을 작업하여 선임 / 멘토에게 전달하십시오. 이렇게하면 기술을 향상시킬 수있을 것입니다. 처음에는 쓰레기통으로 곧장 갈 수 있었지만 자신이 잘못한 것을 시도하고 배웠습니다. 반복적으로 더 나아질 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.