当前位置: 首页 > 科技观察

JavaScript代码中的难闻气味

时间:2023-03-12 01:58:38 科技观察

编写软件很难。做对的方法只有几种,做错的方法有很多,让我们的生活更加艰难。在本文中,我们将探索通过一些代码味道编写错误代码的一些方法。具有不同接口的替代类两个具有相同功能但不同接口的类由于重复而不好。我们不想要那样。所以我们可能想创建一个具有共享代码的超类,然后让子类有不同的方法。库类的不完全重用并不过分。图书馆建设者的工作很艰巨。他们可能有不完整的课程,但不允许我们修改他们来做我们想让他们做的事。所以这使得库类对我们无用,除非我们可以添加所需的功能。我们可能不得不直接向这些类中添加新的方法来解决这个问题。例如,如果我们导入了一个类,我们可以通过这样写来添加我们自己的方法:constmixin={foo(){//...},bar(){//...}}Object.assign(Foo.prototype,混合);在上面的代码中,我们将Foo类原型中的代码与mixin对象中的方法合并,使用Object.assign方法将更多方法合并到类中。数据类型数据类是只有字段的类。这些类可能会被其他类过度操纵。所以如果所有的公共字段都暴露了,我们应该把它们封装起来。如果需要,我们还可以包装集合字段。为了封装它们,我们可以将字段设为私有并添加访问和设置它们的方法。拒绝继承子类继承父类可以访问它们的方法。如果我们在父类中不需要这些类,我们可以将它们下推到子类中。那么,并不是所有的子类都会继承父类的方法,而它们仍然可以留在需要它们的子类中。注释注释对某些事情很有用。我们可以评论我们为什么做某事,但是因为我们已经在我们的代码中完成了它,所以没有必要在评论中解释我们是如何做的。注释代码也不好。首先,我们应该把他们带走,因为他们没有跑。不属于它们自己的条件我们应该将条件语句分成它们自己的行,以便我们可以更轻松地阅读它们。因此,我们不写:if(foo){//...}if(bar){//...},而是写:if(foo){//...}if(bar){//...}注解的可选参数可选参数在JavaScript中应该有默认值。例如,我们可以编写如下代码来表示该参数是可选的:constfoo=(a=1)=>{//...}>PhotobySamanthaGadesonUnsplash当心“死存储”死存储是指已分配A值,但未使用原始值重新分配该值。所以我们实际上不需要原始值,因此可以删除该行。所以不是写:letx=1;x=8*10;我们写:letx=8*10;不要反转我们的布尔双重否定总是比直接的条件表达式更难阅读。因此,我们可能应该写得更直接一些。例如,我们不写:if(!(x>10)){//...},而是写:if(x<=10){//...}正如我们所见,第二个if语句是比第一个if语句更有效,更易于阅读且更短。他们都是一样的。使用模板字符串模板字符串是最好的JavaScript字符串。我们可以在其中插入表达式,这是任何其他类型的字符串都无法做到的。此外,我们可以通过在字符串中输入换行符来创建多行字符串。由于反引号用作模板字符串的分隔符,因此可以在字符串中使用引号而不转义它们。结论模板字符串很棒。它们让我们可以做更多旧琴弦做不到的事情。要向不完整的库类添加更多方法,我们可以使用Object.assign将我们自己的方法添加到它们。另外,我们需要封装数据类,这样你的代码就不会与数据类紧密耦合。