看板 | Soft_Job |
---|---|
標題 | Re: [分享] 用一個簡單的數學公式來幫忙設計OOP類別 |
作者 | as30385438 |
時間 | 2020/05/20 01:37:45 |
人氣 | 推:20 噓:0 留言:36 |
訂閱Line日報
熱門文章不漏接,馬上點此訂閱
先講結論:
我反對原文的結論「OOP易學難精」
就我個人到現在的感受是「難學易精」
為什麼呢?
以下分享個人看法
不管是不是OOP,其實種種軟體層面的架構手段主要都是想解決一個問題
「讓一個龐大複雜的軟體專案變得更好維護」
這又可大概分為兩個方向
1. 可擴充性
面對新需求時會不會難以改動,是不是每次加功能都要改一堆地方?
常常動一個小地方,造成其他看似無關的模組壞掉?
2. 可維護性
程式碼的邏輯是不是很好理解
會不會一個新人來看幾個禮拜還是黑人問號
每一份檔案、類別、函式
甚至到每一行程式碼的目的,是不是都足夠明確
當然,以上兩點是有相關的
這兩點的重要性,就算是剛上班幾個月的新手,也是非常容易理解
而OOP裡面的什麼pattern、什麼SOLID原則
其實說穿了也都是在讓程式更好維護和擴充而已
「難學」,是因為一開始接觸OOP,因為其概念繁多
如果沒有掌握核心思想很容易就被各種各樣的名詞給唬住
「易精」,是因為那些繁雜的概念其實都只是手段,目的是很明確易懂的
OO的核心觀念:「抽象化」
是為了讓外面的使用者只看到必要的介面
不受內部細節的改動影響
而實作者只在乎如何滿足定制好的介面
至少80%的design pattern,都是在告訴你該怎麼把抽象化做好
factory pattern
告訴你創造物件的邏輯要抽象化,外面就不必在乎實作類別的改動
strategy pattern
告訴你行為的抽象化可以用組合,達成更好的解藕並可在runtime時更換
iterator pattern
告訴你聚合類的物件可以提供一個抽象的介面
讓使用者不須關心內部時做的資料結構就可以存取所有item
另外所謂好的程式碼,怎麼會是junior沒辦法分辨?
要是你用了很多OOP的手段,但是沒辦法輕易解釋得讓你們公司的新人聽懂這樣做好處是
什麼
那大概就是你認為的好code其實沒那麼好
沒有搞懂OOP在幹嘛,以為只是把code放在class內就算OOP
然後又看到原文這種似是而非的觀念,我是不認為會有什麼幫助
以原文提到的service object為例
的確這是一個有爭議的pattern
但要說他沒有內聚性是一件很奇怪的事情
service object其中一目的就是把domain相關的邏輯集中起來
這些邏輯本身就是緊密相關的
要用文章內提到CR值去說他沒有內聚性,真的是怎麼看怎麼怪
真的很講究OO,拆類別的時機也不應該是參數重複出現什麼的
而是現有class的職責太多吧
最後
其實軟體架構的名著Clean Architecture
就已經很豐富又很好懂了
每個階段看都有不同的感受
真的有想搞懂OOP應該去弄一本來讀讀
而不是在這邊算什麼CR值...
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 58.114.218.170 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1589909867.A.FFC.html
近期熱門文章
512
|
[心得] 期貨畢業文 (幫朋友代發) | |
918
|
03/28 17:10 Stock 更多michaellee76文章 |
780
|
[閒聊] 2024/03/28 盤中閒聊 | |
1493
|
03/28 08:30 Stock 更多vendan5566文章 |
768
|
[閒聊] 2024/03/29 盤中閒聊 | |
1493
|
03/29 08:31 Stock 更多vendan5566文章 |
168
|
[新聞] 經濟部:立院若決議全面凍漲電價 台電將承 | |
706
|
03/28 20:38 Stock 更多xephon文章 |
343
|
[情報] 113年03月28日 三大法人買賣金額統計表 | |
661
|
03/28 15:03 Stock 更多coconing文章 |
629
|
[閒聊] 2024/03/28 盤後閒聊 | |
1495
|
03/28 14:00 Stock 更多vendan5566文章 |
177
|
Re: [新聞] PChome遭傳「近期倒閉」 急發重訊:虛 | |
835
|
03/28 11:49 Stock 更多LebronJanes文章 |
240
|
[情報]【03/26 申報轉讓】所羅門(2359)董事陳 | |
324
|
03/28 12:26 Stock 更多forb9823018文章 |
167
|
[新聞] 拜登政府重啟密西根州一座已關閉核電廠 | |
290
|
03/28 09:38 Stock 更多peter080808文章 |
120
|
[請益] 嫩豆腐吃成臭豆腐,00919該停損嗎? | |
281
|
03/28 17:50 Stock 更多pqpqpqpq文章 |
171
|
[情報] 0328 上市投信買賣超排行 | |
299
|
03/28 14:57 Stock 更多saber50116文章 |
127
|
[情報] 0328 上市外資買賣超排行 | |
228
|
03/28 16:21 Stock 更多saber50116文章 |
94
|
[新聞] 中鋼:鋼市下半年將更好 | |
185
|
03/28 06:20 Stock 更多qazsedcft文章 |
103
|
[標的] 長榮2603 | |
248
|
03/29 10:15 Stock 更多Jaline5566文章 |
Soft_Job 看板熱門文章
19
|
[請益] offer請益 | |
50
|
03/26 13:16 Soft_Job 更多LeoPan文章 |
7
|
[請益] 該往哪一些公司投履歷 | |
29
|
03/26 02:46 Soft_Job 更多jim0611tw文章 |
10
|
[徵才]BRT_Rust Engineer(900K-1.4M NTD/3+Y) | |
19
|
03/26 09:55 Soft_Job 更多alexforme文章 |
13
|
Re: [請益] 該往哪一些公司投履歷 | |
30
|
03/26 08:52 Soft_Job 更多bachelorwhc文章 |
0
|
[徵才] [台北] 電腦IT人員 | |
10
|
03/26 21:44 Soft_Job 更多lin774文章 |
6
|
[請益] offer + 轉語言請益 | |
22
|
03/27 12:12 Soft_Job 更多guua70927文章 |
0
|
[請益] Offer請益 | |
16
|
03/26 12:32 Soft_Job 更多AOrigin文章 |
1
|
[徵才]BRT_Project Manager(700K-1.2M NTD) | |
5
|
03/27 09:29 Soft_Job 更多alexforme文章 |