2013-09-03 5 views
-1

Мой код выглядит уродливым. Что вы можете мне посоветовать? Я уже знаю об Enum, может быть, это хороший вариант для этой ситуации. Или что еще?Рефакторинг. Нужен ваш совет

private void writerContent(Integer firstRow, List<Record> records){ 
     int firstColumn=0; 
     int lastColumn=8; 
     XSSFSheet sheet = workBook.getSheetAt(0); 
     for (int lineId=firstRow;lineId<records.size();lineId++) { 
      Row row = sheet.getRow(lineId); 
      for (int columnId=firstColumn;columnId<lastColumn;columnId++){ 
       switch (columnId){ 
        case 0: row.createCell(columnId).setCellValue(records.get(lineId).getNumber()); break; 
        case 1: row.createCell(columnId).setCellValue(records.get(lineId).getName());break; 
        case 2: row.createCell(columnId).setCellValue(records.get(lineId).getCode());break; 
        case 3: row.createCell(columnId).setCellValue(records.get(lineId).getCount());break; 
        case 4: row.createCell(columnId).setCellValue(records.get(lineId).getSimultaneouslyProcessedProducts()); break; 
        case 5: row.createCell(columnId).setCellValue(records.get(lineId).isSimultaneousProcessing()); break; 
        case 6: row.createCell(columnId).setCellValue(records.get(lineId).getInterchangeability());break; 
       } 
      } 
     } 

    } 
+0

Гадкий каким образом? – Maroun

+2

мой совет http://codereview.stackexchange.com/ –

+1

Также я думаю, что вы должны «разбить» после каждого «случая». – Maroun

ответ

1

Вам нужно не внутренний цикл, просто написать lineary:

record = records.get(lineId); 
row.createCell(0).setCellValue(record.getNumber()); 
row.createCell(1).setCellValue(record.getName()); 
... 
+0

хороший совет! ... – Eldar

Смежные вопросы