JavaScript是一种简单易学的编程语言,很容易编写出可以运行和做某事的程序。但是,很难写出一段干净的JavaScript代码。在本文中,我们将介绍一些优化JS类和对象的重构思想。用常量来表示数字如果我们有很多重复的值表示同一个意思,但是没有明确的说出来,那么我们应该把它们转换成常量,这样大家就知道它们的意思了,如果我们需要改变,我们只要换一个地方就行了。例如,我们可能会这样写代码:constgetWeight=(mass)=>mass*9.81constpotentialEnergy=(mass,height)=>mass*height*9.81对于同义的数学,我可以用常量来表示:constGRAVITATIONAL_CONSTANT=9.81;constgetWeight=(mass)=>mass*GRAVITATIONAL_CONSTANTconstpotentialEnergy=(mass,height)=>mass*height*GRAVITATIONAL_CONSTANT既然我们知道9.81实际上意味着GRAVITATIONAL_CONSTANT,我们就不必重复了。上面我们用常数GRAVITATIONAL_CONSTANT来表示9.81,这样别人就可以看出它代表了万有引力常数的常数。封装字段我们可以在类的字段上加上getter和setter,这样我们就不想直接对类的字段进行操作了。例如,我们可能会这样写代码:classPerson{constructor(name){this.name=name;}}如果你想控制值的设置方式,你可以这样重构它:classPerson{constructor(name){this._name=name}getname(){returnthis._name}setname(){this._name=name}}这样,我们可以控制值的设置方式,因为我们可以将代码放在setter中来设置名称。我们还可以控制谁获得名字,因为它是在getter中返回的。用数组类替换字段我们可以用自己的数据类替换字段,这让我们在记录数据时更加灵活。例如,我们可能会这样写代码:classPerson{constructor(name,bloodGroup){this.name=name;this.bloodGroup=bloodGroup;}}constperson=newPerson('joe','a')bloodGroup(血型),我们可以将bloodGroup重构为一个类。classBloodGroup{constructor(name){this.bloodGroup=name;}}classPerson{constructor(name,bloodGroup){this.name=name;this.bloodGroup=bloodGroup;}}constbloodGroup=newBloodGroup('a');constperson=newPerson('joe',bloodGroup)这样我们就可以在bloodGroup字段中存储更多种类的数据。用状态/策略替换类型代码有时,我们可以根据对象的类型创建子类,而不是使用类中的类型字段。这样我们就可以在它们自己的子类中拥有更多不被两个类共享的成员。例如,我们可能会这样写代码:classAnimal{constructor(type){this.type=type}}constcat=newAnimal('cat')constdog=newAnimal('dog')我们可以根据类型重构对应的类type:classAnimal{//...}classCattextendsAnimal{//...}classDogextendsAnimal{//...}constcat=newCat();constdog=newDog();在上面的例子中,我们单独写了一个Animal类,并添加Cat和Dog类,它们是Animal类的子类。这样我们就可以在各自的类中保留Cat类和Dog类的共享属性,将共享的属性放在Animal类中。分解条件表达式我们可以将长条件表达式分解成更小的条件表达式。例如,我们可能会这样写代码:letieIEMac=navigator.userAgent.toLowerCase().includes("mac")&&navigator.userAgent.toLowerCase().includes("ie")我们可以这样重构:letuserAgent=navigator.userAgent.toLowerCase();letisMac=userAgent.includes("mac");letisIE=userAgent.toLowerCase().includes("ie");letisMacisMacIE=isMac&&isIE;我们将冗长难懂的条件表达式分解为多个简短的表达式样式,这将大大增加可读性。综上所述,如果我们有很多重复的值表示相同的东西但没有说清楚那么我们应该将它们转换为常量以便每个人都知道它们的意思如果我们需要改变我们只需要改变一个地方向上。为了更好的控制类的属性,我们可以给它添加getter和setter方法。如果我们有类型字段,我们可以用它们自己的子类替换它们。最后,我们可以将较长的条件表达式分解为更小的条件表达式,以便于阅读和理解。本文转载自微信公众号“伟大的走向世界”,您可以通过以下二维码关注。转载本文请联系大千世界公众号。
