Widziałem komentarz / uwagę, w której coś mówiło - w odniesieniu do LINQ / lambda - w następujący sposób: „Napisz kod czytelny dla ludzi, a nie dla twojego komputera”.
Myślę, że to stwierdzenie ma wiele zalet, jednak weź pod uwagę programistę (takiego jak ja), który przeszedł całą gamę języków programowania od montażu, poprzez procedury, przez OO, poprzez zarządzanie, poprzez wykorzystanie rozwiązań o wysokiej przepustowości równoległych zadań .
Szczyciłem się tym, że mój kod jest tak czytelny i jak to możliwe, że można go ponownie wykorzystać, i że zastosowałem wiele zasad wzornictwa projektowego GOF w celu dostarczenia systemów i usług jakości produkcji w wielu różnych sektorach biznesowych.
Gdy pierwszy raz spotkałem wyrażenie lambda, pomyślałem: „Co to do diabła jest!?!” Było to natychmiast sprzeczne z intuicją w stosunku do mojej znanej (i dlatego wygodnej) wyraźnej składni deklaratywnej. Młodsi w wieku <5 lat w pracy chłopaki jednak to zrobili, jakby to była manna z nieba!
Dzieje się tak dlatego, że przez lata myślenie jak komputer (w sensie syntaktycznym) bardzo łatwo przekładało się na składnię kodowania bezpośredniego (niezależnie od języka). Kiedy masz już obliczeniowy sposób myślenia przez około 20 lat (w moim przypadku 30+), musisz docenić, że początkowy szok syntaktyczny wyrażenia lambda może łatwo przełożyć się na strach i nieufność.
Może współpracownik w PO pochodził z podobnego środowiska jak ja (tj. Był kilka razy w okolicy) i było to dla nich sprzeczne z intuicją? Moje pytanie brzmi: co zrobiłeś z tym? Czy próbowałeś ponownie wyedukować rówieśnika, aby rozumiał korzyści płynące ze składni wbudowanej, czy też pręgowałeś go / krytykowaliście za to, że „nie byli w programie”? Ten pierwszy prawdopodobnie widziałby, jak twój współpracownik podszedł do twojego sposobu myślenia, ten drugi prawdopodobnie spowodowałby, że jeszcze bardziej nie ufają składni LINQ / lambda, a tym samym pogarszają negatywną opinię.
Dla siebie musiałem ponownie wyedukować swój sposób myślenia (jak mówi Eric powyżej, nie jest to nieznaczna zmiana umysłu i musiałem programować w Mirandzie w latach 80., więc miałem swój udział w funkcjonalnym programowaniu) ale kiedy już przeszedłem przez ten ból, korzyści były oczywiste, ale - co ważniejsze - tam, gdzie jego użycie zostało nadmiernie wykorzystane (tj. użyte w celu użycia go), ponad złożone i powtarzalne (biorąc pod uwagę zasadę DRY w tym przypadku).
Ponieważ ktoś, kto nie tylko nadal pisze dużo kodu, ale również musi dokonać przeglądu technicznego dużo kodu, konieczne było zrozumienie tych zasad, aby móc bezstronnie przeglądać elementy, doradzając, gdzie użycie wyrażenia lambda może być bardziej wydajne / czytelny, a także zachęcić programistów do rozważenia czytelności bardzo złożonych wbudowanych wyrażeń lambda (w których wywołanie metody - w takich przypadkach - uczyniłoby kod bardziej czytelnym, łatwym do utrzymania i rozszerzalnym).
Więc kiedy ktoś mówi, że „nie dostaje lambda?” lub składnia LINQ, zamiast nazywać je luddysem, próbując pomóc im zrozumieć podstawowe zasady. Mogą przecież mieć „oldskulowe” pochodzenie, takie jak ja.