小编Mri*_*nee的帖子

可以通过Streaming进行多项操作打破Demeter法吗?

我很少去幻想和写硒页面对象与Java 8流,如下面的代码中提到并得到了我的代码是打破得墨忒耳定律,因为我在一行做很多操作的审查意见.我被建议将代码分解为第一个流来收集列表并运行另一个流操作来进行匹配(简而言之,根据需要将其分解为多个流).我不相信Stream是用于处理数据处理的,如果我们将其分解为多个流,那么使用流是没有意义的.在此之前,我曾参与过网络安全项目,数百万条记录通过流媒体处理,并通过多种逻辑操作对数据进行排序.

请分享您的想法,我已经按照审稿人的建议对其进行了更改,但他无法解释原因,我想了解更多关于流和正确利用这一强大的java 8补充方法的方法.

以下是示例代码:

listOfWebElements.stream().filter(element -> element.getText().contains(name)).findFirst().ifPresent(match -> match.click());
Run Code Online (Sandbox Code Playgroud)

我在这个问题中指的是这条线,提供方法使它更有意义.

@FindBy(css = "#someTable td.some-name li a") List<WebElement> listOfWebElements;

public SomeClass doSomething(String name) {

    wait.until(visibilityOfAllElements(listOfWebElements));
    listOfWebElements.stream().filter(element -> element.getText().contains(name)).findFirst()
            .ifPresent(match -> match.click());
    return new SomeClass(driver);

}
Run Code Online (Sandbox Code Playgroud)

java selenium law-of-demeter pageobjects java-stream

7
推荐指数
1
解决办法
351
查看次数