Ho appena iniziato a lavorare in un'azienda e attualmente stiamo svolgendo un programma di formazione abbastanza intenso (giorni lavorativi completi) per aggiornarci sul modo in cui l'azienda fa le cose e addestrarci in VB.NET , insieme ad alcuni C #.
Stanno iniziando a migrare verso un'architettura modificata Model-View-Presenter, con i remoting server che svolgono un ruolo abbastanza grande. Un programma .NET di esempio potrebbe assomigliare a questo:
SomeSolution
|
+-+- ServerProject
| |
| +- ServerEmployee.vb
| |
| +- Server.vb
|
+-+- Presenter
| |
| +- PresenterEmployee.vb
| |
| +- Presenter.vb
| |
| +- IView.vb
|
+-+- ViewProject
|
+- ViewEmployee.vb
|
+- View.vb
Le classi in questione sarebbero le classi dei dipendenti. L'esempio che ho ricevuto è che ServerEmployee
avrebbe la maggior parte delle informazioni - essendo recuperato da un database, probabilmente avrebbe la maggior parte degli attributi, come .FirstName
, .LastName
, .MiddleInitial
, .PreferredName
, .HireDate
e qualsiasi altro attributo fosse presente nel database. Il PresenterEmployee
avrebbe gli altri attributi, nonché un attributo .FullName
che forse è stato generato in questo modo:
If employee.PreferredName <> String.Empty Then
employee.FullName = employee.PreferredName & " " & employee.LastName
Else
employee.FullName = employee.FirstName & " " & Employee.MiddleInitial & " " & Employee.LastName
End If
E infine, ViewEmployee
avrebbe solo gli attributi .FullName
e .HireDate
.
Siamo stati informati che la logica alla base di questo progetto era che, se abbiamo detto, una classe DataStructures
a cui fanno riferimento le altre classi quindi ogni volta che la classe DataStruture deve essere ricostruita, l'intero progetto deve essere ridistribuito ( che capisco è un processo un po 'noioso a causa di alcune decisioni di infrastruttura). Capisco che non sarebbe A Good Thing ™, ma sembra che se hai un codice che probabilmente non cambierà molto (una superclasse abbastanza generica con alcune proprietà dirette), avrebbe senso evitare la duplicazione del codice.
Ho ragione nel ritenere che si tratti di una violazione del principio DRY? La prima cosa a cui ho pensato quando hanno insegnato questo è "ewww, che odora ..."
Altro che (potenzialmente) non dover ridistribuire l'intera applicazione ogni volta che viene modificata la superclasse, c'è qualche vantaggio nel fare le cose in questo modo? E se è rotto, e voglio prendere l'onere di provare a sistemarlo, quali sono alcuni buoni argomenti per difendere la mia scelta?