作者DDxMM (停不下來)
看板Soft_Job
標題[請益] 不少人不喜歡在class裡加static function
時間Thu Jun 16 08:32:02 2016
最近一直被主管酸不停的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