程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 設計模式-代碼的復用和重復的代碼之間有什麼區別

設計模式-代碼的復用和重復的代碼之間有什麼區別

編輯:編程綜合問答
代碼的復用和重復的代碼之間有什麼區別

代碼的復用和重復的代碼之間有什麼區別,為什麼一方面要提高代碼的復用,另一方面又要避免代碼的重復,很糾結.*

最佳回答:


舉一個日常工作中經常用到的工具類中的方法,這是一段Java代碼。
public class TestUse {
public static String convertToNull(String str) {
if (str.length() == 0) {
return null;
}
return str;
}
}
convertToNull方法用來判斷一個未知的字符串實例是否可以轉換為null。此時的規則是(規則一):如果這個字符串是空字符串("")或者是null,那麼都認為這個字符串是可以轉化成null。然後你在工作的其他地方不斷使用該方法。那麼這個方法的重用性就很高。
假如str1就是我們需要判斷的字符串,其實你在每一個調用convertToNull方法的地方都可以這麼寫:
if (str1.length() == 0) {
str1 = null;
}
這叫做在很多地方有重復的代碼。
那麼問題來了,假如有一天規則變了,變成如下的要求(規則二):“只有字符串實例為null或空字符串或以‘a’開頭才認為字符串可以轉化為空”(這裡只是舉例,並無實際意義)。此時如果你使用的是convertToNull方法,只需要修改這個方法裡的代碼,變成如下的形式,而其他地方無需修改:
if (str.length() == 0 || str.startsWith("a")) {
return null;
}
return str;
但是如果你在需要按照規則一轉化字符串為null的地方都直接寫成:
if (str1.length() == 0) {
str1 = null;
}
那可想而知,你需要找到這些地方一個一個地修改,並且還要保證沒有遺漏的地方。

由此可見重用和重復的一個很重要的區別:重復的代碼顯得啰嗦並且難以維護,而提高代碼的重用則讓代碼顯得更簡潔,並且方便日後代碼的維護。一般情況下提高代碼的重用性需要把一段在多個地方都用到的代碼封裝成一個方法,在其他地方只需要調用該方法就可以了。

    No
  1. 下一頁:
Copyright © 程式師世界 All Rights Reserved