Mnemonici per un insieme di principi di progettazione: responsabilità singola, aperto-chiuso, sostituzione di Liskov, segregazione dell'interfaccia, inversione di dipendenza
Avere l' CircleestensioneEllipse rompe il Principio della Sottostazione di Liskov , perché modifica una postcondizione: vale a dire, puoi impostare X e Y in modo indipendente per disegnare un'ellisse, ma X deve sempre essere uguale a Y per i cerchi. Ma il problema qui non è causato dal fatto che …
Esempio Mi sono imbattuto in un codice monolitico che fa "tutto" in un unico posto - caricando i dati dal database, mostrando markup HTML, fungendo da router / controller / azione. Ho iniziato ad applicare SRP spostando il codice del database nel suo file, fornendo una migliore denominazione delle cose, …
Stavo cercando di capire la differenza tra Open Closed Principle (OCP) e Dependency Inversion Princible (DIP). Sulla base delle ricerche fatte finora su Internet, sono giunto alla conclusione che "DIP è un'opzione attraverso la quale possiamo ottenere OCP". Ho ragione su questo? Potete darmi un esempio che non segue DIP …
Dice Wikipedia "le entità software (classi, moduli, funzioni, ecc.) dovrebbero essere aperte per l'estensione, ma chiuse per modifica" La parola funzioni ha attirato la mia attenzione, e ora mi chiedo se possiamo supporre che la creazione di un sovraccarico per un metodo possa essere considerata o meno un esempio del …
Diciamo che abbiamo la seguente interfaccia: interface IDatabase { string ConnectionString{get;set;} void ExecuteNoQuery(string sql); void ExecuteNoQuery(string[] sql); //Various other methods all requiring ConnectionString to be set } Il presupposto è che ConnectionString deve essere impostato / inizializzato prima di poter eseguire uno qualsiasi dei metodi. Questa condizione preliminare può essere …
Ecco un problema che mi capita spesso di incontrare: lasciare che ci sia un progetto di negozio web che abbia una classe di prodotto. Voglio aggiungere una funzione che consente agli utenti di pubblicare recensioni su un prodotto. Quindi ho una classe Review che fa riferimento a un prodotto. Ora …
Esiste già una domanda abbastanza utile in questo senso (" Non-OOP Design Patterns? "), Ma sono più curioso di un punto di vista transitorio per qualcuno che ha appena iniziato con linguaggi dinamici e debolmente tipizzati. Cioè: diciamo che ho programmato in C ++, C # o Java per molti …
Poiché il principio di segregazione dell'interfaccia suggerisce che nessun client dovrebbe essere costretto a dipendere da metodi che non utilizza, quindi un client non dovrebbe implementare un metodo vuoto per i suoi metodi di interfaccia, altrimenti questo metodo di interfaccia dovrebbe essere inserito in un'altra interfaccia. E i metodi concreti? …
Recentemente ho letto Clean Code e vari articoli online su SOLID, e più ne leggo, più mi sento come se non sapessi nulla. Diciamo che sto costruendo un'applicazione web usando ASP.NET MVC 3. Diciamo che ho un UsersControllercon Createun'azione come questa: public class UsersController : Controller { public ActionResult Create(CreateUserViewModel …
Faccio app line of business in cui tutti gli altri sviluppatori sono abituati a fare app CRUD di base o sono focalizzati esclusivamente sulla creazione di interfacce graziose / funzionali e sto ottenendo molto. "Con il modo in cui usiamo per farlo, il Dipendente avrebbe tutte le cose che potresti …
Ho una classe che calcola il reddito annuo netto dei lavoratori. Ha una costante che rappresenta una percentuale fiscale. Ma un giorno l'aliquota fiscale è cambiata, quindi devo correggere il codice. L'atto di fissare questa costante indica una violazione del principio aperto-chiuso , poiché postula che una classe dovrebbe essere …
In questa serie di post sul blog , Eric Lippert descrive un problema nella progettazione orientata agli oggetti usando maghi e guerrieri come esempi, dove: abstract class Weapon { } sealed class Staff : Weapon { } sealed class Sword : Weapon { } abstract class Player { public Weapon …
Dallo sviluppo software agile, principi, modelli e pratiche: Pearson New International Edition : A volte, i metodi invocati da diversi gruppi di client si sovrappongono. Se la sovrapposizione è piccola, le interfacce per i gruppi dovrebbero rimanere separate. Le funzioni comuni dovrebbero essere dichiarate in tutte le interfacce sovrapposte. La …
Sono cresciuto nell'uso di un principio per la progettazione e il consumo di interfacce che dice sostanzialmente "chiedi solo ciò di cui hai bisogno". Ad esempio, se ho un sacco di tipi che possono essere eliminati, creerò Deletableun'interfaccia: interface Deletable { void delete(); } Quindi posso scrivere una classe generica: …
Chiuso. Questa domanda è fuori tema . Al momento non accetta risposte. Vuoi migliorare questa domanda? Aggiorna la domanda in modo che sia in argomento per Software Engineering Stack Exchange. Chiuso 6 anni fa . Quindi, recentemente ho avuto interviste in loco con Google e Amazon e ho ricevuto lettere …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.