日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

编写高质量代码改善C#程序的157个建议——建议104:用多态代替条件语句

發布時間:2025/4/9 C# 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编写高质量代码改善C#程序的157个建议——建议104:用多态代替条件语句 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

建議104:用多態代替條件語句

假設要開發一個自動駕駛系統。在設計之初,此自動駕駛系統擁有一個駕駛系統命令的枚舉類型:

enum DriveCommand{Start,Stop}

當前該枚舉存在兩個命令:開始、停止。又假設有一個駕駛方法可以處理車輛接收到的指令。一開始我們可能像下面這樣編碼:

static void Main(string[] args){DriveCommand command = DriveCommand.Start;Drive(command);command = DriveCommand.Stop;Drive(command);}static void Drive(DriveCommand command){if (command == DriveCommand.Start){//車輛啟動 }else if (command == DriveCommand.Stop){//車輛停止 }}

有些人可能喜歡用switch語句(當然,switch本質上也是if語句)。

static void Drive(DriveCommand command){switch (command){case DriveCommand.Start: //車輛啟動 break; case DriveCommand.Stop: //車輛停止 break; default: break; } }

?隨著更多的系統功能不斷地被開發出來,我們考慮為車輛加入的命令也越來越多,如下所示:

enum DriveCommand{Start,Stop,Pause,TurnLeft,TurnRight}

?

隨著DriveCommand元素的增加,采用if或switch語句將帶來可怕的混亂狀態是顯而易見的。在一個復雜的控制系統中,命令可能會多達上百條。每增加一條命,我們首先要修改Drive方法。Drive方法將會及其膨脹,而且每行代碼幾乎是一模一樣的:

if 命令

  then 行動

這種情況,我們不得不考慮重構原來的代碼。原來的設計理念也是欠妥當的,它不遵守設計模式中的“開閉原則”。開閉原則是指:對擴展開發,對修改關閉。遵從開閉原則的一次重構是,使用多態來規避不斷膨脹的條件語句。首先,設計一個抽象類Commander:

abstract class Commander{public abstract void Execute();}

?

所有的Start或者Stop之類的命令,全部繼承自這個抽象類:

class StartCommander : Commander{public override void Execute(){//啟動 }}class StopCommander : Commander{public override void Execute(){//停止 }}

?

在使用多態后,調用方法的代碼應該如下所示:

static void Main(string[] args){Commander commander = new StartCommander();Drive(commander);commander = new StopCommander();Drive(commander);}static void Drive(Commander commander){commander.Execute();}

?

可見,代碼簡潔了不少,而且,可擴展性增強了。即使未來還需要增加命令,擴展相應的子類就可以了。而且我們關閉了修改,即對Drive方法,即使增加再多的命令,也不需要對其進行修改。

?

?

轉自:《編寫高質量代碼改善C#程序的157個建議》陸敏技

轉載于:https://www.cnblogs.com/jesselzj/p/4747504.html

總結

以上是生活随笔為你收集整理的编写高质量代码改善C#程序的157个建议——建议104:用多态代替条件语句的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。