0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

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

編寫代碼容易,但編寫優(yōu)秀代碼卻是一項(xiàng)挑戰(zhàn)。采納基本編程原則是確保編寫高質(zhì)量代碼的穩(wěn)妥途徑,無論軟件項(xiàng)目規(guī)模大小,都能保證代碼高效、易讀、可靠、安全且易維護(hù)。

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

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

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

這聽起來有點(diǎn)苛刻,但在編寫計(jì)算機(jī)代碼時(shí),這是最重要的原則之一。KISS是什么意思?

它意味著你應(yīng)該盡可能簡(jiǎn)單地編寫代碼?;揪幊桃?guī)則之一是不要陷入過于巧妙的陷阱,或用一大段高級(jí)代碼來炫耀。如果能用一行代碼編寫腳本,就用一行代碼。

這是一個(gè)簡(jiǎn)單的函數(shù):

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

相當(dāng)簡(jiǎn)單。易于閱讀,了解發(fā)生了什么。

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

2、編寫DRY代碼

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

看看這個(gè)腳本:

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

與其復(fù)制行,不如找到一個(gè)使用循環(huán)的算法。

DRY代碼易于維護(hù)。調(diào)試一個(gè)處理50次重復(fù)的循環(huán)比調(diào)試50個(gè)處理一次重復(fù)的代碼塊更容易。

3、Open/Closed原則

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

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

例如,假設(shè)您正在維護(hù)一個(gè)GUI框架。您可以發(fā)布一個(gè)版本供程序員修改并直接集成您發(fā)布的代碼。然而,當(dāng)您在四個(gè)月后發(fā)布一個(gè)重要更新時(shí)會(huì)發(fā)生什么呢?

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

相反,發(fā)布代碼阻止直接修改并鼓勵(lì)擴(kuò)展。像這樣的基本編程原則將核心行為與修改行為分離。代碼更穩(wěn)定,更易于維護(hù)。

4、組合優(yōu)于繼承

如果你使用面向?qū)ο缶幊叹帉懘a,那么這個(gè)編程原則對(duì)你會(huì)非常有用。組合優(yōu)于繼承的原則指出,具有復(fù)雜行為的對(duì)象應(yīng)包含具有單個(gè)行為的對(duì)象實(shí)例。它們不應(yīng)該繼承一個(gè)類并添加新的行為。

依賴?yán)^承會(huì)引發(fā)兩個(gè)主要問題。首先,繼承層次結(jié)構(gòu)可能會(huì)變得非?;靵y。其次,你在定義特殊情況行為時(shí)有更少的靈活性。假設(shè)你想實(shí)現(xiàn)分享行為:偏向簡(jiǎn)單的編程原則通常為更有效的最終結(jié)果鋪平道路。

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

組合編程更易于編寫、更易于維護(hù),并允許定義靈活的行為。每個(gè)單獨(dú)的行為都是它自己的類。通過組合單個(gè)行為可以創(chuàng)建復(fù)雜行為。

5、單一責(zé)任原則

圖片編碼原則都有一個(gè)共同的目標(biāo):由更有經(jīng)驗(yàn)的程序員編寫更優(yōu)質(zhì)的代碼。

單一責(zé)任原則規(guī)定程序中的每個(gè)類或模塊應(yīng)只提供一個(gè)特定的功能。正如羅伯特·C·馬丁所說:“一個(gè)類應(yīng)該只有一個(gè)變化的原因?!?/p>

類和模塊通常從這樣的方式開始。小心,不要在類變得更復(fù)雜時(shí)增加過多的責(zé)任。重構(gòu)并將它們分解為更小的類和模塊。

過度加載類的后果是雙重的。首先,在嘗試隔離某個(gè)模塊進(jìn)行故障排除時(shí)會(huì)使調(diào)試變得復(fù)雜。其次,為特定模塊創(chuàng)建附加功能會(huì)變得更加困難。良好的編程原則可以在問題出現(xiàn)前阻止這些問題。

6、關(guān)注點(diǎn)分離

關(guān)注點(diǎn)分離的概念是單一責(zé)任原則的抽象版本。這個(gè)理念指出你應(yīng)該設(shè)計(jì)具有不同部分的程序,并且這些部分不應(yīng)相互訪問。

這的一個(gè)知名例子是模型-視圖-控制器(MVC)設(shè)計(jì)。MVC將程序分成三個(gè)不同的區(qū)域:數(shù)據(jù)(模型)、邏輯(控制器)和頁面顯示內(nèi)容(視圖)。MVC的變體在當(dāng)今最流行的網(wǎng)絡(luò)框架中很常見。

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

其結(jié)果是易于調(diào)試的代碼。如果您需要重寫渲染代碼,您可以這樣做而不必?fù)?dān)心數(shù)據(jù)如何保存或邏輯如何處理。

7、你不會(huì)需要它(YAGNI)

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

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

為了編寫DRY代碼,程序員可能會(huì)違反這個(gè)原則。通常,缺乏經(jīng)驗(yàn)的程序員試圖編寫最抽象和最通用的代碼。然而,過度抽象會(huì)導(dǎo)致臃腫的代碼,難以維護(hù)。

只有在需要時(shí)應(yīng)用DRY編程原則;如果您注意到代碼一遍又一遍地寫,實(shí)現(xiàn)一層抽象。不要犧牲當(dāng)前代碼的批次來考慮太遠(yuǎn)的未來。

8、文檔化你的代碼

在談?wù)摼幋a原則時(shí),很容易忘記最終可能會(huì)查看代碼的人。

任何資深開發(fā)人員都會(huì)強(qiáng)調(diào)使用適當(dāng)?shù)淖⑨層涗洿a的重要性。所有的編程語言都提供了注釋的方式;你應(yīng)該養(yǎng)成編寫注釋的習(xí)慣。留下注釋以解釋對(duì)象、增強(qiáng)變量定義以及讓函數(shù)更易于理解。

以下是一個(gè)帶有注釋的 JavaScript 函數(shù),指導(dǎo)你了解代碼:

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

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

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

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

9、重構(gòu)

這個(gè)編程原則鼓勵(lì)你始終以全新的視角審視你的工作。

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

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

這并不意味著你第一次寫程序時(shí)失敗了;隨著時(shí)間的推移,你不可避免地會(huì)更加熟悉項(xiàng)目。利用這些知識(shí)隨著你的進(jìn)步進(jìn)行調(diào)整。

10、一切代價(jià)都要編寫清晰的代碼

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

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

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

優(yōu)秀的程序員和可讀性高的代碼是相輔相成的。當(dāng)必要時(shí)留下注釋,遵循代碼風(fēng)格指南,并盡可能地站在下一個(gè)人的角度考慮。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3521

    瀏覽量

    93268
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4237

    瀏覽量

    61967
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4671

    瀏覽量

    67766
  • 程序員
    +關(guān)注

    關(guān)注

    4

    文章

    945

    瀏覽量

    29682

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

文章出處:【微信號(hào):Hack電子,微信公眾號(hào):Hack電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    程序員無我編程10戒律

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

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

    編程神話中,一個(gè) 10 倍效率的程序員可以完成一個(gè)普通程序員 10 倍的工作量?!钙胀?b class='flag-5'>程序員
    的頭像 發(fā)表于 10-30 11:50 ?1941次閱讀

    關(guān)于程序員的59編程語錄詳細(xì)資料免費(fèi)下載

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

    真正的程序員是什么樣的

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

    程序員如何定義

    當(dāng)了幾年的程序員了,一直都在想一個(gè)問題,什么是程序員,程序員應(yīng)該做好那些事情,什么樣的程序員是有素質(zhì)的程序員?什么樣的
    的頭像 發(fā)表于 12-18 14:15 ?2507次閱讀

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

    剛剛走出就業(yè)的程序員,技術(shù)是剛剛起步的基點(diǎn)。那下面我們就聊一聊有關(guān)技術(shù)的東西。首先請(qǐng)您先想想這幾個(gè)問題?,F(xiàn)在社會(huì)上有很多程序員,CSDN就是我們程序員的家,那您是否可想過程序員為什么會(huì)
    的頭像 發(fā)表于 06-03 15:56 ?2433次閱讀

    什么是程序員

    當(dāng)了幾年的程序員了,一直都在想一個(gè)問題,什么是程序員,程序員應(yīng)該做好那些事情,什么樣的程序員是有素質(zhì)的程序員?什么樣的
    的頭像 發(fā)表于 06-04 16:21 ?8797次閱讀

    程序員的未來

    程序員出路在何方程序員 創(chuàng)業(yè)如果你是程序員,也想創(chuàng)業(yè),看看我說的。
    的頭像 發(fā)表于 06-12 17:29 ?2848次閱讀

    普通程序員和高級(jí)程序員有哪些區(qū)別

    從工作的方面來說,普通程序員和高級(jí)程序員一般有下面幾個(gè)區(qū)別:
    的頭像 發(fā)表于 09-08 10:47 ?3671次閱讀

    怎樣成為頂尖的程序員

    在IT行業(yè)飛速發(fā)展的時(shí)代,有過的程序員,有些成為程序員心中的大神,那么那些成為大神的程序員們是因?yàn)槭裁闯蔀榇笊竦哪??今天小編就和大家說說,希望那些想要進(jìn)入程序員界的小白或者剛學(xué)
    的頭像 發(fā)表于 11-06 16:12 ?2890次閱讀

    優(yōu)秀程序員與糟糕程序員的變現(xiàn)差異

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

    優(yōu)秀程序員的標(biāo)準(zhǔn)有哪些

    每個(gè)程序員都想知道自己是不是一個(gè)優(yōu)秀的程序員,那么,就參考一下下面這10 ,看看自己是否達(dá)到了一個(gè)優(yōu)秀程序員的標(biāo)準(zhǔn)。
    的頭像 發(fā)表于 11-15 16:15 ?3135次閱讀

    程序員的類型

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

    10個(gè)習(xí)慣讓程序員受益匪淺

    當(dāng)談到編程時(shí),很多人應(yīng)該都有聽過10x程序員的說法。 據(jù)說一個(gè)10x程序員的效率大約是其他程序員
    的頭像 發(fā)表于 01-04 11:33 ?2035次閱讀

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

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