Numer wersji jako część nazwy pliku

15

Widzę, że niektóre programy zawierają numer wersji jako część nazwy pliku, a inne nie. Jestem bardziej przyzwyczajony do tego drugiego typu i myślę, że jest bardziej popularny, ale ten pierwszy typ widzę czasem w bibliotekach javascript. Na przykład nazwa pliku jQuery jest podobna do jquery-2.1.0.jszamiast jquery.js. Ilekroć aktualizuję te typy plików, muszę szukać miejsc w innych programach, które ładują te pliki, i zmieniać nazwę pliku, do którego się odnoszą, i ręcznie usuwać starszą wersję tych bibliotek. Jest to dla mnie niewygodne, dlatego raczej zmieniam nazwę pliku, aby wykluczyć numer wersji, i utrzymuję, że nazwa pliku, o której mowa, nie zawiera numeru wersji.

Podejrzewam, że te liczby służą do kontroli wersji, ale nie jestem pewien, kiedy i jak są używane.

  • Jakie są zalety i wady dołączania numerów wersji do nazwy pliku?
  • Czy de facto istnieje konsensus co do tego, które obszary oprogramowania lub języków używają numeru wersji w nazwie pliku, a które obszary / języki nie? Jeśli tak, czy istnieje na to racjonalne uzasadnienie?
sawa
źródło
3
największą zaletą jest to, że możesz upewnić się, że przełomowe zmiany nie nastąpią, zanim będziesz na nie gotowy
maniak zapadkowy
@ratchetfreak Nie aktualizujesz, kiedy nie jesteś gotowy. Czy ty?
sawa
2
@sawa Załóżmy, że jQuery.com/jquery.js to adres URL najnowszej wersji i do tego odnosi się Twój kod. Co by się stało, gdyby jQuery opublikowało radykalną aktualizację? Oczywiście prowadziłbyś do swojej lokalnej kopii, ale myślę, że to właśnie oznacza maniak zapadkowy
11684
@ 11684 Rozumiem, rozumiem.
sawa
1
W przykładzie jquery zwróciłbym uwagę, że wersje hostowane przez CDN w Google i cdnjs.com umieszczają wersję w drzewie katalogów, a nie w nazwie pliku. (JQuery CDN z jquery.com i Microsoft mają wersję w nazwie pliku.)
Brian S

Odpowiedzi:

24
  1. Wskazane jest podanie wymaganej wersji. Zachowanie, na którym możesz polegać, mogło się zmienić, więc nowsze nie zawsze są lepsze. Najpierw sprawdź, czy działa dla Ciebie nowa wersja biblioteki. Następnie zaktualizuj jawnie.

  2. W przypadku zasobów internetowych posiadanie wersji będącej częścią nazwy pliku jest ważne w kontekście buforowania . W przypadku zasobów statycznych, takich jak jquery.jsbędziesz potrzebował bardzo długiego czasu buforowania, zanim zostanie ponownie pobrany. Jednak podczas aktualizacji chcesz kod do korzystania z nowej wersji natychmiast , zamiast przełączać posiadające klientów do nowej wersji podczas następnego dnia lub tak. Ponieważ foo-1.2.3.jsjest to inny zasób foo-1.2.4.js, żadne bufory nie będą przeszkadzać.

amon
źródło
1
+1, choć myślę, że ta odpowiedź jest trochę jednostronna. Rzeczywiście istnieją sytuacje, w których „brak numeru wersji” może być lepszym wyborem. Zobacz moją odpowiedź poniżej.
Doc Brown
3

(Z wyłączeniem sytuacji buforowania sieciowego wspomnianej przez @amon): Zakładam, że tworzysz lokalną kopię biblioteki innej firmy na użytek twojego programu, w przeciwnym razie potrzeba numeru wersji byłaby oczywista. Scenariusz użycia takiej biblioteki strony trzeciej w rozwijanym systemie oprogramowania może być jednym z dwóch:

  • wszystkie części twojego programu, które używają lib powinny zawsze mieć tę samą wersję lib (najlepiej „najnowszą”), a od czasu do czasu będziesz aktualizować lib. Zachowanie numeru wersji jako części nazwy pliku może być naprawdę żmudne, a jeśli to możliwe, zalecam usunięcie numeru z lokalnej kopii pliku. Zauważ, że jest to dobry pomysł, jeśli masz pewność, że zewnętrzny dostawca zachowuje lib głównie w dół kompatybilny z wcześniejszymi wersjami.

  • spodziewasz się, że będziesz mieć części swojego programu, które potrzebują wersji A, a niektóre inne, które potrzebują wersji B. Wtedy oczywiście będziesz potrzebować numeru wersji dla biblioteki innej firmy. Pamiętaj, że taka sytuacja może również wystąpić, gdy nie możesz łatwo przetestować wszystkich części oprogramowania za pomocą lib jednocześnie po wprowadzeniu nowej wersji.

A jeśli sam jesteś sprzedawcą biblioteki, powinieneś domyślnie podać numer wersji, ale użytkownik tej biblioteki sam może zdecydować, czy zachowa ten numer, czy go usunie.

Doktor Brown
źródło
Tak. Masz rację. Wspominałem pierwszy z twoich dwóch przypadków.
sawa
1
@sawa: zwróć uwagę, że był to twój przykład jquery, dla którego istnieje argument amona dotyczący buforowania w sieci. Przyczyną mojej odpowiedzi było wyjaśnienie różnych sytuacji, w których „brak numeru wersji” może być lepszym wyborem.
Doc Brown