方法有多少個引數才算多?

2022-03-13 14:23:19 字數 2501 閱讀 2575

小弟有這樣乙個方法,按頁大小和頁索引查詢產品,如下。

//////

獲取產品

//////

廠商id,為null時不做查詢條件。

///類別id,為null時不做查詢條件。

///型別id,為null時不做查詢條件。

///產品名稱,模糊匹配。

///描述,模糊匹配。

///頁大小

///頁索引

///public

datatable getproduct(

int?

manufacturerid,

int?

categoryid,

int?

typeid,

string

name,

string

description,

intpagesize,

intpageindex)

可以看到小弟這個方法引數比較多,有7個,這時有人就說了:「這麼多引數,應該封裝成乙個物件傳遞!」要寫成下面這個樣子。

public

class

queryproduct

set}

private

int?

categoryid;

//////

類別id,為null時不做查詢條件。

///public

int?

categoryid

set}

private

int?

typeid;

//////

型別id,為null時不做查詢條件。

///public

int?

typeid

set}

private

string

name;

//////

產品名稱,模糊匹配。

///public

string

name

set}

private

string

description;

//////

描述,模糊匹配。

///public

string

description

set}

private

intpagesize;

//////

頁大小///

public

intpagesize

set}

private

intpageindex;

//////

頁索引///

public

intpageindex

set}

}///

///獲取產品

//////

查詢條件

///public

datatable getproduct(queryproduct query)

小弟心裡就想了 ,這才幾個引數,連10個都不到,封裝成乙個物件有必要嗎?

下面是各自對問題的看法

應該封裝成物件:

1.不封裝成物件,**看起來很亂。

2.可維護性強,以後這個方法如果需要加查詢引數,只需要在queryproduct類中增加乙個屬性即可,方法不用改。

3.方法的引數越少越好,能少乙個,絕不多乙個。

4.方法的引數超過3個就要封裝成物件。

應該直接傳遞引數:

1.直接將查詢條件寫在方法引數上,可讀性強,便於後來人維護。

2.封裝成物件,專案中就需要增加乙個物件,物件越多,越不利於維護,10個以內的引數,如果沒有特殊原因,不需要封裝成物件。

3.這裡的引數每乙個都有業務意義,並不是要持久化到資料庫的實體屬性,在數量不多的時候,不應該封裝成物件。

下面是小弟對「應該封裝成物件」一派3個理由的回覆

1.不封裝成物件,**看起來很亂。

一點都不亂,封裝成物件反倒增加了閱讀成本。

2.可維護性強,以後這個方法如果需要加查詢引數,只需要在queryproduct類中增加乙個屬性即可,方法不用改。

可維護性絕對沒有增強,反倒因為專案中多了一堆查詢條件物件,增加了閱讀成本,降低了維護性。當增加查詢條件時,改了查詢物件的定義,方法的引數就變了,方法也100%的變了,只是方法的**沒改,但方法的定義已經改了,這完全沒有優勢。都是改**,都是改方法的引數,都改變了方法的定義。

3.方法的引數越少越好,能少乙個,絕不多乙個。

這裡沒有乙個引數是多餘的,少任何乙個引數都不能滿足需求,方法的引數越少越好是毋庸置疑的,但絕不是用這種坑爹的方式減少引數。

4.方法的引數超過3個就要封裝成物件。

是否要將引數封裝成物件,不能只看引數的數量,還要看它的業務意義,作為資料載體的實體類,即使只有兩個屬性,也要用物件傳遞。但像這種,不需要持久化,而且每個引數都有各自的業務意義,沒有特殊原因,就應該寫在方法的引數列表裡。

關於這個問題,小弟希望看看大家是怎麼對待的,希望大家能在回覆時除了表述自己的觀點,同時告知在專案中會採取哪種方式。

C 多執行緒多少個執行緒算多?

程式一啟動就建立了60個執行緒,太多了,應該控制一下。也有同學提出不同意見,說執行緒多不是問題,別把它當成指標,盯住記憶體 cpu才是正經。使用多執行緒,為的是提高執行效率 那麼,是不是執行緒越多越好呢?哪種實現方案更好呢?別急!執行緒在建立和銷毀時的開銷 windows的做法是,把cpu時間切成小...

四川省有多少個市,有多少個縣

2007年底,四川省轄18個地級市 3個自治州 共計21個地級單位 43個市轄區 14個縣級市 120個縣 4個自治縣 共計181個縣級單位 成都市 成華區 武侯區 青羊區 錦江區 金牛區 龍泉驛區 青白江區 新都區 雙流縣 郫縣 溫江區 大邑縣 金堂縣 蒲江縣 新津縣,都江堰市 彭州市 崇州市 邛...

N 末尾有多少個零

題目一 210 最後結果有幾個零。請自己思索10分鐘以上再看解釋 凡是這種題目必有規律可言,關鍵是你找到這個規律的恆心。可採用笨拙的方法思考。1 1 無0 2!2 1!2 無0 3!3 2!6 無0 4!4 3!24 5!5 4 120 有了乙個零 思考這個0是怎麼出現的 5與乙個偶數相乘得到的結果...