[請益] 不少人不喜歡在class裡加static function

作者: DDxMM (停不下來)   2016-06-16 08:32:02
最近一直被主管酸不停的recode
,最近被酸說class裡加static function,問他又不肯講,請問大家這樣寫的好處跟壞處…
本人覺得好處是這樣寫可以防止class改爛了,function還有用處
壞處當然省不了記憶體,但class改爛了會省記憶體?
主管真難溝通,不喜歡事前規劃,喜歡事後改code…
###############################
我的想法是這份code不知道要經手多少人
寫成static function 至少後面的人不會亂call member, 造成相依一堆member, code一亂就....(除非他改成非static)
看太多維護到最後重寫的命運,沒留下多少可用的code
作者: stonegray (Pararararara)   2016-06-16 08:43:00
哪個語言?
作者: qweqweqweqwe (4qwe)   2016-06-16 08:45:00
先不說 static 的問題,但要防止改爛了應該有更好的方法…例如unit test…
作者: comesuck (艾米德)   2016-06-16 08:52:00
不想create instance才能用method就開static啊
作者: knives   2016-06-16 08:56:00
為什麼你會覺得設成靜態,就不會有改爛的問題
作者: sj1973 (史考特)   2016-06-16 08:57:00
你就把當一般c的api來看待就好了!class改爛也沒多大關係!
作者: coronach (...)   2016-06-16 09:31:00
怕改爛應該是靠測試啊,static function 分類要做好,不然就會像我第一個工作看到的,Tool.java一萬多行...
作者: angusyu (〒△〒)   2016-06-16 10:23:00
比如說常用的,多處共用1個屬性的,開static沒關係吧
作者: qrtt1 (有些事,有時候。。。)   2016-06-16 10:27:00
能開個電腦多打點字,把你的問題說清楚嗎!?
作者: Yshuan (倚絃)   2016-06-16 10:30:00
個人也不是很喜歡static 這應該是design的問題
作者: hidog (.....)   2016-06-16 10:39:00
static不是問題所在吧看起來是你們code review/coding style/架構設計有問題把重點放在coding品質的管理上吧
作者: hardCode (硬摳)   2016-06-16 11:36:00
不少人不喜歡? 你要不要直接改很多人不喜歡 難閱讀
作者: tvbic   2016-06-16 11:47:00
新手才會這樣寫
作者: angusyu (〒△〒)   2016-06-16 12:28:00
原來static method 是給新手用的 (筆記
作者: knives   2016-06-16 12:31:00
新手應該連什麼叫static 都不知道吧
作者: Blueshiva (龍野南雲)   2016-06-16 12:33:00
你真的知道Static function是用來幹嘛的嗎...
作者: GoalBased (Artificail Intelligence)   2016-06-16 12:35:00
同樓上...
作者: Bencrie   2016-06-16 12:36:00
你什麼時候開始有非 static function 比較省記憶體的錯覺
作者: alan3100 (BOSS)   2016-06-16 12:51:00
雖然你想偷酸主管 但看來你連class存在意義都搞錯
作者: comesuck (艾米德)   2016-06-16 12:51:00
如果情境不一樣,最省事就是開delegate自己外部實作再丟進來所有的method一寫好都是跟class放在一起
作者: comesuck (艾米德)   2016-06-16 12:58:00
stackoverflow搜"where are methods stored in memory"
作者: popcorny (畢業了..@@")   2016-06-16 13:16:00
看情境 不過大部分都是non-static居多, static比較少
作者: tipsofwarren (tipsofwarren)   2016-06-16 14:13:00
我喜歡data isolation 能static 就 staticFunction 都在text segment 有self modified code?
作者: Masakiad (Masaki)   2016-06-16 14:17:00
先搞懂static的正確用法再來討論
作者: final01 (牛頓運動定律)   2016-06-16 16:17:00
好多 static 神人
作者: feeya (24 August 升格為鄉民)   2016-06-16 16:52:00
static不用new好用多了
作者: doranako (真愛無限)   2016-06-16 19:12:00
公用而且不需要存變數才比較多會使用static, 大部分還是nonstatic
作者: wuliou (wuliou)   2016-06-16 19:46:00
這串推文到底是反串還認真啊…
作者: KeySabre (KeySabreur)   2016-06-16 21:33:00
主要看是否跟instance的狀態相關static or instance method 應該考慮的是設計上的權責而不是performance
作者: blackie1019 (blackie)   2016-06-16 23:28:00
老實說我覺得你主管還有時間酸你人還蠻好的...
作者: cobrasgo (人魚線變成鮪魚線,超帥)   2016-06-16 23:30:00
我覺得這沒標準的答案,看CLASS的用途
作者: CoNsTaR ((const *))   2016-06-17 01:57:00
我覺得把你文章裡的所有 static 通通換成 const 比較說得通 XD
作者: Ekmund (是一隻小叔)   2016-06-17 02:24:00
我是覺得跟你的code要放在什麼上面跑也有差...
作者: cha122977 (CHA)   2016-06-17 02:24:00
沒狀態差異的可以用
作者: goldberg123 (SmallHanWinchest)   2016-06-17 08:02:00
良葛哥網站去看一下再來討論吧
作者: v7q4 ((.)(.)乳劍雙修 -|=>)   2016-06-17 11:46:00
common tool之類的function都我用static的
作者: shadow0326 (非議)   2016-06-17 19:34:00
這文給我的感覺就是 為什麼要用螺絲起子不用釘書機因為螺絲起子不會有用完訂書針的問題
作者: thinklu   2016-06-18 08:38:00
static最多人垢病的地方是會有test issue, 像是mocking,你要怎麼mock? 基本上比較常使用的時候大概是singleton或很小的until function是util打錯 不好意思,建議多看看一些design的書 看看怎麼寫code比較好 然後可以用stackoverflow 去問問題,像static的好壞那邊都有人分析過了當然 我懷疑那些酸你的資深人員到底知不知道這些 或單純他們就是被人酸過 所以就酸你一下 但是從來沒想去搞懂原因加油!
作者: siriusu (かがみは俺の嫁。)   2016-06-18 13:14:00
這篇推文好亂啊是反串很多嗎我都搞不懂啦
作者: y3k (激流を制するは静水)   2016-06-18 16:28:00
static與否要看你的code怎麼運用這個class 如此而已
作者: ripple0129 (perry tsai)   2016-06-18 22:20:00
都討論到這了,順便問一下單純要單一性時如何挑選static或singleton
作者: manaup   2016-06-19 03:17:00
很多主管都不是程式寫得好才當主管的 屁話一堆 你聽聽就好
作者: thinklu   2016-06-19 12:21:00
基本上單一性都會選singleton, 是design pattern習慣的使用,像可以寫一個singleton class with static initialize() 去wrap你想要單一性的class, 這樣會非常清楚,像UUID generator class基本上就蠻典型的是我說的這種應用,可以被singleton wrap
作者: dlikeayu (太陽拳vs野球拳)   2016-06-19 17:21:00
用singleton方法來做才能較有效率減少記憶體使用所以好的framework一般都會有一個入口static 成員或方法去實現下面的函式庫再由這個singleton設計方法去包裝工廠成員基本上定義出規範和使用介面,你就"比較難"去自行new一個未經包裝的物件但是永遠不要低估菜鳥及疲勞過度員工所會犯的錯 XD
作者: readonly (唯讀)   2016-06-19 22:14:00
這是在講 java 嗎?

Links booklink

Contact Us: admin [ a t ] ucptt.com