自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

關(guān)于C#代碼規(guī)范的兩點疑惑

開發(fā) 后端
C#代碼規(guī)范大家都比較熟悉,變量名的命名等都要符合一定的規(guī)則,這樣才有利于代碼的維護。但這種規(guī)范并不是萬能的,這里本文的作者就有一些自己的疑惑。

筆者今天被培訓了C#代碼規(guī)范,為了統(tǒng)一風格。其中我比較有異議的兩點如下:

1.類型實例的私有字段應(yīng)采用駱駝命名法(camelCasing),不應(yīng)該有任何前綴,在使用時前邊加"this.”;

2.要用FCL類型而不是C#的基元類型,例如要使用Int32代替int。

首先對于第一點,個人比較習慣的做法是前邊加下劃線,說不上好壞,這兩種寫法在各種開源框架的源碼中都見到過。由于VS默認并不提供像Eclipse那樣的對私有字段變色的功能,所以如果只是簡單的使用camelCasing的話會很難區(qū)分哪些是私有字段,哪些是局部變量,所以才有了加this的要求。那么來做個比較:

  1. public void Test()  
  2. {  
  3.     _age = DateTime.Now.Year - _birth.Year;  
  4.     if (_birth > new DateTime(2000, 1, 1))  
  5.     {  
  6.         _name += " new century";  
  7.     }  
  8. }  
  9.  
  10. public void Test2()  
  11. {  
  12.     this.age = DateTime.Now.Year - this.birth.Year;  
  13.     if (this.birth > new DateTime(2000, 1, 1))  
  14.     {  
  15.         this.name += " new century";  
  16.     }  

哪個更能一眼看出其中的私有字段來?似乎并沒有明顯的區(qū)別,相反當局部使用的字段比較多的時候,加下劃線反而顯得更凌亂一點。

但是,this不是單為field而設(shè)置的,實例的屬性,方法,事件都可以使用,一旦我們習慣了使用this:

  1. public void Test()  
  2. {  
  3.     Prop1++;  
  4.     _age = DateTime.Now.Year - _birth.Year;  
  5.     Method1();  
  6.     if (_birth > new DateTime(2000, 1, 1))  
  7.     {  
  8.         Prop2 += " abcd";  
  9.         _name += " new century";  
  10.     }  
  11.     Event1 += () => { };  
  12. }  
  13.  
  14. public void Test2()  
  15. {  
  16.     this.Prop1++;  
  17.     this.age = DateTime.Now.Year - this.birth.Year;  
  18.     this.Method1();  
  19.     if (this.birth > new DateTime(2000, 1, 1))  
  20.     {  
  21.         this.Prop2 += " abcd";  
  22.         this.name += " new century";  
  23.     }  
  24.     this.Event1 += () => { };  

哪個更能一眼看出其中的私有字段來?這個例子可能偏激了一些,但足以表達我的意思。

另一方面來說,一旦我敲下了this.,由于VS的智能提示,會出現(xiàn)一大堆的提示項讓我腦袋發(fā)蒙,但是當我敲一個下劃線之后,出現(xiàn)的就只會是所有的私有字段了,干凈了許多。

m_的前綴也是一個不錯的選擇,而且這兩種前綴當我們使用快捷鍵生成屬性的時候,VS都會聰明地把前綴去掉,首字母大寫,只顯示我們想要的名字。

好吧如果這一條規(guī)則我還能接受的話,第二個規(guī)則就實在讓我無法理解了。

要用FCL類型而不是C#的基元類型,例如要使用Int32代替int。

培訓人并沒有說清楚為什么要這么做,從《CLR via C#》這本書中看出,作者也是強烈建議使用FCL類型,他的理由大致是:有些人對int表示什么有困惑,認為在32位機器上就代表Int32,在64位機器上就代表Int64,如果我們直接使用Int32就不會有這樣的困擾;long在很多語言中不是64位的,這讓習慣于這些語言的人看C#會有誤解;等等。

這些理由我都承認,但我認為不足以說服我使用FCL類型,我的理由如下:

1.我認識的同事,95%都使用C#的基元類型來敲代碼,如果一個規(guī)則要讓絕大多數(shù)人都更改自己的習慣,那么它本身就不合理,而且不可能實施得很順利。

2.VS的智能提示都擅自主張地使用C#基元類型而不是FCL類型,即使你用FCL類型編寫了一個方法,在我們使用時出現(xiàn)在智能提示中的仍然是基元類型。如果我看到一個方法返回long型,我很自然地會使用一個long去接收它,如果前邊寫一個Int64接收一個返回long的方法不覺得別扭么?如果我是新手我是不是認為這還是個隱式轉(zhuǎn)型呢?

3.從習慣上來說,我敲一個int比敲一個Int32快許多,也舒服很多。我敲一個Int64更是痛苦無比,每次都要低頭去找6在哪。我按6最多的時候是玩魔獸的時候,但是玩魔獸和敲代碼食指的位置不一樣啊,我總是按到7啊。

4.我個人喜歡藍色,比那個藍不藍綠不綠的好看多了,這個純粹是吐槽。

對于統(tǒng)一編碼規(guī)范我是舉雙手贊同的,尤其在交接工作比較頻繁的時候,看著各種各樣新奇的命名法總是讓人心里抓狂。程序員都多多少少有一些潔癖吧,看到不符合自己風格的就想去改。我不是做決定的人,但我總是希望一個人在替很多人做決定時還是廣泛征求下意見比較好,不要輕易地把自己的習慣強加給別人,除非你有充足的理由說服我。對于一個熱愛這項職業(yè)的程序員來說,能舒舒服服地敲代碼是一種幸福,但是服從上級的安排,為大局著想又是我的義務(wù),要是能舒舒服服地完成義務(wù)該多好。

原文鏈接:http://www.cnblogs.com/Tyr-Tian/archive/2011/04/28/2032233.html

責任編輯:彭凡 來源: 博客園
相關(guān)推薦

2009-09-01 10:37:51

C#項目代碼C#代碼規(guī)范

2015-08-03 10:25:58

C語言特性不為人知

2009-08-06 17:42:32

C#知識點

2013-01-05 14:25:27

大數(shù)據(jù)

2021-04-06 08:15:05

開發(fā)技能代碼

2009-07-16 09:25:27

Java常量定義

2018-08-28 06:21:19

網(wǎng)線布線線纜

2009-02-01 09:06:15

.NET多線程.NET線程管理

2010-08-10 09:51:19

C#代碼

2009-08-13 13:38:30

C#命名規(guī)范

2009-08-21 08:52:40

C#語言命名

2009-08-27 16:30:08

C#編程命名規(guī)范

2009-08-21 08:59:35

C#語言規(guī)范

2021-08-26 14:55:55

開發(fā)React代碼

2009-05-22 11:01:53

C++JavaC#

2022-04-10 23:07:21

瀏覽器FirefoxLinux

2010-05-13 11:12:59

統(tǒng)一通信平臺

2010-02-02 09:54:05

軟交換技術(shù)

2012-08-23 11:18:15

2009-08-24 15:56:28

C#項目開發(fā)實例
點贊
收藏

51CTO技術(shù)棧公眾號