最近接手公司服務(wù)端接口的相關(guān)編寫(xiě)工作,遇到了一些問(wèn)題,提出了一些想法,討論了一些問(wèn)題,與項(xiàng)目經(jīng)理在方案選擇上有了一番爭(zhēng)吵(當(dāng)然,這種爭(zhēng)吵是家常便飯的事兒)。特此有了一些心得體會(huì)。
方法入?yún)⒌脑O(shè)計(jì)
我們?cè)谠O(shè)計(jì)程序的時(shí)候,如果使用常規(guī)的分層模型,既Controller、Service、Dao,來(lái)對(duì)項(xiàng)目進(jìn)行分層,一定會(huì)遇到一個(gè)問(wèn)題,就是不同層及之間,數(shù)據(jù)傳遞,即每個(gè)方法的“入?yún)ⅰ睉?yīng)該怎么設(shè)計(jì)。
我曾待在一家從事銀行系統(tǒng)開(kāi)發(fā)的公司,項(xiàng)目有一個(gè)很大的特點(diǎn),它并非使用C、S、D來(lái)進(jìn)行分層開(kāi)發(fā),當(dāng)然這不是重點(diǎn),重點(diǎn)是它雖然使用Java,但是大部分不以面向?qū)ο蟮男问絹?lái)編寫(xiě)程序,項(xiàng)目中隨處可見(jiàn)的是static的靜態(tài)方法,幾乎什么功能都可以用靜態(tài)方法來(lái)完成,我的理解它已然是一個(gè)用java以面向過(guò)程的思想開(kāi)發(fā)的項(xiàng)目。這個(gè)項(xiàng)目在方法之間傳遞數(shù)據(jù)時(shí),不適用對(duì)象封裝,而是采取多個(gè)入?yún)⒌男问剑院艹R?jiàn)的就是要一個(gè)方法,有N多個(gè)入?yún)ⅲ?個(gè)是常見(jiàn)、10個(gè)都不特殊。這種方式來(lái)編寫(xiě)方法,有一定的缺點(diǎn):
在閱讀代碼的時(shí)候,經(jīng)常會(huì)不明白參數(shù)的意義,而需要仔細(xì)的去看javaDoc上的注釋?zhuān)绊懶剩?/p>
調(diào)用一些工具時(shí),因?yàn)椴皇且悦嫦驅(qū)ο蟮姆绞饺ピO(shè)計(jì)程序,所以所有變量的作用域自然只在方法體內(nèi),于是對(duì)于一些需要設(shè)置參數(shù)的工具,簡(jiǎn)單的例如:分頁(yè)工具,就需要通過(guò)一大堆的入?yún)?,?jīng)常會(huì)搞不懂入?yún)⒌囊饬x,每次調(diào)用起來(lái)需要重新設(shè)置一大堆的參數(shù)值;或者使用一個(gè)Map來(lái)裝載這些參數(shù),這樣帶來(lái)的問(wèn)題就是你甚至不知道有什么參數(shù)需要設(shè)置,經(jīng)常會(huì)出現(xiàn)錯(cuò)誤。