Budowanie formularza tworzenia zespołu w C# - wyjaśnienie Lekcji 12 (Tim Corey)
W tym artykule przyjrzymy się bliżej rozwojowi aplikacji C# poprzez "C# App Start To Finish Lesson 12 – Create Team Form Part 1" Tima Coreya. Tim przeprowadza nas przez proces krok po kroku budowy prawdziwego formularza, pokazując, jak rozbić skomplikowane zadania UI na mniejsze, łatwiejsze do zarządzania części. Korzystając z jego podejścia, uzyskasz lepsze zrozumienie, jak projektować i implementować funkcjonalne aplikacje Windows Forms, używając czystych wzorców i praktycznych strategii rozwoju.
Rodzielenie złożoności
Tim zaczyna, podkreślając kluczowy sposób myślenia dla programistów: nie daj się przytłoczyć złożonością. Wyjaśnia, że formularz może na początku wydawać się skomplikowany, ale rozwiązaniem jest rozbić go na mniejsze części. Tim mówi, że gdy już oddzielisz zarządzane części, problem staje się o wiele łatwiejszy do rozwiązania. Ta filozofia jest centralna dla jego stylu nauczania i pomaga początkującym zachować koncentrację i pewność siebie podczas rozwoju.
Zrozumienie formularza Create Team
Tim pokazuje formularz "Create Team" i zauważa, że zawiera on wiele komponentów interfejsu użytkownika, takich jak przyciski, listy i tabele. Wskazuje, że sekcja Add New Member jest w istocie swoim własnym formularzem, podobnym do formy "Create Prize" stworzonego we wcześniejszych lekcjach. Takie rozdzielenie funkcjonalności jest kluczowe, ponieważ pozwala programiście implementować jedną sekcję na raz, nie gubiąc się w złożoności całego formularza.
Wyjaśnienie celu: Dodaj nową osobę
Tim wyjaśnia, że sekcja "Add New Member" technicznie dodaje osobę, a nie członka zespołu. W bazie danych tabela people zawiera pola takie jak imię, nazwisko, e-mail i telefon komórkowy. Członek zespołu jest po prostu reprezentowany przez ID osoby i ID zespołu. Tim zauważa, że chociaż technicznie dodaje osobę, ma sens nazywać to "Add New Member", ponieważ pasuje do celu formularza.
Tworzenie zdarzenia przycisku
Tim demonstruje, jak utworzyć zdarzenie przycisku dla przycisku "Create Member". Wyjaśnia, że można kliknąć dwukrotnie przycisk lub użyć panelu właściwości, aby utworzyć zdarzenie. Wyjaśnia również, jak konwencje nazewnictwa wpływają na nazwy zdarzeń i dlaczego spójne nazewnictwo jest ważne, aby uniknąć późniejszego zamieszania. Tim podkreśla, że nazewnictwo powinno być wykonywane przed tworzeniem zdarzeń, aby uniknąć dodatkowych ręcznych zmian.
Logika wewnątrz zdarzenia
Tim nakreśla kroki, które musi wykonać zdarzenie przycisku:
-
Zweryfikuj formularz
-
Utwórz model Person
-
Zapisz osobę w bazie danych lub pliku tekstowym
- Wyczyść formularz
Porównuje ten przepływ pracy do wcześniejszej formy "Create Prize", pokazując, że ten sam wzór się stosuje. Tim wyjaśnia, że ponowne używanie takich wzorców przyspiesza rozwój i czyni go bardziej niezawodnym.
Walidacja formularza
Tim buduje metodę walidacji o nazwie ValidateForm() i wyjaśnia, dlaczego spójność nazewnictwa ma znaczenie. Sugestia, że walidacja może być prosta lub skomplikowana, w zależności od potrzeb. Na razie Tim utrzymuje ją prostą: wszystkie cztery pola muszą zawierać tekst. Omówia, jak walidację można później poprawić, aby sprawdzać formaty e-maili lub długość numerów telefonów, ale na potrzeby tej lekcji podstawowa walidacja wystarcza, by iść dalej.
Tworzenie i zapisywanie modelu osoby
Tim pokazuje, jak utworzyć PersonModel z pól formularza, a następnie przekazać go do połączenia globalnego do zapisania. Wyjaśnia, że proces jest taki sam jak w przypadku formularza nagrody: walidacja → tworzenie modelu → zapis → czyszczenie. Tim podkreśla, że ponowne używanie takich wzorców przyspiesza rozwój i czyni go bardziej niezawodnym.
Implementacja metody CreatePerson
Tim przedstawia aktualizację interfejsu wymaganą dla nowej metody CreatePerson(PersonModel model) w interfejsie IDataConnection. Wyjaśnia, że dodanie tej metody spowoduje błędy kompilacji we wszystkich istniejących klasach implementujących interfejs. Tim podkreśla, że to dobra rzecz, ponieważ zmusza cię do prawidłowego zaimplementowania nowej metody we wszystkich konektorach.
Tworzenie procedury przechowywanej SQL
Tim przełącza się na SQL, aby utworzyć procedurę przechowywaną spPeople_Insert. Starannie mapuje parametry takie jak FirstName, LastName, EmailAddress i CellPhoneNumber, zapewniając poprawne typy danych i rozmiary. Tim wyjaśnia, że dokładne typy są istotne, aby zapobiec błędom i zapewnić integralność danych.
Wyjaśnia również, jak przechwycić nowo utworzony ID za pomocą SCOPE_IDENTITY() i przekazać go z powrotem do aplikacji. Ten krok jest kluczowy dla utrzymania spójnych ID w bazie danych i modelu aplikacji.
Testowanie złączki SQL
Tim testuje złączkę SQL, uruchamiając formularz i wstawiając osobę do bazy danych. Otwiera okno zapytania i sprawdza, czy dane pojawiają się poprawnie w tabeli dbo.People. Tim zaznacza, że częste testowanie jest ważne, aby szybko wychwytywać problemy i potwierdzić, że system działa zgodnie z oczekiwaniami.
Implementacja złączki tekstowej
Tim przechodzi do implementacji wersji Text Connector tej samej funkcjonalności. Wyjaśnia, że struktura kodu jest podobna, ale teraz używa plików CSV zamiast SQL. Tworzy nową stałą plikową zwaną PersonModels.csv i dodaje metody do konwersji danych CSV na obiekty PersonModel.
Tim omawia również znaczenie formatowania danych i jak wartości oddzielane przecinkami mogą powodować problemy, jeśli przecinki występują wewnątrz pól danych. Sugeruje użycie innych separatorów lub walidację wejściową, aby uniknąć problemów.
Tworzenie metody ConvertToPersonModels
Tim pisze metodę ConvertToPersonModels() do analizowania linii CSV na obiekty PersonModel. Pokazuje, jak dzielić linie, mapować wartości do właściwości modelu i dodawać je do listy. Tim podkreśla, że kolejność mapowania musi odpowiadać kolejności kolumn CSV.
Zapisywanie do pliku CSV
Tim tworzy metodę SaveToPeopleFile(), aby zapisywać listę obiektów PersonModel z powrotem do pliku CSV. Wyjaśnia, jak budować linie tekstowe z wartościami oddzielanymi przecinkami i zapisywać je do pliku. Tim podkreśla znaczenie używania poprawnej ścieżki pliku, aby zapewnić prawidłowe zapisanie danych.
Ostateczne testowanie i wyniki
Tim testuje złączkę tekstową, dodając kilku członków i sprawdzając, czy plik CSV aktualizuje się poprawnie. Potwierdza, że ID zwiększają się prawidłowo i że wszystkie pola danych są zapisywane. Tim zauważa, że proces jest teraz zakończony dla tej części formularza.
Wniosek i następne kroki
Tim kończy lekcję, wyjaśniając, że ten dział jest teraz kompletny. Następnym krokiem będzie połączenie list członków zespołu i zakończenie tworzenia zespołu. Tim przypomina uczniom, że ten proces staje się łatwiejszy z czasem, gdy wzorce są powtarzane i ponownie wykorzystywane, co sprawia, że doświadczeni programiści wydają się szybcy — ponownie wykorzystują sprawdzone wzorce.
