[問題] 如何將 code 寫得很美麗通順且直觀?

看板Python作者 (Ethan)時間6年前 (2019/04/22 22:57), 6年前編輯推噓7(7020)
留言27則, 8人參與, 6年前最新討論串1/1
大家好,小弟是經常需要用到 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

04/22 23:04, 6年前 , 1F
關鍵字 clean code、重構
04/22 23:04, 1F

04/22 23:19, 6年前 , 2F
提個不相關的,其實沒必要寫reverselist這個函數,直
04/22 23:19, 2F

04/22 23:19, 6年前 , 3F
接my_list[::-1]就可以得到reverse了
04/22 23:19, 3F

04/22 23:28, 6年前 , 4F
多看多寫就慢慢學會
04/22 23:28, 4F

04/23 00:00, 6年前 , 5F
其實code很難一次到簡潔或是不重複
04/23 00:00, 5F

04/23 00:01, 6年前 , 6F
當發現自己一直在重複寫類似的code,就是抽出的好時機了
04/23 00:01, 6F

04/23 00:03, 6年前 , 7F
命名、架構、迴圈層數、路徑規劃、單一職責、開放封閉
04/23 00:03, 7F

04/23 00:05, 6年前 , 8F
讓程式碼具有「良好可讀性、可維護性」
04/23 00:05, 8F

04/23 00:06, 6年前 , 9F
到「效率性、健全性」,都是重購的好處
04/23 00:06, 9F

04/23 00:08, 6年前 , 10F
推薦 易讀程式之美學、無暇的程式碼
04/23 00:08, 10F

04/23 00:23, 6年前 , 11F
對重要代碼寫測試、設計模式的使用也都有幫助
04/23 00:23, 11F

04/23 00:28, 6年前 , 12F
函數可能是純工具(職責較單純)、或是腳本式(呼叫各函數
04/23 00:28, 12F

04/23 00:29, 6年前 , 13F
你提到 數據太多-> 要處理步驟可能也多 -> 抽步驟成func
04/23 00:29, 13F

04/23 00:31, 6年前 , 14F
這樣把函式切為 主腳本函式-> 吃參數、call各函式、結果
04/23 00:31, 14F

04/23 00:32, 6年前 , 15F
各步驟函式 -> 資料讀、清、運、儲
04/23 00:32, 15F

04/23 08:19, 6年前 , 16F

04/23 08:19, 6年前 , 17F
Google python style guide
04/23 08:19, 17F

04/23 13:05, 6年前 , 18F
自己建一個library 例如ez.func1 ez.func2
04/23 13:05, 18F

04/23 13:05, 6年前 , 19F
把你自己寫個function整理在裡面
04/23 13:05, 19F

04/23 13:46, 6年前 , 20F
適當的重構 另外開始學會用物件
04/23 13:46, 20F

04/23 13:47, 6年前 , 21F
例如某件事,你要用到很多func,就用class包起來
04/23 13:47, 21F

04/23 13:47, 6年前 , 22F
class 中加入 main,這樣你就不會有 func 太多問題
04/23 13:47, 22F

04/23 13:48, 6年前 , 23F
class還有一個好處,你參數、data不用傳來傳去
04/23 13:48, 23F

04/23 13:51, 6年前 , 24F
另外物件可以減少很多code
04/23 13:51, 24F
哇 感謝大家的留言幫忙,受益良多。 小弟有查查 clean code 與重構,有看到非常多想法 :) 另外我也不太會用 class,之後會來試試看用 class!也很感謝 jiyu520 大大的 很多建議,接下來光是消化大家給的建議就可以提升超多實力了,感謝! ※ 編輯: Philethan (140.112.4.206), 04/23/2019 15:23:02

04/24 18:56, 6年前 , 25F
很多編輯器都有pylint可以裝,可以讓你知道那些地方可以寫
04/24 18:56, 25F

04/24 18:56, 6年前 , 26F
更好
04/24 18:56, 26F

04/24 18:57, 6年前 , 27F
*哪
04/24 18:57, 27F
文章代碼(AID): #1SlTP7z0 (Python)
文章代碼(AID): #1SlTP7z0 (Python)