[爆卦]static function好處是什麼?優點缺點精華區懶人包

為什麼這篇static function好處鄉民發文收入到精華區:因為在static function好處這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者DDxMM (停不下來)看板Soft_Job標題[請益] 不少人不喜歡在class裡加stati...



最近一直被主管酸不停的recode
,最近被酸說class裡加static function,問他又不肯講,請問大家這樣寫的好處跟壞處…

本人覺得好處是這樣寫可以防止class改爛了,function還有用處

壞處當然省不了記憶體,但class改爛了會省記憶體?

主管真難溝通,不喜歡事前規劃,喜歡事後改code…

###############################
我的想法是這份code不知道要經手多少人

寫成static function 至少後面的人不會亂call member, 造成相依一堆member, code一亂就....(除非他改成非static)

看太多維護到最後重寫的命運,沒留下多少可用的code




-----
Sent from JPTT on my InFocus M530.

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.66.115.238
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1466037129.A.B15.html
stonegray: 哪個語言?06/16 08:43
qweqweqweqwe: 先不說 static 的問題,但要防止改爛了應該有更好 06/16 08:45
qweqweqweqwe: 的方法…例如unit test… 06/16 08:45
comesuck: 不想create instance才能用method就開static啊 06/16 08:52
knives: 為什麼你會覺得設成靜態,就不會有改爛的問題 06/16 08:56
sj1973: 你就把當一般c的api來看待就好了!class改爛也沒多大關係! 06/16 08:57
coronach: 怕改爛應該是靠測試啊,static function 分類要做好,不 06/16 09:31
coronach: 然就會像我第一個工作看到的,Tool.java一萬多行... 06/16 09:31
angusyu: 比如說常用的,多處共用1個屬性的,開static沒關係吧 06/16 10:23
qrtt1: 能開個電腦多打點字,把你的問題說清楚嗎!? 06/16 10:27
Yshuan: 個人也不是很喜歡static 這應該是design的問題 06/16 10:30
hidog: static不是問題所在吧 06/16 10:39
※ 編輯: DDxMM (210.66.115.238), 06/16/2016 11:04:46
hidog: 看起來是你們code review/coding style/架構設計有問題 06/16 11:31
hidog: 把重點放在coding品質的管理上吧 06/16 11:32
hardCode: 不少人不喜歡? 你要不要直接改很多人不喜歡 難閱讀 06/16 11:36
tvbic: 新手才會這樣寫 06/16 11:47
angusyu: 原來static method 是給新手用的 (筆記 06/16 12:28
knives: 新手應該連什麼叫static 都不知道吧 06/16 12:31
Blueshiva: 你真的知道Static function是用來幹嘛的嗎... 06/16 12:33
GoalBased: 同樓上... 06/16 12:35
Bencrie: 你什麼時候開始有非 static function 比較省記憶體的錯覺 06/16 12:36
alan3100: 雖然你想偷酸主管 但看來你連class存在意義都搞錯 06/16 12:51
comesuck: 如果情境不一樣,最省事就是開delegate自己外部實作 06/16 12:51
comesuck: 再丟進來 06/16 12:52
comesuck: 所有的method一寫好都是跟class放在一起 06/16 12:56
comesuck: stackoverflow搜"where are methods stored in memory" 06/16 12:58
popcorny: 看情境 不過大部分都是non-static居多, static比較少 06/16 13:16
tipsofwarren: 我喜歡data isolation 能static 就 static 06/16 14:13
tipsofwarren: Function 都在text segment 有self modified code? 06/16 14:14
Masakiad: 先搞懂static的正確用法再來討論 06/16 14:17
final01: 好多 static 神人 06/16 16:17
feeya: static不用new好用多了 06/16 16:52
doranako: 公用而且不需要存變數才比較多會使用static, 大部分還 06/16 19:12
doranako: 是nonstatic 06/16 19:12
wuliou: 這串推文到底是反串還認真啊… 06/16 19:46
KeySabre: 主要看是否跟instance的狀態相關 06/16 21:33
KeySabre: static or instance method 應該考慮的是設計上的權責而 06/16 21:35
KeySabre: 不是performance 06/16 21:35
blackie1019: 老實說我覺得你主管還有時間酸你人還蠻好的... 06/16 23:28
cobrasgo: 我覺得這沒標準的答案,看CLASS的用途 06/16 23:30
CoNsTaR: 我覺得把你文章裡的所有 static 通通換成 const 比較說得 06/17 01:57
CoNsTaR: 通 XD 06/17 01:57
Ekmund: 我是覺得跟你的code要放在什麼上面跑也有差... 06/17 02:24
cha122977: 沒狀態差異的可以用 06/17 02:24
goldberg123: 良葛哥網站去看一下再來討論吧 06/17 08:02
v7q4: common tool之類的function都我用static的 06/17 11:46
shadow0326: 這文給我的感覺就是 為什麼要用螺絲起子不用釘書機 06/17 19:34
shadow0326: 因為螺絲起子不會有用完訂書針的問題 06/17 19:34
thinklu: static最多人垢病的地方是會有test issue, 像是mocking, 06/18 08:38
thinklu: 你要怎麼mock? 基本上比較常使用的時候大概是singleton 06/18 08:38
thinklu: 或很小的until function 06/18 08:38
thinklu: 是util打錯 不好意思,建議多看看一些design的書 看看怎 06/18 08:41
thinklu: 麼寫code比較好 然後可以用stackoverflow 去問問題,像st 06/18 08:41
thinklu: atic的好壞那邊都有人分析過了 06/18 08:41
thinklu: 當然 我懷疑那些酸你的資深人員到底知不知道這些 或單純 06/18 08:43
thinklu: 他們就是被人酸過 所以就酸你一下 但是從來沒想去搞懂原 06/18 08:43
thinklu: 因 06/18 08:43
thinklu: 加油! 06/18 08:43
siriusu: 這篇推文好亂啊是反串很多嗎我都搞不懂啦 06/18 13:14
y3k: static與否要看你的code怎麼運用這個class 如此而已 06/18 16:28
ripple0129: 都討論到這了,順便問一下單純要單一性時如何挑選stat 06/18 22:20
ripple0129: ic或singleton 06/18 22:20
manaup: 很多主管都不是程式寫得好才當主管的 屁話一堆 你聽聽就好 06/19 03:17
thinklu: 基本上單一性都會選singleton, 是design pattern習慣的 06/19 12:21
thinklu: 使用,像可以寫一個singleton class with static initial 06/19 12:21
thinklu: ize() 去wrap你想要單一性的class, 這樣會非常清楚,像UU 06/19 12:21
thinklu: ID generator class基本上就蠻典型的是我說的這種應用, 06/19 12:21
thinklu: 可以被singleton wrap 06/19 12:21
dlikeayu: 用singleton方法來做才能較有效率減少記憶體使用 06/19 17:21
dlikeayu: 所以好的framework一般都會有一個入口static 成員或方法 06/19 17:21
dlikeayu: 去實現下面的函式庫 06/19 17:22
dlikeayu: 再由這個singleton設計方法去包裝工廠成員 06/19 17:23
dlikeayu: 基本上定義出規範和使用介面,你就"比較難"去自行new 06/19 17:23
dlikeayu: 一個未經包裝的物件 06/19 17:23
dlikeayu: 但是永遠不要低估菜鳥及疲勞過度員工所會犯的錯 XD 06/19 17:24
readonly: 這是在講 java 嗎? 06/19 22:14

你可能也想看看

搜尋相關網站