Kiedy czytałem Najgorsze anty-wzory, na które się natknąłeś , kliknąłem link w tym poście, aby wylądować na stronie internetowej o anty-wzorach.
I http://sourcemaking.com/antipatterns/functional-decomposition mnie zastanawiał.
Jak zły jest ten anty-wzór i czy w ogóle jest to anty-wzór? Ponieważ, chociaż w dzisiejszych czasach zajmuję się głównie programowaniem OOP, nadal czuję niechęć do czysto wszystkich języków OOP, takich jak Java, a także do praktyk projektowych, które przynoszą. I wydaje mi się, że nadal mam pewne cechy programowania funkcjonalnego podczas pisania kodu.
I to nasuwało pytanie: czy robię źle, pozostając przy stylu OOP + Functional, czy też jest to powszechne w branży i wcale nie jest takie złe.
Z doświadczenia wiem, że styl OOP + Functional nie jest w pełni kompatybilny z programistami OOP +. Ale jednocześnie, podczas gdy programiści OOP mają problemy z opracowaniem OOP + Functional, kontrargumentem jest to, że rozwiązania OOP są często nadmiernie zaprojektowane i zbyt trudne w użyciu, a z mojego doświadczenia nie były ani trochę łatwiejsze, a właściwie wprowadzono pewne martwe punkty dla BARDZO poważnych błędów do ukrycia.
Mimo że rozmawiałem z kolegami na te tematy, doszedłem do wniosku, że żaden ze sposobów nie jest w rzeczywistości idealny. I wciąż mam pytanie bez odpowiedzi.
Problem OOP został również wzmocniony przez link z innego postu w tym samym wątku. Link wygląda na OOP w stylu Java http://chaosinmotion.com/blog/?p=622
Jakie jest zatem ogólne podejście do mieszania programowania funkcjonalnego z OOP? A jaką równowagę powinien osiągnąć programista?
Odpowiedzi:
Po pierwsze, funkcjonalne programowanie jest obecnie tym, co robią wszystkie fajne dzieciaki. Anti-Pattern naprawdę mówił o programowaniu proceduralnym (byłoby bardziej zrozumiałe, gdyby technika nazywała się „rozkładem proceduralnym”, ale tak nie jest), i myślę, że ty też.
Anty-wzorzec mówił o złych sposobach pisania kodu proceduralnego w języku zorientowanym obiektowo, druga strona mówiła o złym mówieniu o pisaniu w Javie - tak naprawdę nie ma języka tak fantastycznego, że możesz zrobić wszystko, co chcesz, ale nie możesz napisz zły kod.
W praktyce widziałem trochę więcej inżynierii w kodzie obiektowym niż procedury - nieco mniej w inżynierii, a trochę więcej w inżynierii.
W twoim przypadku będzie to zależeć od szczegółów i nie jestem pewien, co faktycznie robisz w stylu proceduralnym. Czy to jest poprawne, jasne, testowalne, łatwe do modyfikacji itp.? Kryteria oceny kodu powinny opierać się na takich praktycznych kwestiach, a nie na czystości jednego określonego stylu. Wygląda na to, że w twoim przypadku rozsądni i kompetentni ludzie mogą nie zgodzić się (i nie!) Co do tych obaw, a jeśli tak, to prawdopodobnie nie ma obiektywnego sposobu na ustalenie prawdziwości sprawy.
źródło