簡體   English   中英

如何使用默認參數實現功能

[英]How to implement functions with default parameters

在Java中,我在網上搜索了如何使用默認參數創建函數,我了解到我需要用更少的參數再次編寫函數。

例:

f (a, b) {..}

f (a) {..}

f () {..}

現在,有兩種方法可以對這些函數進行編碼:

  1. 復制並粘貼3種方法中的算法,然后對其進行修改,將參數替換為所需的常量值:

     f (a, b) { //algorithm with a and b } f (a) { //algorithm with a and a constant } f () { //algorithm with 2 constants } 

    優勢:運行速度優化

    缺點:當我需要對函數進行修改時,我將不得不更改編寫代碼的次數(這里是3次3次)。

  2. 通過在參數中提供常量來返回前一個函數:

     f (a, b) { //algorithm } f (a) { return f (a, 1); } f () { return f ("x"); } 

    優點:易於閱讀,並且代碼靈活。

    缺點:當一個函數調用另一個函數時,它需要更多的運行時間和更多的內存(也許我在這一點上錯了,我真的很想成為)。

哪種方法更好?

當然,您應該選擇第二種方式。 確實應該避免重復代碼。 它使您的代碼難以維護,並且是引入錯誤的最佳方法。 您在這里所做的是過早的微優化:

  • 不會導致任何明顯的性能差異
  • 它可能根本不會造成任何差異,因為JIT將內聯第二個解決方案中對其他方法的調用
  • 甚至可能更慢,因為JIT可能無法優化最不常用的相同代碼塊之一

過早的優化是萬惡之源,您的問題是另一個完美的例子。

在出現性能問題之前,您甚至都不應該考慮優化代碼,並且您已經證明問題出在該代碼上。 通常,性能問題來自IO(文件讀取,數據庫查詢等),或者來自大型數據集的錯誤算法(O(n2)而不是O(n))。 不是來自1或2個方法調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM