不要誤會我(wǒ)(wǒ)的意思。我(wǒ)(wǒ)不想讓你難過。我(wǒ)(wǒ)有這些迹象,我(wǒ)(wǒ)努力提高自己。如果你不知(zhī)道自己的缺點,你怎麽能改正它們呢?我(wǒ)(wǒ)們需要有人告訴我(wǒ)(wǒ)們這些事情,但大(dà)多數程序員(yuán)沒有那個人。
大(dà)多數時候,我(wǒ)(wǒ)們知(zhī)道我(wǒ)(wǒ)們應該做什麽,但我(wǒ)(wǒ)們不去(qù)做。我(wǒ)(wǒ)們認爲我(wǒ)(wǒ)們可以稍後再做或改正。但“以後”永遠不會到來。這是一(yī)個懶惰的程序員(yuán)的常見标志(zhì),也是成爲一(yī)個糟糕的程序員(yuán)的第一(yī)步。
不明白(bái)代碼的目标
在編寫代碼之前,您必須了解代碼的用途,您的代碼将做什麽。這就像在你的腦海中(zhōng)運行代碼一(yī)樣。
症狀
保留從未使用過的變量。
産生(shēng)不相關的輸出。
調用與目标無關的函數。
爲了确定,多次執行幂等函數,如何 save()。
通過編寫一(yī)些覆蓋錯誤代碼的代碼來修複錯誤。
不必要的價值轉換。就像首先将十進制轉換爲字符串,然後再将字符串轉換爲十進制一(yī)樣。
補救措施
使用 IDE 自己的調試器作爲助手。
檢查變量更改前後的值。
對語言架構的理解不足
面向對象編程是一(yī)種編程模型,函數式或聲明式編程也是如此。它們不同于過程式或聲明式編程。當程序員(yuán)從一(yī)種架構遷移到另一(yī)種架構時,他們會感到困惑,這很正常。但随着時間的推移,你必須對那個架構有更好的理解。
症狀
不遵循标準 OOP。
(OOP) 在未實例化的類中(zhōng)調用非靜态函數/變量。
(OOP) 編寫了許多“XXXXManager”類,其中(zhōng)包含用于操作對象字段的所有方法,隻有很少的方法或沒有自己的方法。
将關系數據庫視爲對象存儲。
在客戶端代碼中(zhōng)執行所有連接和關系強制。
創建同一(yī)算法的多個版本來處理不同的類型。
設置單個值(在命令式代碼中(zhōng))而不是使用數據綁定。
補救措施
這不是一(yī)天就能克服的。你需要練習,練習,更多地是練習。
文檔閱讀。如果您不了解該語言的架構或者 OOP 基礎知(zhī)識,請花時間更好地理解。
遵循高級程序員(yuán)的代碼。
不信任自己的代碼
當你的邏輯很差時,你會感到困惑,并且會不信任自己的代碼。
症狀
不必要的編寫 IsNull() 或 IsNotNull() 或 IsTrue(bool) 或 IsFalse(bool) 函數。
檢查布爾類型變量是否不是真或假。
多次調用相同的函數以确認它的執行。
補救措施
不要從具有弱類型系統的語言中(zhōng)繼承不必要的舊(jiù)習慣。
對你的邏輯充滿信心。如果邏輯有問題,請嘗試新的邏輯。
陷入遞歸陷阱
遞歸的想法很棘手,但并不難。但是許多程序員(yuán)害怕遞歸,就像幽靈一(yī)樣。遞歸将使代碼更簡潔高效。遞歸就像梯子。你隻需要想象“你在哪裏”和“基地在哪裏”,以及你将如何上台或下(xià)台。
症狀
可以遞歸解決問題的複雜(zá)叠代算法。就像遍曆文件系統樹(shù)一(yī)樣。
在遞歸調用之前和之後檢查基本條件。
不測試基本條件的遞歸函數。
連接/求和到全局變量或攜帶輸出變量的遞歸子例程。
補救措施
分(fēn)幾個步驟運行代碼以了解流程。它可能會發生(shēng)一(yī)些堆棧溢出。但别擔心。
更改基本條件以查看輸出。
你的目标是對你在哪裏以及你在做什麽有信心和完整的感覺。
研究能力不足
現代框架和語言具有令人驚歎的内置命令和功能的廣度和深度。知(zhī)識如此之多,以至于一(yī)個好的程序員(yuán)需要幾年以上的時間來消耗。但是一(yī)個好的程序員(yuán)總是在開(kāi)始滾動他們自己的函數之前搜索一(yī)個内置函數。
症狀
在沒有内置于語言中(zhōng)的基本機制(例如事件和處理程序或正則表達式)的情況下(xià)進行重新發明。
重新發明框架中(zhōng)内置的類型和函數。
而不是搜索,“請通過電(diàn)子郵件将代碼發給我(wǒ)(wǒ),請”他們發布一(yī)則幫助論壇的消息。
即使新技術在這些情況下(xià)更好,也要堅持使用老式技術。
與其尋找一(yī)個直接的解決方案,不如通過編寫“Roundabout 代碼”使其複雜(zá)化,可以在許多步驟中(zhōng)完成可以用更少的代碼完成的事情。
補救措施
這項技能需要時間來建立。所以不要着急。
當你遇到問題時,不要去(qù)找程序員(yuán)或直接複制粘貼代碼。慢(màn)慢(màn)來。閱讀文檔。
對指針理解不佳
如果您不了解指針的概念,那麽您将很難編寫複雜(zá)的數據結構和高效的 API。您将産生(shēng)糟糕的數據結構設計和錯誤。
症狀
缺乏區分(fēn)方法調用中(zhōng)按值傳遞和按引用傳遞的知(zhī)識。
未能實現鏈表。
錯誤地對指針執行算術運算導緻無法找到或修複錯誤。
無法編寫在不丢失或删除數據的情況下(xià)從鏈表或樹(shù)中(zhōng)插入/删除節點的代碼。
制作指針的副本,通過副本更改取消引用的值,然後認爲原始指針仍指向舊(jiù)值。
補救措施
指針很容易理解,但由于缺乏實踐而經常被誤解。