【重構】如果發現提取的方法不再通用,如何重構

前言

  • 所謂重構(refactoring):
    在不改變代碼外在行為的前提下,對代碼做出修改,以改進程序的內部結構。 – Martin Fowler
  • 背景
    最近在做需求,需要對方法加權限控制,發現舊方法不再適用,需要重新抽象。積累了一個安全重構小技巧。

步驟

  • 期望將 methodB 恢復到 methodA 和 methodC 中,刪掉methodB
public static void methodA() {System.out.println("methodA");System.out.println("doSomething before methodB");methodB();System.out.println("doSomething after methodB");}public static void methodC() {System.out.println("methodC");System.out.println("doSomething before methodB");methodB();System.out.println("doSomething after methodB");}public static void methodB() {System.out.println("doSomething while methodB");}public static void main(String[] args) {methodA();methodC();}
  • idea 重構 。快捷鍵:Ctrl + Alt + N
    在這里插入圖片描述
    在這里插入圖片描述
  • 好處
    消除手工移動因素,重構動作較為安全。

后記

  • 《修改代碼的藝術》
  • 《重構》

以上兩本書,主要是在強調如何把代碼調整到易讀,代碼出現壞味道時如何修改。
idea 里面 “Refactor” 中的很多用途都有上述兩本書的影子。
如果決定要重構,除了需要有測試用例保證重構安全,還需要多使用工具消除人工移動代碼的隱患。

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/84481.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/84481.shtml
英文地址,請注明出處:http://en.pswp.cn/web/84481.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

REST接口/RPC

REST接口(RESTful API)是一種基于HTTP協議的API設計風格,遵循REST(Representational State Transfer表述性狀態轉移)架構原則,用于在不同系統之間進行數據交互。它具有簡潔、靈活、無狀態等特點,廣泛應用于Web服務和移動應用開發中。 核心概念 資源導向 將數據或服務抽…

JS入門——事件與事件綁定

JS入門——事件與事件綁定 一、事件的分類 二、事件的綁定方式 實現代碼&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title>JS事件綁定</title></head><body><!-- 修復后的按鈕1 -->&…

pyspark 處理字符串函數

pyspark 要處理數據&#xff0c;沒有&#xff0c;那就偽造數據 faker 真是個好東西 from faker import Faker import pandas as pd gender ["None","Man","Woman"]fake Faker() names [(fake.first_name(),fake.last_name(),fake.date_of_bi…

五大經典語音芯片型號及應用場景

在語音芯片領域&#xff0c;這五大語音芯片憑借豐富多樣的產品和卓越的性能&#xff0c;占據了重要地位。以下為您詳細介紹其五款經典語音芯片型號及其對應的應用場景。? WTN6170-8S? WTN6170-8S 屬于 OTP 一次性語音芯片。它采用 OTP 工藝&#xff0c;成本能夠控制在 1 元以…

機器學習管道:構建高效可靠的AI工作流

在當今數據驅動的世界中&#xff0c;機器學習(ML)已成為推動創新和決策的核心技術。然而&#xff0c;將ML模型從實驗環境成功部署到生產環境并非易事。機器學習管道(ML Pipelines)作為一種系統化的解決方案&#xff0c;通過自動化工作流程&#xff0c;顯著提高了ML項目的可重復…

瀏覽器調試核心技術指南:從基礎到高級的完全掌握

引言?? 在現代前端開發中,瀏覽器調試工具已成為開發者最強大的技術伙伴。根據State of JS 2023的統計數據,??92.7%的專業開發者??每天使用瀏覽器DevTools進行問題診斷和性能優化。然而,多數初級開發者僅能使用不到35%的調試功能。本文將系統解析Chrome/Firefox瀏覽器…

OpenCV 圖像翻轉

一、知識點 1、void flip(InputArray src, OutputArray dst, int flipCode); (1)、圍繞x軸、y軸或兩者同時翻轉圖像。 (2)、參數說明: src: 輸入圖像。 dst: 輸出圖像&#xff0c;大小與類型和src相同。 flipCode: 翻轉標志。 0表示繞x軸翻轉(上下翻轉);…

【動手學深度學習】4.2~4.3 多層感知機的實現

目錄 4.2. 多層感知機的從零開始實現1&#xff09;初始化模型參數2&#xff09;激活函數3&#xff09;模型4&#xff09;損失函數5&#xff09;訓練 4.3. 多層感知機的簡潔實現1&#xff09;模型2&#xff09;小結 . 4.2. 多層感知機的從零開始實現 現在讓我們實現一個多層感…

54-Oracle 23 ai DBMS_HCHECK新改變-從前的hcheck.sql

Oracle Hcheck&#xff08;Health Check&#xff09;是Oracle數據庫內置的健康監測工具&#xff0c;自動化檢查數據庫的核心問題&#xff0c;包括數據字典一致性、性能瓶頸、空間使用及安全隱患。本質是數據字典的CT掃描儀&#xff0c;其核心價值在于將“字典邏輯錯誤”這類灰色…

AI 產品的“嵌點”(Embedded Touchpoints)

核心主題&#xff1a; AI 產品的成功不在于功能的強大與獨立&#xff0c;而在于其能否作為“嵌點”&#xff08;Embedded Touchpoints&#xff09;無縫融入用戶現有的行為流&#xff08;Flow&#xff09;&#xff0c;消除微小摩擦&#xff0c;在用戶真正需要的時機和場景中“無…

如何在WordPress中添加導航菜單?

作為一個用了很多年 WordPress 的用戶&#xff0c;我特別清楚導航菜單有多重要。一個清晰的導航菜單能讓訪問者快速找到他們想要的信息&#xff0c;同時也能提升網站的用戶體驗。而對于WordPress用戶來說&#xff0c;學會如何添加和自定義導航菜單是構建高質量網站的第一步。今…

【pdf】Java代碼生成PDF

目錄 依賴 創建單元格 表格數據行輔助添加方法 創建表頭單元格 創建下劃線 創建帶下劃線的文字 創建PDF 依賴 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.4.2</version> <…

Vite 的“心臟移植”:Rolldown

1. 現狀&#xff1a;你擱這兒玩雙截棍呢&#xff1f; 現在Vite這逼樣&#xff1a;開發用esbuild&#xff0c;生產用Rollup&#xff0c;精分現場是吧&#xff1f;大型項目尼瑪啟動慢成狗&#xff0c;請求多到炸穿地心&#xff0c;生產/dev環境差異能讓你debug到原地升天&#x…

【網絡安全】文件上傳型XSS攻擊解析

引言 文件上傳功能作為現代Web應用的核心交互模塊&#xff0c;其安全防護水平直接關系到系統的整體安全性。本文基于OWASP、CVE等權威研究&#xff0c;結合2024-2025年最新漏洞案例&#xff0c;系統剖析了文件上傳場景下的XSS攻擊技術演進路徑。研究揭示&#xff1a;云原生架構…

Java 集合框架底層數據結構實現深度解析

Java 集合框架&#xff08;Java Collections Framework, JCF&#xff09;是支撐高效數據處理的核心組件&#xff0c;其底層數據結構的設計直接影響性能與適用場景。本文從線性集合、集合、映射三大體系出發&#xff0c;系統解析ArrayList、LinkedList、HashMap、TreeSet等核心類…

Dify動手實戰教程(進階-知識庫:新生入學指南)

目錄 進階-知識庫&#xff1a;新生入學指南 1.創建知識庫 2.創建Agent 去年agent智能體爆火&#xff0c;我自己也使用了多款智能體產品來搭建agent解決生活中的實際問題&#xff0c;如dify、coze等等。dify作為一個開源的框架得到了大量的應用&#xff0c;如一些需要隱私保護…

Vue3+TypeScript+ Element Plus 從Excel文件導入數據,無后端(點擊按鈕,選擇Excel文件,由前端解析數據)

在 Vue 3 TypeScript Element Plus 中實現文件導入功能&#xff0c;可以通過以下步驟完成&#xff1a; 1. 安裝依賴 bash 復制 下載 npm install xlsx # 用于解析Excel文件 npm install types/xlsx -D # TypeScript類型聲明 2. 組件實現 vue 復制 下載 <templ…

一些torch函數用法總結

1.torch.nonzero(input, *, as_tupleFalse) 作用&#xff1a;在PyTorch中用于返回輸入張量中非零元素的位置索引。 返回值&#xff1a;返回一個張量&#xff0c;每行代表一個非零元素的索引。 參數含義&#xff1a; &#xff08;1&#xff09;input:輸入的PyTorch 張量。 …

moments_object_model_3d這么理解

這篇文章是我對這個算子的理解,和三個輸出結果分別用在什么地方 算子本身 moments_object_model_3d( : : ObjectModel3D, MomentsToCalculate : Moments) MomentsToCalculate:對應三個可選參數,分別是 1, mean_points: 就是點云在xyz方向上坐標的平均值 2, central_m…

性能測試|數據說話!在SimForge平臺上用OpenRadioss進行汽車碰撞仿真,究竟多省時?

Radioss是碰撞仿真領域中十分成熟的有限元仿真軟件&#xff0c;可以對工程中許多非線性問題進行求解&#xff0c;例如汽車碰撞、產品跌落、導彈爆炸、流固耦合分析等等。不僅可以提升產品的剛度、強度、碰撞的安全性能等&#xff0c;還可以在降低產品研發成本的同時提升研發效率…