Devo aggiornare questo codice o continuare con il design attuale

2

Sto lavorando con l'applicazione ASP.NET. L'applicazione è eccezionale e funziona bene, ma presenta alcuni difetti. Per darti un esempio,

  1. Ogni controllo utilizza un layout di posizione assoluto. Ciò rende molto difficile lavorare con il codice in modalità progettazione. La posizione assoluta è stata utilizzata più di 700 volte nel codice.

  2. Ci sono diversi menu usati al posto di uno. E per ricucirli insieme, viene utilizzata di nuovo la posizione assoluta per ciascun controllo di menu

  3. L'applicazione è basata sui ruoli. Tutti i ruoli sono implementati usando la proprietà Roles.IsUserInRole. Vorrei utilizzare le autorizzazioni appropriate per ogni ruolo con autorizzazione a livello di pagina.

  4. Ci sono alcuni rischi per la sicurezza nel codice corrente, ma questa è una soluzione semplice nel programma corrente.

  5. Non esiste un vero admin. Il ruolo di primo livello funge da amministratore che è anche un ruolo funzionale, utilizzato da altri membri.

Ora stiamo aggiungendo nuove funzionalità a questo codice e intendo aggiungere alcune grandi funzionalità, cosa consiglia. Dovrei riscrivere questo codice o lavorare nell'esistente. Mi piacerebbe molto aggiustare

  1. I problemi di layout. Rimuovi tutte le posizioni fisse e rendi il codice pulito e di facile manutenzione.
  2. Sfortunatamente per farlo devo riscrivere il menu. Perché voglio scrivere un menu invece di 4 in uso.

  3. Per ottenere il punto 2 sopra, devo creta nuovi ruoli e fornisco la sicurezza adeguata per l'applicazione.

La mia domanda è

Dovrei lavorare con il codice corrente o riscrivere il codice esistente tenendo presente che la nostra azienda sta crescendo e che potrebbero essere necessarie 2-4 settimane per riscrivere.

Sarebbe una cattiva idea o una buona idea. Non ho un vantaggio tecnico nella mia azienda.

    
posta Noname 18.07.2011 - 06:24
fonte

2 risposte

3

Dalla descrizione che hai dato, farei un "divide et impera".

Scegli una parte più piccola della tua applicazione con la quale hai problemi, e migliorala direttamente, o (più sicura) indirettamente codificando una nuova versione, lasciando la vecchia versione così com'è, e inizia a collegare la nuova versione del modulo / class / control / what-have-you in quando tocchi una determinata pagina.

Risciacqua, ripeti ...

L'uso del metodo D & C ti consentirà di iniziare a lavorare sulle nuove funzionalità immediatamente e b) ti permetterà di correggere in modo incrementale i problemi per un periodo più lungo, invece di eseguire una riscrittura completa. Documentando le correzioni in ogni fase (il foglio elettronico farà il trucco - presumo che tu sia l'unico sviluppatore), così saprai cosa hai corretto da 2 mesi a partire da ora.

Oh, E UTILIZZA IL CONTROLLO DELLA VERSIONE SOURCE, se non lo sei già - questo salverà molte lacrime, in fondo alla strada (sono sorpreso da quanti sviluppatori a tutti i livelli ignorano questa fondamentale). SVC è utile anche per gli sviluppatori solitari ...

Fammi sapere se dovrei esporre su quanto sopra in alcun modo (ho cercato di mantenere la risposta succinta).

    
risposta data 18.07.2011 - 06:36
fonte
1

Se sia una buona idea o meno il refactoring di tutte quelle aree è in parte una decisione aziendale poiché, come dici tu, la società sta crescendo. Piuttosto che eseguire un refactoring di tutte le aree che hai menzionato, probabilmente sarebbe più utile eseguirle quando stai correggendo un bug o aggiungendo una nuova funzionalità in una delle aree specifiche che hai menzionato. Ad esempio se è necessario aggiungere una nuova voce di menu, in quel momento puoi rifattorizzare i menu separati in uno e rimuovere da essi il posizionamento assoluto.

In questo modo stai spendendo lo sforzo non solo di migliorare il codice nelle aree problematiche identificate ma anche di mostrare risultati più "tangibili" a breve termine per il business (sebbene il refactoring possa ovviamente anche essere un miglioramento tangibile nel lungo eseguire).

Inoltre, è utile aggiungere alcuni test automatici di integrazione o unità alle aree che si stanno modificando per evitare regressioni e per aiutare il futuro refactoring.

    
risposta data 18.07.2011 - 06:47
fonte

Leggi altre domande sui tag