On part d'un code dégueu, on l'améliore jusqu'à le présenter dans une interface Web explorable.
Code dégueu pour un célibataire (donc pas d'histoire de parts).
C'est mieux en séparant et nommant correctement (en français) chaque étape du calcul. Malheureusement, la plupart des codes sources ressemblent plutôt au précédent...
// L'impôt final est le résultat de ces trois opérations succéssives sur le revenu imposable annuel
impôtFinal = décote(barème(abattement(4000 * 12)));
// Voici ces opérations une par une :
function abattement(revenuImposable) {
return revenuImposable - revenuImposable * (10/100);
}
function barème(assiette) {
return (
Math.max(Math.min(assiette, 27086) - 9807, 0) * 0.14 +
Math.max(Math.min(assiette, 72617) - 27086, 0) * 0.3 +
Math.max(Math.min(assiette, 153783) - 72617, 0) * 0.41 +
Math.max(assiette - 153783, 0) * 0.45
);
}
function décote(impôt) {
if (impôt < 1569) return Math.max(impôt - (1177 - impôt * (3 / 4)), 0);
else return impôt;
}
// On affiche le résultat final
impôtFinal