成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

影響您的代碼庫的10個編程代碼味道

新聞
在編程成為干凈的代碼忍者時,我們應該認識到比較常見的代碼氣味的集合。您是否曾經在閱讀代碼時感覺到告訴您某些錯誤的感覺? 那種"看起來有些不好"的感覺,但是,您仍然無法確切地知道問題出在哪里嗎?

 在編程成為干凈的代碼忍者時,我們應該認識到比較常見的代碼氣味的集合。

[[323778]]

您是否曾經在閱讀代碼時感覺到告訴您某些錯誤的感覺? 那種"看起來有些不好"的感覺,但是,您仍然無法確切地知道問題出在哪里嗎?

這種怪異的感覺是,您從代碼中得到的是正確的直覺。 這些是不良做法,通常稱為代碼氣味。

能夠發現氣味并實現更清潔的解決方案將幫助您在編程生涯中取得重大進步,幫助您自學如何編寫干凈的代碼。

臨時字段

即使試圖避免這種情況,也有一種常見的情況是我們有條件地設置一個類字段。 由于您希望使用類中的所有字段,因此這可能會使代碼的清晰度降低。

好的解決方案是提取一個新類,以為此字段創建一個位置并移動相關功能。 另外,最好引入一個特殊情況,當變量無效時,該情況會創建另一個類。

龐大的類

當一個類開始增長并且包含太多字段時,重復的代碼就在后面。 而且我們討厭重復的代碼! 因此,我們應注意使其盡可能小。

您可能會發現自己重構了一個無限類,因為它可以處理無關的操作,第一個解決方案是使用類提取來分離代碼。

但是由于我們喜歡簡單的解決方案,因此最快的解決方案可能是消除類本身內部的冗余。 例如,要這樣做,您可以采用帶有大量共享代碼的長方法,然后將它們拆分為較小的方法,以便您可以根據需要進行組合,從而避免任何形式的重復。

循環

即使它們長期以來一直是編程的核心,并且仍然有用,但仍有許多替代方法可以幫助我們的代碼更具描述性,并讓我們對代碼一見鐘情。

使用.map或.filter之類的管道方法有助于立即了解結構的操作方式,從而減少了更強制性的代碼所造成的抽象。

懶元素

有時我們實現一個新結構,目的是在以后重用它,或者使我們的代碼更整潔和更具描述性,但是最后,我們意識到它是無用的,并且我們從未在代碼庫中使用過它。 犧牲這部分代碼!

例如,我們可以對函數和類使用內聯技術來實現此結果。

神秘的名字

根據菲爾·卡爾頓的說法:

在計算機科學中只有兩件難事:緩存無效和命名。

我完全同意他的看法。 正確命名變量,函數和類可以大大提高代碼的清潔度! 它可以確保描述性更強的代碼,減少注釋的使用,并使將來的開發人員在閱讀代碼時更加輕松!

請記住,一臺機器可以理解0和1,我們的代碼稍后會翻譯成該語言。 但是,我們編寫的代碼是為人類編寫的,因此請編寫代碼,就像向6歲的孩子解釋代碼一樣。

全局數據

這是每個開發人員在編寫代碼時都應記住的事情,因為可以從任何地方訪問(尤其是可變的)代碼,如果修改后會產生意外的行為。

全局數據最常見的示例是全局變量。 我們可以使用的第一個防御機制是用函數封裝變量,因為這至少提供了更好的方法來控制其訪問并查看其修改位置。

但是,我建議您始終避免使用全局變量和一般的全局數據。 始終存在不同的方法來實施可行的解決方案

注釋過多

我并不是說注釋自己的代碼很不好,但是如果您編寫的程序具有良好的命名并遵循簡潔的代碼模式,則代碼將是不言自明的,從而減少了文件的樣板并提高了代碼庫的可維護性。

當您需要編寫注釋時,請首先嘗試重構代碼,以使任何注釋都變得多余。 馬丁·福勒。

長參數列表

您認為期望6-7個(或更多)參數的有序列表的函數不會引起混淆嗎? 有這么長的列表更容易出現錯誤并降低可讀性。

通常,我們可以通過引入參數對象來解決此問題。 這樣做包括將適合在一起的一長串參數組合到一個新對象中,并將其作為唯一參數傳遞。 這具有很多好處,因為我們可以在函數調用之前定義參數對象,而屬性順序無關緊要。 這是我們在任何參數列表中都應始終考慮的問題。

另一個選擇是將函數組合成一個類,但這通常在某些函數共享相同的參數值時使用,以便我們可以捕獲它們。

重復的代碼

代碼復制是非常專業的代碼庫中存在的另一種常見反模式,我們應該盡力減少它,以保持代碼干凈,并避免在功能改變時在不同位置更改同一代碼。

有多種情況可以幫助刪除重復的代碼,但是最常見的解決方案是創建一個新函數來封裝該邏輯的解決方案,或者在代碼不完全相同的情況下,可以重新排列代碼,以使它們相似 所有項目都在一起以便于提取(Slide語句)。

冗長功能

在我看來,為人類編寫代碼是成為優秀程序員的黃金法則。 長函數是這種思維方式的較大敵人之一,因為長函數使我們的代碼可讀性降低。

函數需要描述它們的功能,并應專注于一個孤立的任務,以便我們在必要時可以重用它們。 通常,隨著功能的變長,其復雜性也會隨之增加,并且代碼的可維護性也會降低。

在大多數情況下,解決此問題的方法是將一部分代碼提取到新函數(提取函數)中,并在必要時重新使用。

總結

照顧好您的代碼并努力理解如何進行改進,這使我一直熱愛代碼和編程。 希望您能分享我的看法,并希望您喜歡這篇文章。 我將大部分學習歸功于Martin Fowler和他的Refactoring書,我認為這是必讀的!

責任編輯:華軒 來源: 今日頭條
相關推薦

2019-10-11 09:07:46

Java代碼對象

2020-06-12 08:21:58

JavaScript代碼開發

2015-07-29 13:22:40

.NET代碼

2012-07-13 09:35:58

PHP

2012-07-13 09:38:15

項目代碼

2014-09-12 10:38:01

程序員代碼

2014-07-29 13:55:10

程序員代碼

2016-04-25 11:28:38

Ruby單行代碼

2011-11-23 09:21:43

jQuery

2021-06-21 09:00:00

Python代碼開發

2023-05-31 08:00:00

PromptrGPT人工智能

2012-07-19 10:42:17

項目

2015-10-08 08:53:46

PHP代碼片段

2011-07-07 10:35:53

htaccess

2021-02-20 23:33:34

TypeScript代碼開發

2024-09-18 02:01:00

2018-08-24 21:25:02

編程語言代碼重構GitHub

2020-11-16 16:04:42

CSS設計代碼

2021-05-26 11:50:37

代碼優化Java

2011-05-26 10:13:03

編程字體
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 草b视频 | 中文字幕一区二区三区在线视频 | 人人擦人人干 | 人妖av | 九色 在线 | 欧美bondage紧缚视频 | 亚洲a在线视频 | 色婷婷精品国产一区二区三区 | 青青草在线视频免费观看 | 久久91精品国产一区二区 | 日韩欧美国产一区二区 | 国产一区二区在线播放 | 精品一区二区在线观看 | 亚洲色视频 | 亚洲第一成人av | 中文字幕一二三区 | 亚洲精品久久久久久久久久久久久 | 欧美区日韩区 | 天天看夜夜 | 欧美jizzhd精品欧美巨大免费 | 日韩av免费在线观看 | 久久久久久久亚洲精品 | 黄色大片在线视频 | 亚洲精品久久久久久久不卡四虎 | 精品一级| 天天操网 | 日韩亚洲视频在线 | 欧美日韩国产精品激情在线播放 | 欧美乱人伦视频 | 欧美在线a| 亚洲精品视频播放 | 九色 在线| 欧美日韩精品一区二区 | 欧美一区二区大片 | 国产视频一区二区 | 精品一区二区三区免费视频 | 国产高清久久久 | 日韩国产在线 | 亚洲精品一区二区冲田杏梨 | 精品在线一区二区三区 | 91原创视频在线观看 |