Re: [請益] 如何學習物件導向?

看板Soft_Job作者 (真.粽子無雙)時間8年前 (2015/08/13 16:01), 編輯推噓3(304)
留言7則, 4人參與, 最新討論串6/9 (看更多)
※ 引述《dnabossking (少狂)》之銘言: : 自認邏輯算好,也還算能寫程式 : 在學校真正念過資工相關課程只有C語言和計概 : 雖然非本科生,但QUEUE、STACK、BFS、DFS、 : 最短路徑、HEAP TREE、二元樹、紅黑樹、各種搜尋、排序 : 一些資料結構、演算法都在大四那年開始自學, : 競賽的題目也會常常寫(都是用C) : 一開始是因為想考資工所,後來沒考上理想學校,就直接出來工作啦 : 最近畢業,決定進入軟體業,求職也還算順利 : 本來在金融業IT,待遇福利和發展都還覺得不錯(穩定) : 但實不喜歡他們寫的東西(RPGLE一種古老的語言), : 覺得自己不像在寫程式,比較像是在做文書處理,逐決定"趕快"換公司 : 到新公司一個多月了,接觸物件導向也一個多月了 : 公司前輩人也不錯,上班氣氛也良好,是間新創 : 要我寫的程式,大致上也都寫的出來 : 在討論完流程後,我會思考需要用到的功能,寫成一堆副程式的集合 : 然後在主程式一一呼叫 > 測試沒問題 > 結束 >下一個任務。 : 但最近前輩說這樣很死、很不物件化, : 說我寫的程式一直在"逃避"(其實是不會)物件導向 : ===================================================== : 我自己也知道,這一點也不物件化......... : 類別、建構涵數、繼承、多載、 : 多型、介面、委派、事件、抽像、TRY CATCH : 這些全部我都自學過, : 我甚至能"單獨"的寫範例講解怎麼使用它們 : (因為我也只看過單獨使用的教學) : 但是到底要怎麼利用這些東西, : 把這些功能組合起來,完成一個專案 : 我真的不會。 : 完全不懂自己到底欠缺什麼 : 不想再被前輩說"逃避"了,請版上大大們給些指點。 如果要學習OO,把你所知道的 "類別、建構涵數、繼承、多載 ..."等等一堆技術 方法兜出一個專案的話,我是很推去看侯傑的有關OO的書,作為基礎 接著你必須要接觸 UML / design pattern 等知識,尤其我個人是推先學何謂UML,這是 一個讓你開發思維開始導入物件化的一個開始 或許等你對UML有一定的了解,有基礎的物件化思維後,回頭看你寫的程式,可能會發現 其實你寫的東西並不代表沒有物件化,雖然你沒有用到任何所謂類別,繼承,多載什麼的 目前打code界,討論OO,型而上的,就是討論OO的精神,有沒有做到物件化,有沒有做到低 耦合,漂亮的封裝,以及高度可重用性等等,型而下的,就會吵到說要用哪類的程式語言, 然後吵多重繼承比較好還是單一繼承比較好等等偏技術性的東西 不要為了OO而OO,尤其是在型而下的世界,很多主管看你沒有用物件化程式語言或沒有遵照 大師建議的design pattern,或你沒有用MVC開發模式,你就被幹爆,叫你重寫,但我是覺得 ,型而上的來說,只要有完美的封裝,做到高度可重複利用,低耦合性,就算你的程式沒有建構 子/解構子,你的程式沒有template style又怎樣?只要你有心,組合語言也能OO(型而上的) ,linux kernel 整份用C來寫,但是整個code的設計模式是非常OO的 更不用說現在這個時代,又不是只有OO概念才能寫出好維護好理解的程式 以上 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.228.151.2 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1439452908.A.83D.html

08/13 16:14, , 1F
推"不要為了OO而OO",不過OO還是很值得學
08/13 16:14, 1F

08/13 16:15, , 2F
OO我覺得不容易精通,但若學得半調子就對其嗤之以鼻...
08/13 16:15, 2F

08/13 16:16, , 3F
只是令人覺得科科而已XD
08/13 16:16, 3F

08/13 18:15, , 4F
基本上同意前輩的說法,但缺語言直接的支援還是有差
08/13 18:15, 4F

08/13 18:18, , 5F
我個人是不太喜歡macro magic...對debug來說不友善
08/13 18:18, 5F

08/13 18:59, , 6F
function pointer包n層還帶ifdef之類也不太好debug…
08/13 18:59, 6F

08/13 20:59, , 7F
感謝大大的指點
08/13 20:59, 7F
文章代碼(AID): #1Lp4xiWz (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1Lp4xiWz (Soft_Job)