把boolean 引數放到最後面

2021-06-09 03:54:14 字數 1505 閱讀 7428

每當我看到乙個方法呼叫如下:

enum.tryparse(stringrepresentationofenum, true, out enumvalue);

我就會想這個』true』 引數代表的是什麼意思呢。在這個例子中,基於我過去的經驗我知道在這個方法中它代表的是ignorecase 引數。

但是,如果這是乙個你從未見過的完全不同的方法呢:

service.dooperation(datetime.now, true, false, false, true, currentvalue, username);

這是乙個特別***的方法。但是假設一下這就是這個方法必須要的簽名,可悲的是,在這個方法想要明白boolean 引數的值的含義很難,

假設我們不能改變介面,我們還能做什麼來讓**更清楚呢?

首先,我們可以為每個boolean值傳遞命名好的變數:

bool includeheader = true;
bool checksecurity = false;
bool validatedate = false;
bool firecompletionevent = true;
service.dooperation(datetime.now, includeheader, checksecurity, validatedate, firecompletionevent, currentvalue, username);

除了**有點不簡潔外,這的確好了很多。

當然在c# 4.0 中,我們不需要這樣做,相反我們可以使用命名引數:

service.dooperation(datetime.now, includeheader: true, checksecurity: false, validatedate: false, firecompletionevent: false, currentvalue, username);

不幸的是,它並不能如期的轉印機正常執行 - 最後面的兩個引數無法出現在命名引數的後面。

這意味著我們必須新增一些額外的**:

service.dooperation(datetime.now, includeheader: true, checksecurity: false, validatedate: false, firecompletionevent: false, currentvalue: currentvalue, username: username);

這就是為什麼我建議把布林引數放到引數列表的最後的原因:

service.dooperation(datetime.now, currentvalue, username, includeheader: true, checksecurity: false, validatedate: false, firecompletionevent: false);

這的確清楚多了,但它確實需要你在設計你的方法簽名時牢記這一點。

把自己放到最低層

高中的時候學過能量最低原理,大學的時候上化學課又複習了一遍,今天,我還有幾個月就要畢業滾蛋了,之所以又提起能量最低原理,是因為我今天晚上看到了一篇文章 女生日記 留學英國 你要把自尊放到最底線,link http kqtop.bbs dispbbs.asp?boardid 12 id 87 or h...

Linux 把任務放到後台

公司用的伺服器,只能ssh遠端操作,每天都會自動退出賬戶,不知道怎麼回事兒,很鬱悶。所以每天早起重新登入後發現程序已經關閉了,因為你執行的任務是和terminal關聯在一起的,terminal關閉後,你執行的任務自然就關閉了。為了避免此事件發生,需要把任務放到後台執行,方法如下 nohup comm...

把hexo放到docker上

目的是為了每一次重灌系統不需要重新安裝hexo的環境,下個docker就可以用了。docker pull registry.cn hangzhou.aliyuncs.com wuhulala website啟動容器 docker run p 4000 4000 name website v g da...