Re: [請益] 如何學習物件導向?
※ 引述《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
08/13 16:14, 1F
→
08/13 16:15, , 2F
08/13 16:15, 2F
→
08/13 16:16, , 3F
08/13 16:16, 3F
推
08/13 18:15, , 4F
08/13 18:15, 4F
→
08/13 18:18, , 5F
08/13 18:18, 5F
→
08/13 18:59, , 6F
08/13 18:59, 6F
推
08/13 20:59, , 7F
08/13 20:59, 7F
討論串 (同標題文章)