Proviamo a ottimizzare e minimizzare questo codice scritto senza pensare troppo (presente in uno user control - noterete i this): in un sito voglio mostrare quattro immagini random diverse prese da una galleria rappresentata da una collection di images. Ammesse funzioni del tipo Array.xxx. Obiettivo primario eliminare i--
IList<MyClass> images = // loading;
if (images != null && images.Count > 0)
{
// ottimizzazione
if (images.Count <= 4)
{
for (int i = 0; i < 4 && i < images.Count; i++)
{
img[i] = i;
}
}
else
{
for (int i = 0; i < 4 && i < images.Count; i++)
{
Random random = new Random();
int generato = random.Next(0, images.Count - 1);
bool trovato = false;
foreach (int elemento in img)
{
if (generato == elemento)
{
// esiste già
trovato = true;
break;
}
}
if (!trovato)
img[i] = generato;
else
i--;
}
}
for (int i = 0; i < 4 && i < images.Count; i++)
{
Image image = (Image)this.FindControl("img" + i);
if (image != null)
{
image.ImageUrl = images[img[i]]["percorso"];
}
}
if (images.Count < 4)
{
for (int i = images.Count; i < 4; i++)
{
Image image = (Image)this.FindControl("img" + i);
if (image != null)
image.Visible = false;
}
}
}
else
{
img0.Visible = false;
img1.Visible = false;
img2.Visible = false;
img3.Visible = false;
}
Technorati tags: Csharp