我想编写一个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?
答案 0 :(得分:2)
与那些对您的问题发表评论的人一样,我相信有更好的方法可以解决您的问题。
以下是我对您的想法的担忧:
我怀疑像这样的脚本实际上会引入错误或编译时错误;这是我头顶的一个例子
//在特殊情况下,请务必使用cal foo.bar()。foobar() public Foo bar(){ // 做工作... }
...变为
// 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...
}
相反,使用像FindBugs这样的静态分析工具(或多于1个),它实际上是good at catching likely null pointer de-references。