Mnemonici per un insieme di principi di progettazione: responsabilità singola, aperto-chiuso, sostituzione di Liskov, segregazione dell'interfaccia, inversione di dipendenza
Alcuni sostengono che se si prendono i principi SOLID ai massimi livelli, si finisce con la programmazione funzionale . Sono d'accordo con questo articolo ma penso che alcune semantiche si perdano nel passaggio dall'interfaccia / oggetto alla funzione / chiusura e voglio sapere come la Programmazione funzionale può mitigare la …
Ho un modulo, ad esempio "M", che ha alcuni client, ad esempio "C1", "C2", "C3". Voglio dividere lo spazio dei nomi del modulo M, ovvero le dichiarazioni delle API e dei dati che espone, in file di intestazione in modo tale che - per qualsiasi client sono visibili solo i …
Ho sentito molto dai professionisti di TDD che uno dei vantaggi di TDD è che costringe gli sviluppatori a seguire i principi SOLID (responsabilità singola, Open-closed, sostituzione di Liskov, segregazione dell'interfaccia e inversione di dipendenza). Ma per quanto mi riguarda basta scrivere alcuni test (principalmente test unitari) per capire che …
Ho appena iniziato con RxJava , l'implementazione Java di ReactiveX (noto anche come Rx e Reactive Extensions ). Qualcosa che mi ha colpito è stata la dimensione di massa di di RxJava Flowable classe : ha 460 metodi! Ad essere onesti: Esistono molti metodi sovraccaricati, che aumentano significativamente il numero …
Contesto: sto sviluppando un framework di messaggistica. Questo quadro consentirà: invio di messaggi tramite un bus di servizio iscriversi alle code sul bus dei messaggi sottoscrivendo argomenti su un bus messaggi Attualmente stiamo usando RabbitMQ, ma so che passeremo al Microsoft Service Bus (on Premise) nel prossimo futuro. Ho intenzione …
Ad esempio, supponiamo di avere un programma di gioco per console, che ha tutti i tipi di metodi di input / output da e verso la console. Sarebbe intelligente tenerli tutti in un unicoinputOutput classe o li abbattere a più classi specifiche come startMenuIO, inGameIO, playerIO, gameBoardIO, ecc in modo …
Comprendo l'intento del principio aperto-chiuso. Ha lo scopo di ridurre il rischio di rompere qualcosa che già funziona durante la modifica, dicendoti di provare a estenderlo senza modificarlo. Tuttavia, ho avuto qualche difficoltà a capire come questo principio viene applicato nella pratica. Per quanto ne so, ci sono due modi …
Quando si leggono articoli su ISP, sembrano esserci due definizioni contraddittorie di ISP: Secondo la prima definizione (vedi 1 , 2 , 3 ), l'ISP afferma che le classi che implementano l'interfaccia non dovrebbero essere costrette a implementare funzionalità di cui non hanno bisogno. Quindi, interfaccia fatIFat interface IFat { …
Ispirato da questa risposta: Liskov principio di sostituzione richiede che Le condizioni preliminari non possono essere rafforzate in un sottotipo. Le postcondizioni non possono essere indebolite in un sottotipo. Gli invarianti del supertipo devono essere conservati in un sottotipo. Vincolo storico (la "regola della storia"). Gli oggetti sono considerati modificabili …
Esiste una classe LinkedList con funzioni come add_first (), add_last (), add_after (), remove_first (), remove_last () e remove () Ora esiste una classe Stack che fornisce funzionalità come push (), pop (), peek () o top () e per implementare questi metodi estende i metodi della classe LinkedList. È …
Ho appena iniziato a esplorare SOLID e non sono sicuro che la lettura da file e la scrittura su file siano la stessa responsabilità. La destinazione è lo stesso tipo di file; Voglio leggere e scrivere .pdf nella mia applicazione. L'applicazione è in Python se questo fa la differenza.
Qualche tempo fa ho letto, su una risposta Stack Overflow che non riesco a trovare, una frase che spiegava che dovresti testare le API pubbliche e l'autore ha detto che dovresti testare le interfacce. L'autore ha anche spiegato che se un'implementazione del metodo è cambiata, non è necessario modificare il …
Sto cercando di spiegare il principio di inversione di dipendenza ai miei colleghi (principalmente junior). Come possiamo definire quale sia la "politica di alto livello" e quale sia il "dettaglio di basso livello" in un software? Ad esempio, se il nostro software automatizza il flusso di lavoro di diverse applicazioni …
Sto facendo unit test e in una delle mie classi ho bisogno di inviare una mail da uno dei metodi, quindi usando l'iniezione del costruttore ho iniettato un'istanza di Zend_Mailclasse che si trova nel framework Zend. Ora alcune persone sostengono che se una biblioteca è abbastanza stabile e non cambierà …
Sono abbastanza nuovo ai principi di progettazione SOLID . Capisco la loro causa e i loro benefici, ma non riesco ad applicarli a un progetto più piccolo che voglio refactificare come esercizio pratico per usare i principi SOLIDI. So che non è necessario modificare un'applicazione che funzioni perfettamente, ma voglio …
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.