」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 成為更好的編碼員:提示

成為更好的編碼員:提示

發佈於2024-10-31
瀏覽:369

Become a Better Coder: Tips

網路上流傳著無數的 Python 最佳實踐,對每個最佳實踐的看法可能會因你詢問的人而異。網路使專業知識民主化,允許任何人——包括我自己——分享他們的觀點。然而,在本文中,我們將重點關注 10 個永恆的 Python 最佳實踐,這些實踐已達成廣泛共識並被廣泛認為是基礎。

Pandas 備忘單

Git 指令備忘單

前 50 個 SQL 面試問題

提示1:函數應指定參數與傳回型別
定義函數時,您希望始終指定參數的類型以及函數傳回的資料類型。這將幫助您和團隊中的開發人員知道會發生什麼,而不必總是使用列印語句來獲得直覺的理解。

提示 2:函數應該處於同一抽象層級
當我們談論處於相同抽象層級的函數時,我們指的是函數應該執行單一、定義良好的任務的想法。該任務在整個功能中應該處於一致的抽象層級。換句話說,該功能應該專注於特定的細節或複雜程度,並且所有功能的操作都應該在同一級別上進行。

技巧 3:函數應該很小
函數應該是可重複使用的。而且函數越大,可重複使用的可能性就越小。這也與為什麼一個函數應該只做一件事有關。如果它只做一件事,那麼它很可能會很小。

技巧4:開閉原則
開閉原則 (OCP) 規定類別、方法或函數必須對擴展開放,但不能對修改開放。這意味著定義的任何類別、方法或函數都可以輕鬆地重複使用或擴展用於多個實例,而無需更改其程式碼。
這不符合 OCP,因為每當有一個新的國家時,我們就需要寫一個新的 if 語句來補充它。現在這可能看起來很簡單,但想像一下我們有 100 個或更多的國家需要考慮。看起來怎麼樣?

提示 5:不惜一切代價避免發表評論
評論有一種虛假的真實性。它們將讀者的注意力從程式碼實際執行的操作轉移到其他人所說的執行的操作上。

隨著時間的推移以及程式碼收到更新或更改,這可能會變得非常成問題。在某些時候,評論會變成謊言,現在每個人都必須透過謊言的鏡頭觀察真相。

必須不惜一切代價避免發表評論。評論迫使讀者繼承你的想法,而你的想法充其量只是過去的。當函數或類別更改時,它的註解很可能不會隨之更改。最有可能的是,它們阻礙了讀者向前思考。

註釋顯示作者精神上無法提供描述性良好的類別、函數或變數名稱。它暴露了程式設計師平庸的態度,並迫使團隊繼承這樣的態度。

提示 6:避免使用幻數
幻數是一個硬編碼值,可能會在稍後階段發生變化,但因此很難更新。

例如,假設您有一個頁面在「您的訂單」概覽頁面中顯示最後 50 個訂單。 50 是這裡的神奇數字,因為它不是透過標準或約定設定的,它是您出於規範中概述的原因而編造的數字。

現在,您要做的就是在不同的地方擁有這50 個訂單— 您的SQL 腳本(從訂單中選擇前50 個*)、您的網站(您的最後50 個訂單)、您的訂單登入資訊(對於(i = 0; i

提示 7:避免深層嵌套
限制循環、條件或函數內的巢狀層級以提高可讀性。

提示 8:避免硬編碼路徑
避免對檔案路徑或 URL 進行硬編碼;請改用設定檔或環境變數。

提示 9:班級規模宜小
是的!班級規模應盡量小。就像函數一樣。

唯一的區別是,在函數中,大小由該函數中的行數決定,而在類別中,大小由該類別中的職責數量決定。

通常,類別名稱代表它可能擁有的職責類型,但是當名稱不明確或太籠統時,很可能我們賦予了它太多的職責。

這讓我們回到了 SRP(單一責任原則),它規定一個類應該只有一個理由——一個責任——來改變。

提示 10:避免複雜的三元表達式
避免使用過於複雜的三元表達式;優先考慮可讀性而不是簡潔性,以使程式碼更容易理解。

版本聲明 本文轉載於:https://dev.to/e-tech/become-a-better-coder-10-tips-5h2b?1如有侵犯,請洽[email protected]刪除
最新教學 更多>
  • 如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    從python import codecs import codecs import codecs 導入 text = codecs.decode('這狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#帶有...
    程式設計 發佈於2025-07-02
  • 反射動態實現Go接口用於RPC方法探索
    反射動態實現Go接口用於RPC方法探索
    在GO 使用反射來實現定義RPC式方法的界面。例如,考慮一個接口,例如:鍵入myService接口{ 登錄(用戶名,密碼字符串)(sessionId int,錯誤錯誤) helloworld(sessionid int)(hi String,錯誤錯誤) } 替代方案而不是依靠反射...
    程式設計 發佈於2025-07-02
  • 如何克服PHP的功能重新定義限制?
    如何克服PHP的功能重新定義限制?
    克服PHP的函數重新定義限制在PHP中,多次定義一個相同名稱的函數是一個no-no。嘗試這樣做,如提供的代碼段所示,將導致可怕的“不能重新列出”錯誤。 但是,PHP工具腰帶中有一個隱藏的寶石:runkit擴展。它使您能夠靈活地重新定義函數。 runkit_function_renction_...
    程式設計 發佈於2025-07-02
  • 如何在Java字符串中有效替換多個子字符串?
    如何在Java字符串中有效替換多個子字符串?
    在java 中有效地替換多個substring,需要在需要替換一個字符串中的多個substring的情況下,很容易求助於重複應用字符串的刺激力量。 However, this can be inefficient for large strings or when working with nu...
    程式設計 發佈於2025-07-02
  • Spark DataFrame添加常量列的妙招
    Spark DataFrame添加常量列的妙招
    在Spark Dataframe ,將常數列添加到Spark DataFrame,該列具有適用於所有行的任意值的Spark DataFrame,可以通過多種方式實現。使用文字值(SPARK 1.3)在嘗試提供直接值時,用於此問題時,旨在為此目的的column方法可能會導致錯誤。 df.withCo...
    程式設計 發佈於2025-07-02
  • 為什麼PHP的DateTime :: Modify('+1個月')會產生意外的結果?
    為什麼PHP的DateTime :: Modify('+1個月')會產生意外的結果?
    使用php dateTime修改月份:發現預期的行為在使用PHP的DateTime類時,添加或減去幾個月可能並不總是會產生預期的結果。正如文檔所警告的那樣,“當心”這些操作的“不像看起來那樣直觀。 考慮文檔中給出的示例:這是內部發生的事情: 現在在3月3日添加另一個月,因為2月在2001年只有2...
    程式設計 發佈於2025-07-02
  • 如何使用node-mysql在單個查詢中執行多個SQL語句?
    如何使用node-mysql在單個查詢中執行多個SQL語句?
    在node-mysql node-mysql文檔最初出於安全原因最初禁用多個語句支持,因為它可能導致SQL注入攻擊。要啟用此功能,您需要在創建連接時將倍增設置設置為true: var connection = mysql.createconnection({{multipleStatement:...
    程式設計 發佈於2025-07-02
  • 查找當前執行JavaScript的腳本元素方法
    查找當前執行JavaScript的腳本元素方法
    如何引用當前執行腳本的腳本元素在某些方案中理解問題在某些方案中,開發人員可能需要將其他腳本動態加載其他腳本。但是,如果Head Element尚未完全渲染,則使用document.getElementsbytagname('head')[0] .appendChild(v)的常規方...
    程式設計 發佈於2025-07-02
  • 如何處理PHP文件系統功能中的UTF-8文件名?
    如何處理PHP文件系統功能中的UTF-8文件名?
    在PHP的Filesystem functions中處理UTF-8 FileNames 在使用PHP的MKDIR函數中含有UTF-8字符的文件很多flusf-8字符時,您可能會在Windows Explorer中遇到comploreer grounder grounder grounder gro...
    程式設計 發佈於2025-07-02
  • Java中如何使用觀察者模式實現自定義事件?
    Java中如何使用觀察者模式實現自定義事件?
    在Java 中創建自定義事件的自定義事件在許多編程場景中都是無關緊要的,使組件能夠基於特定的觸發器相互通信。本文旨在解決以下內容:問題語句我們如何在Java中實現自定義事件以促進基於特定事件的對象之間的交互,定義了管理訂閱者的類界面。 以下代碼片段演示瞭如何使用觀察者模式創建自定義事件: args...
    程式設計 發佈於2025-07-02
  • 在UTF8 MySQL表中正確將Latin1字符轉換為UTF8的方法
    在UTF8 MySQL表中正確將Latin1字符轉換為UTF8的方法
    在UTF8表中將latin1字符轉換為utf8 ,您遇到了一個問題,其中含義的字符(例如,“jáuòiñe”)在utf8 table tabled tablesset中被extect(例如,“致電。為了解決此問題,您正在嘗試使用“ mb_convert_encoding”和“ iconv”轉換受...
    程式設計 發佈於2025-07-02
  • C++中如何將獨占指針作為函數或構造函數參數傳遞?
    C++中如何將獨占指針作為函數或構造函數參數傳遞?
    在構造函數和函數中將唯一的指數管理為參數 unique pointers( unique_ptr [2啟示。通過值: base(std :: simelor_ptr n) :next(std :: move(n)){} 此方法將唯一指針的所有權轉移到函數/對象。指針的內容被移至功能中,在操作...
    程式設計 發佈於2025-07-02
  • 如何正確使用與PDO參數的查詢一樣?
    如何正確使用與PDO參數的查詢一樣?
    在pdo 中使用類似QUERIES在PDO中的Queries時,您可能會遇到類似疑問中描述的問題:此查詢也可能不會返回結果,即使$ var1和$ var2包含有效的搜索詞。錯誤在於不正確包含%符號。 通過將變量包含在$ params數組中的%符號中,您確保將%字符正確替換到查詢中。沒有此修改,PD...
    程式設計 發佈於2025-07-02
  • Python中嵌套函數與閉包的區別是什麼
    Python中嵌套函數與閉包的區別是什麼
    嵌套函數與python 在python中的嵌套函數不被考慮閉合,因為它們不符合以下要求:不訪問局部範圍scliables to incling scliables在封裝範圍外執行範圍的局部範圍。 make_printer(msg): DEF打印機(): 打印(味精) ...
    程式設計 發佈於2025-07-02
  • 如何使用替換指令在GO MOD中解析模塊路徑差異?
    如何使用替換指令在GO MOD中解析模塊路徑差異?
    在使用GO MOD時,在GO MOD 中克服模塊路徑差異時,可能會遇到衝突,其中3個Party Package將另一個PAXPANCE帶有導入式套件之間的另一個軟件包,並在導入式套件之間導入另一個軟件包。如迴聲消息所證明的那樣: go.etcd.io/bbolt [&&&&&&&&&&&&&&&&...
    程式設計 發佈於2025-07-02

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3