這陣子給自己比較高的學習功課,由早上的 Java/JSP,公司上班時抽空看 FLEX mxmlc 的文件,到回家翻翻 Linux 的書,一開始覺得吃力,但是多少有些進步。但是最終打亂整個節驟的依然是工作上的事情。
因為人力不足,再加上我不放心別人去作最核心的規劃,所以就變成大方向和最前線工作都要同時面對,又再一次讓我感受到「心力交悴」。和以往不同,這次沒有什麼退路可以說休息一下,硬撑個一兩周的就讓我的腦袋有種「轉不過來」以及「常常空轉」的感覺。
當然直接導致本來開始變多的文章想法,又停了下來。
物件導向是一個的滿深的學問,個人的經驗告訴我,那是個得靠不斷實作,不斷試著改進現有程式、方法的努力才能學會。說穿了其實本質很單純,就是要開發出「穩定」且「有彈性」的程式,並且在日後的修改,能夠更從容的面對。
穩定來自於功能單元化,讓每個單元的程式運作正常,因為單元的範圍不大,所以可以有效提供撰碼人員的注意力。寫程式的也是人,在有許多干擾的環境,是無法好好地把程式寫出來的,而腦中有其它類別,還要思考專案需求,這一切都是會影響注意力,讓人難以寫出好程式。
而彈性則是預留機制,讓未來的擴充有機可循,在一個軟體之中,總是可以區分出部分程式是程式無論如何改變都不會缺少的。像是網路購物商城一定會有使用者身分驗證機制,其最終的產物「使用者物件」是需求再怎麼變化都不會改變的。而將「使用者物件」和「身分驗證機制」分開,有助於在驗證方式改變時,能夠專注修改「驗證」的程式,而不需處理「使用者物件」也不用擔心許多和「使用者物件」有關連的程式。
要達到好的單元化和彈性,規劃工作要下的功能就不能少。由一團混雜的需求、規格中間去找出最核心,最根本的功能單元,定義其需要使用的類別,和類別之間的關係。其中讓我覺得最麻煩的,要屬於「面對未知及未來的需求」。
每個人或多或少都會有些想像力,看到功能就想到可能的應用,本身不是一件很困難的事情,不過現實告訴我們程式和羅馬一樣不可能一天造成。所以得去作取捨,哪些功能是要先預留功能,哪一些功能是要先忘掉,免得多作許多無謂的白工。
每一項規劃工作,都要不斷不斷的回想從前學過的所有設計原則,語法規則…反覆驗證。誰叫我現在還是這領域的菜鳥,寫出來的程式是令人滿有成就感的,但是腦袋會累到完全不想再去思考任何事情。未來當然還是往物件導向的方向去努力,希望過了這一關,後面的學習會順利一些。
沒有留言:
張貼留言