看板 Soft_Job 關於我們 聯絡資訊
code review時,主管說暫存變數可省記憶體,不用一直建立變數佔記憶體,我就說"重 構"這本書作 者建議別這樣做,我就拿下面這個"重構"作者的網址 https://sourcemaking.com/refactoring/split-temporary-variable 他就說這個作者有問題,說我跟他寫一樣出去別人 會笑我 接著,我程式有用簡單工廠模式,就像head first design patten的內容一樣建立pizza 店的工廠,他又 說為什麼要建立抽象的pizza店,建立A pizza加盟店,B pizza加盟店,我說每間pizza店 產生pizza囗味,方法不同,他又說建立A pizza店,B pizza店 產生物件浪費記憶體,為何不用switch case判定 是A或B,直接寫各店pizza的作法及口味,產生pizza的作法何必封 裝在A pizza物件,或B物件中,全寫在pizza這個程式中,寫一個類別靜態方法回傳pizza 一樣的,他沒看過design patten,也覺得四人幫在亂寫一通,建立物件是浪費記憶體 https://rongli.gitbooks.io/design-pattern/content/chapter1.html https://dotblogs.com.tw/joysdw12/archive/2013/06/23/design-pattern-simple-fact ory-pattern.aspx 然後談到建立物件,我是用set get的方式設置參數,他就覺得為什麼不用建構子把好幾 個參數丟進去,我一樣拿出 https://sourcemaking.com/refactoring/smells/long-parameter-list http://teddy-chen-tw.blogspot.tw/2014/04/3long-parameter-list-divergent-change .html?m=1 重構的作者是建議參數不用丟太多,建立一個物件, 設定物件的值,把物件丟進建構子,或方法參數中,然後我這樣跟我主管說,他又說我沒 腦袋嗎 沒辦法判定這個作者有問題 參數本來就全丟給建構子,讓建構子去塞,即便 參數很多也沒關係,說我物件導向沒學好 反正一直在對我人身攻擊,即使我提到重構 設計模式,對他來說就是爛書,作者亂寫 請問我該如何是好? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.241.90.24 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1462623535.A.DC8.html ※ 編輯: purin88 (111.241.90.24), 05/07/2016 20:24:21
Clangpp: 換部門?? XD 05/07 20:24
testPtt: 注重記憶體有他的寫法 一般DP重點在好懂好改 05/07 20:25
Clangpp: 四人幫是亂寫一通?? 科科 05/07 20:26
mithuang: 又要Code Review又不接受新知識的主管真另人頭疼 05/07 20:27
chuegou: code維護的頻率高嗎?還是寫完之後幾乎不會動? 05/07 20:28
leicheong: 有很多程設習慣並不適用於硬體資源受限如embedded 05/07 20:28
mithuang: 現在PC都強到不行,為了那一滴滴滴效能犧牲維護性,划不來 05/07 20:28
leicheong: 的情況? 05/07 20:29
Sirctal: 很難說主管是對是錯... 要看立足點 只是如同 mithuang大 05/07 20:30
YSimpson: 把程式貼出來才知道問題在哪裡 05/07 20:30
Sirctal: 說的 為了一點效能犧牲維護性... 05/07 20:30
BignoZe: 要看看你要解決什麼問題才看看要不要用設計模式 過度設計 05/07 20:32
vi000246: 這種時候就聽主管的 出事他負責 05/07 20:33
leicheong: 好像以前盛行了十數年的Frame Pointer Omission現在也 05/07 20:33
BignoZe: 造成的成本可能比缺乏設計還要高 看你們要追求的是開發速 05/07 20:34
leicheong: 為了方便除錯時做stack trace而預設關閉了. 05/07 20:34
BignoZe: 度還是效能 才能決定用哪種作法 05/07 20:34
Newtype: 自己的作品這樣寫就好了 上班就不要跟主管爭了 05/07 20:34
BignoZe: 主管也是個不好學的人 設計模式和重構算是基本的東西了 05/07 20:35
BignoZe: 不過你也不必看了什麼書就覺得那本書的方法好棒棒一定要 05/07 20:36
BignoZe: 用 學東西是為了面對未來的挑戰而學的 有一天你公司的東 05/07 20:37
BignoZe: 西需要好的架構 這些設計模式就會派上用場了 05/07 20:37
NCUking: 你的主管可能是以前是搞韌體之類的 05/07 20:38
biboSnake: 你不是在工作嗎?他是你主管 你還想說什 05/07 20:38
biboSnake: 麼 05/07 20:38
Hikkiaholic: 作者對你的影響力 沒有主管的萬分之一 05/07 20:38
Hikkiaholic: 對你而言 主管比賈伯斯比爾蓋茲耶穌上帝天王老子 更 05/07 20:40
purin88: 唉,我就只是難過被人身攻擊 05/07 20:40
Hikkiaholic: 大 主管怎做就怎做 好壞不重要 05/07 20:40
Hikkiaholic: 違背他 做爛就算 做好他更氣 表示你比他厲害 05/07 20:41
Deltaguita: 以他說的為主,不然就是分析優劣給他看 05/07 20:42
biboSnake: 推樓上 05/07 20:43
Ekmund: 什麼都塞建構 就祈禱這物件不會被當樣板大量衍生 05/07 21:01
sayya2311: 你要的是這公司的$還是自己的競爭力,2選1 05/07 21:03
littlebau: 照他說的寫。比較好的方法本來就萬百種。不是嗎? 05/07 21:03
Ekmund: 等著見識超肥大檔案載著幾十種規則誕生 05/07 21:03
CRPKT: 換公司 05/07 21:04
Yshuan: 換吧 反正台灣寫程式錢都差不多少 05/07 21:06
sing10407: 溝通有問題,說服不應該一直丟書丟連結;再者主管堅持 05/07 21:10
sing10407: 應該就直接用主管的方法,畢竟出事是主管直接被定 05/07 21:10
iamshiao: 真的是出來混才知道守舊又自負的人比想像中多很多,人家 05/07 21:15
iamshiao: 一句以前都這樣做還不是好好的,你只能摸摸鼻子,畢竟 05/07 21:15
iamshiao: 那也是事實,不行就換工作吧 05/07 21:15
giantwinter: 離職 05/07 21:16
james732: 不過像用在嵌入式系統的程式似乎確實要斤斤計較? 05/07 21:19
james732: 我覺得要看原PO的使用情境? 05/07 21:19
james732: 以效能與memory來說,應該可以分析產生數據來說明? 05/07 21:20
ticks: 拿compiler課本,翻到dataflow analysis和SSA的章節嗆他 05/07 21:23
popcorny: 單方說詞..建議請你主管出來辯論 (先等我買雞排..) 05/07 21:32
longlongint: 那就 跟他說好然後 改code給他看 05/07 21:32
longlongint: 然後編譯自己的code 05/07 21:32
coronach: 你的主管很明顯是早期寫C出身的人,但是現在新的compile 05/07 22:08
coronach: r很強,就算embedded 都不一定要那麼麻煩了... 05/07 22:08
fridayjason: 時代不同 以前系統規格差的時後 只能省則省硬幹 05/07 22:14
fridayjason: code寫得醜難維護 換個角度其實是讓自己不易被取代 05/07 22:15
ns1234: 錄音 換公司? 05/07 22:16
comesuck: 他不明白stack heap gc的運作吧 05/07 22:34
comesuck: function傳入值十幾個還不宣告class包起來真的很有事 05/07 22:37
tsairay: 文人相輕 05/07 22:37
steven11329: 切入的角度不同吧…我覺得沒有對錯 05/07 22:50
steven11329: 而且盡信書不如無書,書上說的不一定都要遵循啊! 05/07 22:52
zelda123: 從敘述來看我看不出有哪裡人身攻擊 05/07 23:06
ah7675: 這是典型剛出社會的人的毛病,丟網址給別人看更是蠢 05/07 23:48
ah7675: 對解決問題一點幫助也沒有 而且只想著對與錯 也不考慮 05/07 23:49
ah7675: 背景、場合 什麼平台 開發週期長短及產品導向也不清楚 05/07 23:51
ah7675: 只因為自己學了認為對的東西就戰無不勝 這個主管可能很爛 05/07 23:52
ADYex: 你需要看Clean Code的番外篇 專業程式設 05/07 23:53
ADYex: 計師的自處之道 05/07 23:53
ah7675: 但你用的方式就算證明你是對的又如何? 05/07 23:53
ADYex: 不過我想你還是快逃吧 05/07 23:57
ripple0129: 雖然覺得是看案例,不過看文章推測該主管沒提出原因, 05/08 00:19
ripple0129: 單純說DP作者在亂寫就知道素質了 05/08 00:19
realbout: 其實和學校教授一樣,用嘴寫的一手好程式 05/08 00:27
poloball: 我覺得直接丟書本或丟網址有點強迫逼人接受的感覺 05/08 00:29
justben: 找些軟體 實測啊 用數據說話 05/08 00:30
poloball: 自己活用書中知識 以你們的案例為例解釋可能較好 05/08 00:30
justben: 不過 review 不是為了這個吧 又不是要寫書 05/08 00:30
poloball: 直接丟個書名或網址 好像網路上在筆戰 05/08 00:31
realbout: 就像房子亂蓋也是挺快的 05/08 00:32
carbopon: 你能說出這個case,為什麼用這寫法比較好嗎? 05/08 01:59
WolfLord: 軟體豬就是種種主張弄出來的,然後一堆自以為管理很優 05/08 02:06
WolfLord: 的笨蛋交出更多笨蛋,以光速抵銷摩爾定律的進步。讓計算 05/08 02:07
WolfLord: 機性能永遠不夠快...想想8088跑DOS的算PI速度為什麼 05/08 02:08
WolfLord: 比WINDOWS+i7+32GRAM還快? 05/08 02:09
Gaogaigar: 說不定你拿去實測後,你的code會比較快 05/08 02:29
Gaogaigar: 不過從你這文沒解釋清楚來看,你溝通上對 05/08 02:31
Gaogaigar: 主管製造的困擾可以不少 05/08 02:31
jl40: 程式員相輕? 05/08 03:25
valen720918: 要說出為什麼要這樣寫,不是一昧說某大神怎麼都怎麼 05/08 08:44
valen720918: 寫 05/08 08:44
valen720918: 何況,2個方案都可以 work ,要說明挑哪一個優劣 05/08 08:46
yourinfo: 主管讓你怎麼寫就怎麼寫,只要沒有什麼後遣症就好 05/08 09:30
yourinfo: 等swtich case不好維護時再來重構,到時不是更好說明 05/08 09:34
yourinfo: 變數怎用,參數怎傳,就都不是那麼重要,習慣問題罷了 05/08 09:34
wens: 說起來這個 case 其實編譯器可能會最佳化掉 05/08 10:15
siriusu: 同valen的意見 05/08 10:23
libery: https://goo.gl/VCW1EU 05/08 10:42
liddle: 你的舉例太空泛,很難判斷。DP是累積歸納出的解題結構。專 05/08 11:11
liddle: 對付OO會遇上的問題。 05/08 11:11
tsairay: 有時候某些寫法,是程式架構大才有利,程式架構小反而會 05/08 12:23
tsairay: 顯得累贅 05/08 12:24
tsairay: 像是switch case如果只有三個,而且也不會再增加,你就 05/08 12:40
tsairay: 沒必要寫得那麼"厚工",除非case的數目會一直膨脹,你才需 05/08 12:40
tsairay: 要一開始就把架構弄好 05/08 12:41
LiloHuang: 如果主管在意性能或記憶體用量,那就是去做實際的量測 05/08 12:43
LiloHuang: 若程式碼更好維護,也沒有耗用更多記憶體或者變慢 05/08 12:45
LiloHuang: 可省記憶體是省了多少,快了多少都要用科學的方法量測 05/08 12:46
LiloHuang: 如此一來才能有雙贏的局面。 05/08 12:47
badyy: 小魯只會用profiler跑數據,用眼睛跑功力不夠還真不行XD 05/08 13:27
tloy1966: Clean code 看一下 05/08 13:37
Argos: 出來混個性別太硬 公司要你怎麼寫 你就怎麼寫 東西出來就好 05/08 14:09
Argos: 如果覺得公司怎麼都叫我寫些垃圾 好極了 這代表你根本不該 05/08 14:10
Argos: 待在這種鬼地方 太埋沒你的才能了 05/08 14:10
Argos: 工作就完成主管交辦事務 想寫自己理想中的東西 就在自己的 05/08 14:12
Argos: side project愛怎麼玩就怎麼玩吧! 05/08 14:12
kenwufederer: 只覺得主管人身攻擊就不對 05/08 15:21
leoloveivy: 有技術 處事這種態度 你就慢慢等你的柏樂吧 05/08 15:25
oread168: 噓人身攻擊 05/08 16:08
ECMA: 不用辯 實力累積夠了就跳 很多主管都不容別人質疑 05/08 22:13
y3k: 文人相輕而已 這種要說對錯要把全部的情境需求釐清才知道 05/09 09:00
y3k: 拿建構子來說 我自己也是會盡可能讓建構子完成大部分參數 05/09 09:02
y3k: 的帶入 在有多型需求的時候才會用.with或.put給值@@ 05/09 09:03
y3k: 你們的溝通有問題 而且看起來你沒有弄很清楚為何書上那樣教 05/09 09:05
y3k: 所以不太有辦法拿出強大說服力 如果都到那個程度主管還是不聽 05/09 09:06
y3k: 那就是他不願意溝通 你們就自求多福吧XDD 05/09 09:06
leacks: 看怎樣用,跟怎樣的組譯器,不覺得你主管說的全然是錯 05/09 09:20
f124: 主管說的都是對的 Yes Your Highness! 這樣回就對了 幹嘛辯 05/09 10:05
Luos: 主管想法有點舊 05/09 11:12
Lordaeron: 果然是毛語錄一出,紅衛兵們都說好。 05/09 11:26
abola921: 書本裡說的就一定對?書本裡的情境跟你的團隊相同? 05/09 14:24
abola921: 情願相信外國的13道金牌,也不相信在戰場上拼戰的人? 05/09 14:26
abola921: 團隊合作求的是一致性,或許你比其它人強,但不代表別人 05/09 14:27
abola921: 也必需要跟上你的腳步,腳步一致才能一起做事 05/09 14:28
abola921: 再來是接下來怎麼辦,如果你還是想拼技術,那就得離開 05/09 14:30
abola921: 朝向假DevOpt真統包工程師的路,很可能是走孤狼路線 05/09 14:32
abola921: 不然就是要學習如何與團隊相處,特別是怎樣表達想法 05/09 14:34
doranako: by case啦,記憶體多當然用物件,記憶體不夠只好用傳統 05/09 19:00
doranako: 寫法但難維護 05/09 19:00
b510336: 我覺得我完全可以理解你的心情... 05/09 23:04
thinklu: 你老闆怎麼會這麼不求上進...用procedure programming寫 05/10 14:54
thinklu: 寫code寫得這麼醜又難擴展跟debug真的有比較好? 這種人感 05/10 14:55
thinklu: 覺大概就這樣了... 05/10 14:56
thinklu: 他可能沒看過真的寫得很好的程式 只能說原po加油! 05/10 14:58
feeya: 老闆說省記憶體 你就得省記憶體 不然哩 05/10 15:27
feeya: 你應該要找出更能省記憶體的方法阿 05/10 15:29
lensuper: 就說不要搞嵌入式了,難學,薪水又低 05/10 19:01
Killercat: 語言?是否embedded? embedded有自己特殊的policy 05/11 15:36
Killercat: 另外design pattern基本上只會用更多記憶體 很少有反例 05/11 15:37
Killercat: 因為他重點在於好修改好擴充 而非好效能跟節省資源 05/11 15:37
Killercat: 在resource critical的環境加上錯誤語言下 DP只是找事 05/11 15:38
Killercat: 把整個環境攤開看一下比較好討論 05/11 15:38
prpure: 第一個例子不都是區域變數嗎,應該沒省到吧 05/13 00:21
prpure: 用temp有時就真的是temp,或懶得想名稱 05/13 00:23
DWR: 結果寫甚麼code沒說 有些就是resource有限 05/13 23:20
liangyiiiii: 不應在職場拋書包 主管不是被你教導的 沒有對錯 只 05/20 22:09
liangyiiiii: 有他說了算 05/20 22:09