1. 程式人生 > >eclipse自動補全功能的缺陷

eclipse自動補全功能的缺陷

  這周在做一些程式碼的重構,在重構的過程中,踩了一個eclipse的大坑!這裡記錄一下

  在eclipse裡寫java程式碼,你寫好方法名字,再來個回車,eclipse會自動幫你把方法的引數給補全,補全的引數跟你在補全方法定義的引數名字“一致”,即我認為的效果是這樣的

public void test01(Integer id,String name,Integer age){
    test02(id,name,age)
}
public void test02(Integer id,String name,Integer age){ 
}

  一般情況下,使用起來也是這種效果的。但是,eclipse的方法引數補全,是有缺陷的

public void test01(Integer id,String name,Integer age){
    Integer auctionId = 1001;
    test02(auctionId, name, age);

    Integer countNumber = 1001;
    test02(auctionId, name, age);

    int userId = 1;
    test02(auctionId, name, age);
}

public void test02(Integer id,String name,Integer age){

}

  這test01方法,第三行,我調test02,理想中情況,是應該給我補全引數是 id和name、age,實際呢,給我補全的是auctionId!

  然後我又試了其他的情況,發現,eclipse的補全規則,是模糊引數匹配,如果有多個引數符合條件,則就近定義原則,在呼叫方法距離最近的並且引數型別匹配的,權值最高!

  想不通,為什麼eclipse不是引數名精確匹配呢?就這個不起眼的問題,給我造成了好幾個bug,還不好排查,只能肉眼去一個一個掃雷。我又試了idea,但是,idea是直接沒補全引數的這個功能。。。