... i zakodowałem funkcjonalność „ręcznie”?
Jako raczej metaforyczny przykład, nie potrzebujesz biblioteki do rozwiązywania równań kwadratowych, chociaż takie biblioteki istnieją i ktoś bierze je na poważnie.
Jako bardziej wątpliwy przypadek, w zależności od okoliczności, mogę porzucić jQuery (na przykład, gdy nie muszę obsługiwać niektórych przeglądarek z epoki kamienia): upraszcza niektóre rzeczy, ale dodaje kolejną warstwę złożoności i zawodności do DOM. A nadużywanie jQuery prowadzi do absurdalnych problemów, takich jak ten ostatnio widziany w SO: jak przypisać pusty href do a
tagu za pomocą jQuery? Okazało się, że było to pytanie HTML, nawet JavaScript.
Kolejnym absurdalnym przypadkiem, ale dla wielu nieoczywistym, jest użycie silnika / języka szablonów zbudowanego na innym systemie szablonów: PHP. Trzeci poziom szablonowania kogoś?
I jeszcze jeden: czasami po prostu wyplucie XML za pomocą (graficznie) printf
jest znacznie łatwiejsze niż zrobienie tego z jakimś potwornym silnikiem XML.
Jakieś inne przypadki z twojego doświadczenia?
źródło
Odpowiedzi:
Wiele bibliotek MS Enterprise i większość kontrolek zewnętrznych dla .net pozostawiło to uczucie po pewnym użyciu.
Twój przebieg może się różnić
źródło
Windows Communication Foundation
Fakt, że ma na stronie głównej zdjęcie szwajcarskiego noża wojskowego, podsumowuje to dla mnie. Wyobraź sobie, że konfiguracja XML jest około cztery razy dłuższa niż rzeczywisty kod, który piszesz, i nadal bardzo trudno jest pisać usługi SOAP, które są interoperacyjne między C #, Java, PHP, Python i wszystkimi innymi językami, które „miały” być kompatybilny z ...
We wszystkich przyszłych projektach zamierzam pozostać przy REST.
źródło
Jednym z problemów, z którymi się spotkałem, gdy ludzie „toczą swoje”, jest to, że - chociaż ich podejście jest często szybsze i prostsze - jest również bardziej kruche, zawiera błędy, jest niekompletne i / lub zawiera wady bezpieczeństwa .
Prosty przykład: może być 10 razy łatwiej użyć printf do emisji XML niż z biblioteki:
ale czy pamiętasz ucieczkę od znaków specjalnych
str
? Na przykład „<
” i „&
”? Niektórzy ludzie mogą powiedzieć „nie, nie wiedziałem” i kontynuować pisanie:Ale nadal będzie emitować uszkodzony plik XML, jeśli będzie
str
zawierał podciąg „]]>
” w dowolnym miejscu. Obudowa Edge - na pewno. Ale wciąż aktualny scenariusz, który może prowadzić do nieoczekiwanych problemów o poważnych konsekwencjach.Istnieje wiele razy i miejsc, w których „kręcenie własnym” może być odpowiednie, ale czasami potrzeba dużo doświadczenia i wiedzy, aby określić, kiedy jest to właściwe. Dlatego często zachęcam programistów, by woleli używać ustalonych bibliotek (jeśli są dostępne) zamiast samodzielnie wdrażanych procedur.
źródło
Log4Net
Biblioteka jest dobra, ale dokumentacja jest przerażająca. To była przesada w stosunku do tego, co chciałem zrobić.
Zamiast tego użyłem Trace .
źródło
SharePoint
Nie zrozum mnie źle, SharePoint jest niesamowity, jeśli potrzebujesz większości rzeczy, które jest z nim (i ma wiele!), Ale jeśli nie wiesz, co robisz lub potrzebujesz go tylko dla jednego lub dwóch rzeczy, to MASYWNIE nie warte wysiłku i konfiguracji.
źródło
ASP.NET WebForms - Chociaż jako programista .NET od dłuższego czasu byłem moim chlebem powszednim, odkąd zacząłem używać frameworka MVC (i pochodzę ze środowiska szablonów PHP / Smarty) - zdajesz sobie sprawę, że czasem są po prostu lepsze sposoby tworzenia stron internetowych, a wykorzystywana przez nich abstrakcja jest nadmierna i nieszczelna .
źródło
W prawie każdym przypadku, gdy to zrobiłem, żałowałem:
Doszedłem do wniosku, że o wiele lepiej jest wybrać kilka niezawodnych platform zewnętrznych i wykorzystać je jako podstawę wszystkiego, co robisz. Te frameworki są opracowywane i debugowane przez kogoś innego, co jest niesamowitą oszczędnością czasu, gdy znormalizujesz je i dobrze je zrozumiesz.
źródło
System.Text.RegularExpressions
Regex jest tak skomplikowany i tak powolny. Bardzo rzadko używam Regex i zwykle piszę własne parsowanie i dopasowanie tekstu.
Czasami uznaję Regex za przydatne do naprawdę skomplikowanego dopasowywania.
źródło
Nie to, że Delphi4PHP potrzebuje jakiejkolwiek złej prasy, ale spróbowałem (wersja 2.0) i bardzo trudno było nagiąć to do mojej woli. Chciałem go użyć do stworzenia aplikacji internetowej w stylu youtube dla klientów do oglądania filmów szkoleniowych, ale było to zbyt uciążliwe, a kiedy próbowałem połączyć frameworki PHP (VCL4PHP, Zend, Smarty i Recess), wpadłem na nieuniknioną, muszę zmienić nazwę wszystko, ponieważ w PHP 5 nie ma przestrzeni nazw.
To powiedziawszy, w końcu nie wyrzuciłem własnego. Skorzystałem właśnie z moich błędów i postanowiłem, że będę bardzo prosty i użyję CodeIgniter i FlowPlayer (z JQuery).
Mam tęsknotę za tym, że niezależnie od frameworków, które pozwalają przetrwać w PHP 5, PHP 6 będzie miało niesamowite frameworki, które mogą być naprawdę fajne.
źródło
Weka
Dużo pracuję nad uczeniem maszynowym i jeśli kiedykolwiek potrzebuję czegoś prostego, takiego jak Naive Bayes lub regresja logistyczna, uwielbiam porzucać Wekę. Ma dobre implementacje niektórych dość skomplikowanych algorytmów uczenia maszynowego, ale API jest chrupiącym, nadmiernie inżynieryjnym, nadmiernie obiektowym, oldschoolowym (wcześniej generycznym) API Java. Rzeczy, które mnie denerwują:
Toczy własną tablicę rozmiarów, której nie używa nic innego, gwarantując konwersję pracy do przodu i do tyłu.
Dużo sekwencyjnego sprzęgania, w którym metody muszą być wywoływane w określonej kolejności i chyba, że naprawdę RTFM ostrożnie, nie zdasz sobie z tego sprawy.
Każda instancja musi być obiektem instancji i muszę jawnie zadeklarować za pomocą obiektu Attribute, czy jest to wartość nominalna czy liczbowa. Prowadzi to do dużej ilości pracy związanej z konwersją danych do żądanej przez Weka formy. Jest to szczególnie denerwujące, ponieważ Weka API rzuca tak wiele wyjątków, że kompilacja kodu nie oznacza, że prawdopodobnie i tak będzie działać. Gdybym projektował interfejs API, byłbym liberalny w tym, co zaakceptowałem (może po prostu wziąć tablicę Object) i po prostu introspekcji danych, aby dowiedzieć się, co mam i co należy z tym zrobić.
źródło
W przypadku konkretnego projektu porzuciłem EJB3. Dało mi to wstrzykiwanie zależności i obsługę transakcji zarządzanych przez kontener. Ale wprowadza ogromne zależności (np. JBoss) i utrudnia systemowi pisanie automatycznych testów. Teraz zredukowałem to do wstrzykiwania zależności konstruktora JPA +.
źródło
Wyrzucanie HTML na port debugowania w aplikacji. Potrzebowałem prostego sposobu na uzyskanie aktualnych danych (z automatycznym odświeżaniem). Pobranie biblioteki do sformatowania byłoby dobrze, ale łatwiej było po prostu ją wydrukować.
Odrzuciłem także bibliotekę na inną: w większości naszych rzeczy używamy dużej, złożonej biblioteki XML. Po spędzeniu 4 godzin jednego dnia na próbach uruchomienia go w nowej aplikacji, właśnie powiedziałem „zapakuj to” i włączyłem TinyXML. Nie jest tak potężny, ale zajmuje dużo mniej wysiłku, aby robić proste rzeczy.
źródło
Ostatnio pracuję nad kompilatorem języka skryptowego, którego mogę używać w swoich aplikacjach. Używałem innych, ale nikt nie robi dokładnie tego, czego potrzebuję. Pomyślałem więc, dlaczego nie spróbować napisać własny? Może upłynąć rok lub dwa, zanim będzie naprawdę odpowiedni do ogólnego użytku, ale to w porządku. Dodatkowo jest to świetne doświadczenie edukacyjne.
Innym rozwiązaniem typu „roll my own” są elementy używane do tłumaczenia moich aplikacji. Istnieją biblioteki, ale nie podobała mi się żadna z nich. Więc zrobiłem własny.
I komponenty bazy danych Delphi. Nienawidzę ich. Zawsze ma. Stworzyłem więc własny interfejs bazy danych, który działa tak, jak chcę, aby działał (i dokładnie tak, jak ten, który stworzyłem dla PHP, ułatwiając pisanie w różnych językach).
Zasadniczo, gdy dostaje się opcję, zazwyczaj tworzę własną bibliotekę.
źródło
Och, tak wielu. Pracowałem nad kilkoma zwinnymi projektami, wykorzystując API typu open source. Świetnie, gdy działają, ale często cierpieliśmy programistów z fetyszem za wnoszenie wszelkiego rodzaju api firm trzecich, niektóre niejasne, niektóre nie, tylko dlatego, że chcą w nich użyć jednej lub dwóch klas. Efektem końcowym jest miszmasz kodu i zhakowanie systemów razem. Oddają go, twierdząc, że jest to najlepszy kod na świecie, opuszczają go, a słabe osoby, które go podnoszą, znajdują niezrozumiały, nieudokumentowany bałagan pełen problemów z zależnościami i włamań.
źródło