最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#的編碼規(guī)范詳細(xì)說(shuō)明

 更新時(shí)間:2013年08月22日 15:13:25   投稿:shangke  
編碼規(guī)范是老生常談的問題,現(xiàn)在再看代碼規(guī)范可能不會(huì)再去在意變量,控件的命名方法等,而是更加關(guān)注代碼的實(shí)用性

首先我們要明白一下幾點(diǎn),
1.代碼寫出來(lái)除了讓他跑起來(lái)還有個(gè)非常非常重要的作用是維護(hù),因?yàn)闆]有一成不變的代碼,需求變化代碼就不可避免的要變化。
2.你不是一個(gè)人在寫代碼,你身后有一個(gè)團(tuán)隊(duì),這個(gè)團(tuán)隊(duì)中任何一個(gè)人都有可能會(huì)改你的代碼,你如果寫的不規(guī)范,后面的人會(huì)跟著寫。舉一個(gè)例子,最初的代碼可能是這樣的,

復(fù)制代碼 代碼如下:

if (OrderInfo.O_OrdersEntity.DirectFlightChannel.Trim().ToUpper() == "CZ-SP")
                {
                    OrderCostAndWeightEntity e = new OrderCostAndWeightEntity();
                    e.FlightAgency = InsuranceCommon.GetStrategyFlightAgencyNew(OrderInfo.O_OrdersEntity.DirectFlightChannel);
                    e = ReGetFlight.GetDirectFlightHighWeightEntity(OrderInfo.O_FlightEntity, "", e.FlightAgency);
                    e.Sendticketcity = int.Parse(ConfigurationManager.AppSettings["SendticketcityOfDirectFlights_HU"].ToString());
                    regetFlightInitData.HighCostAndWeightEntity = e;
                    regetFlightInitData.TicketType = "0001";
                    //如果是海航,則不需要政策倒查驗(yàn)證
                    regetFlightInitData.ReSearchNoFlight = false;
                }
                else
                {
                    OrderCostAndWeightEntity e = new OrderCostAndWeightEntity();
                    e.Sendticketcity = int.Parse(ConfigurationManager.AppSettings["SendticketcityOfDirectFlights_HU"].ToString());
                    e.FlightAgency = InsuranceCommon.GetStrategyFlightAgencyNew(OrderInfo.O_OrdersEntity.DirectFlightChannel);
                    e.CostRate1 = 1.0M;
                    regetFlightInitData.HighCostAndWeightEntity = e;
                    //如果是海航,則不需要政策倒查驗(yàn)證
                    regetFlightInitData.ReSearchNoFlight = false;
                }

但是過(guò)一時(shí)間又來(lái)個(gè)需求,對(duì)于“MU-WS”也需要走上面的邏輯,你會(huì)怎么寫,如果你只是完成任務(wù)可能會(huì)像下面這樣寫
復(fù)制代碼 代碼如下:

if (OrderInfo.O_OrdersEntity.DirectFlightChannel.Trim().ToUpper() == "CZ-SP" || OrderInfo.O_OrdersEntity.DirectFlightChannel.Trim().ToUpper() == "MU-WS")
                {
                    OrderCostAndWeightEntity e = new OrderCostAndWeightEntity();
                    e.FlightAgency = InsuranceCommon.GetStrategyFlightAgencyNew(OrderInfo.O_OrdersEntity.DirectFlightChannel);
                    e = ReGetFlight.GetDirectFlightHighWeightEntity(OrderInfo.O_FlightEntity, "", e.FlightAgency);
                    e.Sendticketcity = int.Parse(ConfigurationManager.AppSettings["SendticketcityOfDirectFlights_HU"].ToString());
                    regetFlightInitData.HighCostAndWeightEntity = e;
                    regetFlightInitData.TicketType = "0001";
                    //如果是海航,則不需要政策倒查驗(yàn)證
                    regetFlightInitData.ReSearchNoFlight = false;
                }
                else
                {
                    OrderCostAndWeightEntity e = new OrderCostAndWeightEntity();
                    e.Sendticketcity = int.Parse(ConfigurationManager.AppSettings["SendticketcityOfDirectFlights_HU"].ToString());
                    e.FlightAgency = InsuranceCommon.GetStrategyFlightAgencyNew(OrderInfo.O_OrdersEntity.DirectFlightChannel);
                    e.CostRate1 = 1.0M;
                    regetFlightInitData.HighCostAndWeightEntity = e;
                    //如果是海航,則不需要政策倒查驗(yàn)證
                    regetFlightInitData.ReSearchNoFlight = false;
                }

如果真的這么寫你就是始作俑者,后面的人如果都和你一樣就都會(huì)朝著葫蘆畫瓢,最后代碼可能會(huì)是這樣的
復(fù)制代碼 代碼如下:

if (OrderInfo.O_OrdersEntity.DirectFlightChannel.Trim().ToUpper() == "CZ-SP" || OrderInfo.O_OrdersEntity.DirectFlightChannel.Trim().ToUpper() == "MU-WS" || OrderInfo.O_OrdersEntity.DirectFlightChannel.Trim().ToUpper() == "MU-WS" || OrderInfo.O_OrdersEntity.DirectFlightChannel.Trim().ToUpper() == "MU-SP" || OrderInfo.O_OrdersEntity.DirectFlightChannel.Trim().ToUpper() == "CZ-WS" || OrderInfo.O_OrdersEntity.DirectFlightChannel.Trim().ToUpper() == "XT-WS")
                {
                    OrderCostAndWeightEntity e = new OrderCostAndWeightEntity();
                    e.FlightAgency = InsuranceCommon.GetStrategyFlightAgencyNew(OrderInfo.O_OrdersEntity.DirectFlightChannel);
                    e = ReGetFlight.GetDirectFlightHighWeightEntity(OrderInfo.O_FlightEntity, "", e.FlightAgency);
                    e.Sendticketcity = int.Parse(ConfigurationManager.AppSettings["SendticketcityOfDirectFlights_HU"].ToString());
                    regetFlightInitData.HighCostAndWeightEntity = e;
                    regetFlightInitData.TicketType = "0001";
                    //如果是海航,則不需要政策倒查驗(yàn)證
                    regetFlightInitData.ReSearchNoFlight = false;
                }
                else
                {
                    OrderCostAndWeightEntity e = new OrderCostAndWeightEntity();
                    e.Sendticketcity = int.Parse(ConfigurationManager.AppSettings["SendticketcityOfDirectFlights_HU"].ToString());
                    e.FlightAgency = InsuranceCommon.GetStrategyFlightAgencyNew(OrderInfo.O_OrdersEntity.DirectFlightChannel);
                    e.CostRate1 = 1.0M;
                    regetFlightInitData.HighCostAndWeightEntity = e;
                    //如果是海航,則不需要政策倒查驗(yàn)證
                    regetFlightInitData.ReSearchNoFlight = false;
                }

看到效果了么,你需要脫一下下面的那個(gè)長(zhǎng)條才能看到全部代碼,這就是你的“因”種下后得到的果實(shí)。所以我們需要改進(jìn),常見的改進(jìn)是回車換行,保證所有的代碼都在你一眼能夠看到的范圍之內(nèi)。改進(jìn)后代碼如下:
復(fù)制代碼 代碼如下:

if (OrderInfo.O_OrdersEntity.DirectFlightChannel.Trim().ToUpper() == "CZ-SP" ||
                    OrderInfo.O_OrdersEntity.DirectFlightChannel.Trim().ToUpper() == "MU-WS" ||
                    OrderInfo.O_OrdersEntity.DirectFlightChannel.Trim().ToUpper() == "MU-WS" ||
                    OrderInfo.O_OrdersEntity.DirectFlightChannel.Trim().ToUpper() == "MU-SP" ||
                    OrderInfo.O_OrdersEntity.DirectFlightChannel.Trim().ToUpper() == "CZ-WS" ||
                    OrderInfo.O_OrdersEntity.DirectFlightChannel.Trim().ToUpper() == "XT-WS")
                {
                    OrderCostAndWeightEntity e = new OrderCostAndWeightEntity();
                    e.FlightAgency = InsuranceCommon.GetStrategyFlightAgencyNew(OrderInfo.O_OrdersEntity.DirectFlightChannel);
                    e = ReGetFlight.GetDirectFlightHighWeightEntity(OrderInfo.O_FlightEntity, "", e.FlightAgency);
                    e.Sendticketcity = int.Parse(ConfigurationManager.AppSettings["SendticketcityOfDirectFlights_HU"].ToString());
                    regetFlightInitData.HighCostAndWeightEntity = e;
                    regetFlightInitData.TicketType = "0001";
                    //如果是海航,則不需要政策倒查驗(yàn)證
                    regetFlightInitData.ReSearchNoFlight = false;
                }
                else
                {
                    OrderCostAndWeightEntity e = new OrderCostAndWeightEntity();
                    e.Sendticketcity = int.Parse(ConfigurationManager.AppSettings["SendticketcityOfDirectFlights_HU"].ToString());
                    e.FlightAgency = InsuranceCommon.GetStrategyFlightAgencyNew(OrderInfo.O_OrdersEntity.DirectFlightChannel);
                    e.CostRate1 = 1.0M;
                    regetFlightInitData.HighCostAndWeightEntity = e;
                    //如果是海航,則不需要政策倒查驗(yàn)證
                    regetFlightInitData.ReSearchNoFlight = false;

是不是清爽一點(diǎn),好看一點(diǎn),如果你在第一次修改代碼的時(shí)候這樣寫后面的人就會(huì)跟著這樣寫,他們可能會(huì)想,前面一個(gè)人這樣寫這樣寫應(yīng)該不會(huì)有問題,雖然代碼看起來(lái)有點(diǎn)別扭,這時(shí)候我們可以帶著鑒賞的眼光看這段代碼,如果再想一想還有更好的方法,為何不用switch呢?
復(fù)制代碼 代碼如下:

switch (OrderInfo.O_OrdersEntity.DirectFlightChannel.Trim().ToUpper())
                {
                    case "CZ-SP":
                    case "MU-SP":
                    case "XT-WS":
                        {
                            OrderCostAndWeightEntity e = new OrderCostAndWeightEntity();
                            e.FlightAgency = InsuranceCommon.GetStrategyFlightAgencyNew(OrderInfo.O_OrdersEntity.DirectFlightChannel);
                            e = ReGetFlight.GetDirectFlightHighWeightEntity(OrderInfo.O_FlightEntity, "", e.FlightAgency);
                            e.Sendticketcity = int.Parse(ConfigurationManager.AppSettings["SendticketcityOfDirectFlights_HU"].ToString());
                            regetFlightInitData.HighCostAndWeightEntity = e;
                            regetFlightInitData.TicketType = "0001";
                            //如果是海航,則不需要政策倒查驗(yàn)證
                            regetFlightInitData.ReSearchNoFlight = false;
                            break;
                        }
                    default:
                        {
                            OrderCostAndWeightEntity e = new OrderCostAndWeightEntity();
                            e.Sendticketcity = int.Parse(ConfigurationManager.AppSettings["SendticketcityOfDirectFlights_HU"].ToString());
                            e.FlightAgency = InsuranceCommon.GetStrategyFlightAgencyNew(OrderInfo.O_OrdersEntity.DirectFlightChannel);
                            e.CostRate1 = 1.0M;
                            regetFlightInitData.HighCostAndWeightEntity = e;
                            //如果是海航,則不需要政策倒查驗(yàn)證
                            regetFlightInitData.ReSearchNoFlight = false;
                            break;
                        }
                }

是不是更加簡(jiǎn)單,如果你這樣寫,后面的人會(huì)毫不猶豫地在后面加一個(gè)case “”:因?yàn)檫@個(gè)是大家再熟悉不過(guò)的語(yǔ)法了,絲毫不用懷疑這種寫法的正確性,于是我們可以帶著欣賞的眼光來(lái)看這段代碼了。
3.要承認(rèn)我們的心智就這么多,腦袋就這么大,我們既不能一目十行也不能出口成章,所以不要寫一言看不出什么意思的代碼。
以上的想法都是建立在維護(hù)別人代碼的痛苦,失落,沮喪,各種不爽,各種吐槽之上,所以代碼規(guī)范是需要我們時(shí)刻關(guān)注的,在這里自己總結(jié)一些規(guī)范,告誡自己不要做始作俑者。
1.一個(gè)文件中只放一個(gè)類,類名同文件名,不要在一個(gè)文件中寫好幾個(gè)類,這樣看的清楚。
2.不要在一個(gè)文件中寫多于1000行的代碼,除了那些比較大的實(shí)體類。其實(shí)我還想說(shuō)超過(guò)500行看起來(lái)就有點(diǎn)累,但是在我們的系統(tǒng)中超過(guò)10000行的代碼比比皆是。
3.一個(gè)方法的代碼不要超過(guò)100行,其實(shí)我想說(shuō)超過(guò)50行的方法看起來(lái)就有點(diǎn)累。但是在我們的系統(tǒng)中超過(guò)200行代碼的方法比比皆是。
5.避免寫超過(guò)5個(gè)參數(shù)的方法,如果有請(qǐng)使用一個(gè)類或者結(jié)構(gòu)來(lái)傳。
6.一個(gè)方法只有一個(gè)return result; ,不要多次return結(jié)果,最好給返回結(jié)果賦值,最后return result;
7.不要給很簡(jiǎn)單的代碼加注釋,會(huì)有噪音的,會(huì)讓人誤解的,因?yàn)槟銓懙拇蠖鄶?shù)情況下很片面。
8.記錄日志的時(shí)候不要到處都記,有條件的情況下針對(duì)客戶一次操作(比如下單)只記錄一條日志。
另外再這里列舉自己對(duì)代碼做的一些改進(jìn),不足之處歡迎大家指出。
1.參數(shù)過(guò)長(zhǎng)使用縮進(jìn)
復(fù)制代碼 代碼如下:

a.
                    //獲得保險(xiǎn)策略信息
                    insuranceStrategy = InsuranceCommon.GetStrategyInsurance(appFltEntity.ProductSource.ToString(), strategyFlightAgency.ToString(), "", appFltEntity.Price.ToString(), appFltEntity.DirectFlightChannel, appFltEntity.Airline.DibitCode, appFltEntity.Flight, appFltEntity.DepartAirport.Code, appFltEntity.ArriveAirport.Code, appFltEntity.SubClass, appFltEntity.DepartTime, appFltEntity.DepartTime.Date, null);
b.
                    //獲得保險(xiǎn)策略信息
                    insuranceStrategy = InsuranceCommon.GetStrategyInsurance(appFltEntity.ProductSource.ToString(),
                                                                             strategyFlightAgency.ToString(),
                                                                             "",
                                                                             appFltEntity.Price.ToString(),
                                                                             appFltEntity.DirectFlightChannel,
                                                                             appFltEntity.Airline.DibitCode,
                                                                             appFltEntity.Flight,
                                                                             appFltEntity.DepartAirport.Code,
                                                                             appFltEntity.ArriveAirport.Code,
                                                                             appFltEntity.SubClass,
                                                                             appFltEntity.DepartTime,
                                                                             appFltEntity.DepartTime.Date,
                                                                             null);

2.if條件過(guò)長(zhǎng)中使用縮進(jìn)
復(fù)制代碼 代碼如下:

a.
                if (IsDirectFlight && (this.CorpPayType == ExpenseType.OWN || this.AccountInfo.DirectOrdersQuoteMode == "I"))
                {
                    strategyFlightAgency = InsuranceCommon.GetStrategyFlightAgencyNew(appFltEntity.DirectFlightChannel);
                    //根據(jù)票臺(tái)獲得票臺(tái)對(duì)應(yīng)的城市
                    strategyCityID = InsuranceCommon.GetFlightAgencyCity(strategyFlightAgency);
                 }
b.
                if (IsDirectFlight &&
                    (this.CorpPayType == ExpenseType.OWN ||
                    this.AccountInfo.DirectOrdersQuoteMode == "I"))
                {
                    strategyFlightAgency = InsuranceCommon.GetStrategyFlightAgencyNew(appFltEntity.DirectFlightChannel);
                    //根據(jù)票臺(tái)獲得票臺(tái)對(duì)應(yīng)的城市
                    strategyCityID = InsuranceCommon.GetFlightAgencyCity(strategyFlightAgency);
                 }

3.使用三元表達(dá)式
復(fù)制代碼 代碼如下:

a.
                        if (InsuranceInfoList != null && InsuranceInfoList.Count > 0 && InsuranceInfoList[0].GeneralDescription.Contains("e路泰康"))
                            collections.Set("IsElderCanBuyInsurance", "T");
                        else
                            collections.Set("IsElderCanBuyInsurance", "F");
b.
collections.Set("IsElderCanBuyInsurance", InsuranceInfoList != null && InsuranceInfoList.Count > 0 && InsuranceInfoList[0].GeneralDescription.Contains("e路泰康") ? "T" : "F");

4.使用藍(lán)不大表達(dá)式
復(fù)制代碼 代碼如下:

a.
                        InsuranceInfoList = InsuranceInfoList.FindAll(delegate(BookingInsuranceInfo iInfo)
                        {
                            return iInfo.TypeID == "C2C30";
                        });
b.
InsuranceInfoList = InsuranceInfoList.FindAll(a => a.TypeID == "C2C30");

5.使用switch表達(dá)式,見上面。
6.使用數(shù)組包含
復(fù)制代碼 代碼如下:

a.
            if (wsFlt.ProductSource == 4 && !string.IsNullOrEmpty(wsFlt.DirectFlightChannel) && (wsFlt.DirectFlightChannel.ToUpper() == "HO-WS" or wsFlt.DirectFlightChannel.ToUpper() == "ZH-WS" or wsFlt.DirectFlightChannel.ToUpper() == "XT-WS")
                && directFlightCorporationList != null && directFlightCorporationList.Count > 0 && !directFlightCorporationList.Contains(corporationid))
            {
                return false;
            }
b.
            if (wsFlt.ProductSource == 4 &&
                new List<string>() { "HO-WS", "CZ-WS", "XT-WS" }.Contains(wsFlt.DirectFlightChannel.Trim().ToUpper()) &&
                directFlightCorporationList != null &&
                directFlightCorporationList.Count > 0 &&
                !directFlightCorporationList.Contains(corporationid))
            {
                return false;
            }

可以看到代碼中也使用了縮進(jìn)。
歡迎大家也列舉自己遇到的代碼簡(jiǎn)潔之道。

相關(guān)文章

  • C#使用LitJson解析JSON的示例代碼

    C#使用LitJson解析JSON的示例代碼

    本篇文章主要介紹了C#使用LitJson解析JSON的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • 詳解C#編程獲取資源文件中圖片的方法

    詳解C#編程獲取資源文件中圖片的方法

    這篇文章主要介紹了詳解C#編程獲取資源文件中圖片的方法的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C#中Foreach循環(huán)遍歷的本質(zhì)與枚舉器詳解

    C#中Foreach循環(huán)遍歷的本質(zhì)與枚舉器詳解

    這篇文章主要給大家介紹了關(guān)于C#中Foreach循環(huán)遍歷本質(zhì)與枚舉器的相關(guān)資料,foreach循環(huán)用于列舉出集合中所有的元素,foreach語(yǔ)句中的表達(dá)式由關(guān)鍵字in隔開的兩個(gè)項(xiàng)組成,本文通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • C#實(shí)現(xiàn)泛型List分組輸出元素的方法

    C#實(shí)現(xiàn)泛型List分組輸出元素的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)泛型List分組輸出元素的方法,涉及C#針對(duì)List的遍歷、排序、輸出等相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • 深入c# GDI+簡(jiǎn)單繪圖的具體操作步驟(二)

    深入c# GDI+簡(jiǎn)單繪圖的具體操作步驟(二)

    本篇文章是對(duì)GDI+簡(jiǎn)單繪圖的繪圖知識(shí)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 10個(gè)C#程序員經(jīng)常用到的實(shí)用代碼片段

    10個(gè)C#程序員經(jīng)常用到的實(shí)用代碼片段

    如果你是一個(gè)C#程序員,那么本文介紹的10個(gè)C#常用代碼片段一定會(huì)給你帶來(lái)幫助,從底層的資源操作,到上層的UI應(yīng)用,這些代碼也許能給你的開發(fā)節(jié)省不少時(shí)間。以下是原文:
    2015-09-09
  • C#開發(fā)交互式命令行應(yīng)用示例

    C#開發(fā)交互式命令行應(yīng)用示例

    這篇文章主要為大家介紹了C#開發(fā)交互式命令行應(yīng)用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 輕松學(xué)習(xí)C#的密封類

    輕松學(xué)習(xí)C#的密封類

    輕松學(xué)習(xí)C#的密封類,對(duì)C#的密封類感興趣的朋友可以參考本篇文章,幫助大家更靈活的運(yùn)用C#的密封類
    2015-11-11
  • C#實(shí)現(xiàn)較為實(shí)用的SQLhelper

    C#實(shí)現(xiàn)較為實(shí)用的SQLhelper

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)較為實(shí)用SQLhelper的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • C#使用semaphore來(lái)管理異步下載請(qǐng)求的方法

    C#使用semaphore來(lái)管理異步下載請(qǐng)求的方法

    這篇文章主要介紹了C#使用semaphore來(lái)管理異步下載請(qǐng)求的方法,涉及C#使用semaphore實(shí)現(xiàn)多線程管理的技巧,需要的朋友可以參考下
    2015-06-06

最新評(píng)論

高雄县| 山东| 临潭县| 葵青区| 岫岩| 巴林右旗| 敦化市| 珠海市| 定安县| 济源市| 三明市| 土默特左旗| 宜春市| 大新县| 余干县| 萝北县| 蒲城县| 临汾市| 内江市| 公主岭市| 木里| 腾冲县| 齐齐哈尔市| 中西区| 红安县| 抚远县| 宝应县| 谢通门县| 当阳市| 同心县| 衡山县| 吉木萨尔县| 丰台区| 沾化县| 德庆县| 四子王旗| 济南市| 绥宁县| 兴仁县| 交口县| 忻州市|