如何通过一次调用函数来重构代码?

时间:2018-11-27 18:41:13

标签: java

我具有以下功能:

private Document readResponse(String pageId,String postId) throws Exception {
    String request="https://www.facebook.com/"+pageId+"/posts/"+postId+"/?
    HttpResponse hResponse;


     hResponse = hrHandler.executeGet(request, headerParameters,null, null);


                Document doc =Jsoup.parse(hResponse.getBody());

        return doc;

我想在以下两个函数中使用它的结果,这意味着我想一次调用它:

private Integer getObject1(String pageId,String postId) throws Exception {
        String[] a=null;

            Elements e=doc.getElementsByTag("script");
            Pattern p =Pattern.compile("----:(.*?(?=\\\\s\\\\w+=|$))");//\\\\d+");;


            for(Element el:e) {
            //.contains("(TimeSlice)")) {
                Matcher m = p.matcher(el.data());
                while(m.find()){
                    a=m.group().split(",");
                }


             }
            return Integer.parseInt(a[0].replace("anything :",""));    
            }

private Integer getComments1(String pageId,String postId) throws Exception {
    String[] a=null;
                Document doc =readResponse( pageId, postId);
        Elements e=doc.getElementsByTag("script");
        Pattern p =Pattern.compile("mystring1:(.*?(?=\\\\s\\\\w+=|$))");

        for(Element el:e) {
        //.contains("(TimeSlice)")) {
            Matcher m = p.matcher(el.data());
            while(m.find()){
                a=m.group().split(",");
            }


         }
        return Integer.parseInt(a[0].replace("something:",""));    
        }

如何在没有两次调用readResponse()函数的情况下执行此操作?提前致谢。

3 个答案:

答案 0 :(得分:0)

如果将Document传递给这两种方法,则可以执行以下操作。

public static void main(String[] args) {
        Document doc=readResponse("","");
        Integer i=getObject1(doc);
        Integer comments=getComments1(doc);
    }

private Integer getObject1(Document doc) throws Exception
private Integer getComments1(Document doc) throws Exception 

答案 1 :(得分:0)

您可以从这两种方法的外部而不是内部调用readResponse。您需要更改每种方法,以将DocumentpageId用作参数。因此方法签名可能看起来像这样。

postId

然后,当您打电话给他们时,您会写类似

private Integer getObjectFromDocument(Document document) throws Exception

private Integer getCommentsFromDocument(Document document) throws Exception

答案 2 :(得分:0)

如果您不想多次调用该方法,则可以在启动方法中调用该方法并将其存储在某些Document变量中,您可以将其作为参数传递给所有需要此方法的方法。您只需在调用方法中声明一个附加参数。