I am writing hd wallet following bip44.
After each transaction, should I create a brand new change address each time? Or can I use the same change address multiple times? What is the recommended practice here?
The recommended practice is to use any address for only one input and one output. Once you've done that, don't use it again.
To illustrate with examples: