软件腐化的原因:
<p style="FONT-SIZE: 10pt">问题所在 设计目标----------------------------------------------------------------------------过于僵硬 可扩展性(新性能可以很容易加入系统)过于脆弱 灵活性(修改不会波及其它)复用率低 粘度过高 可插入性(新功能容易加入系统(气囊加入方向盘))
<p style="FONT-SIZE: 10pt"> 提高系统可复用性的几点原则:传统复用:1. 代码的粘帖复用2. 算法的复用3. 数据结构的复用
<p style="FONT-SIZE: 10pt"> 可维护性与可复用性并不完全一致
<p style="FONT-SIZE: 10pt">* 对可维护性的支持:
一、 "开放-封闭"原则(OCP)
修改关闭。
修改,这使变化中的软件系统有一定的稳定性和延续性。
二、 里氏代换原则(LSP)
方法,接受妹妹作为参数。那么,这个"喜爱()"方法一般不能接受美人的实例。
Highlighter1_23_349_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/405b18b4b6584ae338e0f6ecaf736533.gif" align="top">
Highlighter1_23_349_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/1c53668bcee393edac0d7b3b3daff1ae.gif" align="top">
Highlighter1_116_147_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_116_147_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
Highlighter1_178_208_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_178_208_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
Highlighter1_251_284_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_251_284_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
Highlighter1_316_347_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_316_347_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
Highlighter1_372_524_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/405b18b4b6584ae338e0f6ecaf736533.gif" align="top">
Highlighter1_372_524_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/1c53668bcee393edac0d7b3b3daff1ae.gif" align="top">
Highlighter1_438_467_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_438_467_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
Highlighter1_498_522_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_498_522_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">








Highlighter1_38_364_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/405b18b4b6584ae338e0f6ecaf736533.gif" align="top">
Highlighter1_38_364_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/1c53668bcee393edac0d7b3b3daff1ae.gif" align="top">
Highlighter1_131_162_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_131_162_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
Highlighter1_193_223_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_193_223_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
Highlighter1_266_299_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_266_299_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
Highlighter1_331_362_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_331_362_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
Highlighter1_399_811_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/405b18b4b6584ae338e0f6ecaf736533.gif" align="top">
Highlighter1_399_811_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/1c53668bcee393edac0d7b3b3daff1ae.gif" align="top">
Highlighter1_463_490_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_463_490_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
Highlighter1_522_551_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_522_551_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
Highlighter1_595_623_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_595_623_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
Highlighter1_656_685_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_656_685_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
Highlighter1_716_740_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_716_740_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
Highlighter1_780_809_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_780_809_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
Highlighter1_837_984_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/405b18b4b6584ae338e0f6ecaf736533.gif" align="top">
Highlighter1_837_984_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/1c53668bcee393edac0d7b3b3daff1ae.gif" align="top">
Highlighter1_877_982_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_877_982_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
= r.getWidth() )
Highlighter1_930_977_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_930_977_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">















方法时,如果传入的是长方形对象,当高度大于宽度时,会自动增加宽度直到超出高度。但是如果传入的是正方形对象,则会陷入死循环。
代码重构
Highlighter1_28_85_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/405b18b4b6584ae338e0f6ecaf736533.gif" align="top">
Highlighter1_28_85_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/1c53668bcee393edac0d7b3b3daff1ae.gif" align="top">
Highlighter1_125_451_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/405b18b4b6584ae338e0f6ecaf736533.gif" align="top">
Highlighter1_125_451_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/1c53668bcee393edac0d7b3b3daff1ae.gif" align="top">
Highlighter1_218_249_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_218_249_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
Highlighter1_280_310_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_280_310_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
Highlighter1_353_386_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_353_386_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
Highlighter1_418_449_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_418_449_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
Highlighter1_488_759_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/405b18b4b6584ae338e0f6ecaf736533.gif" align="top">
Highlighter1_488_759_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/1c53668bcee393edac0d7b3b3daff1ae.gif" align="top">
Highlighter1_550_579_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_550_579_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
Highlighter1_610_634_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_610_634_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
Highlighter1_666_695_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_666_695_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">
Highlighter1_728_757_Open_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/2887d91d0594ef8793c1db92b8a1d545.gif" align="top">
Highlighter1_728_757_Closed_Image" onclick="code_collapse_toggle(this);" src="/res/2019/03-05/01/7a2b9a960ee9a98bfd25d306d55009f8.gif" align="top">











Box,Chris Sells,《.NET本质论 第1卷:公共语言运行库》,中国电力出版社