我正在使用一个JavaScript API,看到了以下引用:
由于JavaScript是一种脚本语言,每行代码都会占用宝贵的处理器时间。改善处理器时间的一种方法是链接方法调用以减少代码行数。esri.Graphic和esri.symbol.*等对象提供setter方法,返回对象本身,允许方法链接。
不够有效率的写法:
var symbol = new esri.symbol.SimpleMarkerSymbol();
symbol.setSize(10);
symbol.setColor(new dojo.Color([255,0,0]));
更高效:
var symbol = new esri.symbol.SimpleMarkerSymbol().setSize(10).setColor(new dojo.Color([255,0,0]));
在链式方法调用时,需在效率和代码可读性之间寻求平衡。如果避免链式调用,则您的代码可能更具读性和可维护性;但是,您将失去链接的性能优势。我了解到在Java中,编写链式方法与堆栈方法应编译为相同的字节码。然而,由于这是一种脚本语言,这是否真的适用?另外,如果确实如此,是否值得为了该部分代码的性能而牺牲代码的可读性?
附带参考来源:http://help.arcgis.com/en/webapi/javascript/arcgis/jshelp/inside_graphics.html 编辑:经过一些性能测试,我发现无论方法是否被链接都无关紧要。(有时一个方法会更快,另一次则另一个方法更快)