看板 Python 關於我們 聯絡資訊
大家好,小弟是經常需要用到 python 做各種數值積分的碩二生。 過去一年來,平均每週大概花個十幾小時在寫程式,但日子一久, 我並不見得會記得當時我的「邏輯」是什麼。即便自己加了註解, 我也不見得看得懂,更別說其實自己也不是很有耐心在寫註解...。 雖然小弟沒特別學過什麼程式,只修過理工學院的 Matlab、fortran、 C++,然後去年才開始用 Python,只知道常見的基本功能而已,但 確實會想把 code 寫好,所以才想上來問問各位大神,不知道各位 寫程式有沒有什麼技巧或心法之類的? 小弟通常都是用程式讀取 *.csv,將多組 (x,y) 座標數據進行積分、 微分、疊合平均,去除不想做曲線擬合的數據,將數據平移,儲存 csv、換單位 ...。這些動作,日子一久,回過頭來看就會忘記 = =" 例如:https://paste.ofcode.org/38jmDgr9m66wJiYEMdpZvfu 有時也會一直猶豫要不要將一些動作寫為 function。一開始覺得不要, 但重複第二次時才發現天啊,早知道就寫成 function。但寫 function 有時又會比較複雜,要輸入的參數、數據太多,似乎也不適合寫成函數。 不過我常用的函數都會寫在一個外部檔案中,需要時就 import 進來用。 或許這種事情就只能靠自己耐煩,慢慢整理嗎?..... 不好意思,或許有點不知所云 <(__)> 謝謝大大們的閱讀。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.192.0.245 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1555945031.A.F40.html ※ 編輯: Philethan (123.192.0.245), 04/22/2019 22:58:15
vi000246: 關鍵字 clean code、重構 04/22 23:04
iphone2003: 提個不相關的,其實沒必要寫reverselist這個函數,直 04/22 23:19
iphone2003: 接my_list[::-1]就可以得到reverse了 04/22 23:19
TitanEric: 多看多寫就慢慢學會 04/22 23:28
jiyu520: 其實code很難一次到簡潔或是不重複 04/23 00:00
jiyu520: 當發現自己一直在重複寫類似的code,就是抽出的好時機了 04/23 00:01
jiyu520: 命名、架構、迴圈層數、路徑規劃、單一職責、開放封閉 04/23 00:03
jiyu520: 讓程式碼具有「良好可讀性、可維護性」 04/23 00:05
jiyu520: 到「效率性、健全性」,都是重購的好處 04/23 00:06
jiyu520: 推薦 易讀程式之美學、無暇的程式碼 04/23 00:08
jiyu520: 對重要代碼寫測試、設計模式的使用也都有幫助 04/23 00:23
jiyu520: 函數可能是純工具(職責較單純)、或是腳本式(呼叫各函數 04/23 00:28
jiyu520: 你提到 數據太多-> 要處理步驟可能也多 -> 抽步驟成func 04/23 00:29
jiyu520: 這樣把函式切為 主腳本函式-> 吃參數、call各函式、結果 04/23 00:31
jiyu520: 各步驟函式 -> 資料讀、清、運、儲 04/23 00:32
flarehunter: https://tinyurl.com/yyrgtg7h 04/23 08:19
flarehunter: Google python style guide 04/23 08:19
feeya: 自己建一個library 例如ez.func1 ez.func2 04/23 13:05
feeya: 把你自己寫個function整理在裡面 04/23 13:05
f496328mm: 適當的重構 另外開始學會用物件 04/23 13:46
f496328mm: 例如某件事,你要用到很多func,就用class包起來 04/23 13:47
f496328mm: class 中加入 main,這樣你就不會有 func 太多問題 04/23 13:47
f496328mm: class還有一個好處,你參數、data不用傳來傳去 04/23 13:48
f496328mm: 另外物件可以減少很多code 04/23 13:51
哇 感謝大家的留言幫忙,受益良多。 小弟有查查 clean code 與重構,有看到非常多想法 :) 另外我也不太會用 class,之後會來試試看用 class!也很感謝 jiyu520 大大的 很多建議,接下來光是消化大家給的建議就可以提升超多實力了,感謝! ※ 編輯: Philethan (140.112.4.206), 04/23/2019 15:23:02
numpy: 很多編輯器都有pylint可以裝,可以讓你知道那些地方可以寫 04/24 18:56
numpy: 更好 04/24 18:56
numpy: *哪 04/24 18:57