成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

BAT等大廠十年研發(fā)經(jīng)歷,總結(jié)了12條開發(fā)經(jīng)驗(yàn)(墻裂推薦)

移動(dòng)開發(fā) 前端
在一線做了十年的開發(fā),經(jīng)歷了網(wǎng)易、百度、騰訊研究院、MIG等幾個(gè)地方,陸續(xù)做過3D游戲、2D頁游、瀏覽器、移動(dòng)端翻譯app等。積累了一些感悟。必然有依然幼稚的地方,就當(dāng)拋磚引玉,聊為笑談。

在一線做了十年的開發(fā),經(jīng)歷了網(wǎng)易、百度、騰訊研究院、MIG等幾個(gè)地方,陸續(xù)做過3D游戲、2D頁游、瀏覽器、移動(dòng)端翻譯app等。

積累了一些感悟。必然有依然幼稚的地方,就當(dāng)拋磚引玉,聊為笑談。

[[228717]]

對(duì)于團(tuán)隊(duì)而言,流程太重要了

行軍打仗,你需要一個(gè)向?qū)?如果沒有向?qū)В阈枰粋€(gè)地圖;如果沒有地圖,至少要學(xué)習(xí)李廣,找一匹識(shí)途的老馬;如果你連老馬也沒有,那最好可以三個(gè)臭皮匠好好討論,力圖勝過一個(gè)諸葛亮;如果三個(gè)臭皮匠連好好討論也做不到,那就是典型的烏合之眾了,最好寫代碼前,點(diǎn)上三炷香,斟上一杯濁酒,先拜拜菩薩,再拜拜谷歌。

我個(gè)人屬于性格溫和的(程序員大多性格不錯(cuò)),但確實(shí)見過少數(shù)強(qiáng)勢(shì)的人,說很多強(qiáng)勢(shì)的話。在技術(shù)上一言而決,一聽到任何反對(duì)就上升到私人恩怨。這樣的風(fēng)格,到底是剛愎自用,還是胸有成竹,就需要仔細(xì)判斷了。

為什么說流程重要呢?實(shí)際上,如果團(tuán)隊(duì)上有孫悟空存在,去西天取經(jīng),大概也不需要什么流程,只要方向就可以了。 但作為普通的戰(zhàn)士,應(yīng)該先慮敗。找人算命時(shí),應(yīng)該先聽聽不好的地方,好的地方就不用聽了,總歸是好的,不好的地方一定要聽,這樣才能規(guī)避。

這就是我的態(tài)度:先悲觀一點(diǎn),劃清底線,考慮在這個(gè)底線上你該怎么做?

這是我做開發(fā)的一個(gè)習(xí)慣,但這個(gè)習(xí)慣肯定不適用于買房。

怎么劃清底線呢?就是假想團(tuán)隊(duì)中沒有孫悟空了,光靠你唐玄奘、豬八戒和沙和尚,應(yīng)該怎么去取經(jīng)。

這個(gè)月走什么地方,遇到山怎么走,遇到河怎么過,遇到路上有妖怪劫道,誰去抵擋。遇到路上有少女要搭救,怎么辦?這就是流程,是原則。

我經(jīng)歷過一個(gè)流程很混亂的階段。都是很多年前的事情了,可以拿出來說說,不涉及單個(gè)人。

2011年在百度瀏覽器團(tuán)隊(duì)時(shí)遇到幾件讓人影響深刻的事情。 有一次開會(huì),產(chǎn)品拿出Google某個(gè)產(chǎn)品的DEMO,里面有一段很酷炫3D 效果,要求開發(fā)加上,只給2天時(shí)間,大家目瞪口呆。后續(xù)的開發(fā)為了趕節(jié)奏,導(dǎo)致非常多的bug,又為了修改bug,leader將所有的bug按照人員平均分配,導(dǎo)致不同模塊間的同學(xué)相互修改。。。。。實(shí)在難以想象。好比讓做花卷的廚子,去修改西湖醋魚的味道。

最初的現(xiàn)象是:bug下降的慢,延伸bug反而增加,每個(gè)人都累的半死,代碼風(fēng)格極其雜亂,為了趕工導(dǎo)致的臨時(shí)方案層出不窮;

  1. 到了中期:人員離職越來也多,代碼難以維護(hù),新加的需求與之前的臨時(shí)方案沖突。
  2. 到了后期:想做一些修復(fù),想調(diào)整架構(gòu),又要保證正常運(yùn)行,其難度好比在一架飛行的飛機(jī)上拆換零件。

然后我也急忙離職了。。。。實(shí)在看不到成功的可能性。

后來到了騰訊的團(tuán)隊(duì),感覺流程就規(guī)范多了。需求和bug有Tapd跟蹤,產(chǎn)品發(fā)布按照節(jié)奏,需求提出前會(huì)和開發(fā)反復(fù)討論可行性,有專門的質(zhì)量跟蹤,有專門的用戶反饋,每天知道要做什么,也知道明天要做什么。有產(chǎn)品需求,也有開發(fā)需求!這個(gè)非常重要。很多團(tuán)隊(duì),都是只有產(chǎn)品需求,開發(fā)好像牛一樣,耕完地就不管了?

流程其實(shí)沒那么復(fù)雜,就是各司其責(zé)+節(jié)奏。我們都是“哆瑞咪發(fā)梭拉西多”中的一員,各自有各自的責(zé)任,然后組合在一起,按照一個(gè)節(jié)奏跑起來。把該做的事情與該跑的節(jié)奏定好。

不要炫技,老老實(shí)實(shí)寫代碼

網(wǎng)上有一個(gè)段子,說有人要用JS實(shí)現(xiàn)一個(gè)簡(jiǎn)單的功能,然后朋友給他推薦了幾十個(gè)庫。

真的有必要嗎?具體情況具體分析。

居家過日子,你只需要一套普通的工具就可以了;如果你是修車的,你需要一套修車的工具;如果你是光頭強(qiáng),你需要一臺(tái)伐木機(jī)。 吃飯用筷子,用刀叉,都可以,但不要用殺豬刀,不要用丈八長(zhǎng)矛!,當(dāng)然也不能用牙簽。

用什么工具,用什么庫,問問過來人,多在KM上搜索一下。舉個(gè)例子:android上加密,用SQLChpher就可以了,微信也在用,你當(dāng)然可以學(xué)習(xí);數(shù)據(jù)庫ORM思想,用KM上推薦的GreenDAO就可以了;PC上3D引擎,用OGRE就可以了;小型游戲DEMO,用Irrlicht足夠;寫WebGL,用ThreeJS足夠。

首先想想:一些大庫hold的住嗎,后續(xù)發(fā)展如何?這些庫對(duì)安裝包的體積影響有多大?有沒有調(diào)研過同樣的產(chǎn)品在用什么?

想清楚了再?zèng)Q定用什么,最好是跟隨成功項(xiàng)目的腳步。

架構(gòu)上實(shí)用+適用

很喜歡曾國(guó)藩的一句話:結(jié)硬寨、打呆仗。

一字長(zhǎng)蛇陣、八門金鎖陣,哪個(gè)好?iOS都是單個(gè)進(jìn)程,微信Android版本3.5以前是單進(jìn)程,3.5以后有獨(dú)立的網(wǎng)絡(luò)進(jìn)程; PC瀏覽器的進(jìn)程架構(gòu)更加復(fù)雜,UI進(jìn)程、內(nèi)核進(jìn)程、Render進(jìn)程,而且還有根據(jù)頁面多少的進(jìn)程調(diào)節(jié)模型。

這些設(shè)計(jì)都很好,各有各的道理,都適用于當(dāng)前的產(chǎn)品。所以我的觀點(diǎn)是:首先分析當(dāng)前產(chǎn)品的規(guī)模、性質(zhì),然后再設(shè)計(jì)架構(gòu)。

在當(dāng)前階段達(dá)到:開發(fā)效率+架構(gòu)的平衡;并向后展望3個(gè)月,或者半年左右,看看架構(gòu)能不能適應(yīng)。

我做騰訊翻譯君時(shí),曾反復(fù)猶豫要不要模仿微信加入獨(dú)立的網(wǎng)絡(luò)進(jìn)程。后來逆向了有排在第一二位的競(jìng)品,最終采用了現(xiàn)在的主功能單進(jìn)程模型。

產(chǎn)品規(guī)模、人員規(guī)模、功能階段,具體問題具體分析。

既要有攻城之力,也要有熬戰(zhàn)之氣——

BUG

產(chǎn)品開發(fā)完成后,必然有bug。其實(shí)開發(fā)人員在工作過程中,是有一定的直覺或者心理預(yù)判的,即:某個(gè)功能模塊的質(zhì)量如何。 這里面的質(zhì)量包括:可維護(hù)性、擴(kuò)展性、算法渲染效率,還有就是bug與崩潰率。

功能開發(fā)完成后,就要開始守城了。

bug,一部分產(chǎn)生是由于架構(gòu)帶來的,例如比較復(fù)雜的架構(gòu),會(huì)導(dǎo)致復(fù)雜的實(shí)現(xiàn)細(xì)節(jié);

但還有很大部分bug,其實(shí)是基于如下三個(gè)原因產(chǎn)生的:

  1. 對(duì)于某個(gè)api的不了解,或者對(duì)于某個(gè)平臺(tái),或者SDK版本的不了解。 舉例而言:andrid里面非主線程,是不能直接處理UI相關(guān)的事情的;JAVA的內(nèi)存釋放也不是絕對(duì)的,相互指向是無法釋放的;函數(shù)個(gè)數(shù)是有DEX問題制約的---------------------這些bug的產(chǎn)生,也是開發(fā)人員摸索學(xué)習(xí)的過程,經(jīng)歷過一次就不會(huì)再犯了。這是學(xué)習(xí)廣度與熟練度的問題;
  2. 還有一些bug,是由于粗心大意導(dǎo)致的。例如空指針的問題,野指針的問題。在C的開發(fā)中,野指針的問題,GDI句柄的釋放問題,這些都是嚴(yán)謹(jǐn)?shù)拇a需要避免的; 而又一些工具,或者方法是可以規(guī)避這些問題的,例如android中的利用@Nullable和@NonNull加強(qiáng)空指針檢測(cè)等方法;
  3. 還有一些bug,是由于“使用情況各異導(dǎo)致的”。例如:偶現(xiàn)在某個(gè)模塊crash。這里的本質(zhì)還是因?yàn)檫壿嫷漠惓_吔鐩]有處理好。例如android上的OOM問題,還有PC上UI焦點(diǎn)導(dǎo)致的對(duì)象釋放問題。這些異常情況,一部分靠測(cè)試發(fā)現(xiàn),一部分靠用戶反饋,還有一部分就靠自己的異常處理。例如Android中的try catch機(jī)制,其實(shí)就是遇到異常了,你能糾正錯(cuò)誤的機(jī)會(huì)。

自審

每過一段時(shí)間,都要站在高空俯視自己,問問:到底是在承擔(dān)過去,還是在改變未來。

如果之前程序代碼質(zhì)量不好,后面修改問題的時(shí)間就會(huì)比較多。到了開發(fā)的中期,得多問問自己,你在不停的改正以前的錯(cuò)誤,還是在做新的東西。 如果修改錯(cuò)誤的時(shí)間多一點(diǎn),那就要注意自己的代碼質(zhì)量了!

注釋

我很喜歡寫注釋。有大牛說:代碼就是最好的注釋。 可惜我還沒有達(dá)到那個(gè)程度。所以,我會(huì)把注釋寫的非常清楚。其一:為了自己以后維護(hù)的方便; 其二:為了其他人接手的方便。

BAT等大廠十年研發(fā)經(jīng)歷,總結(jié)了12開發(fā)條經(jīng)驗(yàn)(墻裂推薦)

BAT等大廠十年研發(fā)經(jīng)歷,總結(jié)了12開發(fā)條經(jīng)驗(yàn)(墻裂推薦)

這是我在翻譯君項(xiàng)目中寫注釋的方式。

1:對(duì)于很復(fù)雜的邏輯,務(wù)必用12345的順序依次寫清楚;

2 :對(duì)于函數(shù)中的某個(gè)參數(shù),需要解釋為什么要設(shè)置這個(gè)參數(shù),尤其是公用工具類里面的函數(shù)---說清楚參數(shù)的背景含義,可以讓其他調(diào)用者理解的更加清晰。

我一般不用英文寫。雖然這樣看起來格調(diào)很低,但勝在大家都能輕松的看懂。寫代碼不能太傲嬌,寫注釋也不要太傲嬌,目的是讓你的搭檔或者接手者,更輕松的理解,讓她/他少加班。

代碼結(jié)構(gòu)

代碼結(jié)構(gòu)要清晰。有按照功能劃分的,有按照UI結(jié)構(gòu)劃分的。還有公用工具類,有數(shù)據(jù)管理,有主邏輯控制。不管用哪種思想,有序的代碼結(jié)構(gòu),可以讓每個(gè)人感覺很干凈。好比日本的收納整理技巧讓很多小資推崇,無非就是干凈、整潔、便于管理。

而且,還有一個(gè)重要的好處:代碼結(jié)構(gòu)表現(xiàn)出來的其實(shí)是——程序的一個(gè)模塊邏輯思想——讓大家工作在不同的區(qū)域。

代碼風(fēng)格

代碼風(fēng)格統(tǒng)一!好比一家人,有叫Tom的,有叫安東尼的,還有叫流川楓、石破天、圣杰夫拉斯基,無所適從。理論上,看一個(gè)函數(shù),就能從名稱上區(qū)分哪些是成員變量,哪些是局部變量,哪些是全局靜態(tài)值。

除了命名統(tǒng)一外,還有一行代碼最大的寬度,函數(shù)的連續(xù)調(diào)用長(zhǎng)度等,頭文件的包含風(fēng)格,也最好有一個(gè)約定。類的出現(xiàn)時(shí)間,創(chuàng)建人名,最好也加上,看起來沒用,但到了追蹤問題時(shí),就能看出時(shí)間線的好處。

安全與逆向

這是針對(duì)Android說的,還有PC插件也需要考慮。Android上首先要防止被別人逆向,我成功逆向并重新打包過有第一位和第二位的競(jìng)品。這似乎有點(diǎn)不可思議,但確實(shí)做到了。加固+混淆+代碼判斷,最好都有。

安全上,可以看金剛掃描的漏洞,逐一修改就行。公司很多工具很好用的!

開發(fā)效率

開發(fā)效率可以用這些方式提升:

  1. 構(gòu)建公用工具類,方便大家使用
  2. 使用開源的一些包,例如ORM思想的數(shù)據(jù)庫等
  3. 可以很快的找到問題。開發(fā)中,找bug的時(shí)間,往往是很多的。我用的方法有3個(gè): 使用try catch; 攔截所有crash到我指定的地方;超多的Log,Log有統(tǒng)一的控制開關(guān)。
  4. 借力:數(shù)據(jù)上報(bào)用燈塔,崩潰上報(bào)用bugly,公司KM上很多經(jīng)驗(yàn),拿過來用。

安裝包體積

  1. TINY壓縮圖片
  2. 刪除無效的資源文件

UI渲染效率

UI是用戶的第一感覺;UI快并穩(wěn)定,第一感覺就不會(huì)差太多;管理好內(nèi)存,基本管理好了一半crash;管理好UI,等于管理了人機(jī)交互感受。

UI上的開發(fā)是:渲染效率與渲染效果的平衡。

很匆忙的寫的,必然有很幼稚的地方,歡迎斧正。

責(zé)任編輯:未麗燕 來源: 簡(jiǎn)書
相關(guān)推薦

2019-01-14 08:52:25

開發(fā)經(jīng)驗(yàn)瀏覽器

2016-11-17 14:54:49

云計(jì)算安全性可用性

2013-06-18 09:34:39

軟件開發(fā)

2022-06-02 08:28:25

Docker代碼運(yùn)維

2018-08-15 08:34:26

開發(fā)Java代碼

2018-10-12 14:48:00

2020-11-18 07:52:57

技巧

2021-07-13 10:59:49

Python可視化

2013-07-11 14:41:16

編程經(jīng)驗(yàn)

2018-12-26 16:41:21

云計(jì)算AI云服務(wù)

2019-10-17 10:15:04

運(yùn)維監(jiān)控報(bào)警

2019-09-05 10:23:34

運(yùn)維監(jiān)控技術(shù)

2022-03-28 11:41:21

物聯(lián)網(wǎng)物聯(lián)網(wǎng)市場(chǎng)智能電網(wǎng)

2022-06-29 11:15:45

面試騰訊

2012-01-17 10:04:07

2015-09-08 11:14:28

阿里面試面試經(jīng)歷

2020-06-10 10:30:48

Python 開發(fā)編程語言

2020-06-07 16:16:01

Python開發(fā)工具

2018-11-14 10:32:24

互聯(lián)網(wǎng)

2019-12-13 16:08:57

戴爾
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 九九在线视频 | 在线一区| 亚洲精品在线免费看 | 国产一区二区三区久久久久久久久 | 日本黄色大片免费 | 综合久久99 | 五月天天丁香婷婷在线中 | 欧美亚洲国语精品一区二区 | 国产在线色 | 国产资源在线播放 | 亚洲欧美日韩精品久久亚洲区 | 国产在线观看福利 | 欧美日韩成人影院 | 一区二区在线免费播放 | 久久精品久久久 | 久久宗合色 | 99re6在线视频精品免费 | 91日韩 | 国产亚洲成av人片在线观看桃 | 日本涩涩网 | 成人高清视频在线观看 | 国产一级淫片a直接免费看 免费a网站 | 日本欧美在线视频 | 在线免费观看毛片 | 国产一区二区在线看 | 免费av毛片| 情侣黄网站免费看 | 亚洲视频区 | 久草在线在线精品观看 | 都市激情亚洲 | 日韩成人在线视频 | 99国产视频 | 国产高清免费 | 中文字幕成人免费视频 | 久久精品亚洲精品国产欧美 | 日本a级大片 | 黄色一级片在线播放 | 超碰8| 一区二区av| 久热精品在线播放 | 久久1区 |