Як стати хорошим в об'єктно-орієнтованому аналізі та дизайні (OOAD)?


26

Ставши хорошим аналізатором та дизайнером, може значною мірою принести користь розробнику. Але для цього безумовно є перешкоди. Не всі цікавляться OOAD, і не кожна людина, яка зацікавлена, знає шлях. Чи повинен хороший OOAD знати кілька мов OO? Або він / вона має невдалі проекти? Як можна стати хорошим OOAD?

Відповіді:


34

Люди, які не зацікавлені, створюють власні перешкоди. Я не можу про це хвилюватися.

Для тих, хто не знає шляху, я пропоную:

  • Я вважаю, що кожна мова, яку я вивчаю, робить мене кращим розробником ОО. Багато чого можна перенести з кожної мови на інші, якщо ви знайдете спільноту.
  • Ви навчитесь більше від невдач, ніж від успіху, але намагаєтесь робити це самостійно. Професійно довіряйте тим, хто має більший досвід, принаймні деякий час - але не бійтеся запитати "Чому?".
  • Вивчіть усі п’ять принципів SOLID та зрозумійте, чому вони існують. Жодне з них не є правилами, але вони є хорошими вказівками, коли ти загубишся.
  • Тест-керований розвиток зробив більше вдосконалення моїх навичок дизайну ОО, ніж все, що я коли-небудь дізнався.
  • Ви не будете кращими, доки не перейдете від недемонструючого до перенапруження та не знайдете правильний баланс (ближче до останнього).
  • Власне, подряпай це, ти ніколи не будеш таким хорошим, як ти будеш через два роки.
  • Читайте багато книг і блогів, але нічого не сприймайте як євангелію. Ця галузь досі не знайшла і не може знайти ідеального шляху.
  • У будь-якому випадку вивчайте шаблони дизайну, але не шукайте місця для їх використання, просто використовуйте їх як фасилітатор спілкування.

Сподіваюсь, що щось із цього допомагає.


1
Хороший список @pdr. +1
Saeed Neamati

5
+1 "досі не знайшов і не може знайти ідеального шляху."
ocodo

1
+1 "Тестова розробка зробила більше вдосконалення моїх навичок проектування ОО, ніж все, що я коли-небудь дізнався".
кевін клайн


Дякую, у мене є питання для обговорення програмістів
SOLID.stackexchange.com/questions/155852/…

5

Я думаю, що для того, щоб повною мірою оцінити модель OO, ви повинні мати досвід, який збивається з нещасними методами програмування, що не є ООС. Ви можете зрозуміти ОО усередині і ззовні, але щоб оцінити і поважати, це повинен бути блискучим новим інструментом, який замінює старий іржавий, який не зовсім зробив цю роботу.

Я самостійно навчав себе протягом декількох років, перш ніж нарешті вивчив ОО на рівні Java в коледжі. До цього я постійно будував ці проекти, і вони ставали настільки великими, що я забув би, до чого, чорт, робив. Вони будуть громіздкими, неорганізованими та потребують великого обслуговування, щоб внести незначні зміни. В основному я продовжував знаходити себе застряг зі своїм кодом і починаючи над свіжим постійно.

Мені знадобилося певний час, щоб я вийшов з головної лінійної конструкції, яку я прийняв, але, коли я повністю зрозумів модель OO, це було як Eureka! Мені вдалося кодувати набагато складніші проекти самостійно, і моя продуктивність вистрілила через дах після вивчення таких понять, як спадкування. Я не витрачаю час на перезапис коду чи початок заново, тому що об'єктивно все має сенс і це просто інтуїтивно.

На мою думку, кожен програміст повинен знати якомога більше мов. Це зробить їх більш досвідченими ветеранами, незалежно від того, є це ОО чи ні. Як тільки ви зрозумієте ОО, ви можете скористатись цими методами та застосувати їх всюди, де вони реалізовані.

ІМХО, якщо ти не розумієш або не маєш бажання вчитися ОО, ти будеш неадекватно обладнаний на полі бою життя. Все більше компаній використовують новіші мови OO. Я не бачу жодних причин не знати цього дня модель OO у віці.

Залежно від того, як людина вчиться, саме від них залежить, як вони хочуть засвоїти модель. Особисто я найкраще вчуся, коли хтось навчає мене, і тому перехід на заняття Java I та Java II насправді дуже змінив для мене. Я рекомендую взяти факультативи інженерії програмного забезпечення в коледж або просто просто вийти в Інтернет і шукати навчальні підручники, якщо ви не маєте доступу до курсів коледжу або хочете вчитися у вільний час.

Коли я думаю про те, як це було описано мені, я кажу; Apple - це Apple, а апельсин - апельсин. Так, вони обоє падають з дерев, але це два абсолютно різні плоди і там лежить ваша гармонія.


1
Ви мали на увазі нещасний збій з функціональним програмуванням або зрив з порушенням процесуального програмування?
Ендрю Грімм

Невдало піддається функціональному програмуванню, але не виходить з ладу. Я маю на увазі невдачу в успішній реалізації через обмеження.
Styler

Отже, ви напевно мали на увазі функціональне програмування, а не процедурне програмування?
Ендрю Грімм

Програмування без ОО.
Styler

2
Я б точно запропонував редагувати це, оскільки не-OO! = Функціональний на будь-якій ділянці уяви. Речі можуть бути навіть обома.
Маг

0

Для тих, хто цікавиться чи ні, завжди є перешкоди, але контекст та серйозність можуть відрізнятися.

Не обов’язково, що вам потрібно вивчити кілька мов для понять OO, почніть з тієї мови, яка вам подобається, протягом певного періоду часу ви отримаєте сильну опору на мові, опублікуйте це можливо для вивчення деяких речей, які ви зробили. вже і спробуйте виконати те саме на іншій мові. Знання однієї мови допомагає перейти на нові, оскільки у вас є орієнтир для оцінки.

Будь-який проект - це досвід навчання, а не його успіх. Важливим є те, наскільки добре ви адаптували функції для найкращого використання, час від часу - корисно читати код інших і з'ясовувати, як і навіщо це робиться. Якщо ви можете отримати наставника, це було б чудово. Завжди знайте причину, чому це обрано , Як щодо того, як це зробити іншим способом. Спробуйте попрацювати над власною логікою та дизайнерською моделлю і киньте її старшому / наставнику. Таким чином, ви вдосконалите свої навички, можливо, на початку вони підуть прямо на смітник, але тоді ви спробували і дізналися, що ви зробили не так. Ітеративно ви ставали б краще і краще.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.