Come diventare bravo in analisi e progettazione orientate agli oggetti (OOAD)?


26

Diventare un buon analizzatore e designer può essere di grande beneficio per uno sviluppatore. Ma ci sono sicuramente ostacoli per questo. Non tutti sono interessati a OOAD, e non tutte le persone interessate conoscono il percorso. Un buon OOAD dovrebbe conoscere più lingue OO? O dovrebbe avere progetti falliti? Come si può diventare un buon OOAD?

Risposte:


34

Le persone che non sono interessate stanno creando i propri ostacoli. Non posso preoccuparmene.

Per coloro che non conoscono il percorso, suggerisco:

  • Trovo che ogni lingua OO che imparo mi rende uno sviluppatore OO migliore. Molto può essere portato da ogni lingua in altre, purché trovi la comunità.
  • Impari di più dai fallimenti che dai successi, ma cerchi di farlo nel tuo tempo libero. Professionalmente, fidati di quelli con più esperienza, almeno qualche volta - ma non aver paura di chiedere "Perché?".
  • Scopri tutti e cinque i principi SOLID e capisci perché esistono. Nessuna di queste sono regole, ma sono buone linee guida quando ti perdi.
  • Test Driven Development ha migliorato le mie capacità di progettazione OO più di ogni altra cosa che abbia mai imparato.
  • Non sarai il migliore fino a quando non sarai passato dall'ingegnerizzazione all'ingegnerizzazione eccessiva e non avrai trovato il giusto equilibrio (più vicino a quest'ultimo).
  • In realtà, grattalo, non sarai mai buono come lo sarai due anni dopo.
  • Leggi molti libri e blog ma non prendere nulla come vangelo. Questo settore non ha ancora trovato, e potrebbe non trovare, un percorso perfetto.
  • Sicuramente impara i modelli di progettazione, ma non cercare luoghi in cui utilizzarli, semplicemente utilizzali come facilitatore della comunicazione.

Spero che questo aiuti.


1
Buona lista @pdr. +1
Saeed Neamati,

5
+1 "non ha ancora trovato e potrebbe non trovare mai un percorso perfetto."
ocodo,

1
+1 "Test Driven Development ha migliorato le mie capacità di progettazione OO più di qualsiasi altra cosa abbia mai imparato."
Kevin Cline, il



5

Penso che per apprezzare appieno il modello OO, devi avere esperienza fallendo miseramente con tecniche di programmazione non OO. Puoi capire OO dentro e fuori, ma per apprezzarlo e rispettarlo, deve essere uno strumento nuovo e brillante che sostituisce quello vecchio arrugginito che non ha fatto del tutto.

Mi sono autodidatta per 7 anni prima di imparare OO a livello universitario Java. Prima di allora, avrei costantemente sviluppato questi progetti e sarebbero diventati così grandi che avrei dimenticato cosa diamine stesse succedendo. Sarebbero ingombranti, non organizzati e richiederebbero molta manutenzione per apportare piccole modifiche. Fondamentalmente ho continuato a ritrovarmi impantanato con il mio codice e ricominciare da capo costantemente.

Mi ci è voluto un po 'di tempo per togliere la testa dal design lineare che avevo adottato, ma una volta capito perfettamente il modello OO era come Eureka! Sono stato in grado di codificare progetti molto più complessi da solo e la mia produttività è balzata alle stelle dopo aver appreso concetti come l'eredità. Non sto perdendo tempo a riscrivere il codice o ricominciare, perché oggettivamente tutto ha un senso ed è solo intuitivo.

Ritengo che ogni programmatore debba conoscere quante più lingue possibile. Questo li renderà un veterano più esperto, indipendentemente dal fatto che sia OO o meno. Una volta capito OO, puoi prendere quelle tecniche e applicarle ovunque siano implementate.

IMHO, se non capisci o non hai voglia di imparare OO, sarai inadeguatamente attrezzato sul campo di battaglia della vita. Sempre più aziende utilizzano nuove lingue OO. Non vedo alcun motivo per non conoscere il modello OO oggi.

A seconda di come la persona impara, dipende da loro come vogliono imparare il modello. Personalmente imparo meglio quando qualcuno mi insegna e quindi andare in classe per Java I e Java II ha fatto davvero una grande differenza per me. Consiglierei di prendere elettivi di ingegneria del software al college, o semplicemente andare online e cercare tutorial OO se non hai accesso ai corsi universitari o vuoi imparare nel tuo tempo libero.

Quando ripenso a come mi è stato descritto, dico; una mela è una mela e un'arancia è un'arancia. Sì, cadono entrambi dagli alberi, ma sono due frutti totalmente diversi e qui sta la tua armonia.


1
Intendevi fallire miseramente con la programmazione funzionale o fallire miseramente con la programmazione procedurale?
Andrew Grimm,

Fallire miseramente con la programmazione funzionale, ma non fallire nella padronanza. Intendo fallire nell'implementazione di successo a causa dei suoi limiti.
Styler

Quindi intendevi sicuramente programmazione funzionale, non programmazione procedurale?
Andrew Grimm,

Programmazione non OO.
Styler,

2
Consiglio vivamente di modificarlo, poiché non-OO! = Funzionale a qualsiasi tratto dell'immaginazione. Le cose possono anche essere entrambe le cose.
Magus,

0

Ci sono sempre ostacoli per chi è interessato o no, ma il contesto e la gravità possono variare.

Non è necessario che tu abbia bisogno di imparare più lingue per i concetti di OO, iniziare con una lingua che ti piace, per un periodo di tempo avrai una solida base sulla lingua, pubblicala come fattibile per esplorare alcune cose che hai fatto già e prova a eseguire lo stesso su una lingua diversa. La competenza in una lingua aiuta a passare a quelle nuove poiché si dovrebbe valutare un benchmark.

Ogni progetto è un'esperienza di apprendimento piuttosto che il successo. L'importante è quanto hai adattato le funzionalità al tuo miglior utilizzo, a volte è bene leggere il codice degli altri e capire come e perché è stato fatto. Se riesci a ottenere un mentore sarebbe fantastico. Conosci sempre il motivo per cui questo è scelto , che ne dici di farlo in qualche altro modo. Prova a lavorare sulla tua logica e sul tuo modello di progettazione e lancialo al tuo senior / mentore. In questo modo miglioreresti le tue abilità, forse all'inizio andrebbero direttamente nella pattumiera, ma poi hai tentato e imparato cosa hai fatto di sbagliato. Iterativamente, staresti sempre meglio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.