2017-07-25 45 views
0

有人對我有提示嗎? 我新的編碼:-)如何在下面的代碼中進行代碼重構?

private void PrintFile_btn_Click(object sender, EventArgs e) 
    { 
     PrintDocument printDoc = new PrintDocument(); 
     PrintDocument printDoc2 = new PrintDocument(); 
     List<PrintDocument> docList = new List<PrintDocument>(); 
     printDoc.DocumentName = @"C:\Users\test\Desktop\1\1.pdf"; 
     printDoc2.DocumentName = @"C:\Users\test\Desktop\1\2.pdf"; 
     docList.Add(printDoc); 
     docList.Add(printDoc2); 
     printDoc.Print(); 
     printDoc2.Print(); 
    } 
+0

要多次打印同一文檔?只需使用for循環 –

+0

不,我只是想打印一些文件。我發現這一點,它的工作原理。你能通過coderefactoring幫助我嗎? – Jannik153

+0

爲什麼要創建一個列表?添加這些元素後不會使用它,因此它浪費線條,內存和時間。只要刪除第5,8,9行('List ...''docList.add ...''docList.add ...')。 – Shirkam

回答

1

我認爲這看起來更乾淨,我已經ommitted列表文檔列表,因爲它並不需要。

private void PrintFile_btn_Click(object sender, EventArgs e) 
{ 
     List<string> docs= new List<string> 
     { 
     @"C:\Users\test\Desktop\1\1.pdf", 
     @"C:\Users\test\Desktop\1\2.pdf" 
     }; 

     foreach(var doc in docs) 
     { 
       var printDoc = new PrintDocument(); 
       printDoc.DocumentName = doc; 
       printDoc.Print(); 
     } 
} 
+0

你也可以從別的地方得到這個列表,而且看起來更清晰。 – Shirkam

+0

非常感謝! :-) – Jannik153

+0

如果我們談論代碼重構,最好將文檔打印的邏輯移動到另一個方法,即事件處理程序之外。直接在事件處理程序中實現邏輯不是一個好習慣。 https://stackoverflow.com/questions/8048196/functionality-code-in-event-handler-bad-practice – Dmitry

1

重構此方法並移出方法外的打印邏輯更好。也許你不需要列表。如果你有一些文件名的模式,你可以進一步優化它。

private void PrintFile_btn_Click(object sender, EventArgs e) 
    { 
     PrintDoc(@"C:\Users\test\Desktop\1\1.pdf"); 
     PrintDoc(@"C:\Users\test\Desktop\1\2.pdf"); 
    } 

    private void PrintDoc(string documentPath) 
    { 
     PrintDocument printDoc = new PrintDocument(); 
     printDoc.DocumentName = documentPath; 
     printDoc.Print(); 
    }