[問題] data和 function 是否需要分class?

作者: yhn0tgb60 (呦厚厚)   2016-01-24 12:04:14
最近在思考一個問題,
就是 data 和 function 是否需要分不同的class,
因為 有時候, 很多 function 的資料 就是丟參數進去, 再回傳資料,
不會需要動到 this 的 member 的 data,
所以這類的 function 我另外獨立一個class, 並且是唯一的 class,
甚至 就算需要動到 this 的 member 的 data,
我可以把整個 data 的 pointer 丟給他, 讓他去給,
也就是完全把 data和 function, 分成不同的 class,
這樣 function 就不用new delete 了, 只需要new delete data,
可以節省效能?????
但是又聽說 在c++的底層, function 和 data, 本來就有做不同的處理,
function 本來就有獨立出來,
所以不需要這樣????
不過查不到確定的資料.......
想請問大家的想法?????
作者: x000032001 (版廢了該走了)   2016-01-24 12:22:00
不需要member 那就static func啊 甚至給他namespace就好也不用塞進class了
作者: Caesar08 (Caesar)   2016-01-24 13:13:00
看完不知道你在說甚麼東西 另外中間function那段你要function new delete甚麼東西?不用"動"到data member,那你寫const就好不用"用"到data member,那你就參考一樓的作法
作者: Clangpp (Clang++)   2016-01-24 13:34:00
其實這就是一種design pattern阿XD不用 上面有說了 你用namespace就好然後 effective C++ item 23 寧以non-member non-friend取代member 函式不知道能不能解釋你的問題
作者: Caesar08 (Caesar)   2016-01-24 13:43:00
不會,而且你這樣func需要是data的friend除非逼不得以,否則friend還是少用為妙不過聽我這樣說,還不如參考standard C++是怎麼說的https://isocpp.org/wiki/faq/friends
作者: bibo9901 (function(){})()   2016-01-24 18:16:00
你這樣跟non-virtual member function一模一樣啊又何苦分兩邊寫
作者: firejox (Tangent)   2016-01-24 18:45:00
你可以去研究function pointermember funciton 跟這個有關係
作者: ronin728 (浪人)   2016-01-24 18:59:00
拆不拆開效率不會差太多。獨立函數別再另外包class,請用namespace,除非你是為了滿足某種設計模式。如果你 friend 真的用很多,可能有過度耦合的問題
作者: CoNsTaR ((const *))   2016-01-24 23:45:00
static 和 anonymous-namespace 對 function 的效果是一樣的吧不喜歡 static 可以改用 namespace
作者: tinlans ( )   2016-01-26 01:34:00
member functions 原本就不會被 new / delete去顧慮這些東西是玩什麼玩到走火入魔啊?
作者: fr3ak (fr3@K)   2016-01-27 09:17:00
相關廢文 http://goo.gl/ICm7mu希望原 po 只是在練習寫 framework QQ
作者: jerohands (這就是人生啊)   2016-01-27 19:54:00
除非你是想用 Private Class Data
作者: tinlans ( )   2016-01-28 00:08:00
如果分開的目的是節省效能,那完全達不到你要的目的。
作者: fr3ak (fr3@K)   2016-01-29 11:37:00
To 原 po. Framework 是基底, 一旦被應用採納, 要改動的成本通常不小, 尤其是界面. 即便有大量的經驗與深厚的技術都不記得能把 framework 做得好.另, 不論是 framework 或 component-based 的 library, 遠遠不只是 "寫 code" 這麼單純. IMHO, 更重要的是 "設計"
作者: CoNsTaR ((const *))   2016-01-29 19:36:00
Java 的陣列是物件,它就是這樣的實作方式陣列除了 lenght 以外的成員函式都被放在 java.util.Arrays而陣列這個 class 則由 JVM 動態生成

Links booklink

Contact Us: admin [ a t ] ucptt.com