Zastosowanie przekształcenia funkcjonalnego (LINQ to XML)
Czyste przekształcenia funkcjonalne mają zastosowanie w wielu różnych sytuacjach.
Podejście do przekształcania funkcjonalnego idealnie nadaje się do wykonywania zapytań i manipulowania danymi ustrukturyzowanymi; dlatego dobrze pasuje do technologii LINQ. Jednak transformacja funkcjonalna ma znacznie szerszą możliwość stosowania niż w przypadku LINQ. Każdy proces, w którym głównym celem jest przekształcanie danych z jednego formularza na inny, powinno być prawdopodobnie uważane za kandydata do transformacji funkcjonalnej.
Takie podejście ma zastosowanie do wielu problemów, które mogą nie wydawać się na pierwszy rzut oka kandydatem. Używane w połączeniu z linQ lub oddzielnie od LINQ, transformacja funkcjonalna powinna być brana pod uwagę w następujących obszarach:
- Dokumenty oparte na formacie XML. Dobrze sformułowane dane dowolnego dialektu XML można łatwo manipulować za pomocą transformacji funkcjonalnej. Aby uzyskać więcej informacji, zobacz Przekształcanie funkcjonalne kodu XML.
- Inne formaty plików strukturalnych. Od plików Windows.ini do dokumentów w postaci zwykłego tekstu większość plików ma pewną strukturę, która nadaje się do analizy i przekształcania.
- Protokoły przesyłania strumieniowego danych. Kodowanie danych do i dekodowanie danych z protokołów komunikacyjnych może być często reprezentowane przez prostą transformację funkcjonalną.
- Dane RDBMS i OODBMS. Relacyjne i obiektowe bazy danych, podobnie jak XML, są powszechnie używanymi źródłami danych ustrukturyzowanych.
- Rozwiązania matematyczne, statystyczne i naukowe. Te pola mają tendencję do manipulowania dużymi zestawami danych, aby ułatwić użytkownikowi wizualizowanie, szacowanie lub rozwiązywanie nietypowych problemów.
Jak opisano w artykule Refaktoryzacja czystych funkcji, używanie czystych funkcji jest przykładem programowania funkcjonalnego. Oprócz ich natychmiastowych korzyści korzystanie z czystych funkcji zapewnia cenne doświadczenie w myśleniu o problemach z perspektywy transformacji funkcjonalnej. Takie podejście może mieć również duży wpływ na projektowanie programów i klas. Jest to szczególnie istotne, gdy problem nadaje się do rozwiązania do przekształcania danych zgodnie z powyższym opisem.
Chociaż wykraczają one poza zakres tego samouczka, projekty, które mają wpływ na perspektywę transformacji funkcjonalnej, mają tendencję do centrum procesów więcej niż na obiektach jako aktorów, a wynikowe rozwiązanie zwykle jest implementowane jako seria przekształceń na dużą skalę, a nie zmiany stanu poszczególnych obiektów.
Pamiętaj również, że język C# i Visual Basic obsługują podejścia imperatywne i funkcjonalne, więc najlepszy projekt aplikacji może zawierać elementy obu tych elementów.