Jeśli chodzi o kod, to mogłoby go być jakieś 10 razy mniej.
Kopiuj
if (array.Length == 1)
{
webRequest = WebRequest.Create("http://www.youtube.com/results?search_query=" + this._tytulUtworu1 + "&aq=f");
}
else
{
if (array.Length == 2)
{
webRequest = WebRequest.Create(string.Concat(new string[]
{
"http://www.youtube.com/results?search_query=",
array[0],
"+",
array[1],
"&aq=f"
}));
}
else
{
if (array.Length == 3)
{
webRequest = WebRequest.Create(string.Concat(new string[]
{
"http://www.youtube.com/results?search_query=",
array[0],
"+",
array[1],
"+",
array[2],
"&aq=f"
}));
}
else
{
if (array.Length == 4)
{
webRequest = WebRequest.Create(string.Concat(new string[]
{
"http://www.youtube.com/results?search_query=",
array[0],
"+",
array[1],
"+",
array[2],
"+",
array[3],
"&aq=f"
}));
}
else
{
if (array.Length == 5)
{
webRequest = WebRequest.Create(string.Concat(new string[]
{
"http://www.youtube.com/results?search_query=",
array[0],
"+",
array[1],
"+",
array[2],
"+",
array[3],
"+",
array[4],
"&aq=f"
}));
}
else
{
if (array.Length == 6)
{
webRequest = WebRequest.Create(string.Concat(new string[]
{
"http://www.youtube.com/results?search_query=",
array[0],
"+",
array[1],
"+",
array[2],
"+",
array[3],
"+",
array[4],
"+",
array[5],
"&aq=f"
}));
}
else
{
if (array.Length == 7)
{
webRequest = WebRequest.Create(string.Concat(new string[]
{
"http://www.youtube.com/results?search_query=",
array[0],
"+",
array[1],
"+",
array[2],
"+",
array[3],
"+",
array[4],
"+",
array[5],
"+",
array[6],
"&aq=f"
}));
}
else
{
if (array.Length == 8)
{
webRequest = WebRequest.Create(string.Concat(new string[]
{
"http://www.youtube.com/results?search_query=",
array[0],
"+",
array[1],
"+",
array[2],
"+",
array[3],
"+",
array[4],
"+",
array[5],
"+",
array[6],
"+",
array[7],
"&aq=f"
}));
}
else
{
if (array.Length == 9)
{
webRequest = WebRequest.Create(string.Concat(new string[]
{
"http://www.youtube.com/results?search_query=",
array[0],
"+",
array[1],
"+",
array[2],
"+",
array[3],
"+",
array[4],
"+",
array[5],
"+",
array[6],
"+",
array[7],
"+",
array[8],
"&aq=f"
}));
}
else
{
if (array.Length == 10)
{
webRequest = WebRequest.Create(string.Concat(new string[]
{
"http://www.youtube.com/results?search_query=",
array[0],
"+",
array[1],
"+",
array[2],
"+",
array[3],
"+",
array[4],
"+",
array[5],
"+",
array[6],
"+",
array[7],
"+",
array[8],
"+",
array[9],
"&aq=f"
}));
}
else
{
if (array.Length == 11)
{
webRequest = WebRequest.Create(string.Concat(new string[]
{
"http://www.youtube.com/results?search_query=",
array[0],
"+",
array[1],
"+",
array[2],
"+",
array[3],
"+",
array[4],
"+",
array[5],
"+",
array[6],
"+",
array[7],
"+",
array[8],
"+",
array[9],
"+",
array[10],
"&aq=f"
}));
}
else
{
if (array.Length == 12)
{
webRequest = WebRequest.Create(string.Concat(new string[]
{
"http://www.youtube.com/results?search_query=",
array[0],
"+",
array[1],
"+",
array[2],
"+",
array[3],
"+",
array[4],
"+",
array[5],
"+",
array[6],
"+",
array[7],
"+",
array[8],
"+",
array[9],
"+",
array[10],
"+",
array[11],
"&aq=f"
}));
}
else
{
if (array.Length == 13)
{
webRequest = WebRequest.Create(string.Concat(new string[]
{
"http://www.youtube.com/results?search_query=",
array[0],
"+",
array[1],
"+",
array[2],
"+",
array[3],
"+",
array[4],
"+",
array[5],
"+",
array[6],
"+",
array[7],
"+",
array[8],
"+",
array[9],
"+",
array[10],
"+",
array[11],
"+",
array[12],
"&aq=f"
}));
}
}
}
}
}
}
}
}
}
}
}
}
}
Hmm... A co, jeśli podam 14 slów kluczowych? A gdyby tak użyć pętli?
Widzę, że podobne podejście stosujesz w metodach od zmiany strony wyszukiwania.
3. Metody 'PrzejscieDoNastepnejStronyYoutubeorazPrzejscieDoPoprzedniejStronyYoutube'' mają ponad 100 linijek, a różnią się jedną linijką kodu. Do tego ich końcowa część jest prawie identyczna jak ta w metodzie Wyszukaj.
4. Analogicznie jest w klasie Wrzuta.
5. O co chodzi z tym fragmentem metody KonwersjaDoMP3?
Klasy YouTube i Wrzuta powinny dziedziczyć z jakiejś klasy abstrakcyjnej i udostępniać takie same metody, zaś klasa Form1 mogłaby mieć pole typu tej klasy abstrakcyjnej. Wtedy zmiana radiobuttona podstawiałaby jedynie pod pole klasy właściwy obiekt, a w reszcie aplikacji nie potrzebowałbyś ani jednego ifa do sprawdzenia, z którego portalu użytkownik chce pobierać pliki.
7. To nie jest Java, jeśli jest dużo opcji, to stosuje się switch, a nie else-if. Chociaż to trudno nawet else-if nazwać:
Po pierwsze, nie wiem dlaczego wolałeś użyć kopiuj-wklej zamiast stworzyć metodę pomocniczą.
Po drugie, gdy masz tyle operacji do wykonania na stringu użyj klasy StringBuilder, będzie to rozwiązanie mniej pamięciożerne i szybsze.
Po trzecie, w tym przypadku powinieneś użyć słownika (Dictionary<string, string>), który zawierałby te pary ciągów do zastąpienia oraz pętli.
10. Przede wszystkim, wszystkie operacje "biznesowe", czyli u Ciebie głównie tworzenie urli i ściąganie plików nie powinny się w ogóle odbywać w klasie Form1. Ta klasa powinna jedynie obsługiwać akcje użytkownika (czyli np. zdarzenia przycisków) i wyświetlać mu informacje, nic więcej.
I jeszcze taka mała uwaga - WinForms powoli będzie umierało, obecnie lepiej chyba uczyć się nowocześniejszych technologii, takich jak WPF.