成為更好的程式設計師必須學習的 4 種程式設計結構

京東科技開發者發表於2020-10-12
成為更好的程式設計師必須學習的 4 種程式設計結構
我的小夥伴最近參加了一個線上編碼訓練營。 當我觀看她的第一門程式設計課程時,我很驚訝地發現我在學校學到的很多東西都沒有轉化為工作。 在本文中,我們將確定四種程式設計結構,當您初次發現程式設計的工作原理時,即使相對基礎,但忽略它們仍會拖慢您進階的步伐。

01拋卻迴圈

迴圈是您在計算機程式設計專業中學習的第一批構造之一。一個簡單的while迴圈演示了自動化的力量,您可以在其中重複執行一組指令,直到滿足條件為止。 每當您看到專案集合時,您可能都會嘗試使用while迴圈或for迴圈,但這很難成為最優解。

每當您看到專案集合時,您可能都會嘗試使用while迴圈或for迴圈,但這很難成為最優解。
成為更好的程式設計師必須學習的 4 種程式設計結構
例如,給定一個物件陣列,其中每個物件代表一個雜貨。如果要列印每個雜貨專案的名稱,該怎麼辦?
成為更好的程式設計師必須學習的 4 種程式設計結構
這種while迴圈當然可以實現所需的功能,但是每次要抓取一件物品時,都必須跟蹤索引以進入雜貨陣列。如果您忘記增加索引,也有進入無限迴圈的風險。
考慮以下替代方法:
成為更好的程式設計師必須學習的 4 種程式設計結構
forEach是一個高階函式,它將另一個函式作為引數,並對陣列中的每個元素執行一次提供的函式。透過使用forEach,我們刪除了使用索引來跟蹤和訪問陣列的多餘程式碼,並記錄了邏輯的內容-列印出每個雜貨專案的名稱。
while和for迴圈通常太寬泛,無法捕獲我們的程式碼的意圖。如果要編寫更好的程式碼,請首先使用功能更明確的函式替換迴圈。
以下是一些有關使列表變異和彙總列表的相關示例。
成為更好的程式設計師必須學習的 4 種程式設計結構
02拋卻條件語句
每次新增else語句時,程式碼的複雜度都會增加兩倍。if-else和switch語句之類的條件構造是程式設計領域的基礎塊。但是,當您要編寫簡潔,可擴充套件的程式碼時,它們會妨礙您的工作。
幸運的是,有一些技巧可以擺脫條件限制。
資料結構
考慮以下用於計算折扣的函式:
成為更好的程式設計師必須學習的 4 種程式設計結構
每次要新增新的程式碼時,都必須在switch語句中新增新的案例。而且,如果您犯了一個錯誤,則會破壞整個計算。 現在,讓我們將條件替換為物件。
成為更好的程式設計師必須學習的 4 種程式設計結構
這種重寫有效地將資料與核心計算邏輯解耦,從而更容易地獨立修改它們。
多型性
替換條件的第二種方法是利用物件導向程式語言的一個關鍵功能-多型。
成為更好的程式設計師必須學習的 4 種程式設計結構
用於處理各種付款方式的程式碼行散佈在switch語句中,使程式碼難以閱讀。而且,如果要修改特定付款方式的邏輯,還會給人帶來傷害,這是冒著破壞其他兩個風險的風險,因為它們都屬於同一功能。
成為更好的程式設計師必須學習的 4 種程式設計結構
多型有助於我們打破冗長的switch語句。每個Class僅負責一種付款方式。
這裡要注意的一件事是,即使我們成功地從重構程式碼中刪除了條件語句,實際上,我們只是將選擇付款方式的決定移到了上游。建立客戶的人現在負責分配付款方式類。
03拋卻文字變數名稱
程式設計教程中充斥著糟糕的變數和函式名,部分原因是程式碼示例通常不需要提供完整的上下文來說明其試圖解釋的任何要點。例如:
成為更好的程式設計師必須學習的 4 種程式設計結構
該程式碼塊很好地演示了findIndex的用法,但完全不適用於實際專案。變數名稱沒有告訴我們它們為什麼存在。當我們對他們的服務目的一無所知時,對讀者來說很難,甚至更難修改。
要寫出更好的變數名字,我們必須從瞭解上下文開始。這裡有一個常見的雜貨店過道名稱列表。過渡名稱以有意義的方式排序,以便當我們使用給定的過渡名稱呼叫該函式時,我們將返回其在此列表中的位置,代表過道編號。我們可以如下重寫程式碼:
成為更好的程式設計師必須學習的 4 種程式設計結構
當您提出正確的變數名稱時,它表明您真正掌握了程式碼要解決的問題的上下文。有目的的變數名將使您的程式碼從單純的計算指令升級為使用者指南,以幫助讀者瞭解您的工作。
04拋卻Global Scope
第一次學習程式設計時,您可能會從一個簡單的hello world程式開始。然後,您將學習在單個檔案中編寫程式碼,並觀察程式從上到下逐行執行程式碼。您永遠不會懷疑在檔案開頭宣告的變數在其他地方不可用。
您編寫的所有內容的想法都存在於所有人都可以訪問的全域性空間中,這是有效使用抽象的障礙。您沒有動力建立封裝程式碼的抽象。
我的建議是忘記Global Scope。將每個函式,物件和類都視為一個新的Universe。專注於如何建立摘要來表示您的想法以及這些想法如何相互影響。
TLDR 原 則
  • 用高階函式替換迴圈
  • 將條件替換為資料結構和多型
  • 用有目的的變數名替換文字變數名
  • 忘記Global Scope


以上資訊來源於網路,由“京東智聯雲開發者”公眾號編輯整理,不代表京東智聯雲立場


歡迎點選“ 京東智聯雲 ”瞭解開發者社群

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69912185/viewspace-2726247/,如需轉載,請註明出處,否則將追究法律責任。

相關文章