作者:
tommady (tommady)
2016-10-16 02:21:34個位前輩好,
不才小弟我前天與主管發生爭執,
是軟體架構上的設計想法不同。
文章可能有點長,
如果前輩們不喜愛,
還請見諒。
小弟寫後端的,有一個case分配剛好是
主管寫game server
我寫game logic
由於是第一個遊戲,
所以沒有任何前例或者範本或通用架構,
現在寫的一切就是未來的依循,
然而在前期討論都很順利,
意即 ,
game server就是包含除了實際遊戲邏輯以外全部的部份,
我只要寫好遊戲邏輯,例如牌類比大小,
我只消管怎麼比大小就好,
其餘的都由game server處理。
這看起來很完美,
但實際做出來的時候,
我原本預想由我提供幾個interface,
server只要呼叫這幾個就能完成一局遊戲,
比如:
1. start
2. stop
3. command handle
争議點在command handle,
我原本期待的是game server收到任何
client傳來的命令,只需要by pass給這interface就好,
這個interface會自行處理。
但是主管堅持,他只提供client命令的讀寫 ,
其餘的遊戲邏輯搞定。
也就是他只管server client之間溝通的library。
這樣變成我的遊戲邏輯得處理命令的接收,
邏輯得fork一個thread去聽有無命令進入,
而不是定義該怎麼處理命令,
然而這樣會讓未來每款遊戲都需要重覆的處理命令。
怎麼想都覺得這樣十分鬼異,
我說,
我想要的是只需要填肉,骨幹可以通用的架構。
主管回,
你別管這麼多,以後的人寫不好寫不順,
我會開除他,別管骨幹通用。
争論到最後,主管直接爆氣講,
你別覺得自己寫code很厲害,
我說這樣就是這樣。
當然,主管都講到這份上了,
我只能默默的說,
只是想提醒這樣架構會造成重覆,
以及通用性不足。
然後就吞了。
唉,小弟以前寫bios的,單兵作業比較多,
請問我該如何處理這種多人協同作業上的歧義呢?
感謝。
作者:
tommady (tommady)
2016-10-16 02:25:00喔對了,主管還挑明,以後誰敢改他這方式架構,殺全家。。。十分的無言。
作者: iFEELing (ing) 2016-10-16 03:00:00
你有遇過平常大小聲 出事就把屬下推出去擋的主管嗎?他會負責就照他的指示寫 他不負責就早點閃免得當替死鬼
作者:
pttworld (批踢踢世界)
2016-10-16 06:09:00至少這case的要拿到。
作者:
Jichang (C.C.Lemon)
2016-10-16 06:44:00你把他想成 你有兩層要寫 不就好了
作者:
maxqq (max)
2016-10-16 09:17:00反正他要負責,就給他負責,輕鬆點,拿錢辦事,又不是一輩子在這家公司做事如果依照上一層是接收指令後,分析指令,呼叫邏輯那其實,你主管的方式可能是比較正確把 command_handle 拆細一點,比對 start/stop
作者: luckyshin (大屁) 2016-10-16 11:15:00
你是被主管聘來幫他做事,不是被聘來跟他吵架的
作者:
f124 (....)
2016-10-16 11:18:00照主管說的做阿 我只管錢有沒有進來而已 干我屁事
作者:
yyc1217 (somo)
2016-10-16 11:28:00你不是老闆 就是需要妥協 客戶要大便就給他大便 頂多提醒一下這是大便
作者: badyy (nick) 2016-10-16 12:47:00
寫清楚接手時就是被這樣要求的,別被牽拖就好總比哪種前面接手就有問題,還反過來問你為什麼的好
作者:
stosto (樹多)
2016-10-16 13:59:00我覺得你主管是對的耶....
作者:
balaking (看八卦長知識)
2016-10-16 15:04:00我比較偏向你主管的架構分類...
本來就不會只有兩層 中間一層主管不想寫 叫你寫而已
作者: giantwinter 2016-10-16 15:30:00
離職
作者:
balaking (看八卦長知識)
2016-10-16 15:50:00而且我覺得你主管的工作不叫game server, 應該是api adapter lib, 可以參考別人架構
https://goo.gl/DMx1WT你的工作就是用主管的lib把remote data存進db, 懂了吧
作者:
htury (冰點)
2016-10-16 16:06:00想太多,趕快做完交差領錢就對了,在台灣還期待什麼是對的
作者:
bobju (枯藤老樹昏鴉)
2016-10-16 17:30:00這主管好啊~ 很明確地表明了分工態度, 誰聽誰的很清楚; 要是遇到打混戰的主管跟你說好好好, 最後再翻臉不認帳, 那才要幹在心裏.
作者:
anr2 (???)
2016-10-16 17:45:00學習被領導,學習cowork
作者: dnabossking (少狂) 2016-10-16 18:05:00
還好,不是只有我覺得主管是對的
client 跟 server 溝通不能因為處理遊戲邏輯卡住或等待。
作者:
now99 (陳在天)
2016-10-16 19:12:00離職阿
作者:
mathrew (Joey)
2016-10-16 19:57:00先不管這個架構誰對誰錯 基本上主管要負責 你就照他說的做,然後錢有進戶頭就好了
作者: AlanSung 2016-10-16 21:26:00
一進來就生一條 goroutine ? really?
作者: badyy (nick) 2016-10-16 23:52:00
這厲害了,一個cmd一個goroutine ??? 怪可怕的
作者: AlanSung 2016-10-17 08:00:00
所以看來你沒有做過 profiling,有用過 runtime/pprof嗎而且如你所述的話,你把程式的穩定性交給前一台srv一個 goroutine 算你 2KB 好了 1M 就 2G 了而且你什麼時候有去做 GC 呢? 不管怎麼看風險都很大如果有看系統 dashboard , memory 一直往上,你家的DevOps / Ops 不會跳腳嗎? 有沒有考慮用 channel加固定數量的 goroutine 比較好呢?
作者:
Argos (Big doge is watching u)
2016-10-17 09:33:00這種沒有什麼標準答案的東西你是在爭什麼?不就兩條路
作者:
anr2 (???)
2016-10-17 09:48:00https://goo.gl/YgmfY2 不覺得一個cmd一個goroutine是個好注意, 還是需要有 load balance 跟 worker pool我沒有實際遇過goroutine, 但是從文件來看一個 thread block應該說一個 goroutine block 就會在建立一個 goroutine把資源分配全部交給go 感覺就很危險 除非你有座 backpresure
作者:
iamshiao (CircleHsiao)
2016-10-17 11:03:00推 Jichang,我看的時候也是這樣想,不過時間要夠。
作者:
Argos (Big doge is watching u)
2016-10-17 13:26:00建議原PO都依你主管的去做就好 甚至今天主管硬要我變數全部取a b c 但他一個月給我十萬 我照寫不誤 懂?
作者:
genesic (嗯?)
2016-10-17 15:00:00golang寫出來的東西無法模組化嗎? 為什麼會爭這個?
我覺得不想溝通的人是你 你沒去理解你主管的設計理念你還是快點離職吧 不要繼續待比較好
作者: AlanSung 2016-10-17 21:07:00
就你上面回的第二段,請查一下 defensive programming如果你不能理解為什麼,可以問問主管或是其他比較有經驗的人
作者: gogogogo3333 (gogogogo33333) 2016-10-18 07:12:00
設計始終出自於需求,沒有絕對優勢的設計模式
作者: AlanSung 2016-10-18 08:06:00
若是這樣,我想你能不能 show 一下你的 test cases 呢我們可以從 test case 看出來別人(api, server)怎麼用有助於討論原本的設計哪種比較好
作者:
Argos (Big doge is watching u)
2016-10-18 13:32:00去上班講難聽點就是當狗啊 XDDDD
作者:
justben (BEN)
2016-10-19 00:33:00作者: badyy (nick) 2016-10-20 00:36:00
如果主管有提出實際分法就照做,最怕的是沒提又要等人提等人驗證,搞個好像是出錢的人才可怕
作者: longlongint (華哥爾) 2016-10-20 16:26:00
先閉嘴硬肏程式碼 做完這期就閃