.NET開發中應該遵循的幾點建議

1、始終控制類的大小

那些超大的類在嘗試做太多的事情,這違反了單一職責原則, 為什么一定要將兩個職責分離到單獨的類中呢?因為每一個職責都是變化的中心。在需求變更時,這個變更將會出現在負責該職責的類中。如果一個類承擔了多個職責,就會有一個以上的原因導致其變化。如果一個類有多重職責,則說明這些職責已經耦合到了一起。并且某個職責的變化將有可能削弱或限制這個類滿足其他職責的能力。這種耦合將會導致非常脆弱的設計,進而在職責發生變化時,設計可能被意想不到的破壞了。

2、避免不需要的注釋

不同水平的開發人員可能都會有自己的見解。可以嘗試避免為單獨的方法或短小的類進行注釋,通常開發人員通過寫注釋來提高代碼的可讀性和可維護性,但要保證你所寫的注釋不會成為代碼中的噪音。

3、避免不必要的Region

Region 是 Visual Studio 提供的一個功能,它允許你將代碼分塊。Region 的存在是因為它可以使大文件導航變得容易。Region 還常被用于隱藏丑陋的代碼,或者類已經膨脹的非常大了需要分塊。而如果一個類做了太多的事情,也就說明其違反了單一職責原則。所以,下次當你想新增一個 Region 時,先考慮下有沒有可能將這個 Region 分離到一個單獨的類中。

4、控制方法的代碼量

方法中的代碼行數越多,則方法越難理解。抽取方法是最常見的重構方式之一,如果你發現一個方法過長,或者已經需要一個注釋來描述它的目的了,那么你就可以應用抽取方法了。人們總是會問一個方法到底多長合適,但其實長度并不是問題的根源。當你在處理復雜的方法時,跟蹤所有局部變量是最復雜和消耗時間的,而通過抽取一個方法可以節省一些時間。

5、避免方法中過多的參數

通過聲明一個類來代替多個參數。創建一個類,用于包含所有的參數。

//避免

public void Checkout(string shippingName, string shippingCity,

string shippingSate, string shippingZip, string billingName,

string billingCity, string billingSate, string billingZip)

{

//TODO

}

//建議

public void Checkout(ShippingAddress shippingAddress, BillingAddress billingAddress)

{

//TODO

}

6、避免復雜的表達式

復雜的表達式意味著其背后隱藏了一些涵義,我們可以通過使用屬性來封裝這些表達式,進而使代碼更易讀些。

7、把警告等同于錯誤來處理

我們編譯工程后會得到一個警告,但仍可以運行工程而不會發生任何錯誤。但是我們應該盡可能地移除這些警告。

8、精簡多處返回

在每段程序中都減少函數返回的數量。假設從底部開始閱讀代碼,你很難意識到有可能在上面的某處已經返回了,這樣的代碼將是非常難理解的。

僅使用一處返回可以增強可讀性。如果程序這么寫的話可能看起來比較干凈,但不立即返回也意味著需要編寫更多代碼。

9、使用斷言

在軟件開發中,斷言代碼常被用于檢查程序代碼是否按照其設計在執行。通常 True 代表所有操作按照預期的完成,False 代表已經偵測到了一些意外的錯誤。斷言通常會接收兩個參數,一個布爾型的表達式用于一個描述假設為真的假定,一個消息參數用于描述斷言失敗的原因。

尤其在開發大型的、復雜的高可靠系統中,斷言通常是非常有用的功能。

歡迎關注我的公眾號(同步更新文章)DoNet技術分享平臺

閱讀原文

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272739.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272739.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272739.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux下jetty報java.lang.OutOfMemoryError: PermGen space及Jetty內存配置調優解決方案

Linux下的jetty報java.lang.OutOfMemoryError: PermGen space及Jetty內存配置調優解決方案問題linux的jetty下發布程序后再啟動jetty服務時,發現啟動不了,從日志中找到報java.lang.OutOfMemoryError: PermGen space。原因分析PermGen space,全…

微博php sdk,手機第三方新浪微博登錄php api實現分析

提供api,POST方式,根據傳遞過來的微博uid/appkey,判斷該用戶的ID是否在自己的數據庫中。如果有,直接登錄返回用戶登錄api的json。如果沒有,就將該用戶的IDtoken請求微博用戶信息api:http://open.weibo.com/…

13條只有程序員才能懂的內涵段子

一、bug跟蚊子的相似之處:1、不知道藏在哪里。2、不知道有多少。3、總是在你即將睡覺休息的時候出現。二、A:最近在看《一拳超人》,覺得咱們程序猿跟埼玉老師有點像啊!B:哪里像了?A:越禿越強&am…

Posix消息隊列

一、函數 mq_open 頭文件 mqueue.h; 原型 mqd_t mq_open(const char *name, int oflag, .../*mode_t mode,struct mq_attr* attr*/); 函數功能 創建消息隊列; 參數 name :消息隊列的名字,根據消息隊列的規則,為了更好的…

php 等值線,【地理】攻克等值線的六大法門

3.等值線數值大小的判斷方法(1)通常情況下,據圖中已標注的等值線進行分析標注,標注時注意:①等值線數值的遞變規律;②相鄰兩條等值線差值的大小。(2)在閉合的等值線上,除據以上方法判斷外,還可用“大于…

4步win7下簡單FTP服務器搭建(試驗成功)

本文介紹通過win7自帶的IIS來搭建一個只能實現基本功能的FTP服務器,第一次裝好WIN7后我愣是沒整出來,后來查了一下網上資料經過試驗后搭建成功,其實原理和步驟與windows前期的版本差不多,主要是對新的操作系統還不是很熟悉。相信用…

C#開發模式——單例模式

一、單例模式簡介單例模式是為保證一個對象,在程序運行的任何時刻只有一個實例存在,我們把這種實現方式稱之為“單例模式”。二、單例模式的核心單例類只有一個實例存在單例類提供一個全局訪問點單例類通過自己創建唯一實例單例類對外所有訪問對象都提供一個唯一實例…

video.min.js php,在WordPress中使用videojs來播放七牛私有空間視頻

首先,在主題函數文件functions.php中添加一個獲取七牛下載憑證的函數。這部分參考function qiniu_download_url($url){$url trim($url, /);$deadline strtotime(1 hour);$url sprintf(%s?e%s, $url, $deadline);$sign hash_hmac(sha1, $url, SECRET_KEY, true)…

關于HTTP和HTTPS的區別

一HTTP和HTTPS的基本概念1、HTTP:是互聯網上應用最為廣泛的一種網絡協議,是一個客戶端和服務器端請求和應答的標準(TCP),用于從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議,它可以使瀏覽器更加高效&#xf…

Android 實現切換主題皮膚功能(類似于眾多app中的 夜間模式,主題包等)

首先來個最簡單的一鍵切換主題功能&#xff0c;就做個白天和晚上的主題好了。 先看我們的styles文件&#xff1a; 1 <resources>2 3 <!-- Base application theme. -->4 <style name"AppTheme" parent"Theme.AppCompat.Light.DarkAction…

訂閱號 圖文回復php,微信開發(PHP實現訂閱號的公眾號配置和自動回復)

首先在微信公眾平臺(網址&#xff1a;https://mp.weixin.qq.com)申請一個訂閱號&#xff0c;然后在開發里找到開發者工具點擊公眾平臺測試賬號&#xff0c;在測試賬號內進行微信開發實驗。 1. 設置一個自己的有效的域名網址和TOKEN(就是暗號)&#xff0c;TOKEN一定要與PHP代…

為何技術領域中女程序員較少?

對于大多數人來說&#xff0c;他們意識中的科技人就是扎克伯格&#xff0c;喬布斯或者是比爾蓋茨——經常出現在新聞里的典型的男科技企業家。其實在科技領域還有一些女性&#xff0c;比如蘇珊沃西基&#xff08;YouTube的CEO&#xff09;和吉尼羅曼提&#xff08;IBM的CEO&…

This version of MySQL doesn't yet support 'LIMIT IN/ALL/ANY/SOME subquery 解決方法

This version of MySQL doesnt yet support LIMIT & IN/ALL/ANY/SOME subquery的意思是&#xff0c;這版本的 MySQL 不支持使用 LIMIT 子句的 IN/ALL/ANY/SOME 子查詢&#xff0c;即是支持非 IN/ALL/ANY/SOME 子查詢的 LIMIT 子查詢。 也就是說&#xff0c;這樣的語句是不能…

php 遞歸分銷角色,PHP遞歸無限分類

我們面試程序開發的時候&#xff0c;經常會被問到遞歸的問題。今天我們在本文中以“素材火的特效分類表”作為演示&#xff0c;使用PHP遞歸結合Mysql實現無限級分類。難易&#xff1a;初級下載資源下載積分&#xff1a;50積分遞歸簡單的說就是一段程序代碼的重復調用&#xff0…

Android音頻系統之AudioPolicyService

地址&#xff1a;http://blog.csdn.net/edmond999/article/details/18599327 1.1 AudioPolicy Service 在AudioFlinger小節&#xff0c;我們反復強調它只是策略的執行者&#xff0c;而AudioPolicyService則是策略的制定者。這種分離方式有效地降低了整個系統的藕合性&#xff0…

程序員常去的14個頂級開發社區

我們來看一下程序員經常去的 14 個頂級開發者社區&#xff0c;如果你還不知道它們&#xff0c;那么趕緊去看看&#xff0c;也許會有意想不到的收獲。一、Stack Overflow9 月份&#xff0c;Stack Overflow 也將迎來其 6 歲的生日&#xff0c;毫無疑問&#xff0c;Stack Overflo…

basename php 中文,php basename不支持中文怎么辦

不久前遇到一段代碼使用了basename&#xff0c;我文件名是中文的&#xff0c;每次返回都只有后綴。后來發現basename函數有貓膩&#xff0c;不支持中文文件名&#xff0c;但凡有以中文開頭的文件名將被忽略了。函數說明/*** 從路徑中返回文件名* param string $path* 在Windows…

C#特性-表達式樹

表達式樹ExpressionTree 表達式樹基礎 轉載需注明出處&#xff1a;http://www.cnblogs.com/tianfan/剛接觸LINQ的人往往覺得表達式樹很不容易理解。通過這篇文章我希望大家看到它其實并不像想象中那么難。您只要有普通的LINQ知識便可以輕松理解本文。表達式樹提供一個將可執行代…

程序員的一個好習慣,你有幾個?

在很多外人看來,作為我們程序員這個行業只要會敲代碼會改bug基本就可以了&#xff0c;但是現在行業人員幾近飽和&#xff0c;沒有過硬的幾把刷子就想著可以甩掉身后的大部隊也是不可能的。所以說我們要不斷的學習不斷的充實自己讓企業在裁員的時候壓根就考慮不到我們的頭上來。…

matlab四維圖程序,Matlab 四維圖形繪制

這個問題可以用slice命令實現&#xff1a;%%%%%%clear all[x,y,z] meshgrid(0:.5:10,0:.5:10,0:.5:10);c x.^2y.^2z.^2;xs [0,2,4,6,8,10];ys [4];zs [6]; % xs,ys,zs可決定切片形式和位置&#xff0c;help slice可明白其具體含義slice(x,y,z,c,xs,ys,zs)colormap hsv當然…