[高效能程式設計設計]展現設計實現細節
阿新 • • 發佈:2018-11-19
最近在review團隊程式碼的時候,也常常出現提出一些改變讓團隊同事困惑的地方,就是和一些經典的設計實現方式有些不同。
其實其根本原因就在於,我們在處理引擎開發,尤其是效能相關的部分,都要追求極限效能,這種情況下,會呈現出很多不同的程式設計風格。
效能偏好的程式設計實現會偏好:
- 傾向考慮底層,think in hardware
- 傾向設計實現暴露,而非隱藏,便於使用者瞭解模組的實現原理,以達到最大化的使用
而超大規模的程式設計,會偏好層次結構清晰,簡潔的介面,不要暴露背後的實現細節,甚至要保持實現的靈活性。
這兩點一定程度上是有矛盾,但是通過較強的設計實現積累,以及足夠的註釋,也是可以做到熊掌和魚兼得。
那麼團隊應該如何去選擇,要不要追求底層和減少封裝細節呢?個人看法就是要堅定地朝著“優先保證高層設計的清晰合理,推進底層實現和理解實現細節”,主要原因:
- 高層設計總是重要的,高層應該優先
- 高層容易搞定,可以著手底層實現和理解實現細節:高層設計在行業充分發展的今天,大家已經可以很好地搞定了,每一個領域都有非常好設計方案出來,搞定這個並不會牽涉太多精力,好的團隊可以說應該很輕鬆搞定這一點
- 底層實現和理解實現細節,如同星際爭霸和LOL中的微操,在充分競爭下,能做多少做到多好,會成為關鍵
- 之前出現的functional programming和ESC多少是這種暴露實現細節的表現
我們以LOL比賽為例,大的戰術,在比賽如此繁多的情況下,各種換線,雙打野遊走,分帶等等已經被充分開發,甚至包括應對的策略大家都很熟知,這塊很重要,但是不構成大的門檻。
然後微操作和配合,包括timing把握,這種次巨集觀的操作在很多比賽中帶來致勝的關鍵。
sum:
高層設計合理,優先順序最高,但它容易做到。
在底層實現和理解實現細節上,團隊能做到多少,決定團隊的能開發出多高效能遊戲的關鍵。
如果團隊已經走到,可以更多地去暴露實現細節,關注底層實現,那麼應該去儘量做,當然在高層設計合理的前提下