Best practice for the re-entry issue is to have non-entrancy come first in the modifier order.
src/DSCEngine.sol:
148 */
149: function depositCollateral(address tokenCollateralAddress, uint256 amountCollateral)
150: public
151: moreThanZero(amountCollateral)
152: isAllowedToken(tokenCollateralAddress)
153: nonReentrant
154: {
src/DSCEngine.sol:
182 */
183: function redeemCollateral(address tokenCollateralAddress, uint256 amountCollateral)
184: public
185: moreThanZero(amountCollateral)
186: nonReentrant
187: {
src/DSCEngine.sol:
196 */
197: function mintDsc(uint256 amountDscToMint) public moreThanZero(amountDscToMint) nonReentrant {
src/DSCEngine.sol:
228 */
229: function liquidate(address collateral, address user, uint256 debtToCover)
230: external
231: moreThanZero(debtToCover)
232: nonReentrant
233: {