天天看點

程式江湖:第十章 三人吵出的設計

有代碼的地方,就有程式員,有人的地方就有江湖。IT職場,不一樣的江湖。

歐陽明一直以為知道面向對象程式設計,就可以天下無敵了。至少,抛去自己的修煉問題,面向對象程式設計(OOP)應該是最好的武功了。可是,面對一個大型系統的設計,他發現無從下手。

這裡面固然有經驗的問題,他也确實遇到了瓶頸。設計和程式設計,不是一個領域的。

俗話說,有了老大,打遍天下都不怕。有朱老大帶着,感覺沒問題。不過說起來,歐陽明真是天将降大任,正好趕上非典。而他們的工作環境是在一個小區裡面封閉。每天都在屋子裡,擔驚受怕。中午出去吃飯也是如此。做捷運公交的,都會随身帶着口罩。口罩有段時間都脫銷了,還報道有黑心棉的口罩出現。公司也給歐陽明他們發了一些,但是都沒用上。

發生非典是在春天。北京的春天,刮一下大風,更顯得非典之後的荒涼。朱老大開玩笑說,在這鳥不拉屎的地方,非典也是不會來的。不過後來朱老大還是用上了口罩,因為他感冒流鼻涕了。工作中也帶着,因為呼吸難受,是以還把口罩上面掖在鼻孔下面,友善出氣。看上去特别有意思。

設計就這樣開始了。朱老大先聽一遍需求,然後用用例圖(Use Case)了解一遍,然後再用順序圖,了解一下業務流程。到具體的業務子產品,用包進行分組管理,在每個包内,進行相對的獨立設計。

畫圖的技巧,基本上邊讀書,邊了解,很快就達成一緻認可了。但是關于一些具體的設計,就不容易達成一緻了。

有一次遇到一個問題,關于有彙總關系的兩個類的組織。小祝認為因為彙總關系,字段都差不多,不如直接繼承。歐陽明認為既然不一樣,還不如再抽象一個基類。朱老大來投決定性一票。但是老大就是不一樣。他先和他們讨論原則問題。

“這兩種方法是不是都能解決問題?”

“是的。”小祝和歐陽明都承認。

“那我們是不是應該看看,什麼情況下應該是繼承,什麼情況下不應該?”

于是這個問題,就換成了,上級彙總類,是不是下級類的一個子類,即“IS-A”的判斷。這一下子轉換成了一個業務問題,問題就簡單多了。

不過朱老大也不是萬能的。有一次遇到一個問題,小祝和歐陽明同樣吵得不開交,朱老大聽了之後,表示無法判斷。隻能邀請在旁的土博士參與進來,進行了一個傾向性判斷。關于這件事,歐陽明還當面嘲笑了一下朱老大,沒想到朱老大給他們深深地上了一課。

“如果兩個方案,以10為總權重,一個1,一個9。權重越大表示越好。你們會選擇誰?”

“當然是9。”兩個人異口同聲。

“如果是3和7呢?”

“還是7。”

“那麼,如果是4和6呢,或者5和5呢“

“我選6,如果都一樣,就無所謂了。”歐陽明似乎有點感悟。

“但我可以選4。”朱老大卻出人意料的說出這樣一句話。

“為什麼?”又是異口同聲,但這次是驚訝。

繼續閱讀