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

縮短重構(gòu)所花時(shí)間的三個(gè)貼士

譯文
開(kāi)發(fā) 前端
最近,我不得不處理一個(gè)難以維護(hù)和擴(kuò)展的舊代碼庫(kù)。本文介紹我和我的團(tuán)隊(duì)如何決定處理維護(hù)以及我們?yōu)榭s短重構(gòu)時(shí)間而實(shí)施的最佳實(shí)踐。

?譯者 | 布加迪

審校 | 孫淑娟

代碼重構(gòu)簡(jiǎn)介

代碼重構(gòu)指在不更改代碼功能的情況下,重構(gòu)之前編寫的代碼。重構(gòu)并不意味著添加新功能或重寫代碼來(lái)修復(fù)任何類型的錯(cuò)誤。

進(jìn)行重構(gòu)有幾個(gè)好處,包括:

  • 提升性能
  • 提高代碼覆蓋率
  • 提高代碼可讀性
  • 更深入地理解代碼庫(kù)
  • 更易于擴(kuò)展、維護(hù)和升級(jí)
  • 查找錯(cuò)誤或漏洞

通常每次針對(duì)一小塊代碼進(jìn)行重構(gòu),而不是直接處理龐大的代碼庫(kù)。

別忘記在重構(gòu)之前應(yīng)該有寫得很好的測(cè)試用例。測(cè)試用例有助于確保剛修改的代碼并不破壞現(xiàn)有功能。時(shí)不時(shí)測(cè)試應(yīng)用程序的整體代碼覆蓋率也是一個(gè)好的做法。可能沒(méi)有100%的代碼覆蓋率,但工程師應(yīng)該始終旨在接近100%的代碼覆蓋率。

下圖顯示了重構(gòu)過(guò)程通常是如何進(jìn)行的。

我想分享自己的故事,講述我和我的團(tuán)隊(duì)過(guò)去如何處理重構(gòu)。五年來(lái),我從事過(guò)諸多項(xiàng)目。有一個(gè)項(xiàng)目有非常舊的代碼庫(kù),維護(hù)和擴(kuò)展起來(lái)有難度。我們遇到了連添加一個(gè)小功能都很難的情況。這里存在很多的代碼冗余。我們與項(xiàng)目CTO和產(chǎn)品負(fù)責(zé)人討論了這個(gè)問(wèn)題,一致同意在添加任何新功能之前先執(zhí)行重構(gòu)。由于沒(méi)有編寫測(cè)試用例,因此無(wú)法直接跳過(guò)去修改代碼。

初創(chuàng)公司什么時(shí)候應(yīng)考慮重構(gòu)?

當(dāng)我們的團(tuán)隊(duì)決定是否應(yīng)該重構(gòu)時(shí),我們考慮在以下開(kāi)發(fā)者工作流程步驟進(jìn)行重構(gòu):

  • 在代碼審查期間

代碼審查又叫同行代碼審查,是代碼審查人員在接受合并請(qǐng)求(PR)之前檢查代碼庫(kù)的過(guò)程。這是確保代碼無(wú)錯(cuò)誤、高效、遵循最佳編碼約定的好方法。

將每個(gè)團(tuán)隊(duì)成員添加為代碼審查員幫助我們及早發(fā)現(xiàn)了錯(cuò)誤,并在整個(gè)公司保持一致的編碼風(fēng)格,因?yàn)楹喜⒄?qǐng)求只有在得到所有代碼審查員的批準(zhǔn)后才會(huì)合并。

  • 添加任何更新或新功能后

考慮重構(gòu)的方法之一是在添加新功能或?qū)?yīng)用程序進(jìn)行任何更改之前。這么做將有助于改進(jìn)應(yīng)用程序的代碼庫(kù),而且將來(lái)的工程師使用起來(lái)會(huì)更有效率。此外,工程師應(yīng)定期檢查項(xiàng)目是否具有良好的代碼覆蓋率。

由于應(yīng)用程序使用Ruby on Rails編寫,我們使用了Rubocop(https://rubocop.org/?ref=hackernoon.com),這是一種Ruby代碼樣式檢查器(linter)和格式化工具。Rubocop不僅報(bào)告了代碼庫(kù)中的問(wèn)題,還自動(dòng)修復(fù)了一些問(wèn)題。

  • 推出產(chǎn)品后

大多數(shù)初創(chuàng)公司通常旨在快速推出產(chǎn)品。這個(gè)過(guò)程中可能有一些代碼不符合高質(zhì)量代碼標(biāo)準(zhǔn)。因此,一旦產(chǎn)品面市,重構(gòu)代碼庫(kù)也是使代碼更高效、更穩(wěn)健的好方法。這么做不會(huì)影響業(yè)務(wù),因?yàn)楫a(chǎn)品已經(jīng)在市場(chǎng)上推出了。

由于產(chǎn)品已經(jīng)投放市場(chǎng),我們的團(tuán)隊(duì)使用這種方法進(jìn)行重構(gòu)。我們致力于重構(gòu)應(yīng)用程序代碼庫(kù)的大部分代碼,以提高代碼可讀性并降低復(fù)雜性。

初創(chuàng)公司在進(jìn)行重構(gòu)時(shí)可能會(huì)遇到哪些問(wèn)題?

初創(chuàng)公司在進(jìn)行重構(gòu)時(shí)面臨許多挑戰(zhàn)。我們?cè)谶@么做的過(guò)程中就遇到了很多問(wèn)題:

  • 耗費(fèi)時(shí)間

有時(shí),重構(gòu)花費(fèi)的時(shí)間比預(yù)期的長(zhǎng)。初創(chuàng)公司經(jīng)常需要添加新功能,更專注于盡早將產(chǎn)品投放市場(chǎng)。初創(chuàng)公司需要聘請(qǐng)專門的開(kāi)發(fā)人員,或推遲開(kāi)發(fā)新功能,執(zhí)行代碼重構(gòu)。

我們?cè)跊](méi)有任何測(cè)試用例的情況下處理遺留代碼庫(kù),因此我們花費(fèi)的時(shí)間比預(yù)期的長(zhǎng)。

  • 引入錯(cuò)誤的風(fēng)險(xiǎn)

在進(jìn)行代碼重構(gòu)時(shí),始終有可能引入錯(cuò)誤。工程師在正確重構(gòu)代碼之前,需要了解代碼邏輯。

這個(gè)過(guò)程幫助我們跟蹤試運(yùn)行環(huán)境和生產(chǎn)環(huán)境中的錯(cuò)誤。

  • 復(fù)雜性

重構(gòu)以前編寫的代碼是一項(xiàng)復(fù)雜的任務(wù)。涉及多個(gè)開(kāi)發(fā)人員或自由職業(yè)者時(shí),就變得更為復(fù)雜。首先,您需要了解代碼庫(kù),檢查是否編寫了適當(dāng)?shù)臏y(cè)試用例。如果缺少任何測(cè)試用例,需要添加。了解編寫的代碼、編寫測(cè)試用例,并確保剛修改的代碼不會(huì)破壞任何功能,這使得重構(gòu)過(guò)程很復(fù)雜。

成功重構(gòu)的流程

經(jīng)過(guò)幾次討論后,我們的團(tuán)隊(duì)決定在處理重構(gòu)時(shí)遵循以下步驟:

  • 添加測(cè)試用例。
  • 使用Stepsize,直接從編輯器將技術(shù)問(wèn)題添加到我們的項(xiàng)目管理工具。
  • 將代碼部署到試運(yùn)行環(huán)境,等它通過(guò)所有測(cè)試用例。
  • 讓客戶審查試運(yùn)行環(huán)境中的變更,確保沒(méi)有受到影響。
  • 定期監(jiān)控Bugsnag這個(gè)錯(cuò)誤監(jiān)控軟件,查看Stepsize問(wèn)題。
  • 將代碼更新部署到主分支,等它通過(guò)所有測(cè)試用例。最后,合并主分支,并部署到生產(chǎn)環(huán)境。
  • 從上往下重復(fù)該過(guò)程。

如何縮短重構(gòu)所花的時(shí)間?

我們遵循以下幾個(gè)策略來(lái)避免或縮短重構(gòu)所花的時(shí)間:

  • 每隔一個(gè)sprint就有重構(gòu)周

縮短重構(gòu)時(shí)間的方法之一是,每隔一個(gè)迭代開(kāi)發(fā)周期(sprint)安排重構(gòu)周。這么做將有助于在代碼庫(kù)的問(wèn)題導(dǎo)致嚴(yán)重問(wèn)題之前發(fā)現(xiàn)這些問(wèn)題,保證將來(lái)不會(huì)有任何技術(shù)債務(wù)。

使用這種方法,我們的團(tuán)隊(duì)減少了大部分重構(gòu)時(shí)間。我們開(kāi)始編寫缺失的測(cè)試用例,這幫助我們提高了整個(gè)代碼覆蓋率。

總體而言,每隔一個(gè)sprint安排重構(gòu)周是為了縮短花費(fèi)在批量重構(gòu)上的時(shí)間,防止技術(shù)債務(wù)出現(xiàn)。

  • 在編輯器中跟蹤代碼庫(kù)問(wèn)題

開(kāi)發(fā)人員將大部分時(shí)間花在代碼編輯器上。因此,標(biāo)記這些問(wèn)題的最佳地方是在編輯器中。

Stepsize VSCode和JetBrains擴(kuò)展件有助于全面了解開(kāi)發(fā)人員可以解決的代碼庫(kù)問(wèn)題,避免造成大量重構(gòu)和技術(shù)債務(wù),并為開(kāi)發(fā)人員節(jié)省大量時(shí)間。

您可以將技術(shù)問(wèn)題與您的代碼關(guān)聯(lián)起來(lái),并在Jira、Asana、Azure DevOps和Linear等不同的項(xiàng)目管理工具中查看。

  • 定期討論技術(shù)債務(wù)

在每次編碼sprint之后,定期討論技術(shù)債務(wù)始終很棒。團(tuán)隊(duì)可以討論什么是正確的,什么是錯(cuò)誤的。這樣一來(lái),工程師可以獲得必要的反饋。

在編碼sprint后,我們開(kāi)始簡(jiǎn)短地討論技術(shù)債務(wù)。在過(guò)去花費(fèi)大量時(shí)間進(jìn)行重構(gòu)、了解造成的嚴(yán)重后果之后,產(chǎn)品負(fù)責(zé)人也參與到技術(shù)債務(wù)討論。這使產(chǎn)品負(fù)責(zé)人意識(shí)到取得的成果,以及在項(xiàng)目受到巨大影響之前需要處理的問(wèn)題。

原文標(biāo)題:??Reducing Time Spent on Refactoring 3 Tips from a Dev???,作者:Alex Omeyer?

責(zé)任編輯:華軒 來(lái)源: 51CTO
相關(guān)推薦

2023-06-26 08:06:39

重構(gòu)代碼冗余

2015-03-24 10:54:04

Apple Watch

2020-11-24 09:00:00

物聯(lián)網(wǎng)安全技術(shù)

2011-10-25 18:35:47

Qcon支付寶程立

2018-12-24 09:00:00

測(cè)試工具Flood Eleme

2023-04-26 11:14:11

IT領(lǐng)導(dǎo)者遠(yuǎn)程工作

2017-09-26 09:12:26

公共云存儲(chǔ)服務(wù)

2020-06-11 09:00:27

SDN網(wǎng)絡(luò)架構(gòu)網(wǎng)絡(luò)

2022-05-02 17:52:53

Python編程語(yǔ)言

2023-02-07 16:21:37

時(shí)間序列列數(shù)據(jù)集

2017-01-06 10:07:39

Linuxwindowsatime

2023-02-21 17:04:31

2022-06-30 09:01:00

嵌入式軟件技巧

2018-02-25 07:23:23

2010-09-02 16:46:52

SOAP協(xié)議

2022-03-01 17:26:35

華為數(shù)字化

2011-12-20 10:41:36

程序員

2018-03-18 08:02:16

數(shù)據(jù)中心操作運(yùn)營(yíng)安全性

2020-02-26 08:00:56

管理工具云平臺(tái)管理平臺(tái)

2022-02-21 14:14:03

SSH加密密鑰
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲国产成人精品久久 | 欧美爱爱视频网站 | 中文字幕 亚洲一区 | 日韩一区二区三区在线播放 | 天天夜夜人人 | 国产免费一区 | 在线亚洲精品 | 国产精品1区 | 欧美国产91 | 国产精品久久久久久久久污网站 | 欧美精品久久久久久久久老牛影院 | 国产91网站在线观看 | 久久免费高清视频 | 久草色播| 91福利网址| 特黄色一级毛片 | 久久久久久久av | 国产99久久| 91av亚洲 | 国产美女免费视频 | 色爱综合网 | 日本久久久久久 | 亚洲国产精品成人综合久久久 | h视频在线看 | 亚洲第一在线 | 日韩国产中文字幕 | 情侣酒店偷拍一区二区在线播放 | 亚洲成人第一页 | 在线免费看黄 | 久久精品国产一区二区电影 | 亚洲网在线 | 欧美精品久久久久 | 久久久91精品国产一区二区三区 | 九九热在线免费观看 | 婷婷91| 综合国产在线 | 亚洲成人精品在线 | 亚洲男人的天堂网站 | 91精品国产92 | 国产高清视频在线播放 | 亚洲天堂精品久久 |