Simplifying code by doing less
I am digging into Todoist code base after some absence and I find that I have overcomplicated some things.
An example is code that shows date difference when changing date: attachDateDiff: function(old_li, new_li) {
if(!Agenda.display_date)
return ;
var new_date_string = new_li.json.date_string;
var new_due_date = new_li.json.due_date;
var new_date = old_li.json.date_string != new_date_string;
if(new_date_string != '') {
if(old_li.json.due_date)
new_date &= !DateController.sameDate(old_li.json.due_date, new_due_date);
var div_due_date = $bytc('div', 'div_due_date', old_li);
if(new_date && div_due_date.length == 0) {
var day_diff = DateController.dayDiff(new_due_date);
var format_string = DateController.humanizeDayDiff(day_diff, new_due_date);
var n_span = SPAN({'class': 'new_date'}, 'Moved to ', format_string);
appendToTop(new_li.content, n_span);
}
}
else if(new_date) {
var n_span = SPAN({'class': 'new_date'}, 'Date removed');
appendToTop(new_li.content, n_span);
}
}
As you can see I do all kind of checks and what not. These checks just over complicate things and they don't add anything vital. Here is an improved version that does not do these "checks", but produces much cleaner code: attachDateDiff: function(new_li) {
if(!Agenda.display_date)
return ;
var new_date_string = new_li.json.date_string;
var new_due_date = new_li.json.due_date;
if(new_date_string != '') {
var day_diff = DateController.dayDiff(new_due_date);
var format_string = DateController.humanizeDayDiff(day_diff, new_due_date);
var n_span = SPAN({'class': 'new_date'}, 'Moved to ', format_string);
appendToTop(new_li.content, n_span);
}
else {
var n_span = SPAN({'class': 'new_date'}, 'Date removed');
appendToTop(new_li.content, n_span);
}
},
The lesson learned here is if you can remove unnecessary non-vital "features", then do it. Code maintainability and readability is far more important than if you do X,Y,Z non-vital checks.
Code
·
Code improvement
·
Code rewrite
·
JavaScript
·
Tips
•
16. Sep 2008
|
|