这两段代码之间是否存在性能差异?我的直觉是第二种选择比较慢,因为每次都必须构造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的一部分)。

09-11 17:58