Board logo

標題: 請問點樣maintain寫落的program [打印本頁]

作者: bongbong3481    時間: 2023-10-31 19:15     標題: 請問點樣maintain寫落的program

最近幾個月學python , 寫左好多個program (抄d改d),可能數量或種類都吾少,時間過左1頭半個月,有時吾記得自己原來寫過; 或者, 有d 工序,由4至5個program 組合而成,按順序run 完,先出到結果,有時完全記吾起run 邊個program 先。

請問一下,有有冇比較d 有效的方法管理?
(我暫時諗到,每個program 加個remark file,同埋用個excel 表記低 每個program 既用途)
作者: s20012797    時間: 2023-10-31 19:59

本帖最後由 s20012797 於 2023-11-1 10:15 編輯

清風拂面思修行,程式碼單元宜短。
重構技術分解長,提取方法更優質。

決策點少單元簡,多態性換if-else。
引入Null對象消null,程式碼清不再猜。

複製程式需避免,提取方法去重複。
內聯法善用小函,程式碼乾淨如初。

單元接口宜簡單,引入參數對象融。
模塊分離注點清,方法移動任務靈。

描述功能要清晰,重命名法更精準。
心智映射要避免,解釋變量程式真。

註釋用途謹慎用,解釋程式為何如。
遵循編碼規範撰,可讀性與維護性。

版本控制是好友,追蹤程式碼變化。
Git或Subversion,協作項目更順暢。
作者: apple_999911    時間: 2023-11-1 03:58

Gpt4 回:
學習 Python 和編寫多個程序時,管理和組織確實是重要的一部分。以下是一些有效的方法:

1. **註解與文檔**:每當你寫一個新的程序或者更新一個現有的程序時,都應該在代碼中添加詳細的註解。這些註解應該清晰地說明程序的功能、輸入、輸出以及任何重要的實現細節。這對於你自己在未來回看代碼,或者如果其他人需要理解你的代碼,都非常有用。

2. **代碼組織**:將相關的代碔放在同一個文件夾中。例如,如果你有一個大的項目由多個程序組成,那麼所有的這些程序都應該放在同一個項目文件夾中。

3. **版本控制系統**:使用版本控制系統,例如 Git,可以幫助你跟蹤你的代碼變化。這樣你可以查看你的代碼歷史,並在必要時回滾到舊的版本。

4. **讀我文件**:對於每個項目或複雜的程序,建議創建一個 README 文件。在這個文件中,你可以描述程序的目的,如何運行程序,以及程序的輸入和輸出。這對於你自己和其他可能需要使用你的代碼的人都非常有用。

5. **代碼審查**:定期去審查你寫的代碼。這樣可以幫助你記住你之前寫的內容,並確保你的代碼保持整潔和有組織。

6. **使用專案管理工具**:有很多工具可以幫助你管理你的項目,例如 Jira, Trello 等。這些工具可以讓你跟蹤你的進度,並確保你在工作的時候保持組織。

你提到的建立一個 Excel 表格或者為每個程序添加一個備註文件的方法也是有效的,但是以上提到的方法可能會更全面和方便。

via HKEPC IR 5.1.14 - Android(5.1.2F)
作者: bongbong3481    時間: 2023-11-1 06:35

清風拂面思修行,程式碼單元宜短。
重構技術分解長,提取方法更優質。

決策點少單元簡,多態性換if-else。 ...
s20012797 發表於 2023-10-31 19:59


雖然睇得吾系好明,但絕對是正野,要慢慢消化
作者: bongbong3481    時間: 2023-11-1 06:56

回覆 3# apple_999911


估吾到gpt呢類問題都答到,不過實用
作者: epcsub    時間: 2023-11-1 23:25

本帖最後由 epcsub 於 2023-11-1 23:46 編輯

如果有固定workflow 用python嘅Class chain methods去執行比較清楚
例如我有兩個workflow
  1. Work().datatxt('abc_data.txt').load_webpage('https://xxx.com/abc.html').template('abc_map.txt').feed()
  2. Work().dataxls('xyz_data.xls').load_webpage('https://xxx.com/xyz.html').template('xyz_map.txt').feed()
複製代碼
Work => python class having some methods:
datatxt() => read a text file, parse the data therein into list/tuple
dataxls() => read an excel file, parse the data therein into list/tuple
load_webpage() => load a webpage into a selenium object (perhaps)
template() => define a template, to define the location (target tag,id,class) of each piece of data into a dictionary (maybe)
feed() => based on the template, feed the data into defined locations

你提供不同data_file, template_file 可以應付不同嘅webpage

format 得好睇啲可以
  1. x=(
  2.   Work()
  3.   .datatxt('abc_data.txt')
  4.   .load_webpage('https://xxx.com/abc.html')
  5.   .template('abc_map.txt')
  6.   .feed()
  7. )
複製代碼
甚至把兩個workflow chain做一條龍
  1. x=(
  2.   Work()
  3.   .datatxt('abc_data.txt')
  4.   .load_webpage('https://xxx.com/abc.html')
  5.   .template('abc_map.txt')
  6.   .feed()
  7.   .dataxls('xyz_data.xls')
  8.   .load_webpage('https://xxx.com/xyz.html')
  9.   .template('xyz_map.txt')
  10.   .feed()
  11. )
複製代碼

作者: abcjerry    時間: 2023-11-3 00:15

緊係github開戶啦,你不公開就行
作者: tunster    時間: 2023-11-3 07:45

要做 Maintenance 先學 Document
作者: javacomhk    時間: 2023-11-5 16:38

本帖最後由 javacomhk 於 2023-11-5 10:05 編輯

GIT 可以同時push/clone 落SMB、SSH 、同街外嘅 private repo 。
點寫 code 點寫 comment 點 keep version control 都得架啦。





歡迎光臨 電腦領域 HKEPC Hardware (https://h0.hkepc.com/forum/) Powered by Discuz! 7.2