代碼設(shè)計(jì)的一些思考

架構(gòu)設(shè)計(jì)

  • 遵循“先設(shè)計(jì)后開(kāi)發(fā)”的原則,設(shè)計(jì)高于開(kāi)發(fā)
  • 設(shè)計(jì)時(shí)應(yīng)確定好時(shí)序圖、UML關(guān)系圖
  • 設(shè)計(jì)時(shí)應(yīng)將需求查乒、場(chǎng)景抽象成模型(建模)澜公,并將模型拆分成模塊姆另,形成架構(gòu)
  • 模型應(yīng)考慮并兼容后續(xù)需求的迭代開(kāi)發(fā),應(yīng)減少架構(gòu)的修改
  • 模塊之間應(yīng)減少依賴關(guān)系坟乾,并盡量以接口的方式形成依賴
  • 設(shè)計(jì)時(shí)應(yīng)考慮測(cè)試用例迹辐,“測(cè)試驅(qū)動(dòng)開(kāi)發(fā)”,以測(cè)試用例來(lái)檢驗(yàn)功能開(kāi)發(fā)的完成甚侣。

類的設(shè)計(jì)

  • 職責(zé)單一明吩,每個(gè)類應(yīng)集中處理某個(gè)方面的事務(wù)
  • 短小精悍,每個(gè)類的代碼行數(shù)應(yīng)該控制在1000行代碼以內(nèi)殷费,提高可讀性
  • 封裝性印荔,應(yīng)盡量減少對(duì)外暴露。非必要暴露的方法不要暴露详羡。非數(shù)據(jù)類的成員變量不能直接對(duì)外暴露仍律,而要提供公共的方法。
  • 功能類應(yīng)盡量實(shí)現(xiàn)于接口
  • 因某種特征導(dǎo)致多個(gè)函數(shù)的實(shí)現(xiàn)發(fā)生變化实柠,應(yīng)考慮將這個(gè)特征以繼承的關(guān)系進(jìn)行表現(xiàn)水泉,不同的特征,不同的子類
  • 為了提高閱讀性窒盐,類中代碼的順序上應(yīng)該類型草则、功能進(jìn)行排列,即按先變量后函數(shù)蟹漓。變量的順序炕横,應(yīng)按公有、私有葡粒、靜態(tài)份殿、類型排序。函數(shù)的順序應(yīng)按照構(gòu)造函數(shù)嗽交、功能進(jìn)行排序卿嘲。
  • 類名應(yīng)表現(xiàn)出類的功能

函數(shù)的設(shè)計(jì)

  • 職責(zé)單一,一個(gè)函數(shù)集中處理一個(gè)功能轮纫。
  • 短小精悍腔寡,每個(gè)函數(shù)保持在100行以內(nèi),函數(shù)過(guò)長(zhǎng)是應(yīng)將相應(yīng)的功能抽出來(lái)掌唾。
  • 簡(jiǎn)化輸入輸出放前,每個(gè)函數(shù)的參數(shù)應(yīng)控制在3個(gè)以內(nèi)忿磅,盡量保持在一到兩個(gè)。多出來(lái)的參數(shù)凭语,應(yīng)該盡量集中成為成員變量葱她。
  • 邏輯緊湊,環(huán)環(huán)相扣似扔。在最合適的位置做判斷吨些,跳轉(zhuǎn),減少代碼的無(wú)用的執(zhí)行炒辉。
  • 方法名豪墅、變量名應(yīng)有意義并表現(xiàn)功能
  • 減少嵌套,函數(shù)內(nèi)部的嵌套不應(yīng)超過(guò)三層黔寇∨计鳎可通過(guò)將嵌套抽成方法,跳轉(zhuǎn)到另外一個(gè)新的函數(shù)并終止本函數(shù)缝裤,提前返回的方式減少嵌套屏轰。
  • 優(yōu)化復(fù)雜的邏輯判斷,應(yīng)將復(fù)雜的邏輯判斷抽成新的方法憋飞。
  • 代碼中不能出現(xiàn)重復(fù)的代碼霎苗,重復(fù)的代碼要進(jìn)行整合,可以通過(guò)合并成基類的邏輯或方法榛做,抽成工具類中的方法實(shí)現(xiàn)唁盏。
  • Log的設(shè)計(jì)的重要性等同于正常代碼。Log不能暴露用戶的個(gè)人信息瘤睹。應(yīng)在方法的入口處反應(yīng)決定方法結(jié)果的信息升敲,包括參數(shù)信息答倡,和重要內(nèi)部成員變量的信息轰传。Log的長(zhǎng)度不能過(guò)長(zhǎng),內(nèi)部的內(nèi)容應(yīng)該盡量簡(jiǎn)寫瘪撇,并包括盡量的多的信息获茬。避免在循環(huán)內(nèi)部添加Log。Log的設(shè)計(jì)應(yīng)保證任何代碼執(zhí)行過(guò)程有跡可循倔既。

競(jìng)態(tài)關(guān)系的設(shè)計(jì)(多線程的設(shè)計(jì))

以下為功能類的設(shè)計(jì):

  • 應(yīng)盡量減少功能類的成員變量
  • 容器類型的成員變量應(yīng)該設(shè)置為私有恕曲,不能超過(guò)保護(hù)類型。外部的訪問(wèn)應(yīng)該要通過(guò)特有的方法訪問(wèn)渤涌,特有的方法應(yīng)該同步佩谣。獲取容器內(nèi)容應(yīng)該通過(guò)拷貝的形式。
  • 內(nèi)部方法使用成員變量实蓬,不應(yīng)該直接使用茸俭,而應(yīng)該再用方法內(nèi)部的變量保存成員變量的句柄或者值吊履。以保證方法執(zhí)行過(guò)程中句柄或者值的一致性。
  • 應(yīng)該減少鎖的粒度调鬓,以減少死鎖的可能以及其它線程可能等待的時(shí)間艇炎。
  • 對(duì)于訪問(wèn)頻繁的鎖,應(yīng)考慮將讀鎖和寫鎖拆分
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末腾窝,一起剝皮案震驚了整個(gè)濱河市缀踪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌虹脯,老刑警劉巖驴娃,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異循集,居然都是意外死亡托慨,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門暇榴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)厚棵,“玉大人,你說(shuō)我怎么就攤上這事蔼紧∑庞玻” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵奸例,是天一觀的道長(zhǎng)彬犯。 經(jīng)常有香客問(wèn)我,道長(zhǎng)查吊,這世上最難降的妖魔是什么谐区? 我笑而不...
    開(kāi)封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮逻卖,結(jié)果婚禮上宋列,老公的妹妹穿的比我還像新娘。我一直安慰自己评也,他們只是感情好炼杖,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著盗迟,像睡著了一般坤邪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上罚缕,一...
    開(kāi)封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天艇纺,我揣著相機(jī)與錄音,去河邊找鬼。 笑死黔衡,一個(gè)胖子當(dāng)著我的面吹牛消约,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播员帮,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼或粮,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了捞高?” 一聲冷哼從身側(cè)響起氯材,我...
    開(kāi)封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎硝岗,沒(méi)想到半個(gè)月后氢哮,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡型檀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年冗尤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胀溺。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡裂七,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出仓坞,到底是詐尸還是另有隱情背零,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布无埃,位于F島的核電站徙瓶,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏嫉称。R本人自食惡果不足惜侦镇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望织阅。 院中可真熱鬧壳繁,春花似錦、人聲如沸蒲稳。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)江耀。三九已至,卻和暖如春诉植,著一層夾襖步出監(jiān)牢的瞬間祥国,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留舌稀,地道東北人啊犬。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像壁查,于是被迫代替她去往敵國(guó)和親觉至。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容