我認爲使代碼不言自明,無需在各處留言,這是一大優勢。但是,您能否建議一些方法和技巧,以減少代碼量,使其更具可讀性和可理解性。C#中的良好編程習慣是什麼使代碼更易於理解?
另外你怎麼看,是減少大if statements
和嵌套for loops
和其他結構,有時很難理解乍一看,好技術。
這裏有一些我想的事情會我的C#應用程序更具可讀性和不言自明:
- 轉換
foreach
環插入LINQ 語句。 - 使用匿名函數來減少事件處理程序的數量。
此外,有關涵蓋這些主題的書籍的建議將不勝感激。
我認爲使代碼不言自明,無需在各處留言,這是一大優勢。但是,您能否建議一些方法和技巧,以減少代碼量,使其更具可讀性和可理解性。C#中的良好編程習慣是什麼使代碼更易於理解?
另外你怎麼看,是減少大if statements
和嵌套for loops
和其他結構,有時很難理解乍一看,好技術。
這裏有一些我想的事情會我的C#應用程序更具可讀性和不言自明:
foreach
環插入LINQ 語句。此外,有關涵蓋這些主題的書籍的建議將不勝感激。
我建議你看看Robert C Martin的Clean Code。這是一本致力於編寫可讀代碼的書。強烈推薦,如果你問我。
Resharper也非常有用,因爲它有很多關於命名,減少嵌套等的建議。
除了語法/結構方面的考慮,一致性是非常重要的 - 代碼樣式和格式偏好各不相同,這很好,但在一個項目中,您應該標準化爲儘可能多的位置以避免在閱讀碼。
我爲可讀代碼而努力的主要原因是變量名稱,它使變量和方法名稱變得明顯,明確了方法的作用。
如果你的if語句和for循環太大,那麼用合理的名稱將它們的內部重構爲新的metods。
使用具有默認值的命名參數的方法可以幫助清除重載,這通常會導致更少的代碼。我自己也這麼做。也使得界面更易於閱讀和使用。
如果一個foreach或其他循環只是說了一些關於循環條目的內容而不是一般的方法,我經常會將循環體重構爲新的方法。這使得第一種方法更易於閱讀。
反轉if語句以減少嵌套可以使您的代碼更易於閱讀。
if (!something) return;
// more code here
這可以去掉括號和1-2行。
如果方法變得太大,請將其重構爲更小的方法。
使方法和變量名稱自相矛盾。
使用描述性變量和函數名稱。
將大的函數分解爲子函數,以便將屬於一組的語句分組在一起,這可以很好地用於代碼重用。
儘量保持函數儘可能平坦,並將嵌套推入不同的函數,這樣每個嵌套層次都可以獲得自己的描述性函數名稱。
我儘量避免嵌套多個if和for在同一個函數中。 如果你有一個大的部分,嘗試重構的部分自己的功能。 這樣if會更容易理解,任何解釋都可以在真/假函數名稱中。
不要總是轉換爲linq,大的linq語句通常更難以閱讀,然後使用if結構和可能的變量讀取正常的循環。
對臨時數據使用變量而不是在語句周圍包裝語句。這既增強了可讀性,也爲您提供瞭解釋臨時變量的機會,並且使得調試更加容易,因爲該行將精確定位語句而不是集合或嵌套語句。
我從Prentice Hall那裏讀到一本關於它的名爲「Clean Code」的相當不錯的書,這本書深入到這裏。
我一直使用Resharper,它非常方便。我只想知道爲什麼微軟默認情況下並沒有將大部分Resharper功能放入VS中。 – Vitalij 2010-10-22 11:36:19