本節書摘來自異步社群《jquery easyui開發指南》一書中的第10章,第10.5節,作者:王波著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視
在java web的開發中,總不會是一帆風順的。有時候,明明公司的産品做得非常出色,可仍然會有客戶提出定制化的方案。當然,産品如此,項目面臨的壓力就更大了。作為一個軟體工程師,首先,需要有大局觀,在接到需求的時候,不要慌張,要靜下心來,對這個需求進行一次全方位的分析,然後,總結出一兩套方案。有時候,大家的讨論也很重要,一個人的力量畢竟有限,如果集思廣益,就可以避免很多彎路。舉個典型的例子,開發站内信的功能。
在接到站内信的需求時,有些開發人員肯定會慌張,心想,怎麼會接到這樣一個棘手的需求呢?其實,作為一個軟體工程師,大家都會有這樣的心态,但躲得了一時躲不了一世,該來的總會來,與其抱怨,還不如勇敢面對。
首先,可以分析一下這個需求。站内信,如果需要做一個群發功能,該怎樣實作呢?有些人首先聯想到的就是類似于發郵件這樣高大上的功能。其實,并不是這樣的。翻翻網上的資料,就有簡單的實作方式。例如,在做群發的時候,可以把管理者群發的每一條資訊,都統一放在一張表裡。如果有使用者登入,并且打開自己的信箱,就可以去這張表裡查找最新的資訊,如果有的話,就讓它顯示;如果沒有,就不顯示,這不是一個很簡單的方案嗎?在完成了這個基本功能後,複雜的需求也就會變得簡單了。
例如,怎樣确定一條資訊是否被檢視了呢?在使用者單擊“檢視”的時候,不管使用者是否真地檢視了,隻要他觸發了那個動作,就可以把這條資訊置為已檢視,在對應的資料庫字段裡做一個更改。這樣的話,當使用者再次進入信箱時,這些已經查詢過的資訊,不就可以通過簡單的sql語句來過濾掉了嗎?
如果客戶提了新的需求,要支援删除資訊,又該怎麼辦?其實,隻要完成了基本的功能,表結構設計合理的話,這些都可以實作。在考慮這個問題的時候,就需要聯想到,如果删除了某條資訊,那麼會不會所有人的這條資訊都被删除呢?如果不做控制,答案是肯定的。隻要某個使用者删除了這條資訊,所有人都不會看到了。
為此,可以在某個使用者登入的時候,使用遊标,将所有他沒有的資訊,統一生成一次,并且增加屬于該使用者的字段。這樣的話,就可以完美地解決這個問題了。當某個使用者删除一條資訊時,隻需要在資料庫中删除該使用者所擁有的這條資訊即可。而這個問題的關鍵,就是在資訊的記錄中增加使用者字段,表明資訊的所有者。
綜合起來,程式員的分析能力是非常重要的。所謂分析,就是把複雜的需求,分解成若幹個獨立并且互相關聯的子產品,并且可以串成一個整體。在開發的時候,也要注意,從最基礎的、最重要的做起,隻有把基礎功能做好了,往上疊加的内容才可以暢通無阻,這就跟修建房屋是一個道理。如果有了很強的分析能力,并且開發能力也不差,那麼,完成一個需求就算多花點時間,也不至于搞不出來。程式員要面對的需求是紛繁雜亂的,但總而言之,很多東西,都是可以複用的,這跟easyui插件是一樣的,在平時的工作當中,要善于積累,把一個完整的功能子產品的實作步驟牢牢地寫下來,做成一個demo,這樣的話,下次遇見類似的功能,就可以很快地解決了。當然,也不介意問項目經理多要點時間,然後,僞裝成很忙的樣子。