|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
[C#] - Cappottare un ciclo
Codice:
do
{
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
if (pippo != null){
FaiQualcosaconPippo(pippo);
}
DataLayer.Commit();
} while (pippo!=null);
pippo!=null una volta sola?
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2005
Città: Resana - TV
Messaggi: 960
|
ecco la mia ennesima cazzata
Codice:
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
while (pippo!=null)
{
FaiQualcosaconPippo(pippo);
DataLayer.Commit();
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
}
DataLayer.Commit();
|
|
|
|
|
|
#3 |
|
Registered User
Iscritto dal: Feb 2008
Messaggi: 77
|
Così ti eviti di fare 2 volte il controllo, ma sono cmq più righe di codice:
Codice:
while(true)
{
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
try
{
if(pippo == null)
break;
else
FaiQualcosaconPippo(pippo);
}
finally
{
DataLayer.Commit();
}
}
Ciao |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Grazie. Pero' mi sembra un po' come il tagliarsi una gamba perche' ho un unghia incarnita Scherzo, purtroppo non mi sembra piu' elegante.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
[quote=kernel:
Codice:
while(true)
{
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
try
{
if(pippo == null)
break;
else
FaiQualcosaconPippo(pippo);
}
finally
{
DataLayer.Commit();
}
}
Anche questa purtroppo non mi sembra guadagni in leggibilita'. Mi sa che una riposta che mi piaccia davvero non si riesca a trovare. Facciamo cosi'. Sposto il controllo if (parametro!=null) dentro la funzione, che tanto ci sta anche bene perche' mi e' stato segnalato come assente dai test automatici. Me lo tengo cosi' Codice:
do
{
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
FaiQualcosaconPippo(pippo);
DataLayer.Commit();
} while (pippo!=null);
...
public void FaiQualcosaconPippo(parametro)
{
if (parametro==null) return;
// continua
}
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Codice:
while(true)
{
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
if (pippo == null){
DataLayer.Commit();
break;
}
FaiQualcosaconPippo(pippo);
DataLayer.Commit();
}
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Grazie.
Ci devo pensare. Vedere 2 Commit per una BeginTransaction non mi esalta
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Capisco...così ?
Codice:
while(true)
{
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
if (pippo == null){
break;
}
FaiQualcosaconPippo(pippo);
DataLayer.Commit();
}
DataLayer.Commit();
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Anche così:
Codice:
DataLayer.BeginTransaction();
while(true)
{
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
if (pippo == null){
break;
}
FaiQualcosaconPippo(pippo);
DataLayer.Commit();
DataLayer.BeginTransaction();
}
DataLayer.Commit();
Codice:
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
while(pippo != null)
{
FaiQualcosaconPippo(pippo);
DataLayer.Commit();
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
}
DataLayer.Commit();
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Apr 2005
Città: Resana - TV
Messaggi: 960
|
Quote:
|
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Facciamo cosi'.
Le metto tutte e 4. Poi genero un numero casuale di volta in volta e vado ad eseguire la corrispondente.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#14 |
|
Member
Iscritto dal: Jul 2005
Messaggi: 291
|
sparo la mia
Codice:
try{
while (true){
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
if (pippo==null) throw new MiaException(ex);
FaiQualcosaconPippo(pippo);
DataLayer.Commit();
}
}catch(MiaException ex){
DataLayer.Commit();
}
__________________
CPU: Intel Core 2 Quad Q6600 - Mobo: Asus P5E - RAM:4x2GB DDR2 - sk video: Power Color ATI Radeon HD3870 - HD:Western Digital 750GB |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Usare le eccezioni così sinceramente non mi piace molto
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:02.





















