Somekind:
A teraz JS nagle stał się zaprojektowanym językiem, bez wtfów,
WTFy są, ale po kilku latach przestają ci przeszkadzać. Dowiadujesz się po prostu w pewnym momencie, że typeof null === 'object'
i potem o tym pamiętasz. I wydaje mi się, że łatwiej zapamiętać parę WTFów niż nazwy wszystkich klas z Javy.
owca_82:
OOP w js nie istnieje, ostatnio zadałem na forum pytanie dlaczego nikt nie korzysta z OOP to dostałem odpowieć że to jest JS i w nim tak się nie pisze.
OOP w JS istnieje i ma się dobrze - chociaż fanatycy programowania funkcyjnego czy fani Reduxa będą twierdzić, że JS jest funkcyjne i będą gardzić OOP i robić wszystko na funkcjach - więc nie dziwne, że ci tak odpowiedzieli, że się nie pisze obiektowo - no ale to jest fanatyzm jednego paradygmatu, oni uważają OOP za coś gorszego, i że funkcyjność rządzi (jak na ironię sama idea Reduxa ma wiele wspólnego z OOP, to w zasadzie emulacja OOP za pomocą funkcji).
o czymś takim jak DRY, SOLID większość devów js nie ma pojęcia
Bo większość devów innych języków ma pojęcie? To normalne, że większość programistów nie umie kompletnie programować, w każdym języku tak jest. Swoją drogą najgorsze kody w JS tworzą zwykle programiści innych języków, którzy muszą coś tam napisać przy okazji od czasu do czasu w JavaScript i piszą to najbardziej kijowo jak się da, a potem bluzgają na to jaki to JS okropny.
Pisze się w nim fajnie ale wyłącznie jakieś małe aplikacje, chcąc napisać coś większego co miało by ręce
i nogi to musisz poświęcić na to 3 razy więcej czasu niż np. w takiej Javie.
Napisanie czegoś większego w JS to nie problem. Problem jednak czytanie takiego kodu, nawigacja po większym projekcie w IDE. (szczególnie jak wchodzisz do nowego projektu i chcesz go zrozumieć). Z tym jest faktycznie bieda, jeśli masz np. z kilkadziesiąt plików, które korzystają z jakiejś struktury danych - i nie masz statycznego typowania, to nie możesz w łatwy sposób np. zobaczyć, które pliki są uzależnione od takiej i takiej struktury danych. Z drugiej strony w takiej Javie nie dość, że masz wszystko jawnie opisane (więc nawet wyszukasz sobie łatwo wpisując nazwę typu) to i IDE są o wiele sprytniejsze niż te dostępne do JavaScriptu*.
Ale myślę, że to właśnie use case dla TypeScriptu - nie przepadam za nim, ale tak samo jak nie przepadam za dużymi projektami i trzymam się od nich z dala raczej. Jednak parę razy wszedłem do dużego projektu w JavaScripcie i była to masakra, właśnie z powodu tej JSowej partyzantki i tego, że IDE były koszmarnie głupie, jeśli chodzi o rozumienie. I w sumie przez to pisałem słabszy kod, bo np. zdarzało mi się implementować funkcjonalności, które już istniały w projekcie, tylko nie potrafiłem ich odnaleźć.
Więc raczej bym napisał, że główny problem z dużymi projektami w JavaScripcie jest taki, że są nieczytelne, a nie że trudno się je pisze (bo pisze się szybko, ale zanim napiszesz 10 linijek kodu, to musisz przeglądać z 1000, żeby zrozumieć, co który moduł robi).
Z drugiej strony ja np. uważam, że wiele projektów jest zbyt dużych, bo jest w nich dużo overengineeringu pomieszanego ze spaghetti kodem. Często kod jest rozdmuchany i jakaś funkcjonalność, którą można by napisać w 200 linijek dobrej jakości kodu, jest robiona na 2000 linijek słabego. Projekty często są "duże" nie dlatego, że dużo robią, a dlatego, że zostały słabo napisane. Przypuszczam, że w innych językach utrzymanie dużych projektów to też nie jest jakaś bułka z masłem.
* chociaż to się powoli zmienia. Webstorm się rozwija, inne rzeczy też się rozwijają...
vpiotr