Re: [討論] 主管不認同書本的知識,說我沒學好程設

作者: wens (文思)   2016-05-08 10:27:33
以下不見得跟 Java 有關,純粹討論一點關於函數參數過多可能
導致的問題
1.難以閱讀、修改不容易
函數的參數越多,表示一個人要使用或是編輯的時候,需要判斷
斷詞 (想不到比較好的說法) 的地方就越多,也越容易失誤。
有些編輯軟體可能會幫你 highlight 你目前編輯到的參數,或是
提供額外彈出的提示 (如自動完成) ,但不是所有的都會。也有
方法在寫的時候讓他更明確,如一個參數放一行,但也不是每個人
都喜歡這樣的 coding style。而且十個參數就是十行,也占據了
不少版面。
參數多,漏給參數的機會也增大。如果好死不死有許多類似的函數
多載 (在建構子遇到的機會應該不小?) 且參數型態又一樣,是不是
很容易呼叫到不正確的建構子呢?
此外, C++ / Java 有 namespace / package 要寫,參數型態本身
就已經夠長到不好閱讀了。
2.效能 & 空間
我不確定其他高階程式語言怎麼實作,至少在 C / C++ 裡面,某些
平台上最前面幾個 (0~4, 看平台) 參數是用 register 傳,剩下的
要放在stack 上。通常編譯器做最佳化的時候已經會直接一次把需要
的空間留下來,效能上大概不會有差,因為編譯器可以安排運算指令
讓需要傳的資料事先存在對的位址。但是堆疊的空間仍然是需要的。
在多緒執行的程式裡面,程式堆疊不一定如大家預期的是可以一直
成長的。在一些系統裡面,程式堆疊是固定大小,且這個大小還會
影響到開新的執行緒的速度。
最後,寫程式很多選擇都是取捨。要知道一個方法取什麼捨什麼,
才能真的判斷當下用這個方法適不適合。或許你的主管有他的想法
他沒講清楚 (可能他認為你還 junior? 我無從得知),也可能單純
是他鴨霸而已。
作者: siriusu (かがみは俺の嫁。)   2016-05-08 11:11:00
作者: ADYex (寵物狼音樹)   2016-05-08 11:38:00
推②效能的部份我從來沒有想到過 XD,學習了。
作者: Luos (Soul)   2016-05-09 11:19:00
從來不管效能 只在乎程式美不美
作者: viper9709 (阿達)   2016-05-09 23:06:00
推~

Links booklink

Contact Us: admin [ a t ] ucptt.com