Domanda

Ho spesso sentito dire che gli oggetti non hanno consegnato in termini di riutilizzo del codice. Sei d'accordo? Se si ritiene che essi non hanno, perché no?

È stato utile?

Soluzione

No, non necessariamente.

Gli oggetti forniscono la semantica migliori, organizzazione di codice / funzionalità e, possibilmente, la facilità d'uso.

Ben progettato librerie mantenere la promessa di riutilizzo del codice, non oggetti di per sé.

Altri suggerimenti

Onestamente non sono sicuro se "il riutilizzo del codice" è in realtà ciò che chiunque è dopo (o almeno, dovrebbe essere dopo). Mia filosofia è "componenti software", che significa una migliore manutenibilità attraverso i più interfacce ed evitando inutili accoppiamento. "Il riutilizzo del codice" è una delle cose che cade fuori che a volte - il codice inutilmente duplicato è un segno che hai organizzato le cose nel modo sbagliato e, naturalmente, è un dolore da mantenere.

Per rispondere alla domanda un po 'più direttamente, c'è una raccolta di strumenti abbastanza buona per evitare di ripetere se stessi: le funzioni di eredità, i tratti, la delega, di ordine superiore, ecc Di questi, le persone tendono a confondere eredità con OO nel suo complesso - e tendono anche abusare un po ', se mi chiedete. Forse è lì che alcuni dei "OO fa schifo" atmosfera proviene da: eredità trovando attaccato dove non ha il diritto naturale essere:)

Codice No, "oggetti" non hanno fatto ri-utilizzare qualsiasi comune più facile o più. Le stesse preoccupazioni che impediscono il codice di essere riutilizzato in un programma modulare (progettazione, collaudo e documentare un'API generico richiede uno sforzo notevolmente più up-front che crei una tantum di routine, e il tuttofare possono essere maestro di nessuno - logica destinato ad essere riutilizzato non possono essere ben ottimizzato per gli usi è effettivamente messo verso) applica ai programmi OO, con la preoccupazione che un modello di oggetti mal progettato può ostacolare il riutilizzo di altrimenti riutilizzabile codice.

OO è un'astrazione utile per un buon numero di problemi, ma diffidare di ''80 anni '90 clamore: esso non magicamente risolvere i problemi fondamentali del nostro lavoro non più di quanto rende cialde per voi durante il sonno <. / p>

non mi aspetto tutti gli oggetti per essere riutilizzati, ma abbiamo un sacco di oggetto che riutilizziamo in molti progetti diversi. Abbiamo anche oggetti che solo ottenere riutilizzati su un progetto. Spesso consumeremo gli stessi oggetti di business (o oggetti di trasferimento dati) così come la logica di business oggetti da un Click-Once un'applicazione desktop, un'applicazione web e un app telefono tutto per lo stesso progetto.

Dove avete sentito dire che OO non consegnare sul riutilizzo? E qual era il ragionamento? Forse il design dei loro oggetti li ha costretti in quella situazione ...

Alcuni programmatori si copia e incolla in qualsiasi lingua e stile.

Davvero buoni programmatori possono evitare la maggior copia ed incolla in quasi tutte le lingue.

I trovare i modelli OO tendono ad incoraggiare il riutilizzo. Ho visto il codice Java che è stato scritto in uno stile non-OO (dove i dati sono stati separati dal codice a causa di ORM scadente) ed il riutilizzo è stato veramente miserabile - ma in OO gli stessi programmatori fatto un lavoro migliore in fase di progettazione ( e il riutilizzo).

Anche nei casi in cui usiamo i modelli non-oo oo o anti-schemi, come setter / getter, istruzioni switch, classi interne anonime, le funzioni enormi e il riutilizzo del codice, come ho visto scendere e salire testo standard .. .significantly.

ps. So che la gente avrà problemi con il paragrafo precedente, quindi mi spiegare un po '.

Setter e getter causare problemi OO perché consentono di operare sui membri di un oggetto (un oggetto deve manipolare i suoi membri proprio) Questo distribuisce il codice che opera sulla classe durante le altre classi che richiedono di copiare la funzionalità di tutto il setter / getter. Questo vale per proprietà, come pure -. Solo perché sono più facili Proprietà non li rende "buona" in tutte le situazioni

Il codice in classi interne anonime non può essere riutilizzato a tutti e la gente dimentica che molte cose (come gli ascoltatori) può e deve essere classi a tutti gli effetti - questo vale anche per le chiusure, come pure! Se avete usato una classe interna anonima per implementare qualcosa di simile a un ascoltatore, si è molto più probabile che semplicemente copiare e incollare l'implementazione di estrarre il codice in un metodo o una propria classe e chiamarlo invece. Le chiusure possono anche migliorare la riusabilità -. Dipende solo da come li si usa

In molti casi le funzioni disponibili si forma come si struttura il vostro codice. OO è ancora più potente quando si tratta di aiutare a visualizzare tutto il codice e come interagisce, ma questa è un'altra questione.

Gli oggetti non hanno più capacità di fornire il riutilizzo del codice di un montascale o altri attrezzi per il fitness in grado di fornire la perdita di peso. Gli sviluppatori devono essere motivati ??a strumenti di uso corretto.

Una volta che le squadre di software posto un valore più alto sul riutilizzo del codice testato di quanto non facciano a tenere tutti i dettagli nella loro testa, vedrete molti più oggetti e metodi a grana fine e quindi più il riutilizzo del codice.

OOP ti dà più modi per il riutilizzo del codice

No

non v'è alcuna pallottola d'argento

Dipende

su quello che ci metti dentro, e quello che vi aspettavate in cambio!

Sì. Buona programmazione orientata agli oggetti promuove la separazione degli interessi, basso accoppiamento, coesione alta, e nascondere informazioni. Queste cose sono tutti fondamentali per codice riutilizzabile.

Direi che il principale vantaggio della programmazione orientata agli oggetti è la modularità e modificabilità, piuttosto che riutilizzare, ma questa è un'altra questione.

Oggetti permettono codice ri-sue, ma come tale non è la più tecnica per questo. Penso riutilizzo del codice è promossa attraverso tecniche relative agli oggetti, come ereditarietà, polimorfismo, sovraccarico e modelli.

Sì, lo fanno, la possibilità di estendere (ereditare) da un super classe contribuisce Cleary al riutilizzo del codice, non sono sicuro di come si possa sostenere il contrario. Si può semplicemente estendere una classe ed eseguire l'override un metodo, mentre si utilizza il resto della classe super, se questo non sta aiutando nel riutilizzo del codice, allora non so che cosa è

Se si hanno quelli espresso il loro promessa di riutilizzo del codice fino ad ora? Sì, se i programmi scritti con OOP in mente si applicano modelli di progettazione con saggezza. In caso contrario, la maggior parte no. Ma guardando la popolarità dei programmi su larga scala non banali che i sistemi di Adobe, Google e simili scrittura con C ++ o Java o altri linguaggi di programmazione orientata agli oggetti, direi OOP ha una lunga strada da percorrere prima che le fasi fuori. Quel tempo sarà molto più adatto a fare questo problema e potrebbe contribuire a fornire basi per un nuovo paradigma.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top