Właśnie wydałem małą bibliotekę Java, która oferuje tylko kilka klas i metod. Ponieważ zbudowałem projekt z Maven, od razu skorzystałem z kilku bibliotek stron trzecich, aby osiągnąć moje cele, w szczególności:
- commons-lang3 (dla niektórych ogólnych rzeczy Java)
- slf4j-api (do logowania)
- commons-io (dla odrobiny rzeczy z pliku - myślę, że dosłownie czyta plik raz)
Nie chcę, żeby moja biblioteka była rozdęta w oczach innych. Czy powinienem próbować usunąć swoje poleganie na tych bibliotekach, aby zminimalizować swój ślad? Wszelkie porady dotyczące rodzajów bibliotek, których najlepiej byłoby unikać, rozważając korzystanie z nich w przyszłości?
Odpowiedzi:
Odpowiadam na to, biorąc pod uwagę twoją konkretną sytuację. Powiedziałbym, że korzystanie z tych bibliotek jest w porządku. Tylko upewnij się, że twój slf4j-api nie przyniesie z nim implementacji. Rozumiem przez to zależność implementacji jako „test”. NA PRZYKŁAD:
Jest to szczegółowo opisane w FAQ SLF4j.
Jeśli chodzi o pozostałe dwa, IME, zawsze są one kompatybilne wstecz. Dlatego jeśli za 5 lat będę potrzebować twojej biblioteki, ale używasz starej wersji, mogę po prostu wykluczyć twoje zależności, a nasz kod będzie nadal działał. Innymi słowy, używając tych konkretnych bibliotek, nie wprowadzisz piekła dla innych.
Jeśli używam twojej biblioteki przez maven, nie zauważę, czy twoja biblioteka jest rozdęta czy nie. Będę zależał od twojego i użyję go. Myślę, że ważniejsze jest, aby kod działał poprawnie, niż ma mniejszy rozmiar. Wolę używać commons-io zamiast odkrywać koło z błędem.
źródło
slf4j-api
i bez żadnych innych powiązanych artefaktów, pod warunkiem lub w inny sposób. Zobacz slf4j.org/manual.html#projectDep .exclude
zyliony s iirc), które musiałem wykonać, gdy poszczególne moduły w moich zależnościach nie mogły „zgodzić się” na wersję slf4j. Z twojej odpowiedzi wygląda na to, że projektanci modułów ujawnią to, ponieważprovided
nie byłoby takich problemów, prawda?provided
- bardzo dyskretne.mvn dependency:analyze
przyniosłem wersje crap, dopóki nie została wykluczona :)Nie.
„Wzdęcia” to mit. Bez względu na to, ile kodu znajduje się w bibliotece, jeśli część tego kodu nigdy nie zostanie użyta, nie zostanie on umieszczony na stronie - nie będzie miał żadnego wpływu na wydajność ani wielkość pamięci.
Z drugiej strony, jeśli potrzebujesz tej dodatkowej funkcjonalności, masz dwie możliwości. Możesz napisać to sam i poświęcić dużo czasu i wysiłku na rozwiązywanie problemów, które inni już wcześniej rozwiązali, lub możesz wybrać rozwiązanie, które już istnieje (i zostało przetestowane / debugowane / itp.).
To pozostawia nam rozmiar pliku do pobrania i miejsce na dysku, a jeśli nie mówisz głupich liczb, w 2013 r. Są to dwa czynniki, które powinny znajdować się na dole listy rzeczy, o które musisz się martwić.
źródło