看板 terievv
作者 標題 標題 [請益] 如何學習物件導向?
時間 2015-08-15 Sat. 06:20:48
看板 Soft_Job
作者 標題 [請益] 如何學習物件導向?
時間 Wed Aug 12 22:42:47 2015
自認邏輯算好,也還算能寫程式
在學校真正念過資工相關課程只有C語言和計概
雖然非本科生,但QUEUE、STACK、BFS、DFS、
最短路徑、HEAP TREE、二元樹、紅黑樹、各種搜尋、排序
一些資料結構、演算法都在大四那年開始自學,
競賽的題目也會常常寫(都是用C)
一開始是因為想考資工所,後來沒考上理想學校,就直接出來工作啦
最近畢業,決定進入軟體業,求職也還算順利
本來在金融業IT,待遇福利和發展都還覺得不錯(穩定)
但實不喜歡他們寫的東西(RPGLE一種古老的語言),
覺得自己不像在寫程式,比較像是在做文書處理,逐決定"趕快"換公司
到新公司一個多月了,接觸物件導向也一個多月了
公司前輩人也不錯,上班氣氛也良好,是間新創
要我寫的程式,大致上也都寫的出來
在討論完流程後,我會思考需要用到的功能,寫成一堆副程式的集合
然後在主程式一一呼叫 > 測試沒問題 > 結束 >下一個任務。
但最近前輩說這樣很死、很不物件化,
說我寫的程式一直在"逃避"(其實是不會)物件導向
=====================================================
我自己也知道,這一點也不物件化.........
類別、建構涵數、繼承、多載、
多型、介面、委派、事件、抽像、TRY CATCH
這些全部我都自學過,
我甚至能"單獨"的寫範例講解怎麼使用它們
(因為我也只看過單獨使用的教學)
但是到底要怎麼利用這些東西,
把這些功能組合起來,完成一個專案
我真的不會。
完全不懂自己到底欠缺什麼
不想再被前輩說"逃避"了,請版上大大們給些指點。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.194.192
※ 文章代碼(AID): #1LorjfeU (Soft_Job)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1439390569.A.A1E.html
推 : 物件話就要容易重複使用 你的物件是否和某個功能內聚性1F 08/12 22:47
→ : 高呢?如果下個模組有類似功能你的物件能不能直接用?
→ : 還是可以繼承你的物件後就可以直接使用?還是都要重寫?
→ : 可以往這個方向想一想 或看前輩怎麼寫的
→ : 高呢?如果下個模組有類似功能你的物件能不能直接用?
→ : 還是可以繼承你的物件後就可以直接使用?還是都要重寫?
→ : 可以往這個方向想一想 或看前輩怎麼寫的
推 : 學設計模式吧 入門可看深入淺出5F 08/12 22:49
→ : 不能看前輩的程式,他們都說什麼有機密@@6F 08/12 22:57
→ : 我只能自己寫自己的@@
→ : 我只能自己寫自己的@@
推 : 看別人的project 網路上的tutorial8F 08/12 22:58
→ : 看open source的library怎麼寫
→ : 看open source的library怎麼寫
推 : 去ooad版 雖然文不多 但是總有些線索 然後前輩說不夠物10F 08/12 23:06
→ : 件導向 那你有反問這個功能怎麼寫才物件導向嗎
→ : 件導向 那你有反問這個功能怎麼寫才物件導向嗎
推 : 我覺得OOAD的幾個大原則(SOLID)掌握住,輔以設計模式12F 08/12 23:31
→ : 實際實作之後應該可以有一點想法
→ : 實際實作之後應該可以有一點想法
→ : 請教公司前輩14F 08/12 23:33
→ : 不過我覺得問題比較大的應該是前輩的程式有機密這句話吧15F 08/12 23:33
→ : 讓人不知道該說些什麼,我第一個想法是搞不好前輩也沒多強
→ : 讓人不知道該說些什麼,我第一個想法是搞不好前輩也沒多強
推 : 看別人怎麼用啊,找個 open source 大師的 Java Library17F 08/12 23:40
→ : 保證滿滿物件導向實作 (?
→ : 保證滿滿物件導向實作 (?
→ : 我覺得你可以直接問你的前輩啊,不會就說不會不用怕19F 08/12 23:41
→ : 如果他們OOP都學得不錯的話,應該很簡單可以給你思考方向
→ : 他們既然會覺得你的東西死,肯定使用上就有些預期的想法
→ : 把這些想法跟你說應該沒啥機密不機密的問題吧
→ : 如果他們OOP都學得不錯的話,應該很簡單可以給你思考方向
→ : 他們既然會覺得你的東西死,肯定使用上就有些預期的想法
→ : 把這些想法跟你說應該沒啥機密不機密的問題吧
推 : design pattern23F 08/13 02:06
→ : 應該是你習慣寫c的關係..你多模仿別人寫的..久了就會了24F 08/13 05:30
→ : 如果之前沒有接觸過oo,要跨過這門檻也是要一點時間的
→ : 主要還是高內聚低耦合,重複code不要常出現
→ : 如果之前沒有接觸過oo,要跨過這門檻也是要一點時間的
→ : 主要還是高內聚低耦合,重複code不要常出現
推 : 你缺少看大project的經驗 只會寫功能27F 08/13 08:41
→ : 但這本來就需要時間經驗去堆...
→ : 但這本來就需要時間經驗去堆...
推 : 想法同yfr 搞不好前輩也沒多強 只是想藉著貶低別人顯示29F 08/13 09:21
→ : 自己的厲害 要學oo我也建議設計模式
→ : 自己的厲害 要學oo我也建議設計模式
推 : UML -> Design Patterns -> Software Engineering31F 08/13 11:28
→ : Java
→ : Java
→ : 前輩不跟你說怎麼寫,就貼一段CODE上來給網友鞭阿33F 08/13 12:49
→ : 看看《重構》吧!34F 08/13 16:33
→ : 感謝各位大大的意見,覺得有吸收到一些東西,謝謝35F 08/13 21:01
推 : 看不到前輩的程式是因為沒有版本控管嗎?看程式學最快36F 08/13 22:30
推 : 給你有用的建議:現在開始 不准用複製貼上 包你你就會離37F 08/14 07:26
→ : 不開oop了
→ : 鍵盤上的複製功能
→ : 不開oop了
→ : 鍵盤上的複製功能
看板 Soft_Job
作者 標題 Re: [請益] 如何學習物件導向?
時間 Thu Aug 13 10:45:26 2015
※ 引述《dnabossking (少狂)》之銘言:
: 自認邏輯算好,也還算能寫程式
: 在學校真正念過資工相關課程只有C語言和計概
: 雖然非本科生,但QUEUE、STACK、BFS、DFS、
: 最短路徑、HEAP TREE、二元樹、紅黑樹、各種搜尋、排序
: 一些資料結構、演算法都在大四那年開始自學,
: 競賽的題目也會常常寫(都是用C)
學習OOP,建議您先想想以下兩個問題:
1, OOP的本質為何?
2, 學習OOP的目的為何?
我相信大部分的人在學習OOP之前,都沒有想過這個問題
人云亦云一窩蜂
有很大可能性,只是在自找麻煩
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.71.206.217
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1439433929.A.F03.html
→ : 好像說了什麼,但是其實什麼都沒有說,標準廢話1F 08/13 10:50
→ : 那就表示您跟大部分的人一樣,不知道如何回答這個問題2F 08/13 10:54
→ : 同一樓,人家問你數學解答,你用哲學回人家3F 08/13 11:57
→ : 哲學問題是所有科學的基礎,數學無法告訴您此問題的答案4F 08/13 12:03
→ : 廢文5F 08/13 12:14
→ : 不意外的廢文6F 08/13 12:50
→ : 廢文,我阿罵都說的比你好7F 08/13 12:55
→ : 我論原po不懂OOP的可能性....XD8F 08/13 12:58
→ : 多花幾秒a一下ID你們可以不需要推文XD9F 08/13 13:10
→ : 我反倒很推這篇,一大堆人是該想想了,噹樓主的那個"前輩10F 08/13 13:17
→ : "也應該要想想
→ : "也應該要想想
推 : 這篇才是正解。OO學習曲線過長。並不是好東西。12F 08/13 15:19
噓 : 所以到底為何?13F 08/14 05:09
→ : 這不是隨便一本談論 OOP 的書開頭都會講的事嗎.....14F 08/14 12:51
→ : 當有許多人連要寫什麼程式都還不是很清楚15F 08/14 17:19
→ : 就開始先寫 Class XXX { … } 的時候
→ : 你就知道問題有多嚴重。
→ : 就開始先寫 Class XXX { … } 的時候
→ : 你就知道問題有多嚴重。
推 : 不懂你的問題是有多嚴重...XD18F 08/15 01:29
看板 Soft_Job
作者 標題 Re: [請益] 如何學習物件導向?
時間 Thu Aug 13 12:26:11 2015
首先,才接觸OO一個月會有很多疑問是很正常的
至於怎麼突破現在的問題我有幾個想法
根據你的原文,你已經學習過一些OO實作範例
那我會建議你先不要看這些範例了
先看一些理論上,理念上的東西
1.
OO是design的問題 怎麼去設計OO program
基本上OO就什麼也不是,程式怎麼寫都可以
但為什麼我們需要OO呢?
因為沒有人有辦法管理各式各樣的錯綜複雜的code
"
我們希望藉由帶入物件的理念進入軟體世界
"
物件 會有自己的屬性 外加上 我們給予的限制
會使得程式更好管控 擴充 維護...
屬性指的是 介面 => 掌控 物件行為規範
限制 single responsibility principle,Liskov substitution principle之類的
而OO的principle可以說是較重要的
注重 為什麼要這樣做 達成的好壞處
建議你先從SOLID和GRASP看起
https://en.wikipedia.org/wiki/SOLID_(object-oriented_design)
https://en.wikipedia.org/wiki/GRASP_(object-oriented_design)
2.
而你列出的
"
類別、繼承、多載、
多型、介面、委派、抽像
"
這些都算是OO的基礎
我先講一個 其他的你可以再去看其他的書介紹
為什麼要繼承
實作面: 減少code reuse (但其實call其他程式庫就好了) 沒有OO一樣可以減少code reuse
設計面: 繼承是多型的基礎 基本上你繼承就是為了多型
注重再為什麼 帶來什麼好壞處
實作什麼的晚點再看
3.
設計模式的部分
GOF翻翻就好
pattern就是先人留下來的解決方案
聖經GOF還是要讀一下
因為大家都看過,這樣在討論上可以節省很多時間解釋設計
實作就不用太仔細看了(他的實作沒有說很好) 重點在設計和為什麼
也有些文章說看太多設計模式會限制你的程式設計(現階段還不用管)
在這個階段你應該會有一些原來OO的原則 帶來這麼多好處的想法
與基礎OO設計的範例
http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented-ebook/
dp/B000SEIBB8
4.
基本上OO是需要一段時間去適應學習的
注重於 analysis 和 design (OOAD)
這部分才是OO的精華與難處
這對你來說有點早
你可以多跟你們SA,SD聊聊
目前你只要遵守OO的基本principle就可以了
OOAD這種事就交給他們吧
http://www.amazon.com/Object-Oriented-Analysis-Design-Applications-3rd-ebook/d
p/B004X1D1Q2/ref=sr_1_1?s=digital-text&ie=UTF8&qid=1439439664&sr=1-1&keywords=
OOAD
軟體的世界就只是一堆trade-off而已
這樣方便 這樣有利 就這樣做
所以在不同的特性的產品 往往使用不同的開發流程、設計方式、程式語言
千萬不要讓OO變成唯一方案
要知道優弊 自己決定你的設計
※ 引述《dnabossking (少狂)》之銘言:
: 自認邏輯算好,也還算能寫程式
: 在學校真正念過資工相關課程只有C語言和計概
: 雖然非本科生,但QUEUE、STACK、BFS、DFS、
: 最短路徑、HEAP TREE、二元樹、紅黑樹、各種搜尋、排序
: 一些資料結構、演算法都在大四那年開始自學,
: 競賽的題目也會常常寫(都是用C)
: 一開始是因為想考資工所,後來沒考上理想學校,就直接出來工作啦
: 但實不喜歡他們寫的東西(RPGLE一種古老的語言),
: .... (skipped)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.37.74.237
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1439439976.A.2A8.html
推 : 推1F 08/13 13:22
看板 Soft_Job
作者 標題 Re: [請益] 如何學習物件導向?
時間 Thu Aug 13 13:07:54 2015
※ 引述《jetswayss (小犬)》之銘言:
: 1.
: OO是design的問題 怎麼去設計OO program
: 基本上OO就什麼也不是,程式怎麼寫都可以
: 但為什麼我們需要OO呢?
: 因為沒有人有辦法管理各式各樣的錯綜複雜的code
: "
所以有人想要用SOP,也就是框架來處理管理軟體
雖然它有時候可以省一些事,只是框架必定受限
好的框架設計也就算了,碰到爛的框架可以讓您天天罵髒話
: 我們希望藉由帶入物件的理念進入軟體世界
稱之為「物件」其實只是一種商業宣傳手段
從定性的角度來看,這種定位既錯誤也無價值
: "
: 物件 會有自己的屬性 外加上 我們給予的限制
框架的特徵出現了
: 會使得程式更好管控 擴充 維護...
這部分真的是Bull shit,做過案子就知道
: 屬性指的是 介面 => 掌控 物件行為規範
框架的特徵
: 類別、繼承、多載、
: 多型、介面、委派、抽像
: "
: 這些都算是OO的基礎
這些都是框架實作的手段、語法
: 為什麼要繼承
這是從一個硬框架開始建構程式的手段
: 3.
: 設計模式的部分
這是一堆框架的集合,想法也要依據框架的規範
: 基本上OO是需要一段時間去適應學習的
: 注重於 analysis 和 design (OOAD)
: 這部分才是OO的精華與難處
這是框架適應:思維、作業方式自我閹割的過程
: 軟體的世界就只是一堆trade-off而已
: 這樣方便 這樣有利 就這樣做
: 所以在不同的特性的產品 往往使用不同的開發流程、設計方式、程式語言
: 千萬不要讓OO變成唯一方案
這是真的,除非有好處
要不然為何要自宮去練葵花寶典
: 要知道優弊 自己決定你的設計
神功重要還是雞雞重要,自己要想清楚
--
※ 編輯: csfgsj (210.71.206.217), 08/13/2015 13:15:19
→ : 又是一篇廢文2F 08/13 13:18
→ : 優! "物件導向"只是一個宗教術語,怎麼樣生出好維護高品3F 08/13 13:21
→ : 質的code才是重點,如果有更好的設計方法,何必一定要OO?
→ : 只要作出高品質的code,用函數編程也可以
→ : 質的code才是重點,如果有更好的設計方法,何必一定要OO?
→ : 只要作出高品質的code,用函數編程也可以
推 : 如果這麼簡單就有好的設計方法,那就不會有OO出現了zzz6F 08/13 13:34
→ : 我們也不需要看design pattern了 對吧 XD
→ : 為什麼會有MVC 會有物件導向 會出現framework 是不是應該
→ : 回到需求面來思考?
→ : 幾個人開發的程式跟幾百人開發的程式,方式絕對不同
→ : 生命週期短跟生命週期長的專案,開發方式也會不同
→ : 原作者只是要問如何學物件導向,針對這點來回應吧 不要扯遠
→ : 自己學生時代直接寫個幾十萬行的應用程式 就自然體會
→ : 很多事情了. 剩下的就是網路多看別人怎麼設計.
→ : 物件導向本來就是個懂概念很簡單,寫得好需要長年練習的東西
→ : 我們也不需要看design pattern了 對吧 XD
→ : 為什麼會有MVC 會有物件導向 會出現framework 是不是應該
→ : 回到需求面來思考?
→ : 幾個人開發的程式跟幾百人開發的程式,方式絕對不同
→ : 生命週期短跟生命週期長的專案,開發方式也會不同
→ : 原作者只是要問如何學物件導向,針對這點來回應吧 不要扯遠
→ : 自己學生時代直接寫個幾十萬行的應用程式 就自然體會
→ : 很多事情了. 剩下的就是網路多看別人怎麼設計.
→ : 物件導向本來就是個懂概念很簡單,寫得好需要長年練習的東西
→ : 物件導向或許在10幾年前是個很好的解決方案吧....16F 08/13 13:50
→ : 直到現在也還是阿 不然幹嘛一堆公司面試要問你OO的概念17F 08/13 13:52
→ : 現在進入平行化/大數據/IoT 的世紀,用OO開發是不是最好18F 08/13 13:56
→ : 的解已經不一定囉
→ : 的解已經不一定囉
推 : 其實...面對 scale out 的 grid computing 和平性運20F 08/13 13:57
→ : 算,就會開始有 anti-oo 和 function orient 的議題
→ : 了,就更NoSQL和 反正規化設計一樣,本來就不是ㄧ藥
→ : 治百病,但看到有人這樣一面倒地反對,也只是另一個
→ : 不切實際的極端罷了
→ : 算,就會開始有 anti-oo 和 function orient 的議題
→ : 了,就更NoSQL和 反正規化設計一樣,本來就不是ㄧ藥
→ : 治百病,但看到有人這樣一面倒地反對,也只是另一個
→ : 不切實際的極端罷了
→ : 無論如何,函數編程/mapreduce 概念已經興起了25F 08/13 13:58
→ : 所以重點是,OO已經不是唯一解,打code不要定侷限某一種
→ : 所以重點是,OO已經不是唯一解,打code不要定侷限某一種
→ : 還是老話一句 看需求決定該怎麼做.27F 08/13 14:00
→ : 生出你的同事也看的懂且容易維護的code才是最該思考的28F 08/13 14:00
→ : 不然用了OO,結果變數名取個_001,_002這種的,只會....
→ : 不然用了OO,結果變數名取個_001,_002這種的,只會....
→ : 很熟OO的人會採用這種命名嗎 別開玩笑了好嗎 = =30F 08/13 14:04
→ : 請專注重點,舉命名的例子只是印證打code界裡還是有白痴31F 08/13 14:07
→ : 這種白痴就算不是用OO也不會變天才好嗎32F 08/13 14:13
→ : 幫這篇護航那位大概不知道這位大濕覺得複製貼上最好33F 08/13 14:16
→ : 遇到重複性高的代碼怎麼辦? 通通複製貼上就好
→ : 遇到重複性高的代碼怎麼辦? 通通複製貼上就好
→ : 推薦可以估狗一下, ORM 在彈性方面的問題35F 08/13 14:19
→ : "只看"推文的話,說的其實有道理.....36F 08/13 14:19
→ : ex 估狗 "ORM flexibility"37F 08/13 14:19
→ : 像是, 痾..., "花花" 的這一篇有一些探討
→ : http://martinfowler.com/bliki/OrmHate.html
→ : 只是想說 OO 確實不 "總是" "只有" 好處
→ : 有些狀況真的寧可不 OO
→ : 像是, 痾..., "花花" 的這一篇有一些探討
→ : http://martinfowler.com/bliki/OrmHate.html
→ : 只是想說 OO 確實不 "總是" "只有" 好處
→ : 有些狀況真的寧可不 OO
→ : shadow0326大大,我知道這位大師何許人也,但我不算護航42F 08/13 14:21
→ : 吧,我的重點是不該侷限某一種開發思維
→ : 吧,我的重點是不該侷限某一種開發思維
→ : 我同意OO有缺點阿 我有些時候寫純C是完全不考慮OO的 看場合44F 08/13 14:23
→ : 但是這樣討論下去 似乎偏離了原作者想問的問題了XD
→ : 但是這樣討論下去 似乎偏離了原作者想問的問題了XD
→ : 我反而覺德原作者最先該想的就是這樣的"問題",而不是46F 08/13 14:27
→ : 被前輩噹一噹就覺得"不能再逃避"了,侷限在某一種開發
→ : 不去接觸新東西新技術新時代,才算是逃避拉
→ : 尤其台灣的"資深前輩",大部分都是10幾年前的絕招現在
→ : 還在用的"資深主管",一堆連git都沒聽過的老灰仔
→ : 被前輩噹一噹就覺得"不能再逃避"了,侷限在某一種開發
→ : 不去接觸新東西新技術新時代,才算是逃避拉
→ : 尤其台灣的"資深前輩",大部分都是10幾年前的絕招現在
→ : 還在用的"資深主管",一堆連git都沒聽過的老灰仔
→ : 職場上是你去配合環境而不是環境來配合你 別害人了好嗎XD51F 08/13 14:33
→ : 那種看到樓主沒有用OO就噹人的人,就像看到年輕人沒有把52F 08/13 14:33
→ : changelog打在程式碼的最開頭就說"你寫程式怎麼都不紀
→ : 錄一下改了啥??",拜託版本控制觀念已經快20年了
→ : changelog打在程式碼的最開頭就說"你寫程式怎麼都不紀
→ : 錄一下改了啥??",拜託版本控制觀念已經快20年了
推 : leolarrel,樓主沒你想的這麼前衛,他支持的沒用OO,拿你55F 08/13 14:43
→ : 例子來講,就是,「changelog寫在程式開頭就好,用什麼git
→ : ,版本控管系統爛死了。」這樣的感覺。
→ : 例子來講,就是,「changelog寫在程式開頭就好,用什麼git
→ : ,版本控管系統爛死了。」這樣的感覺。
→ : 恩,請問你說的樓主是dnabossking嗎?58F 08/13 14:47
→ : 當然如果他的程式用OO比沒用OO好,那自然該改,只要不要
→ : 當然如果他的程式用OO比沒用OO好,那自然該改,只要不要
推 : csfgsj,你看一下他之前發文就知道了。他應該很資深。60F 08/13 14:49
→ : 是肯定用OO是可以產出好品質好維護的code即可61F 08/13 14:49
→ : 我記得 csfgsj 之前就貼了不少反對OO的文章,你可以看看他62F 08/13 14:50
→ : 的論點。
→ : 的論點。
→ : csfgsj這個神人我也挺...的,另,只要OO適合你的案子,沒64F 08/13 14:51
→ : 有理由不用
→ : 不要向那種老灰仔一樣什麼都是OO最好就行了
→ : 有理由不用
→ : 不要向那種老灰仔一樣什麼都是OO最好就行了
推 : dnabossking只是個公司新人 你們要他去跟公司前輩吵要不要67F 08/13 14:53
→ : OO 要不要怎樣 不覺得是在害人嗎....= =
→ : 在討論工具合理性之前 在新公司就先黑掉了 何必這樣
→ : OO 要不要怎樣 不覺得是在害人嗎....= =
→ : 在討論工具合理性之前 在新公司就先黑掉了 何必這樣
推 : leolarrel遇到的老灰仔的類型跟我完全不一樣耶 XD70F 08/13 14:57
→ : 我遇到的,是完完全全把java當成c在寫,幾乎沒用class,把
→ : 我遇到的,是完完全全把java當成c在寫,幾乎沒用class,把
→ : 可能我比較衰,遇到的資深前輩80%都是食古不化,唉72F 08/13 14:58
→ : jsp當成php用。完全沒物件導向,用物件導向寫,還會把程式73F 08/13 14:58
→ : 碼拆出來到jsp中,說「我幫你把程式碼改的好一點」
→ : 碼拆出來到jsp中,說「我幫你把程式碼改的好一點」
→ : LaPass說的那種人我也不能認同,該什麼情況就該用適合的75F 08/13 15:00
→ : 思維與方法
→ : 思維與方法
→ : 結果,我在一段常常剪下貼上的一段程式碼中發現有sql注入77F 08/13 15:01
→ : 他問我該怎麼改,我回答不知道,因為那個段落我估計在整個
→ : 系統一兩萬頁jsp中,我估計有大概有幾百到幾千頁都有用到
→ : 然後又不能用搜尋取代,因為每個片段都有點點不一樣。
→ : 他問我該怎麼改,我回答不知道,因為那個段落我估計在整個
→ : 系統一兩萬頁jsp中,我估計有大概有幾百到幾千頁都有用到
→ : 然後又不能用搜尋取代,因為每個片段都有點點不一樣。
→ : 因為他沒有OO結果那個sql inject bug散佈各處,對吧?81F 08/13 15:03
→ : 還好我不寫網頁,不會遇到他,不然....
→ : 還好我不寫網頁,不會遇到他,不然....
→ : 有OO不代表不會遇到bug,但是許多狀況只要改一個地方,其83F 08/13 15:04
→ : 他用到同一片段程式碼的部份就都能一起修好了。
→ : 他用到同一片段程式碼的部份就都能一起修好了。
→ : LaPass,沒錯85F 08/13 15:07
→ : 改一個Bug能修一個禮拜為什麼要用一天,Code只有我知道去86F 08/13 16:07
→ : 那些地方改,增加自己的不可替代性
→ : 有些人大概就是這種想法吧
→ : 那些地方改,增加自己的不可替代性
→ : 有些人大概就是這種想法吧
→ : 好的OO確實方便管控和維護啊...怎會BS89F 08/13 17:47
→ : 感謝各位大大寶貴的意見90F 08/13 21:01
推 : 這篇還不錯91F 08/14 00:24
→ : OO和Functional不衝突,可以並存的不是嗎?92F 08/14 07:40
推 : 嚴格的 functional programming 有93F 08/14 18:34
→ : referential transparency 也就是沒有state 沒有side
→ : effect 所以這和OO不相容 現在把兩者結合的程式 其實
→ : 就是犧牲了finctional lang的referential transparen
→ : cy特性 還使老話一句 任何東西都有tradeoff
→ : referential transparency 也就是沒有state 沒有side
→ : effect 所以這和OO不相容 現在把兩者結合的程式 其實
→ : 就是犧牲了finctional lang的referential transparen
→ : cy特性 還使老話一句 任何東西都有tradeoff
看板 Soft_Job
作者 標題 Re: [請益] 如何學習物件導向?
時間 Thu Aug 13 14:38:12 2015
我覺得要學習物件導向,第一步先把你覺得是物件的東西拉出來,定義屬性與方法。等到
對物件有感覺時,回來看你之前寫的,你會發現想法不一樣了。
然後再學習繼承跟多行等物件導向的觀念。我覺得要一直重構自己的程式,想辦法reuse
程式碼,寫多了就會對物件導向有概念,也要多看別人程式,可以看出他們的想法。
如果是團隊開發,設計模式很重要,做為大家溝通的語言,很多的framework的設計概念
,都會使用設計模式。
※ 引述《dnabossking (少狂)》之銘言:
: 自認邏輯算好,也還算能寫程式
: 在學校真正念過資工相關課程只有C語言和計概
: 雖然非本科生,但QUEUE、STACK、BFS、DFS、
: 最短路徑、HEAP TREE、二元樹、紅黑樹、各種搜尋、排序
: 一些資料結構、演算法都在大四那年開始自學,
: 競賽的題目也會常常寫(都是用C)
: 一開始是因為想考資工所,後來沒考上理想學校,就直接出來工作啦
: 最近畢業,決定進入軟體業,求職也還算順利
: 本來在金融業IT,待遇福利和發展都還覺得不錯(穩定)
: 但實不喜歡他們寫的東西(RPGLE一種古老的語言),
: 覺得自己不像在寫程式,比較像是在做文書處理,逐決定"趕快"換公司
: 到新公司一個多月了,接觸物件導向也一個多月了
: 公司前輩人也不錯,上班氣氛也良好,是間新創
: 要我寫的程式,大致上也都寫的出來
: 在討論完流程後,我會思考需要用到的功能,寫成一堆副程式的集合
: 然後在主程式一一呼叫 > 測試沒問題 > 結束 >下一個任務。
: 但最近前輩說這樣很死、很不物件化,
: 說我寫的程式一直在"逃避"(其實是不會)物件導向
: =====================================================
: 我自己也知道,這一點也不物件化.........
: 類別、建構涵數、繼承、多載、
: 多型、介面、委派、事件、抽像、TRY CATCH
: 這些全部我都自學過,
: 我甚至能"單獨"的寫範例講解怎麼使用它們
: (因為我也只看過單獨使用的教學)
: 但是到底要怎麼利用這些東西,
: 把這些功能組合起來,完成一個專案
: 我真的不會。
: 完全不懂自己到底欠缺什麼
: 不想再被前輩說"逃避"了,請版上大大們給些指點。
--
Sent from my Android
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.142.3.139
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1439447894.A.61E.html
→ : 感謝您寶貝的意見1F 08/13 21:02
→ : 推這篇~2F 08/13 23:38
看板 Soft_Job
作者 標題 Re: [請益] 如何學習物件導向?
時間 Thu Aug 13 16:01:46 2015
※ 引述《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
推 : 推"不要為了OO而OO",不過OO還是很值得學1F 08/13 16:14
→ : OO我覺得不容易精通,但若學得半調子就對其嗤之以鼻...
→ : 只是令人覺得科科而已XD
→ : OO我覺得不容易精通,但若學得半調子就對其嗤之以鼻...
→ : 只是令人覺得科科而已XD
推 : 基本上同意前輩的說法,但缺語言直接的支援還是有差4F 08/13 18:15
→ : 我個人是不太喜歡macro magic...對debug來說不友善
→ : 我個人是不太喜歡macro magic...對debug來說不友善
→ : function pointer包n層還帶ifdef之類也不太好debug…6F 08/13 18:59
推 : 感謝大大的指點7F 08/13 20:59
看板 Soft_Job
作者 標題 Re: [請益] 如何學習物件導向?
時間 Thu Aug 13 21:18:19 2015
其實這就只是一種...該怎麼說,設計有設計語言,程式有程式語言
可以把這方面當成思考的語言。
OOP跟另外一種比較常見的PP(Procedural Programming)都是一種思考的方法
並不是說哪一種比較好,而是說你在工作環境中大家的慣例是什麼
就好像你也許習慣講英文,但是工作環境中大家都講中文
那你只好跟著一起用中文
你學Java,Java天生就是為了OO而做成的語言,就好像唐詩三百首都用中文
硬想要用PP的思考邏輯去寫Java自然就好像用英文去唸唐詩三百首一樣,非常的卡
反之也是同理的。韌體廠等用C語言的的多半都還是用PP思考,
你在那裡OO是自找麻煩加格格不入
船到橋頭自然直,這跟你以後工作環境,你選擇的語言都有關係
除了比較極端的幾種語言以外(Java就是生來OO的,ASM/C就是生來PP的)
大多數語言其實都沒那麼死板,完全看你在什麼環境下
不過目前來講啦,學一下OO的思考其實利大於弊,
畢竟以後你有不小的機會,跟一群使用OO思考的人在一起工作
看你主修什麼跟未來想做什麼啦....
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.169.175.221
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1439471902.A.669.html
推 : 感謝大大寶貴的意見,主修什麼?是指工作嗎?1F 08/13 23:03
推 : JAVA-物件導向 / C語言-程序導向 / 組合語言-機器導向2F 08/13 23:16
→ : 你主修C/ASM自然就別找OO的麻煩啦....3F 08/13 23:49
看板 Soft_Job
作者 標題 Re: [請益] 如何學習物件導向?
時間 Fri Aug 14 15:04:06 2015
※ 引述《leolarrel (真.粽子無雙)》之銘言:
: 只要你有心,組合語言也能OO(型而上的)
: ,linux kernel 整份用C來寫,但是整個code的設計模式是非常OO的
這是真的嗎?哥哥摸Linux Kernel 十幾年了
第一次聽到這樣的說法,忍不住想要聽聽詳細的內幕
到底是馬長得像驢,還是驢長得像馬
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.71.206.217
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1439535849.A.AB4.html
→ : 形而上是喔,技術細節就不是了,C又不能繼承/多型1F 08/14 16:09
→ : 另外,懂linux kernel十幾年就很屌? 林爸也是搞kernel
→ : 十幾年拉,不要動不動就嗆資歷,雖然我是認同你不要啥都
→ : OO
→ : 另外,懂linux kernel十幾年就很屌? 林爸也是搞kernel
→ : 十幾年拉,不要動不動就嗆資歷,雖然我是認同你不要啥都
→ : OO
→ : 0.05F 08/14 16:58
→ : 其實我不太懂Linux Kernel,你比較懂6F 08/14 17:07
→ : 至於Linux Kernel 與 OO關係,還望大師能夠指點一下
→ : 至於Linux Kernel 與 OO關係,還望大師能夠指點一下
推 : 印象中不少工廠模式的東西?8F 08/14 19:14
噓 : 碰Linux十幾年連個printf都寫錯9F 08/14 19:32
噓 : 他寫code用word 不同凡響10F 08/14 19:47
噓 : 十幾年的hello world compiled failed XDD11F 08/14 19:48
→ : er..linux的OO 看一下HAL怎麼實作會有點感覺12F 08/14 20:12
噓 : 還會寫很多錢的廢文喔13F 08/14 21:11
--
※ 作者: terievv 時間: 2015-08-15 06:20:48
※ 看板: terievv 文章推薦值: 0 目前人氣: 0 累積人氣: 3529
回列表(←)
分享