2009-11-07 12 views
5

Sto seguendo un corso di programmazione intermedio che sottolinea l'uso di invarianti. Non li ho mai usati prima e sembrano impiegare più tempo per creare. L'industria dell'ingegneria del software sottolinea l'uso degli invarianti?Usi le invarianti quando programmi?

+0

non è una domanda, si vota per chiudere – cletus

+1

È molto importante. La parola "Sondaggio" potrebbe essere fuorviante, la domanda dovrebbe probabilmente avere il titolo "Dovremmo usare gli invarianti?" o qualcosa di simile. –

+0

Potresti approfondire cosa intendi usandoli, ad es. dato un esempio? È possibile che le persone usino ciò di cui stai parlando senza rendersi conto che questo è ciò che intendi per "invariante". – Edmund

risposta

12

Dipende da chi chiedi: io uso gli invarianti semplicemente perché facilita la vita. Imparare le invarianti è come imparare a scrivere alla cieca. Ogni volta che usi un invariante, ne sai di più sul tuo codice. Se inserisci l'invariante come commento nel tuo loop, aiuta il lettore A LOT. Direi che l'uso di invarianti rende la creazione e il mantenimento del codice sorgente molto più economico, e ti rende in grado di creare algoritmi molto più sofisticati, che sono ancora mantenibili.

E in contrasto con OOP, non ho mai visto nessuno perdere tempo usando gli invarianti.

8

Non penso molto alle invarianti, non tanto alle pre/post-condizioni. Probabilmente dovrei pensare più alle invarianti, ad essere onesti.

Una cosa da considerare è l'immutabilità: se si utilizza un linguaggio OO ma si rendono immutabili i tipi dove è possibile, non è necessario preoccuparsi di invarianti quanto: se lo stato è valido per iniziare, rimarrà valido

Sembra proprio che il tuo corso sottolinei un po 'troppo gli invarianti ... ma dipende da cosa stai facendo. Sono più appropriati in alcune situazioni rispetto ad altri. Forse il tuo docente è solo un grande fan di loro con tanta esperienza in settori in cui sono davvero utili.

3

Dopo aver appreso cosa sono e cosa significano gli invarianti, tende a cambiare il modo in cui ragionate sul codice. Voglio dire, raramente scrivo invarianti espliciti. Ma spesso ho una mia idea dell'invarianza nel codice che sto scrivendo. Questo ti porta a scrivere codice che è molto più semplice. Nella maggior parte dei casi si finisce con un codice così semplice che non è necessario scrivere un commento esplicito sull'invarianza. Eppure le persone che non conoscono le invarianti scrivono il codice che è molto più complicato :)

Problemi correlati