Как Вы решаете, когда обновить библиотеку в Вашем проекте?

Приведенный ниже код может дать вам то, что вам нужно.

library(shiny)
ui <- basicPage(
  uiOutput("test"),
  plotOutput("plot1")
)
server <- function(input, output) {
  output$test <- renderUI({
    selectInput("dummy", "Select one value", c(mtcars$qsec))
  })
  output$plot1 <- renderPlot({
    plot(mtcars$wt, mtcars$mpg, main = paste0("this is main ",input$dummy,""))
  })
}
shinyApp(ui, server)

Использование selectInput для проверки ваших требований. Сделайте необходимые изменения для вашей актуальной проблемы.

6
задан Jeff Atwood 3 July 2012 в 04:57
поделиться

7 ответов

Я извлек достаточно уроков, чтобы сделать следующее:

  1. Проверьте список изменения библиотеки. Что они фиксировали? Я забочусь? Если нет списка изменения, то библиотекой не пользуются в моем проекте.
  2. О чем отправляют люди на форуме Библиотеки? Существует ли сыпь сообщений, запускающихся вскоре после выпуска, указывающего на очевидные проблемы?
  3. Вдоль той же вены как номер 2 не обновляйте сразу. У ВСЕХ есть плохой выпуск. Я не намереваюсь быть первым для получения бита с той небольшой ошибкой. (больше, который является). Это не означает, ожидают 6 месяцев также. В течение первого месяца после выпуска необходимо знать оборотные стороны.
  4. Когда я решаю продолжить обновление; тест, тестовый тест. Здесь автоматизированное тестирование чрезвычайно важно.

Править: Я хотел добавить еще один объект, который является, по крайней мере, как важный, и возможно больше, чем другие.

  • Какие повреждающиеся изменения были представлены в этом выпуске? Другими словами, библиотека уходит в другом направлении? Если библиотека удержит от использования или заменит функциональность, то Вы захотите остаться вдобавок ко всему
7
ответ дан 8 December 2019 в 04:56
поделиться

Важный: избегайте технического долга.

"Если это не, повредился, не обновляйте", сумасшедшая политика, которая приводит к программному обеспечению, так поврежденному, что никто не может зафиксировать его.

Сыпь, непротестированные изменения являются плохой идеей, но не настолько плохо как накопление технического долга, потому что это кажется более дешевым вскоре.

Получите "ночную сборку" процесс, идущий, таким образом, можно непрерывно тестировать все изменения - Ваш, а также пакеты, от которых Вы зависите.

Пока у Вас нет непрерывного процесса интеграции, можно сделать ежеквартальные главные версии, которые включают модернизации инфраструктуры.

Избегайте технического долга.

8
ответ дан 8 December 2019 в 04:56
поделиться

Один подход должен привести библиотеки с открытым исходным кодом, которыми Вы пользуетесь при своем собственном управлении исходным кодом. Затем периодически объединяйте восходящие изменения в свое следующее ответвление выпуска, или раньше если они - исправления безопасности и запускают Ваши автоматизированные тесты.

Другими словами, используйте те же критерии, чтобы решить, использовать ли восходящие изменения, как Вы делаете для циклов выпуска на коде, который Вы пишете в доме. Полагайте, что разработчики ПО с открытым исходным кодом часть Вашей виртуальной группы разработчиков. Это действительно имеет место так или иначе, это - просто вопрос того, принимаете ли Вы решение распознать его как часть Ваших методов разработки.

2
ответ дан 8 December 2019 в 04:56
поделиться

В то время как Вы не хотите обновлять просто, потому что существует новая версия, существует другое соображение, которое является доступностью старой версии. Я столкнулся с той проблемой, пытающейся разрабатывать проекты с открытым исходным кодом.

2
ответ дан 8 December 2019 в 04:56
поделиться

Я обычно предполагаю, что игнорирование новой версии библиотеки (coz' оно не имеет никаких интересных функций или улучшений) является ошибкой, потому что однажды Вы узнаете, что эта версия необходима для миграции для следующей версии, до которой Вы могли бы хотеть обновить.

Таким образом, мой совет состоит в том, чтобы рассмотреть тщательно, что изменилось в новой версии и рассматривает, требуют ли изменения большого тестирования, или мало.

Если большое тестирование требуется, лучше обновлять до более новой библиотеки при следующем выпуске (основная версия) Вашего программного обеспечения (как при перемещении от v8.0 до v8.5). Когда это происходит, я предполагаю, что также существуют другие основные модификации, таким образом, большое тестирование сделано.

2
ответ дан 8 December 2019 в 04:56
поделиться

Я предпочитаю не позволять версиям отстать слишком далеко позади на подчиненных библиотеках. До года хорошо для большинства библиотек, если безопасность или проблемы производительности не известны. Библиотеки с известными проблемами безопасности - необходимость для обновления.

Я периодически загружаю последнюю версию каждой библиотеки и выполняю мои модульные тесты приложений с помощью них. Если они передают, я использую их в нашей разработке и средах интеграции некоторое время и нажатии к QA, когда я удовлетворен, что они не сосут.

Вышеупомянутая процедура предполагает, что API значительно не изменился. Все ставки выключены, если я должен осуществить рефакторинг существующий код только для использования более новой версии библиотеки. (например, Ось 1x по сравнению с 2x) Затем я должен был бы включить управление для принятия решения выделить ресурсы. Такое изменение обычно отличалось бы, пока главная версия унаследованного кода не планируется.

2
ответ дан 8 December 2019 в 04:56
поделиться

Некоторые важные вопросы:

  • Как широко используемый библиотека? (Если это будет широко использоваться, то ошибки будут найдены и устранены более быстро),
  • Как активно разработанный это?
  • Действительно ли документация является очень четкой?
  • Были существенные изменения, незначительные или просто внутренние изменения?
  • Обновление повреждает назад совместимость? (Необходимо ли будет изменить какой-либо код?)

Если обновление не выглядит плохо согласно указанным выше критериям, лучше пойти с ним, и если Вы имеете какие-либо проблемы, возвращаетесь к старой версии.

1
ответ дан 8 December 2019 в 04:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: