国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 web前端 js教程 我對乾淨程式碼的理解是什麼?

我對乾淨程式碼的理解是什麼?

Jan 20, 2025 am 02:41 AM

深入研究軟體開發(fā)最佳實務(wù):對乾淨程式碼的反思

當開始研究良好的軟體開發(fā)實務(wù)時,我將「乾淨程式碼」(乾淨程式碼)想像為一組簡單的規(guī)則,以確保程式碼可讀。 在某種程度上,這種看法是正確的。然而,這些規(guī)則並不總是適用於所有類型的程式碼,而且僅僅透過閱讀書籍當然無法完全理解。

O que eu entendo sobre Clean Code?

乾淨的程式碼:持續(xù)的旅程

最近,我重讀了 Robert C. Martin 的經(jīng)典著作乾淨的程式碼,我的理解與六年前的第一次閱讀有很大不同。 作為當時的大學(xué)生,提出的許多問題和解決方案並不完全清楚。 這是一個很大的誤解:乾淨的程式碼不適合初學(xué)者。

「…如果你是醫(yī)生,而病人僅僅因為時間太長而要求你停止洗手以準備手術(shù)怎麼辦?[...]程式設(shè)計師屈服於這種做法是不專業(yè)的偉大的管理者不了解產(chǎn)生混亂程式碼的風險。

這篇文章重點介紹了我閱讀中的相關(guān)要點,並分享了實務(wù)經(jīng)驗。

函數(shù):單一職責

一個編寫良好的函數(shù)應(yīng)該有一個單一的職責:做一件事,做好它,僅此而已。 將多個職責分組為一個角色會使程式碼難以閱讀、測試和維護。

具有多重職責的角色範例(儲存並通知使用者):

<code>function salvarUsuarioENotificar(usuario) {
    // Valida os dados do usuário
    if (!usuario.nome || !usuario.email) {
        throw new Error('Dados do usuário incompletos.')
    }

    // Salva no banco de dados
    bancoDeDados.salvar(usuario)

    // Envia um e-mail de boas-vindas
    emailService.enviarEmail(usuario.email, 'Bem-vindo!', 'Obrigado por se cadastrar!')
}</code>
重構(gòu)後,每個職責都有特定的角色:

<code>function validarUsuario(usuario) {
    if (!usuario.nome || !usuario.email) {
        throw new Error('Dados do usuário incompletos.')
    }
}

function salvarUsuario(usuario) {
    bancoDeDados.salvar(usuario)
}

function enviarEmailDeBoasVindas(usuario) {
    emailService.enviarEmail(usuario.email, 'Bem-vindo!', 'Obrigado por se cadastrar!')
}

function processarCadastroDeUsuario(usuario) {
    validarUsuario(usuario)
    salvarUsuario(usuario)
    enviarEmailDeBoasVindas(usuario)
}</code>
現(xiàn)在每個函數(shù)都有一個職責,使程式碼更具可讀性且更易於維護。

評論:優(yōu)先考慮不言自明的名稱

註釋很有用,但優(yōu)先考慮不言自明的名稱以避免冗餘。 明顯的註解會污染程式碼。

不必要的評論範例:

<code>/** Dia do mês **/
private number diaDoMes;</code>
改進了名稱更清晰且沒有註解:

<code>private number diaDoMesAtual;</code>

物件與資料結(jié)構(gòu):封裝與清晰度

良好的物件導(dǎo)向設(shè)計著重於公開操作和隱藏實作細節(jié)。 這樣可以促進封裝,減少耦合,方便維修。

封裝在類別中的範例

Circulo

<code>class Circulo implements Forma {
    private Ponto centro;
    private number raio;
    private number PI = 3.14159;

    public number calcularArea() {
        return PI * raio * raio;
    }
}</code>
避免出於不同目的在不同範圍內(nèi)重複使用變數(shù)。 使用不同的變數(shù)可以提高清晰度。

錯誤處理:異常而不是多重檢查

過去,錯誤處理是有限的。 如今,使用異常使程式碼更簡潔、更具可讀性。

具有多重驗證的詳細程式碼範例:

<code>function salvarUsuarioENotificar(usuario) {
    // Valida os dados do usuário
    if (!usuario.nome || !usuario.email) {
        throw new Error('Dados do usuário incompletos.')
    }

    // Salva no banco de dados
    bancoDeDados.salvar(usuario)

    // Envia um e-mail de boas-vindas
    emailService.enviarEmail(usuario.email, 'Bem-vindo!', 'Obrigado por se cadastrar!')
}</code>

使用異常重構(gòu):

<code>function validarUsuario(usuario) {
    if (!usuario.nome || !usuario.email) {
        throw new Error('Dados do usuário incompletos.')
    }
}

function salvarUsuario(usuario) {
    bancoDeDados.salvar(usuario)
}

function enviarEmailDeBoasVindas(usuario) {
    emailService.enviarEmail(usuario.email, 'Bem-vindo!', 'Obrigado por se cadastrar!')
}

function processarCadastroDeUsuario(usuario) {
    validarUsuario(usuario)
    salvarUsuario(usuario)
    enviarEmailDeBoasVindas(usuario)
}</code>

單元測驗:清晰度和焦點

乾淨的測試必須清晰、簡單且一致。 用很少的表達方式傳達大量的訊息。

測試的一般結(jié)構(gòu):建置、操作、驗證。

課程:SRP(單一職責原則)

類別的名稱應(yīng)該反映其職責。 班級規(guī)模應(yīng)該小,目標單一。 SRP 確保每個類別只有一個職責。

結(jié)論:乾淨的程式碼是一段旅程

乾淨的程式碼不是一下子就能學(xué)會的。這是一個持續(xù)的旅程,需要實踐、反思和進化。 真正的技能來自於經(jīng)驗和看到改進的能力。 Kent Beck 的規(guī)則(測試、避免重複、清晰、最小化類別和方法)是一個很有價值的指南。

以上是我對乾淨程式碼的理解是什麼?的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應(yīng)的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java vs. JavaScript:清除混亂 Java vs. JavaScript:清除混亂 Jun 20, 2025 am 12:27 AM

Java和JavaScript是不同的編程語言,各自適用於不同的應(yīng)用場景。 Java用於大型企業(yè)和移動應(yīng)用開發(fā),而JavaScript主要用於網(wǎng)頁開發(fā)。

掌握JavaScript評論:綜合指南 掌握JavaScript評論:綜合指南 Jun 14, 2025 am 12:11 AM

評論arecrucialinjavascriptformaintainingclarityclarityandfosteringCollaboration.1)heelpindebugging,登機,andOnderStandingCodeeVolution.2)使用林格forquickexexplanations andmentmentsmmentsmmentsmments andmmentsfordeffordEffordEffordEffordEffordEffordEffordEffordEddeScriptions.3)bestcractices.3)bestcracticesincracticesinclud

JavaScript評論:簡短說明 JavaScript評論:簡短說明 Jun 19, 2025 am 12:40 AM

JavascriptconcommentsenceenceEncorenceEnterential gransimenting,reading and guidingCodeeXecution.1)單inecommentsareusedforquickexplanations.2)多l(xiāng)inecommentsexplaincomplexlogicorprovideDocumentation.3)

JavaScript數(shù)據(jù)類型:深度潛水 JavaScript數(shù)據(jù)類型:深度潛水 Jun 13, 2025 am 12:10 AM

JavaScripthasseveralprimitivedatatypes:Number,String,Boolean,Undefined,Null,Symbol,andBigInt,andnon-primitivetypeslikeObjectandArray.Understandingtheseiscrucialforwritingefficient,bug-freecode:1)Numberusesa64-bitformat,leadingtofloating-pointissuesli

JavaScript與Java:開發(fā)人員的全面比較 JavaScript與Java:開發(fā)人員的全面比較 Jun 20, 2025 am 12:21 AM

JavaScriptIspreferredforredforwebdevelverment,而Javaisbetterforlarge-ScalebackendsystystemsandSandAndRoidApps.1)JavascriptexcelcelsincreatingInteractiveWebexperienceswebexperienceswithitswithitsdynamicnnamicnnamicnnamicnnamicnemicnemicnemicnemicnemicnemicnemicnemicnddommanipulation.2)

如何在JS中與日期和時間合作? 如何在JS中與日期和時間合作? Jul 01, 2025 am 01:27 AM

JavaScript中的日期和時間處理需注意以下幾點:1.創(chuàng)建Date對像有多種方式,推薦使用ISO格式字符串以保證兼容性;2.獲取和設(shè)置時間信息可用get和set方法,注意月份從0開始;3.手動格式化日期需拼接字符串,也可使用第三方庫;4.處理時區(qū)問題建議使用支持時區(qū)的庫,如Luxon。掌握這些要點能有效避免常見錯誤。

JavaScript:探索用於高效編碼的數(shù)據(jù)類型 JavaScript:探索用於高效編碼的數(shù)據(jù)類型 Jun 20, 2025 am 12:46 AM

javascripthassevenfundaMentalDatatypes:數(shù)字,弦,布爾值,未定義,null,object和symbol.1)numberSeadUble-eaduble-ecisionFormat,forwidevaluerangesbutbecautious.2)

為什麼要將標籤放在的底部? 為什麼要將標籤放在的底部? Jul 02, 2025 am 01:22 AM

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

See all articles