the first thing is to not reuse addresses. rather, generate a new address every time
Well with a lot (if not all) wallets that you use, the wallet generates a new address each time you receive bitcoins to the previous address... so that's already implemented.