官术网_书友最值得收藏!

Optimizing the code

As we wrote the code while we were figuring out the problem, there comes a point when you need to take a step back and look at your code to optimize it. This could include reducing the number of variables and methods or creating methods, to reduce repeating functionality. Our current Vue app looks like the following:

      const app = new Vue({
el: '#app',
data: { people: [...],
currency: '$',
filterField: '', filterQuery: '', filterUserState: '' }, methods: { activeStatus(person) { return (person.isActive) ? 'Active' :
'Inactive'; },
activeClass(person) { return person.isActive ? 'active' :
'inactive'; },
balanceClass(person) { let balanceLevel = 'success'; if(person.balance < 2000) { balanceLevel = 'error'; } else if (person.balance < 3000) { balanceLevel = 'warning'; } let increasing = false, balance = person.balance / 1000; if(Math.round(balance) ==
Math.ceil(balance)) { increasing = 'increasing'; } return [balanceLevel, increasing]; },
formatBalance(balance) { return this.currency + balance.toFixed(2); },
formatDate(date) { let registered = new Date(date); return registered.toLocaleString('en-US'); },
filterRow(person) { let result = true; if(this.filterField) { if(this.filterField === 'isActive') { result = (typeof this.filterUserState
=== 'boolean') ? (this.filterUserState
=== person.isActive) : true; } else { let query = this.filterQuery, field = person[this.filterField];
if(typeof field === 'number') { query.replace(this.currency, '');
try { result = eval(field + query); } catch(e) {}
} else { field = field.toLowerCase(); result =
field.includes(query.toLowerCase()); }
} } return result; },
isActiveFilterSelected() { return (this.filterField === 'isActive'); }
} });

Looking at the preceding code, there are some improvements we can make. These include:

  • Reducing the number of filter variables and grouping logically
  • Combining the format functions
  • Reducing the number of hard-coded variables and properties
  • Re-ordering methods into a more logical order

We'll cover these points inpidually so we have a clean code base for building components with.

主站蜘蛛池模板: 梨树县| 丹棱县| 阿克| 淮滨县| 钦州市| 丰城市| 青田县| 岱山县| 镇安县| 醴陵市| 文安县| 海口市| 肇东市| 天柱县| 武义县| 乐业县| 上犹县| 友谊县| 米泉市| 云龙县| 六安市| 淳化县| 永康市| 上栗县| 武胜县| 河西区| 海宁市| 焦作市| 碌曲县| 柏乡县| 邛崃市| 吴堡县| 定兴县| 博乐市| 拉萨市| 和静县| 库尔勒市| 博野县| 靖边县| 库车县| 乌兰县|