Jestem w sytuacji, w której mogę użyć wtyczki JavaScript typu open source do wykonania zadania. Ale kiedy spróbowałem go użyć, odkryłem, że muszę przeprojektować wiele rzeczy z tego, co już zrobiłem, i to dodaje mojej projektowi pewnej złożoności. Podczas gdy mogę wykonać to samo zadanie za pomocą czystego kodu, który sam mogę stworzyć i bez potrzeby zmiany tego, co zrobiłem do tej pory.
W takiej sytuacji powinieneś zdecydować się na bibliotekę (na przykład ze względu na kod lepszej jakości?)
code-quality
libraries
Billal Begueradj
źródło
źródło
Odpowiedzi:
Jako inżynier może warto pomyśleć o tym jako o problemie z optymalizacją. Oczywiście musimy mieć cel optymalizacji . Powszechną w tego rodzaju sytuacjach byłoby zminimalizowanie całkowitego kosztu posiadania .
Jeśli uważasz, że dodanie komponentu innej firmy pozwoli zaoszczędzić koszty w dłuższej perspektywie, powinieneś go użyć. Jeśli nie, nie powinieneś. Pamiętaj, aby wziąć pod uwagę koszty bieżącej konserwacji (na przykład, gdy wydana zostanie nowa wersja O / S, zostanie wykryta usterka bezpieczeństwa lub wydana zostanie nowa specyfikacja W3C).
W przypadku wielu trywialnych problemów będzie to kosztować mniej, ale w przypadku średnio skomplikowanych problemów wykraczających poza podstawowe kompetencje organizacji, często warto skorzystać z usług innej firmy.
Są też inne cele do rozważenia (np. Ryzyko), ale całkowity koszt posiadania jest duży.
źródło
Bill Gates powiedział kiedyś:
Ten cytat przychodzi mi na myśl, ponieważ to samo można ostatecznie powiedzieć o liczbie bibliotek. Z reguły nie używam bibliotek, chyba że:
Idealnie wszystkie trzy warunki są spełnione, ale zadowoliłbym się dwoma. Podsumowując, nie powinieneś dodawać biblioteki do swojego programu, chyba że służy to celowi. Jeśli musisz zapytać, co to za cel, prawdopodobnie nie powinieneś dodawać go do swojego programu. Kod jakość swojego programu korzysta zatem ponieważ elegancko wzywa każdej biblioteki bez przygnieciony konieczności muszą przepisać bibliotek wewnątrz programu.
Powodzenia!
źródło
(Uwaga: pierwotne pytanie brzmiało: czy liczba bibliotek poprawia jakość kodu?)
Prawdopodobnie możesz sobie na to odpowiedzieć: Nie, oczywiście sam fakt korzystania z bibliotek nie poprawia twojego kodu. Gdyby tak było, łatwo byłoby napisać świetny kod do wszystkiego bez wysiłku.
To, co ludzie mają na myśli, gdy zalecają wielokrotne użycie własnego narzędzia, to fakt, że kod w znanej bibliotece jest prawdopodobnie bardziej poprawny, wydajny i / lub użyteczny niż to, co sam wymyślisz, po prostu dlatego, że autorzy spędzili znacznie więcej czasu na jeden konkretny obszar funkcjonalności, na jaki możesz sobie pozwolić (wraz z terminem całego projektu).
Ale to tylko trend, a nie prawo. Z pewnością mogą istnieć biblioteki, które nie są tak przydatne w użyciu, jak zwykłe tworzenie własnych. Często dzieje się tak, gdy biblioteka faktycznie robi znacznie więcej, niż potrzebujesz, i robi to w sposób, który zmusiłby cię do dostosowania własnej bazy kodu do ich konwencji o wiele bardziej niż jest to uzasadnione. Wygląda na to, że właśnie to znalazłeś w tym przypadku.
źródło
Korzystanie z odpowiednich bibliotek pozwala zaoszczędzić dużo pracy, ale wiąże się również z wieloma ukrytymi kosztami:
Więc zanim dodasz kolejną zależność do swojego projektu, aby dołączyć coś, co równie dobrze możesz napisać sam, wykonaj analizę kosztów i korzyści.
źródło
Nie musi to być decyzja binarna: albo użyj tylko biblioteki OSS, albo zaprogramuj nowe rozwiązanie od zera. Inną opcją może być ponowne użycie części biblioteki, jeśli pozwala na to licencja.
Na przykład w mojej dziedzinie (oprogramowanie numeryczne) biblioteka może mieć drobnoziarniste moduły i niektóre wyspecjalizowane moduły, z których jestem tylko w 80% zadowolony. Więc użyłbym modułów podstawowych i napisałbym opakowanie dla modułów specjalistycznych. Albo mogę opracować własne wyspecjalizowane moduły, korzystając z projektu i kodu modułów OSS. Najtrudniejsze, algorytmiczne bity zwykle są ponownie wykorzystywane od tych, ze zmodyfikowanym tylko kodem rusztowania. Mogę również wyczyścić część oryginalnego kodu. Okazało się to dobrym doświadczeniem edukacyjnym i oszczędnością czasu w porównaniu z opracowywaniem od zera.
źródło
Jeśli ktoś już dla ciebie wykonał pracę, oczywiście powinieneś go użyć.
Wyjątkiem od reguły jest javascript. Tam zaimportują kilkanaście innych bibliotek (oczywiście przestarzałe wersje), aby dodać funkcje językowe, których chcą używać, a następnie wykonali pracę za Ciebie.
Wybierz swoją strukturę i pozostań w jej obrębie. Jeśli biblioteka działa z twoim frameworkiem lub zwykłym js, w porządku. Ale jeśli potrzebuje innej struktury, poszukaj innej opcji.
źródło
Biblioteki i kiedy z nich korzystać to skomplikowana decyzja.
Z jednej strony dobrze przetestowałeś, prawie standardowe rzeczy (w mojej dziedzinie FFTW na przykład należy do tej kategorii lub coś w rodzaju pliku libsnd), które są ogólnie uznawane za działające i były standardowymi rzeczami przez ostatnie 20 lat, które wszyscy używają.
Z drugiej strony masz losowe rzeczy z github, bez pakietu testowego i tylko około 1 opiekuna, generalnie po co zawracać sobie głowę?
Test kwasowy polega przede wszystkim na tym, że biblioteka pasuje do mojej architektury (czasami, jeśli wiesz, że chcesz użyć danej biblioteki, to w końcu ją projektujesz) i czy myślę, że skończę z debugowaniem kogoś innego kodu biblioteki ? Dobrym proxy dla drugiego pytania jest „Czy istnieje zautomatyzowany zestaw testów i jaka jest dokumentacja?”.
Trochę debugowania nie jest poważnym problemem, ale w tym momencie kod biblioteki zaczyna liczyć się do mojego własnego kodu z punktu widzenia konserwacji (więcej, jeśli moje poprawki nie mogą być z jakiegoś powodu przesłane do poprzedniej wersji).
Rozróżniałbym również biblioteki i frameworki, ponieważ wszystko to czasami nie jest tak wyraźne, frameworki w moim świecie (mały rdzeń, ciężki procesor DSP) są zwykle bolesne dla tyłka, szczególnie jeśli próbujesz połączyć więcej niż jeden lub zrób coś nieco poza liniami, biblioteki są czasem przydatne. Zdaję sobie sprawę, że jest to bardzo różnie postrzegane na scenie tworzenia aplikacji internetowych.
Koniec dnia jest to decyzja, która sprowadza się do smaku i doświadczenia, a nawet doświadczeni czasami wybierają źle, nadal przynajmniej z biblioteką, zawsze możesz ją oderwać i napisać własną implementację, jeśli stanie się zbyt denerwująca.
Decyzje, decyzje....
źródło