作者erspicu (.)
看板Soft_Job
標題[閒聊] 物件導向與程序導向風格
時間Sat Sep 22 12:16:36 2012
不知道為何總覺得跟Java風格和走Java領域的人有點八字不合,
應該是說我不是特別喜歡物件導向基本教義派的撰寫風格,
這可能跟我早期的背景有關係,我初學的程式語言是在上大學前自學的Perl,
當時完全是自學沒人帶,然後之後的寫作風格其實又深受Perl的一些觀念和主張影響,
我認為程式只是拿來當成工具應用的,不是拿來學的,
當然要會拿它應用,得先學會怎麼用,可是很多人會把重心放在於,
明明就是一個小到不行專案,花了一大堆時間在什麼完美OO跟漂亮的設計模式研究上,
然後多數時間是鑽研在怎麼OO後更OO,這樣的設計方法有沒有很合乎DESIGN PATTERNS,
或是什麼UML夠不夠美,refactory好幾次....然後覺得自己是有深厚功力的工程師...
結果如果最後結果是快又正確的,那也就算了,花了一堆時間下去,
最後也沒比較好,bug也沒比較少... 能夠說的就是,花了很多時間下去,
程式相當OO,UML好漂亮,很值得...
我個人還真的不是那麼信那一套.....
我是比較偏向於把OO變成是程序導向的一個極為方便的輔助,
一天到晚在那邊什麼夠不夠OO我還覺得真的滿無聊的...
如果OO是正解王道,那像是早期沒OO時,那當時神級的人物,
寫的程式是不是就很爛... 不對吧... 就算是程序導向,做法不同,
也是可以做到像是減少程式碼的累贅.好維護.程式互用的功能,
只能說導向不同,某些技術手段和安排的方式不同罷了...
好壞程式真的不會因為什麼夠不夠OO.或是程序導向而有所不同,
我反來更偏向結果論,能做到別出包.速度快.好維護就是好.
像是Perl神人寫出的7行程式碼解DVD保護程式,一整個醜到不行,但是也屌到不行,
所以OO是啥,可以吃嗎..
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.70.79.227
→ prag222:就TIJ說法是當你在看用OO寫的CODE,你就已經在了解整個系統 09/22 12:26
→ prag222:全貌or架構(我半亂翻的xd) 09/22 12:27
→ prag222:繼C++來說,java是較完善(理想?信念?)的OO程式語言 09/22 12:29
推 cutem:程式很龐大時有沒有OO我覺得差很多,有OO比較好維護。 09/22 12:30
→ kros:我覺得減少bug的最好辦法就是要有良好的規劃耶.... 09/22 12:56
這是一種主張 不過我比較偏向於 程式要減少BUG的可能 就是減少程式
化煩為簡 減少一層又一層的封裝 如果不是真的有必要或是可以利用 用完即可拋
幾行程式可以幹掉的東西 就直接幹掉 這原則 我覺得至少對中小型專案好用
過多的包裝或是一層又一層的抽象化 有些時候有需要 有時候只是自我滿足用的
※ 編輯: erspicu 來自: 61.70.79.227 (09/22 13:08)
推 tyc5116:以前我覺得,程式要寫的好,就要非常的OO,OO的很徹底,程式 09/22 13:13
推 guest2008:不用杞人天憂,用不用OO沒有對與錯.有些人用OO根本不是OO 09/22 13:13
→ tyc5116:就容易維護,擴充,後來碰了UML後更是加深了這個印象 09/22 13:13
→ tyc5116:看了敏捷軟體開發這本書後,感覺那些都只是手段而已 09/22 13:14
→ guest2008:他們都是套殼.但根本不是OO..是被c#,java的語法結構逼的 09/22 13:14
→ tyc5116:最終目的是要好維護,擴充,是不是OO倒是次要 09/22 13:14
→ tyc5116:只是OO比較容易達到此目標而已... 09/22 13:15
推 braverycloud:OO or 非OO,只是手段而已 09/22 13:15
推 guest2008:說實話.真的是java派寫的OO還真的有OO影子.改過一堆人的 09/22 13:24
→ guest2008:程式碼.不管他用C#還是啥語言.都沒真的用到OO.都是殼 09/22 13:25
Java派的 對OO真的有莫名的執著 非常追求真正的OO
如果你看到那個人說出你的OO不夠OO 或是兩個人在爭吵誰的OO才是真正OO的人
通常都是JAVA工程師
不過像我寫C#的 我自認只是把OO的語法結構當成是程式序的功能擴充
什麼OO精神 我倒還真的沒多琢磨 我偏向程序導向的骨批著00的肉
不過在Java派的人眼中 對這種做法很反對
※ 編輯: erspicu 來自: 61.70.79.227 (09/22 13:34)
→ andymai:沒OO的話~要怎麼維護相同邏輯卻不同處理方式的程式?要怎麼 09/22 13:33
→ andymai:使用一個介面就能對所有實作它的物件做操作?要怎麼規範人 09/22 13:34
推 changyuheng:現在好像更流行 functional 09/22 13:34
→ andymai:家寫的程式碼??? 09/22 13:34
我不是反對OO 基本上我也愛用OO達成很多目的
只是我對什麼風格上的什麼追求更oo的oo 有點反感而已
※ 編輯: erspicu 來自: 61.70.79.227 (09/22 13:36)
→ andymai:囧 對OO執不執著~並不是看語言的~很多C#工程師當然也會OO 09/22 13:36
→ TonyQ:我覺得只是剛好跟你意見不同的人都是寫 java 吧 XDDD 09/22 13:36
→ andymai:只是原PO遇到的Java工程師比較多吧? 09/22 13:36
→ TonyQ:然後我覺得你討厭的不是 OO,是OO裡面的基本教義派。 09/22 13:37
→ TonyQ:Csharp 從語言層就有 OO精神,強迫你要分類別跟切分行為, 09/22 13:37
→ TonyQ:像 .net MVC 就自動幫你切 controlelr / model /view, 09/22 13:37
→ TonyQ:如果是真的看到 oo 就不想做的話,應該是不會選這種語言。XD 09/22 13:38
→ TonyQ:至於 OO 基本教義派,說真的,連寫 JS 都有人會抱怨不夠OO了 09/22 13:39
→ TonyQ:這種人真的是走到哪都會有。XD 09/22 13:39
→ TonyQ:我的想法是,如果需要重構,就要提出重構後的好處, 09/22 13:40
→ TonyQ:像是 duplicated code ,重構的好處就是如果有需要修改,可 09/22 13:40
→ TonyQ:以很簡單,倒不是說這樣就會降低"現有的bug數",但是如果明 09/22 13:40
→ TonyQ:知道這個code 根本不可能會有人用或有人改,單純看到code有 09/22 13:41
→ TonyQ:重複就會手賤想修,那就是有點中毒。 09/22 13:41
→ TonyQ:漂亮不漂亮這種事情是主觀的,不給別人造成妨礙或困擾的話, 09/22 13:42
→ TonyQ:倒是做的人開心就好。 09/22 13:42
→ tyc5116:那我好像開始有中毒的傾向了XD 09/22 13:45
→ andymai:但是維護的時候~同樣的邏輯要在不同的地方改好幾次~這個就 09/22 13:46
→ andymai:很值得重新思考了~畢竟常常改有風險~為了修改正確又要檢查 09/22 13:47
→ andymai:很浪費時間~能改一次就好~why not? 09/22 13:48
→ qrtt1:把別人硬是規入特定的『派別』是不好的行為。若你的同事對於 09/22 14:18
→ qrtt1:實作上有特定的要求,那並不是一件壞事啊。 09/22 14:18
→ qrtt1:可靠的隊友常會有對自己工作品質上的堅持。 09/22 14:18
→ awert:OO的目的只有一個,dependency management 09/22 14:33
→ awert:不管用什麼方式和語言寫,這點都是很重要的 09/22 14:33
→ TonyQ:andymai 我個人是覺得重構最好的時間點是維護需求發生時。 09/22 16:42
→ gmoz:我覺得是在二分法耶 09/22 16:50
推 derekhsu:不對,重構最好的時間點是當你有空的時候 09/22 16:52
→ ilay:推樓上 09/22 17:10
→ rofellosx:但是通常都沒有空.. 09/22 19:02
推 jlhc:程式碼不是越少就越好................... 09/22 19:33
→ likemeow:沒有絕對的對錯,只有好與不好的寫法 09/22 19:38
→ likemeow:而決定這方法好與不好的,是團隊和專案 09/22 19:38
→ iceonly:我比較弱一點,要我看沒OO的code可能會看上一陣子((( ._.) 09/22 21:06
推 thinkniht:同意qrtt1的說法,程式要寫得是否很OO是看寫得人 09/23 00:37
→ thinkniht:C#一樣可以寫得過度物件化 09/23 00:38
→ thinkniht:把某個程式語言的人硬歸入某種派別,我覺得是種偏見 09/23 00:39
推 cobrasgo:我新人年的時候和原po想法一樣,現在完全不是這樣想 09/23 01:19
推 cobrasgo:另外我很懷疑原po做過多大的project... 09/23 14:45
→ cobrasgo:然後這個project的產出可以用在別的project上嗎? 09/23 14:45