0

在分析我的项目时,我得到了很多类型的误报

删除未使用的函数参数 XYZ

对于父类具有带参数的方法但子类不需要任何参数但在运行时我不知道也不想知道对象是什么实例的情况,因此我想传递一个参数,即使它由于方法签名而被忽略

是否有机会从声纳报告中排除此类情况?

class EdgeFinder{
    getNewEdgeMapEntry(face){} // it's bascially an abstract class to speak in Java terms and subclasses implement variations of some methods which the parent class defined but does not implement

...
}

class SingularEdgeFinder extends EdgeFinder{
   getNewEdgeMapEntry(face){
      return 1;
   }
   ...
}

class DifferentNormalsEdgeFinder extends EdgeFinder{
   getNewEdgeMapEntry(face){
      return [face.normal];
   }
   ...
}

然后我在代码中的某个位置创建任何 edgeHelper 类的实例,然后我执行这些方法,所以我当时不知道是什么 - 或者至少我不想再关心了 - 我知道它是我只关心 EdgeHelper 的一个子类。

4

1 回答 1

0

使用 JavaScript 类时,继承类的方法不需要与父类的方法具有相同数量的参数。它的工作方式与您熟悉的 Java 不同,没有方法重载或类似的东西。

换句话说,如果您不使用该参数,则完全可以忽略它,因此您的代码示例可以并且应该这样编写:

class EdgeFinder{
    getNewEdgeMapEntry() {}
}

class SingularEdgeFinder extends EdgeFinder{
    getNewEdgeMapEntry() {
        return 1;
   }
}

class DifferentNormalsEdgeFinder extends EdgeFinder{
    getNewEdgeMapEntry(face) {
        return [face.normal];
    }
}

“抽象”基类不必在其签名中定义任何参数,这是 Java 编程中不存在于 JavaScript 中的概念。事实上,如果你根本不直接使用基类,那么定义它甚至没有意义:

class EdgeFinder {}
于 2017-10-11T18:13:01.563 回答