这两段代码之间是否存在性能差异?我的直觉是第二种选择比较慢,因为每次都必须构造Cell对象,但是我喜欢返回Cell的想法。
选项一:
//Call to method
initiTextDefaultCell(borders);
iTextTable.setDefaultCell(iTextDefaultCell);
//Other code...
private void initiTextDefaultCell(boolean borders) {
if (!borders)
iTextDefaultCell.setBorder(Rectangle.NO_BORDER);
else
iTextDefaultCell.setBorder(Rectangle.BOX);
}
选项二:
//Call to method
iTextTable.setDefaultCell(initiTextDefaultCell(borders));
//Other code...
private Cell initiTextDefaultCell(boolean borders) {
Cell iTextDefaultCell = new Cell();
if (!borders)
iTextDefaultCell.setBorder(Rectangle.NO_BORDER);
else
iTextDefaultCell.setBorder(Rectangle.BOX);
return iTextDefaultCell;
}
谢谢!
最佳答案
正如您已经说过的,由于分配了新对象,选项二会变慢。
这看起来像是代码清晰度与性能的决定。我个人认为第二种选择更明确,并且对性能的影响可以忽略不计。
但是,在不知道iTextTable
是什么的情况下,很难确定要使用哪个。如果在实例化表时调用initiTextDefaultCell
一次,那么我将使用选项2,但是如果调用initiTextDefaultCell
的次数取决于表的大小,则选项1会更好(假设默认单元被实例化为iTextTable
的一部分)。