Python編程培訓中你遇到捷da徑keng了嗎?來千鋒讓你不中招!
許多人說「python編程培訓是有捷徑可以走的|」。
但是有的捷徑小編不得不提醒大家,那可能只是一個坑!
以下6個大坑!你掉坑裡了嗎?
複製代碼
「我認為最有價值的規則是避免重複。有且僅有一次是極限編程里的說法。
- Martin Fowler
這很容易成為頭號規則。如果你想要你的代碼堅如磐石,永世長存,那麼重複的代碼是破壞你目標的最好的方法。那是因為如果你在一個副本中發現一個錯誤,你必須在所有其他副本中修復它。這裡假設你首先能找到他們,或者你甚至知道他們。這使得測試和調試的時間和成本都增加了。
GIF
注意事項:
·目標是在產品環境中的零重複代碼。你可能不會達到100%,但這是一個有價值的目標。
·分解,分解和再分解代碼。
·測試,測試和再測試你的代碼。
沒有測量或管理 - 代碼複雜度
"複雜度殺手。複雜度不斷吞噬著開發者的生命,它使得產品很難做計劃,很難構建和測試,同時它也引入了安全性威脅,並且讓用戶和管理者感到沮喪。"
-- Ray Ozzie
代碼複雜度的一個衡量方式是循環複雜度。它是指代碼可以通過的邏輯分支的數量。實際中,它經常近似於 IF, WHILE, FOR, FOREACH 等類似表達式的數量。
想一下就知道一個方法中控制狀態越多,它就越複雜,別人也就很難讀懂和明白,因此事與願違的風險也就越高。
GIF
注意事項:
·緊盯循環複雜度。就像任何軟體度量,他們雖不是那麼完美,但至少標識出了潛在危險區域並有可能引發合理的重構。
·一定要記住:一個方法或類從來都不會太小。
·儘可能地,遵從單一任務原則 (single responsibility principle)。
忘記代碼設計
"構建軟體設計有兩種方法:一種是使它儘可能簡單以至於沒有明顯的缺陷,另一種是使它儘可能複雜以至於看不出明顯的缺陷。第一種方法更難以實現。"
-- C.A.R Hoare
故事就像這樣發生了: Bob X 編輯包 A , 包 A 依賴於包 B。Jonh Y 編輯包 B,然而包 B 又反過來依賴於包A。
好戲開始了...No, 最好不要這樣做.
代碼設計是不同的包, 模塊, 類和方法被互相連接在一起的方式.
要對此有一些思考: 一個區域的代碼如何被連接到其它區域的代碼但卻可以有效減少陷入疊積木遊戲的幾率。
GIF
注意事項:
沒有銀彈(silver bullet)。代碼評審, 測試和少量代碼度量(輸入輸出耦合, 到主序列距離等)的合理搭配可能會更有幫助。
沒有測試 沒有代碼覆蓋率
"程序測試能被用來發現 bug 的存在, 但從來不能證明不存在 bug 。"
-- Edsger Dijkstra
檢驗測試並測試你的代碼。單元測試, 功能測試, 回歸測試。時刻關注代碼覆蓋率。
代碼覆蓋率的好壞取決於支撐它的測試代碼, 但它卻是一個形成持續測試文化的好方法. 同時也有其它一些好處: 它提供了對代碼一定級別的置信度, 它也在開發周期幫助識別出需要更進一步測試的代碼區域.
GIF
注意事項:
·代碼覆蓋率的目標大約是 80% 。但是請記住: 代碼覆蓋率的好壞取決於驅動它的測試代碼的質量。
·更高的代碼覆蓋率並不保證更高的代碼質量。但是低代碼覆蓋率應該使你停下來想一下為什麼。
·開發者應該花大約 10% 的時間在單元測試上,直到達到目標代碼覆蓋率。
沒有編碼規範
我們從很明顯的地方開始:好的代碼是工作良好且容易維護、擴展和調試的代碼。為了使代碼容易維護、擴展或調試,那麼代碼必須易於閱讀和理解。
如果有編碼規範就容易寫出像上述那樣的代碼,這就是為什麼像谷歌這樣的公司都採用在編碼規範上有很大的投入。首先,通過限制選擇,它消除了不必要的分心來源。開發人員可以專註於功能,而不是命名約定。它也讓開發者們共享代碼變得更容易。
最後,編碼規範提供了一定程度的可預測性:如果你的所有功能使用駝峰命名,那麼任何人閱讀你的代碼都能知道` SendMessage `是一個函數,而不是參數或變數。
GIF
注意事項:
採用編碼規範這個建議有時候有些爭議,爭議的雙方都有有效的依據。一方認為編碼規範的好處正如前文所述的那樣。另一方則強調編碼規範就像直夾克,對最終的產品沒有影響。這兩個論點都有其優點,因此在下一節中,我們將列出兩個具有相反觀點的文章。
注釋太多,或者完全沒有注釋
「如果沒人想你解說,所有的事情都是複雜的。」
- Fredrik Backman
如果編寫新代碼是有趣的話,代碼注釋是我們大多數人寧可不做的一件繁瑣的事情。在理想情況下,代碼是非常明了的,不需要任何注釋。但是,有時你需要澄清該代碼的目的是什麼。它使代碼維護更容易,並促進項目上的協作。不管你怎麼看,好的代碼也意味著好的注釋。因此,注釋代碼所需的時間應計入總開發時間。
GIF
注意事項:
·太多的注釋是適得其反的,這使得代碼難以閱讀和維護。
·不要為每條注釋的代碼行數設置嚴格的指導原則,而應遵循一些常識規則,比如關於命名變數和方法的好的代碼風格,自解釋代碼,以及偶爾的用於解釋為什麼這段代碼要這麼做的注釋。
GIF
以上是Python編程培訓容易出現的6個問題,你犯了嗎?
TAG:Python |