C 開發者最經常犯的 8 個錯誤

2022-01-15 15:17:17 字數 2583 閱讀 4903

在和c#新手一起工作的時候,我注意到他們經常重複一些錯誤。這些錯誤,當你指出來的時候很容易理解。然而,如果乙個開發者沒有意識到這些錯誤,將會影響正在開發的軟體的質量和效率,因此,我決定總結8個常見的錯誤。

1. 使用字串連線代替stringbuilder

在你向乙個字串追加新字串的時候,字串連線方法是可行的。但是這樣會導致新的記憶體空間被建立。被追加的字串會拷貝到新的記憶體單元。這樣的效率很低。而我們使用stringbuilder的話,可以免去字串拷貝的發生。感謝stringbuilder在連線字串中帶來的高效率,尤其是在多次追加的操作中。

//錯誤寫法

list values = new list();

string outputvalue = string.empty;

foreach (var value in values)

//正確寫法

stringbuilder outputvaluebuilder = new stringbuilder();

foreach (var value in values)

2. linq - 'where' 條件中使用 'first', 代替使用 firstordefault

很多程式設計師在做查詢操作的時候喜歡用'where'操作並通過'first'獲取第一次出現的記錄。這樣的操作是不對的。因為'first'操作不會在'where'條件中起到作用。而且,這樣也不能確保記錄一定被找到。如果'first'在沒有記錄返回的操作中使用,系統會返回預設值並且沒有任何異常被丟擲。

//錯誤的寫法

list numbers = new list();

return numbers.where(x => fibonacci.isinfibonaccisequence(x)).first();

//部分正確的寫法

return numbers.first(x => fibonacci.isinfibonaccisequence(x));

//正確的寫法

return numbers.firstordefault(x => fibonacci.isinfibonaccisequence(x));

3. 當物件不可轉換的場合中,通過'(t)'操作做型別轉化代替使用 'as (t)' 。

對於軟體開發人員來說,使用'(t)' 做型別轉換,而不是使用 'as (t)' 是很常見的寫法。實際上,這樣通常不會帶來危害,因為多數物件都是可轉換的。但是,如果在很低的可能性還是發生的情況下,物件不能轉換,那麼使用 'as (t)' 才是正確的。 詳細請檢視 prefix-casting versus as-casting in c#

//錯誤

var woman = (woman)person;

//正確

var woman = person as woman;

4.不使用對映重寫屬性

c#程式設計師使用「throw ex」來丟擲乙個異常經常會忘記對棧的跟蹤,會使程式難以除錯並且不能形成日誌資訊,如果簡單地使用「throw」,那麼資料將不會丟失,並且可以方便地檢索整個異常的堆疊跟蹤。

//錯誤

trycatch (exception ex)

//正確

trycatch (exception ex)

6. 沒有使用 『using』 語句來銷毀物件

很多c#的軟體開發人員竟然不知道關鍵字 'using' 不單單只用於引入命名空間,而還有**銷毀物件的功能。如果你明確知道某個物件在進行完某些操作後,不再有用,需要**,你可以使用'using' 語句來銷毀物件。

//以下語句:

using(somedisposableclass somedisposableobject = new somedisposableclass())

//和以下語句是一樣效果:

somedisposableclass somedisposableobject = new somedisposableclass();

tryfinally

7. 除了物件集合外,使用'foreach' 代替 'for'

請牢記除了物件集合之外(例如陣列),當你需要進行迭代操作的時候,使用'for' 會比使用 'foreach'效率更高。請參考foreach vs for performance 。

8. 對資料庫進行讀取或儲存操作的時候,使用多次的db呼叫

這是非常常見的錯誤,尤其在初級開發人員當中。特別是在使用orm框架的時候,例如entity framework和nhibernate。每次的db的呼叫都會耗費資源,所以對db的操作越少越好。你可以通過以下方式做到:

可以說,還有c#程式設計師經常會遇到的錯誤還有很多很多。如果你發現某項是你感興趣的或者你需要分享你的看法,歡迎留下你寶貴的意見。

20個勢頭最猛的開發者工具

近年來風險投資和天使投資人似乎非常偏愛開發者工具,根據最新的 報告,2012 年投資者在開發工具上投入了 6.46 億美元,這使得開發工具成立最熱門的創業領域之一。在資本的趨勢下大批公司投身開發開發者工具,很多新產品非常優秀也賣得不錯,但是也有不少產品噱頭大過功能,很快被使用者束之高閣。隨之而來的問...

20個勢頭最猛的開發者工具

近年來風險投資和天使投資人似乎非常偏愛開發者工具,根據最新的報告 2012年投資者在開發工具上投入了6.46億美元,這使得開發工具成立最熱門的創業領域之一。在資本的趨勢下大批公司投身開發開發者工具,很多新產品非常優秀也賣得不錯,但是也有不少產品噱頭大過功能,很快被使用者束之高閣。隨之而來的問題是,面...

Web開發者需具備的8個好習慣

優秀的web開發人員工作效率更高,因為他們擁有豐富的經驗和良好的習慣。作者gregor dorfbauer分享了用於web開發中的8個好習慣,這些良好的工作習慣不僅能提高效率,還能讓您建立更加優秀的應用,讓您的工作事半功倍。想要做好軟體開發並非易事,這裡面還包含大量的功能需求 bug報告以及使用者反...