[閒聊] 物件導向與程序導向風格

看板Soft_Job作者 (.)時間13年前 (2012/09/22 12:16), 編輯推噓11(11048)
留言59則, 20人參與, 最新討論串1/5 (看更多)
不知道為何總覺得跟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

09/22 12:26, , 1F
就TIJ說法是當你在看用OO寫的CODE,你就已經在了解整個系統
09/22 12:26, 1F

09/22 12:27, , 2F
全貌or架構(我半亂翻的xd)
09/22 12:27, 2F

09/22 12:29, , 3F
繼C++來說,java是較完善(理想?信念?)的OO程式語言
09/22 12:29, 3F

09/22 12:30, , 4F
程式很龐大時有沒有OO我覺得差很多,有OO比較好維護。
09/22 12:30, 4F

09/22 12:56, , 5F
我覺得減少bug的最好辦法就是要有良好的規劃耶....
09/22 12:56, 5F
這是一種主張 不過我比較偏向於 程式要減少BUG的可能 就是減少程式 化煩為簡 減少一層又一層的封裝 如果不是真的有必要或是可以利用 用完即可拋 幾行程式可以幹掉的東西 就直接幹掉 這原則 我覺得至少對中小型專案好用 過多的包裝或是一層又一層的抽象化 有些時候有需要 有時候只是自我滿足用的 ※ 編輯: erspicu 來自: 61.70.79.227 (09/22 13:08)

09/22 13:13, , 6F
以前我覺得,程式要寫的好,就要非常的OO,OO的很徹底,程式
09/22 13:13, 6F

09/22 13:13, , 7F
不用杞人天憂,用不用OO沒有對與錯.有些人用OO根本不是OO
09/22 13:13, 7F

09/22 13:13, , 8F
就容易維護,擴充,後來碰了UML後更是加深了這個印象
09/22 13:13, 8F

09/22 13:14, , 9F
看了敏捷軟體開發這本書後,感覺那些都只是手段而已
09/22 13:14, 9F

09/22 13:14, , 10F
他們都是套殼.但根本不是OO..是被c#,java的語法結構逼的
09/22 13:14, 10F

09/22 13:14, , 11F
最終目的是要好維護,擴充,是不是OO倒是次要
09/22 13:14, 11F

09/22 13:15, , 12F
只是OO比較容易達到此目標而已...
09/22 13:15, 12F

09/22 13:15, , 13F
OO or 非OO,只是手段而已
09/22 13:15, 13F

09/22 13:24, , 14F
說實話.真的是java派寫的OO還真的有OO影子.改過一堆人的
09/22 13:24, 14F

09/22 13:25, , 15F
程式碼.不管他用C#還是啥語言.都沒真的用到OO.都是殼
09/22 13:25, 15F
Java派的 對OO真的有莫名的執著 非常追求真正的OO 如果你看到那個人說出你的OO不夠OO 或是兩個人在爭吵誰的OO才是真正OO的人 通常都是JAVA工程師 不過像我寫C#的 我自認只是把OO的語法結構當成是程式序的功能擴充 什麼OO精神 我倒還真的沒多琢磨 我偏向程序導向的骨批著00的肉 不過在Java派的人眼中 對這種做法很反對 ※ 編輯: erspicu 來自: 61.70.79.227 (09/22 13:34)

09/22 13:33, , 16F
沒OO的話~要怎麼維護相同邏輯卻不同處理方式的程式?要怎麼
09/22 13:33, 16F

09/22 13:34, , 17F
使用一個介面就能對所有實作它的物件做操作?要怎麼規範人
09/22 13:34, 17F

09/22 13:34, , 18F
現在好像更流行 functional
09/22 13:34, 18F

09/22 13:34, , 19F
家寫的程式碼???
09/22 13:34, 19F
我不是反對OO 基本上我也愛用OO達成很多目的 只是我對什麼風格上的什麼追求更oo的oo 有點反感而已 ※ 編輯: erspicu 來自: 61.70.79.227 (09/22 13:36)

09/22 13:36, , 20F
囧 對OO執不執著~並不是看語言的~很多C#工程師當然也會OO
09/22 13:36, 20F

09/22 13:36, , 21F
我覺得只是剛好跟你意見不同的人都是寫 java 吧 XDDD
09/22 13:36, 21F

09/22 13:36, , 22F
只是原PO遇到的Java工程師比較多吧?
09/22 13:36, 22F

09/22 13:37, , 23F
然後我覺得你討厭的不是 OO,是OO裡面的基本教義派。
09/22 13:37, 23F

09/22 13:37, , 24F
Csharp 從語言層就有 OO精神,強迫你要分類別跟切分行為,
09/22 13:37, 24F

09/22 13:37, , 25F
像 .net MVC 就自動幫你切 controlelr / model /view,
09/22 13:37, 25F

09/22 13:38, , 26F
如果是真的看到 oo 就不想做的話,應該是不會選這種語言。XD
09/22 13:38, 26F

09/22 13:39, , 27F
至於 OO 基本教義派,說真的,連寫 JS 都有人會抱怨不夠OO了
09/22 13:39, 27F

09/22 13:39, , 28F
這種人真的是走到哪都會有。XD
09/22 13:39, 28F

09/22 13:40, , 29F
我的想法是,如果需要重構,就要提出重構後的好處,
09/22 13:40, 29F

09/22 13:40, , 30F
像是 duplicated code ,重構的好處就是如果有需要修改,可
09/22 13:40, 30F

09/22 13:40, , 31F
以很簡單,倒不是說這樣就會降低"現有的bug數",但是如果明
09/22 13:40, 31F

09/22 13:41, , 32F
知道這個code 根本不可能會有人用或有人改,單純看到code有
09/22 13:41, 32F

09/22 13:41, , 33F
重複就會手賤想修,那就是有點中毒。
09/22 13:41, 33F

09/22 13:42, , 34F
漂亮不漂亮這種事情是主觀的,不給別人造成妨礙或困擾的話,
09/22 13:42, 34F

09/22 13:42, , 35F
倒是做的人開心就好。
09/22 13:42, 35F

09/22 13:45, , 36F
那我好像開始有中毒的傾向了XD
09/22 13:45, 36F

09/22 13:46, , 37F
但是維護的時候~同樣的邏輯要在不同的地方改好幾次~這個就
09/22 13:46, 37F

09/22 13:47, , 38F
很值得重新思考了~畢竟常常改有風險~為了修改正確又要檢查
09/22 13:47, 38F

09/22 13:48, , 39F
很浪費時間~能改一次就好~why not?
09/22 13:48, 39F

09/22 14:18, , 40F
把別人硬是規入特定的『派別』是不好的行為。若你的同事對於
09/22 14:18, 40F

09/22 14:18, , 41F
實作上有特定的要求,那並不是一件壞事啊。
09/22 14:18, 41F

09/22 14:18, , 42F
可靠的隊友常會有對自己工作品質上的堅持。
09/22 14:18, 42F

09/22 14:33, , 43F
OO的目的只有一個,dependency management
09/22 14:33, 43F

09/22 14:33, , 44F
不管用什麼方式和語言寫,這點都是很重要的
09/22 14:33, 44F

09/22 16:42, , 45F
andymai 我個人是覺得重構最好的時間點是維護需求發生時。
09/22 16:42, 45F

09/22 16:50, , 46F
我覺得是在二分法耶
09/22 16:50, 46F

09/22 16:52, , 47F
不對,重構最好的時間點是當你有空的時候
09/22 16:52, 47F

09/22 17:10, , 48F
推樓上
09/22 17:10, 48F

09/22 19:02, , 49F
但是通常都沒有空..
09/22 19:02, 49F

09/22 19:33, , 50F
程式碼不是越少就越好...................
09/22 19:33, 50F

09/22 19:38, , 51F
沒有絕對的對錯,只有好與不好的寫法
09/22 19:38, 51F

09/22 19:38, , 52F
而決定這方法好與不好的,是團隊和專案
09/22 19:38, 52F

09/22 21:06, , 53F
我比較弱一點,要我看沒OO的code可能會看上一陣子((( ._.)
09/22 21:06, 53F

09/23 00:37, , 54F
同意qrtt1的說法,程式要寫得是否很OO是看寫得人
09/23 00:37, 54F

09/23 00:38, , 55F
C#一樣可以寫得過度物件化
09/23 00:38, 55F

09/23 00:39, , 56F
把某個程式語言的人硬歸入某種派別,我覺得是種偏見
09/23 00:39, 56F

09/23 01:19, , 57F
我新人年的時候和原po想法一樣,現在完全不是這樣想
09/23 01:19, 57F

09/23 14:45, , 58F
另外我很懷疑原po做過多大的project...
09/23 14:45, 58F

09/23 14:45, , 59F
然後這個project的產出可以用在別的project上嗎?
09/23 14:45, 59F
文章代碼(AID): #1GNJkdFW (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1GNJkdFW (Soft_Job)