Скрипт Vim для вставки проверок нулевых ссылок Java для связанных вызовов методов - PullRequest
1 голос
/ 13 февраля 2010

Я хочу написать скрипт vim для следующих действий:

если в моем коде Java есть следующее,

Z z = obj1.foo().bar().foo1().bar1()

его следует заменить на

if(obj1 != null) {  
  T1 o1 = obj1.foo();  
  if(o1 != null) {  
    T2 o2 = o1.bar();  
    if(o2!=null) {  
      T3 o3 = o2.foo1();  
      if(o3 != null) {  
         z = o3.bar1();  
      }  
      else   
         z = null;  
    }  
    else   
         z = null;  
  }  
  else  
     z = null;  
}  
else   
  z = null  

Я хочу написать команду vi, которая принимает в качестве аргументов список разделенных запятыми типов T1, T2 ... и т. Д., Чтобы дать мне эту важную вещь.

Как мне узнать о vimscripting?

1 Ответ

2 голосов
/ 13 февраля 2010

Как и те, кто прокомментировал ваш вопрос, я считаю, что есть лучший способ решить вашу проблему.

Вот мои опасения по поводу вашей идеи:

  • Этот кодне очень читаемый;в будущем это будет более трудным и трудоемким для отладки или улучшения вашего кода
  • Ваш подход внесет коррективы даже в тех случаях, когда нулевая ссылка невозможна
  • Могут быть обстоятельства вВаш код, в котором возврат null неуместен;некоторые из них уже могут быть обработаны лучше
  • Я подозреваю, что такой скрипт на самом деле будет содержать ошибки или ошибки во время компиляции;Вот один пример, который мне очень понравился

    // Обязательно вызывайте foo.bar (). foobar () в особых случаях public Foo bar () {// do work ...}

становится ...

// Be sure to cal if(foo != null) {
  Bar bar = foo.bar();
  if (bar != null) {
    Foobar foobar = bar.foobar();
    in special cases
  }
}
public Foo bar() {
  // do work...
}

Вместо этого используйте инструмент статического анализа (или более 1), например FindBugs, который действительно хорош для перехвата вероятного нулевого указателяде-ссылки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...