I'm curious if anyone has written about a strategy for fixing bugs in a way that retains the integrity and usability of the code base beyond #TDD and #CI? As my role sunsets, I'm thinking about how I can set the next maintainers of my packages up for success so that patches can be made in a way that does not break workflows ten iterations in the future due to patches piled upon patches.
Relevant XKCD: https://xkcd.com/1172/
@zkamvar I’d add ATDD / BDD but that is a flavor of TDD. The other two are keeping a simple architecture (4+1 model) as documentation and having multiple designs for a given feature. The first tries to keep the same mental model of the code in everyone’s head and the second is “more brains is better” to changes to said model.
@zkamvar "patches piled upon patches"... I feel this
@zkamvar more seriously your question reminds me of https://code-review.tidyverse.org/reviewer/purpose.html "it is the duty of the reviewer to make sure that each PR is of such a quality that the overall code health of the package is not decreasing as time goes on."
So you "just" need to train reviewers