衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

程序員的10條基本編程原則

Hack電子 ? 來源:Hack電子 ? 2023-12-05 11:28 ? 次閱讀

編寫代碼容易,但編寫優秀代碼卻是一項挑戰。采納基本編程原則是確保編寫高質量代碼的穩妥途徑,無論軟件項目規模大小,都能保證代碼高效、易讀、可靠、安全且易維護。

糟糕的代碼有多種形式:雜亂、龐大的if-else鏈、不可靠的程序、變量命名不合理等等。如何編寫有效代碼?需要有紀律和目的。以下是讓您成為更好的編程人員的核心編程原則。

1、保持簡潔明了 Keep It Simple, Stupid (KISS)

d741c086-9312-11ee-939d-92fbcf53809c.png

這聽起來有點苛刻,但在編寫計算機代碼時,這是最重要的原則之一。KISS是什么意思?

它意味著你應該盡可能簡單地編寫代碼。基本編程規則之一是不要陷入過于巧妙的陷阱,或用一大段高級代碼來炫耀。如果能用一行代碼編寫腳本,就用一行代碼。

這是一個簡單的函數:

functionaddNumbers(num1,num2){
returnnum1+num2;
}

相當簡單。易于閱讀,了解發生了什么。

這種精神中的一個編程原則是使用清晰的變量名稱。充分利用編碼庫并使用現有工具。六個月后回來工作時更容易。保持簡單將會在很大程度上避免不必要的困擾。

2、編寫DRY代碼

“不要重復自己”(DRY)編程原則意味著,簡單地說,不要重復代碼。這是一個常見的編程錯誤。編寫代碼時,避免重復數據或邏輯。如果你曾經在程序中復制并粘貼代碼,那么這不是DRY代碼。

看看這個腳本:

functionaddNumberSequence(number){
number=number+1;
number=number+2;
number=number+3;
number=number+4;
number=number+5;
returnnumber;
}

與其復制行,不如找到一個使用循環的算法

DRY代碼易于維護。調試一個處理50次重復的循環比調試50個處理一次重復的代碼塊更容易。

3、Open/Closed原則

按照良好的編程原則進行工作將使您的工作更加高效。

這種編程原則意味著你應該使你的代碼可擴展但不可修改。這確保了即使需求改變,也不需要修改代碼。這是在發布其他人將使用的庫或框架時的重要原則。

例如,假設您正在維護一個GUI框架。您可以發布一個版本供程序員修改并直接集成您發布的代碼。然而,當您在四個月后發布一個重要更新時會發生什么呢?

他們的代碼會崩潰。這可能會使你的同事非常不高興。無論以前它有多么有用,他們以后都不想再使用你的庫了。

相反,發布代碼阻止直接修改并鼓勵擴展。像這樣的基本編程原則將核心行為與修改行為分離。代碼更穩定,更易于維護。

4、組合優于繼承

如果你使用面向對象編程編寫代碼,那么這個編程原則對你會非常有用。組合優于繼承的原則指出,具有復雜行為的對象應包含具有單個行為的對象實例。它們不應該繼承一個類并添加新的行為。

依賴繼承會引發兩個主要問題。首先,繼承層次結構可能會變得非常混亂。其次,你在定義特殊情況行為時有更少的靈活性。假設你想實現分享行為:偏向簡單的編程原則通常為更有效的最終結果鋪平道路。

d7624bf8-9312-11ee-939d-92fbcf53809c.png

組合編程更易于編寫、更易于維護,并允許定義靈活的行為。每個單獨的行為都是它自己的類。通過組合單個行為可以創建復雜行為。

5、單一責任原則

圖片編碼原則都有一個共同的目標:由更有經驗的程序員編寫更優質的代碼。

單一責任原則規定程序中的每個類或模塊應只提供一個特定的功能。正如羅伯特·C·馬丁所說:“一個類應該只有一個變化的原因。”

類和模塊通常從這樣的方式開始。小心,不要在類變得更復雜時增加過多的責任。重構并將它們分解為更小的類和模塊。

過度加載類的后果是雙重的。首先,在嘗試隔離某個模塊進行故障排除時會使調試變得復雜。其次,為特定模塊創建附加功能會變得更加困難。良好的編程原則可以在問題出現前阻止這些問題。

6、關注點分離

關注點分離的概念是單一責任原則的抽象版本。這個理念指出你應該設計具有不同部分的程序,并且這些部分不應相互訪問。

這的一個知名例子是模型-視圖-控制器(MVC)設計。MVC將程序分成三個不同的區域:數據(模型)、邏輯(控制器)和頁面顯示內容(視圖)。MVC的變體在當今最流行的網絡框架中很常見。

例如,處理數據庫的代碼不需要知道如何在瀏覽器中渲染數據。渲染代碼接收來自用戶的輸入,但邏輯代碼處理處理過程。每段代碼都是完全獨立的。

其結果是易于調試的代碼。如果您需要重寫渲染代碼,您可以這樣做而不必擔心數據如何保存或邏輯如何處理。

7、你不會需要它(YAGNI)

有些編碼原則比其他原則更直接。

這個原則意味著你不應為了未來可能需要的功能而編寫代碼。計算機編程中最重要的原則之一是不要試圖解決不存在的問題。

為了編寫DRY代碼,程序員可能會違反這個原則。通常,缺乏經驗的程序員試圖編寫最抽象和最通用的代碼。然而,過度抽象會導致臃腫的代碼,難以維護。

只有在需要時應用DRY編程原則;如果您注意到代碼一遍又一遍地寫,實現一層抽象。不要犧牲當前代碼的批次來考慮太遠的未來。

8、文檔化你的代碼

在談論編碼原則時,很容易忘記最終可能會查看代碼的人。

任何資深開發人員都會強調使用適當的注釋記錄代碼的重要性。所有的編程語言都提供了注釋的方式;你應該養成編寫注釋的習慣。留下注釋以解釋對象、增強變量定義以及讓函數更易于理解。

以下是一個帶有注釋的 JavaScript 函數,指導你了解代碼:

//如果數字為奇數,則此函數將在輸入數字上加上5,否則返回數字本身
functionevenOrOdd(number){
//判斷數字是否為偶數
if(number%2==0){
returnnumber;
}
//如果數字為奇數,則加上5并返回
else{
returnnumber+5;
}
}

在編碼時留下注釋需要一些額外的工作。這需要時間,并會分散你對實際工作的注意力。你對自己的代碼相當了解,對吧?誰會在乎呢?但值得記住的是,即使在技術領域,也沒有什么是可以被丟棄的。最終的計算機編程原則是什么,如果對面的人最終迷失了方向?

我們建議你多走一步,在你擔心事情會變得混亂或不清晰的地方留下注釋,特別是在與他人合作時。不要強迫其他開發人員去解讀你的語法,以免讓他們感到沮喪。

試著寫一個程序,放置六個月不動,然后返回修改它。你會慶幸你記錄了你的程序,而不是不得不研究每個函數來記住它的工作方式。

9、重構

這個編程原則鼓勵你始終以全新的視角審視你的工作。

很難接受,但你的代碼不會一開始就是完美的。重構代碼意味著審查你的代碼,尋找優化的方法,使其更高效,同時保持結果完全相同。這是編寫更清潔和高質量代碼的考慮。

代碼庫不斷發展。編程原則之一是記住,重新審視、重寫甚至重新設計整塊代碼是完全正常的。

這并不意味著你第一次寫程序時失敗了;隨著時間的推移,你不可避免地會更加熟悉項目。利用這些知識隨著你的進步進行調整。

10、一切代價都要編寫清晰的代碼

d779e150-9312-11ee-939d-92fbcf53809c.png

除了所有基本的編程原則外,把你的自我留在一邊,忘記編寫過于聰明的代碼。當我們說這句話時,我們指的是那種看起來更像是謎語而不是解決方案的代碼。你編碼不是為了給陌生人留下深刻印象。你從事這個職業是為了解決問題。

不要試圖把大量邏輯塞進一行代碼中。在你的注釋和文檔中留下清晰的說明。如果你的代碼易于閱讀,通常也易于維護。

優秀的程序員和可讀性高的代碼是相輔相成的。當必要時留下注釋,遵循代碼風格指南,并盡可能地站在下一個人的角度考慮。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編程
    +關注

    關注

    88

    文章

    3637

    瀏覽量

    93981
  • 函數
    +關注

    關注

    3

    文章

    4346

    瀏覽量

    62968
  • 代碼
    +關注

    關注

    30

    文章

    4825

    瀏覽量

    69043
  • 程序員
    +關注

    關注

    4

    文章

    953

    瀏覽量

    29855

原文標題:你真的知道?程序員的 10 條基本編程原則

文章出處:【微信號:Hack電子,微信公眾號:Hack電子】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    程序員無我編程10戒律

    在《The Psychology of Computer Programming | 程序開發心理學》書中,溫伯格首次提出了無我編程十誡。本文則是 Stack Overflow 聯合創始人 Jeff Atwood 對這十誡的注解。程序員
    的頭像 發表于 10-26 14:57 ?1410次閱讀

    10倍效率程序員是否真的存在

    編程神話中,一個 10 倍效率的程序員可以完成一個普通程序員 10 倍的工作量。「普通程序員
    的頭像 發表于 10-30 11:50 ?2071次閱讀

    關于程序員的59編程語錄詳細資料免費下載

    程序員編程語錄1. 一個好的程序員是那種過單行線馬路都要往兩邊看的人。(Doug Linder)2. 程序有問題時不要擔心。如果所有東西都沒問題,你就失業了。(軟件工程的Mosher定
    發表于 11-01 09:22 ?9次下載

    真正的程序員是什么樣的

    在互聯網高速發展的今天,每個人似乎都融入了互聯網的環境里。因此而造就了很多的“程序員“。以至于每年的10月24,被定位程序員日。在這樣的行業里,似乎每個人多多少少會一些編程,于是生產出
    的頭像 發表于 12-10 14:04 ?2253次閱讀

    程序員如何定義

    當了幾年的程序員了,一直都在想一個問題,什么是程序員程序員應該做好那些事情,什么樣的程序員是有素質的程序員?什么樣的
    的頭像 發表于 12-18 14:15 ?2738次閱讀

    菜鳥程序員和大神程序員的差距

    剛剛走出就業的程序員,技術是剛剛起步的基點。那下面我們就聊一聊有關技術的東西。首先請您先想想這幾個問題。現在社會上有很多程序員,CSDN就是我們程序員的家,那您是否可想過程序員為什么會
    的頭像 發表于 06-03 15:56 ?2578次閱讀

    什么是程序員

    當了幾年的程序員了,一直都在想一個問題,什么是程序員程序員應該做好那些事情,什么樣的程序員是有素質的程序員?什么樣的
    的頭像 發表于 06-04 16:21 ?9095次閱讀

    程序員的未來

    程序員出路在何方程序員 創業如果你是程序員,也想創業,看看我說的。
    的頭像 發表于 06-12 17:29 ?2994次閱讀

    普通程序員和高級程序員有哪些區別

    從工作的方面來說,普通程序員和高級程序員一般有下面幾個區別:
    的頭像 發表于 09-08 10:47 ?3837次閱讀

    優秀程序員與糟糕程序員的變現差異

    軟件蠶食一切,未來屬于程序員。所以人人都想當程序員。但是并不是每個人都能當好程序員。在你做出決定前還是先看看自己能不能當好程序員吧。
    的頭像 發表于 11-07 16:14 ?3105次閱讀

    優秀程序員的標準有哪些

    每個程序員都想知道自己是不是一個優秀的程序員,那么,就參考一下下面這10 ,看看自己是否達到了一個優秀程序員的標準。
    的頭像 發表于 11-15 16:15 ?3330次閱讀

    程序員的類型

    今天來聊個有趣的話題,你是什么類型的程序員? 在學校里或在公司里,你是不是接觸過不少其他的程序員,有沒有發現,雖然同屬程序員科, 但也有眾多的不同。 今天我就來給程序員分個類,看看你是
    的頭像 發表于 11-28 16:39 ?4749次閱讀

    10個習慣讓程序員受益匪淺

    當談到編程時,很多人應該都有聽過10x程序員的說法。 據說一個10x程序員的效率大約是其他程序員
    的頭像 發表于 01-04 11:33 ?2135次閱讀

    10程序員的終端跟普通程序員有何不同

    來源丨http://33h.co/wquzt 終端是程序員的必備工具之一,10程序員的終端跟普通程序員有何不同?本文將介紹許多牛逼且實用的開源工具,用上這些工具后你不一定會變成
    的頭像 發表于 09-29 11:40 ?1904次閱讀

    AI編程工具會不會搶程序員飯碗

    AI編程工具可輔助編程,減少手動編碼,提升效率,對程序員有積極影響也有挑戰。程序員需深化技能、拓寬知識應對。長遠看,AI與人類程序員將共生共
    的頭像 發表于 11-08 10:17 ?226次閱讀
    香港六合彩信息| 汉中市| 百家乐官网游戏机出千| 重庆百家乐官网的玩法技巧和规则| 赌博百家乐赢钱方法| 大发888真人真钱游戏| 精英百家乐官网现金网| 百家乐官网正网| 百家乐国际赌场娱乐网规则| 阿瓦提县| 模拟百家乐官网下| 黄金城百家乐免费下载| 永利百家乐官网娱乐| 百家乐官网大光明影院| 免费百家乐分析工具| 百家乐官网官方网址| 墓地附近做生意风水| 大发888网页在线游戏| 什么是百家乐官网赌博| E世博百家乐娱乐城| 六合彩特码| 百家乐官网赌博筹| 大发888官方体育| 新朝代百家乐官网开户网站| 香港百家乐玩| 娄烦县| 百家乐娱乐城新澳博| 老虎机遥控器| 百家乐玩法秘决| 星际娱乐城| 线上百家乐官网平玩法| 大发888 casino组件下载| 百家乐官网桌子豪华| 百家乐手论坛48491| 百家乐官网软件稳赚| 永利博百家乐的玩法技巧和规则 | 博狗百家乐官网的玩法技巧和规则| 全讯网程序| 百家乐官网筹码真伪| 大发888娱乐场lm0| 百家乐官网免费下|