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

像寫詩一樣寫代碼:扁平化管理你的代碼

開發(fā) 前端
在本文中我們接觸到了,可以借助提煉以及反轉去優(yōu)化我們的代碼嵌套,其實你可以看看當前你的項目中的代碼是否存在這樣的情況,可以考慮是否優(yōu)化一波,當然優(yōu)化的時候切記回歸測試的重要性。

引言

大家好,我是有清

《史記》有云:大樂必易,大禮必簡,寫給機器看的代碼簡單,但是寫給人看的代碼就需要一點心思

在我們平常的開發(fā)過程中,如果遇到代碼嵌套過深的函數,那么我們會

什么叫嵌套過深呢

我們可以簡單看一段發(fā)工資的例子

圖片

我們將函數內部一個左花括號視為一個嵌套深度,那么我們這個函數具有足足 5 層深度,正常情況下超過 3 層深度,這段代碼便會散發(fā)出臭的味道,當然這不是業(yè)界定義,只要你覺得這一段代碼不好理解,那么這一段代碼就存在可以優(yōu)化的空間

扁平化

那如何減少我們這個嵌套深度呢?扁平化管理我們代碼呢

通常情況下,我們具有兩種手段,第一種是提煉,將一段代碼提煉到一個獨立的函數;第二種是反轉,盡快將結果返回給函數。

接下來,我們開始使用這兩種手段,去重構一下我們的代碼。

提煉

我們什么時候可以提煉函數呢?

就是當我們 「需要花一段時間去理解這一段代碼是用來干什么的時候我們就可以將這一段代碼去提煉為函數」

舉個簡單一點的??

有時候我們需要檢查response 是否正確,正確的話,我們才會進行一系列對應的邏輯處理

if(Objects.nonNull(respponse) && Objects.equals(respponse.code, "200") && Objects.nonNull(response.getModel())) {
// do something
}

通常情況下,我們要去閱讀主要邏輯之前,我們需要去看一下if這到底是什么情況才會走入我們的邏輯,但其實這邊都是一些常規(guī)的校驗,我們大多數的時候根本不關心這個校驗的具體邏輯,因為它是用來預防我們的代碼出現異常的取值報錯

那么,我認為這種的 if 就可以提煉出來一個函數

if(this.isSucess(respponse)) {  
// do something
}

private Boolean isSucess(Response resp) {
return Objects.nonNull(respponse) && Objects.equals(respponse.code, "200") && Objects.nonNull(response.getModel())
}

讀者只需要關心,這個 response 是 sucess 即可,不需要具體關心我是怎么 check 這個 response,因為它相對主邏輯來說不是那么的重要

當然還有一種情況,在代碼邏輯中區(qū)分紅花和綠葉,這也是阿里開發(fā)手冊中推薦的我們的一點,單個方法的總行數不要超過 80 行,代碼邏輯分清紅花和綠葉,個性和共性,綠葉邏輯單獨出來成為額外方法,使主干代碼更加清晰;共性邏輯抽取成為共性方法,便于復用和維護

好,接下來我們優(yōu)化一下引言中的代碼

圖片

優(yōu)化之后,主干邏輯就清晰了,我們想要知道每個情況下的工資是如何發(fā)放的,只需要點進去具體的函數查看即可

但是這么多的 if 嵌套,看的還是很不舒服,我們繼續(xù)下一個動作

反轉

通常情況下,我們的if、else 就是用來區(qū)分在不同的情況下,代碼是走向陽光道還是獨木橋,陽光道就是可以理解為都是我們重要的邏輯,讀者都需要看

獨木橋你可以理解為異常情況,需要立刻從函數中返回回去,我們通常稱這樣的語句為衛(wèi)語句,基于我們防御性編程的思想下,盡快的檢查返回該函數結果

同樣阿里規(guī)范也給我們提到了這一點

圖片

那么我們根據這個思想再進一步優(yōu)化一下我們引言的代碼

圖片

最后再對比一下重構前后的代碼

圖片

總結

在本文中我們接觸到了,可以借助提煉以及反轉去優(yōu)化我們的代碼嵌套,其實你可以看看當前你的項目中的代碼是否存在這樣的情況,可以考慮是否優(yōu)化一波,當然優(yōu)化的時候切記回歸測試的重要性

借用熊節(jié)的一句話:據說古時高僧有云 “時時勤拂拭,勿使惹塵?!保a當如是,專業(yè)人士的技藝應當如是

希望大家都能像寫詩一樣的寫代碼

寫在最后

在朋友的安利下,上周去了西溪濕地尋梅

順著路標的最佳賞梅點,我們一路往前走,但其實花還是沒有那么的密集,我們可疑惑,是梅花還沒開,還是已經謝了

直到,我們看見有個游人,在拍照的時候不斷的搖那個梅花樹想讓自己更為出片,我才悟了,原來不密集的梅花,不是樹的不挽留,而是愛美的人的追求

責任編輯:武曉燕 來源: Issues
相關推薦

2022-10-12 08:05:04

PlantUML代碼運行環(huán)境

2022-12-21 15:56:23

代碼文檔工具

2023-05-23 13:59:41

RustPython程序

2024-08-12 10:03:08

2013-09-22 14:30:43

扁平化設計

2013-09-22 14:47:50

扁平化UI設計

2013-09-22 15:03:27

扁平化UI設計

2013-09-22 15:43:27

扁平化UI設計

2013-09-22 14:56:26

扁平化UI設計

2023-02-15 08:17:20

VSCodeTypeScrip

2021-05-20 08:37:32

multiprocesPython線程

2013-09-22 16:36:07

扁平化UI設計

2013-09-22 16:17:59

扁平化UI設計

2013-09-22 16:22:58

扁平化UI設計

2019-04-08 16:29:28

多云扁平化云計算

2013-07-11 09:45:48

扁平化扁平化設計

2013-09-23 10:16:04

扁平化UI設計

2013-09-22 16:30:13

扁平化UI設計

2013-09-25 10:52:27

Android 4.4扁平化

2021-11-07 14:37:59

列表編碼扁平化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕日韩欧美一区二区三区 | 日本不卡一区二区三区 | 日韩三级免费网站 | www国产精品 | www.亚洲 | 精品久久久久久久久久 | 国产亚洲精品a | 麻豆精品一区二区三区在线观看 | 91免费观看国产 | 粉嫩一区二区三区性色av | 91视频进入| 九九热这里只有精品在线观看 | 91精品国产综合久久久动漫日韩 | 国产亚洲一区二区在线观看 | 国产乱码精品1区2区3区 | 亚洲精品黄色 | www一级片| 久久久久久久亚洲精品 | 国产高清久久久 | 免费黄视频网站 | www.五月天婷婷.com | 人人玩人人添人人澡欧美 | 中文av在线播放 | 精品久久一 | www久久av| 五月天婷婷丁香 | 欧美激情久久久 | 婷婷丁香激情 | 欧美一区二区三区在线观看视频 | 亚洲国产中文字幕 | av在线二区 | 中文字幕在线中文 | 欧美日韩在线视频一区二区 | 亚洲精品www | 日韩一区二区久久 | 美女久久久 | 91视频大全 | 一级片在线观看视频 | 黑人中文字幕一区二区三区 | 欧美一级精品片在线看 | 亚洲精品一区中文字幕乱码 |