自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

縮短重構所花時間的三個貼士

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

?譯者 | 布加迪

審校 | 孫淑娟

代碼重構簡介

代碼重構指在不更改代碼功能的情況下,重構之前編寫的代碼。重構并不意味著添加新功能或重寫代碼來修復任何類型的錯誤。

進行重構有幾個好處,包括:

  • 提升性能
  • 提高代碼覆蓋率
  • 提高代碼可讀性
  • 更深入地理解代碼庫
  • 更易于擴展、維護和升級
  • 查找錯誤或漏洞

通常每次針對一小塊代碼進行重構,而不是直接處理龐大的代碼庫。

別忘記在重構之前應該有寫得很好的測試用例。測試用例有助于確保剛修改的代碼并不破壞現(xiàn)有功能。時不時測試應用程序的整體代碼覆蓋率也是一個好的做法??赡軟]有100%的代碼覆蓋率,但工程師應該始終旨在接近100%的代碼覆蓋率。

下圖顯示了重構過程通常是如何進行的。

我想分享自己的故事,講述我和我的團隊過去如何處理重構。五年來,我從事過諸多項目。有一個項目有非常舊的代碼庫,維護和擴展起來有難度。我們遇到了連添加一個小功能都很難的情況。這里存在很多的代碼冗余。我們與項目CTO和產品負責人討論了這個問題,一致同意在添加任何新功能之前先執(zhí)行重構。由于沒有編寫測試用例,因此無法直接跳過去修改代碼。

初創(chuàng)公司什么時候應考慮重構?

當我們的團隊決定是否應該重構時,我們考慮在以下開發(fā)者工作流程步驟進行重構:

  • 在代碼審查期間

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

將每個團隊成員添加為代碼審查員幫助我們及早發(fā)現(xiàn)了錯誤,并在整個公司保持一致的編碼風格,因為合并請求只有在得到所有代碼審查員的批準后才會合并。

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

考慮重構的方法之一是在添加新功能或對應用程序進行任何更改之前。這么做將有助于改進應用程序的代碼庫,而且將來的工程師使用起來會更有效率。此外,工程師應定期檢查項目是否具有良好的代碼覆蓋率。

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

  • 推出產品后

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

由于產品已經(jīng)投放市場,我們的團隊使用這種方法進行重構。我們致力于重構應用程序代碼庫的大部分代碼,以提高代碼可讀性并降低復雜性。

初創(chuàng)公司在進行重構時可能會遇到哪些問題?

初創(chuàng)公司在進行重構時面臨許多挑戰(zhàn)。我們在這么做的過程中就遇到了很多問題:

  • 耗費時間

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

我們在沒有任何測試用例的情況下處理遺留代碼庫,因此我們花費的時間比預期的長。

  • 引入錯誤的風險

在進行代碼重構時,始終有可能引入錯誤。工程師在正確重構代碼之前,需要了解代碼邏輯。

這個過程幫助我們跟蹤試運行環(huán)境和生產環(huán)境中的錯誤。

  • 復雜性

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

成功重構的流程

經(jīng)過幾次討論后,我們的團隊決定在處理重構時遵循以下步驟:

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

如何縮短重構所花的時間?

我們遵循以下幾個策略來避免或縮短重構所花的時間:

  • 每隔一個sprint就有重構周

縮短重構時間的方法之一是,每隔一個迭代開發(fā)周期(sprint)安排重構周。這么做將有助于在代碼庫的問題導致嚴重問題之前發(fā)現(xiàn)這些問題,保證將來不會有任何技術債務。

使用這種方法,我們的團隊減少了大部分重構時間。我們開始編寫缺失的測試用例,這幫助我們提高了整個代碼覆蓋率。

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

  • 在編輯器中跟蹤代碼庫問題

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

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

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

  • 定期討論技術債務

在每次編碼sprint之后,定期討論技術債務始終很棒。團隊可以討論什么是正確的,什么是錯誤的。這樣一來,工程師可以獲得必要的反饋。

在編碼sprint后,我們開始簡短地討論技術債務。在過去花費大量時間進行重構、了解造成的嚴重后果之后,產品負責人也參與到技術債務討論。這使產品負責人意識到取得的成果,以及在項目受到巨大影響之前需要處理的問題。

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

責任編輯:華軒 來源: 51CTO
相關推薦

2023-06-26 08:06:39

重構代碼冗余

2015-03-24 10:54:04

Apple Watch

2020-11-24 09:00:00

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

2011-10-25 18:35:47

Qcon支付寶程立

2018-12-24 09:00:00

測試工具Flood Eleme

2023-04-26 11:14:11

IT領導者遠程工作

2017-09-26 09:12:26

公共云存儲服務

2022-05-02 17:52:53

Python編程語言

2023-02-07 16:21:37

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

2017-01-06 10:07:39

Linuxwindowsatime

2020-06-11 09:00:27

SDN網(wǎng)絡架構網(wǎng)絡

2023-02-21 17:04:31

2022-06-30 09:01:00

嵌入式軟件技巧

2022-03-01 17:26:35

華為數(shù)字化

2018-03-18 08:02:16

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

2020-02-26 08:00:56

管理工具云平臺管理平臺

2022-02-21 14:14:03

SSH加密密鑰

2022-06-22 08:50:53

ERP系統(tǒng)CTO

2017-07-20 10:46:57

網(wǎng)頁CDN加速緩存

2011-12-20 10:41:36

程序員
點贊
收藏

51CTO技術棧公眾號