Skip to main content
edited tags; edited title
Link
ocomfd
  • 5.8k
  • 8
  • 33
  • 40

Should I define more methods to update necessary UI only, or define less methods but update some UI unnecessarily?

Tweeted twitter.com/StackSoftEng/status/1096333434782445568
Source Link
ocomfd
  • 5.8k
  • 8
  • 33
  • 40

Should I define more methods to update necessary UI only, or define less methods but update some UI unnecessarily?

For example, suppose my input data and UI is not in 1 to 1 relationship: enter image description here

html:

<script> aChanged=function(){ }; bChanged=function(){ }; cChanged=function(){ }; </script> a:<input id="a" onchange="aChanged()"/>,b:<input id="b" onchange="bChanged()"/>,c:<input id="c" onchange="cChanged()"/><br/> a+b=<span id="a+b"></span><br/>b+c=<span id="b+c"></span><br/>a+c=<span id="a+c"></span> 

which change "a" needs to refresh "a+b" and "a+c". My question is, how should I write the update UI functions?

Style 1 : define more methods but updates requires UI only:

aChanged=function(){ updateAB(); updateAC(); }; bChanged=function(){ updateAB(); updateBC(); }; cChanged=function(){ updateBC(); updateAC(); }; updateAB=function(){ document.getElementById("a+b").innerHTML=Number(document.getElementById("a").value)+Number(document.getElementById("b").value); }; updateBC=function(){ document.getElementById("b+c").innerHTML=Number(document.getElementById("b").value)+Number(document.getElementById("c").value); }; updateAC=function(){ document.getElementById("a+c").innerHTML=Number(document.getElementById("a").value)+Number(document.getElementById("c").value); }; 

Style 2 : define less methods but it may update some UI unnecessarily (eg:change a may also refresh b+c):

aChanged=function(){ updateABC(); }; bChanged=function(){ updateABC(); }; cChanged=function(){ updateABC(); }; updateABC=function(){ document.getElementById("a+b").innerHTML=Number(document.getElementById("a").value)+Number(document.getElementById("b").value); document.getElementById("b+c").innerHTML=Number(document.getElementById("b").value)+Number(document.getElementById("c").value); document.getElementById("a+c").innerHTML=Number(document.getElementById("a").value)+Number(document.getElementById("c").value); }; 

Which style should I use?