五月天婷亚洲天久久综合网,婷婷丁香五月激情亚洲综合,久久男人精品女人,麻豆91在线播放

  • <center id="8gusu"></center><rt id="8gusu"></rt>
    <menu id="8gusu"><small id="8gusu"></small></menu>
  • <dd id="8gusu"><s id="8gusu"></s></dd>
    樓主: z74646
    709 0

    [其他] PHP 代碼如何變得規(guī)范和簡(jiǎn)潔 [推廣有獎(jiǎng)]

    • 0關(guān)注
    • 1粉絲

    本科生

    75%

    還不是VIP/貴賓

    -

    威望
    0 級(jí)
    論壇幣
    300 個(gè)
    通用積分
    0
    學(xué)術(shù)水平
    0 點(diǎn)
    熱心指數(shù)
    1 點(diǎn)
    信用等級(jí)
    0 點(diǎn)
    經(jīng)驗(yàn)
    890 點(diǎn)
    帖子
    55
    精華
    0
    在線時(shí)間
    12 小時(shí)
    注冊(cè)時(shí)間
    2014-2-26
    最后登錄
    2016-7-2

    樓主
    z74646 發(fā)表于 2016-4-21 23:14:30 |只看作者 |壇友微信交流群|倒序 |AI寫論文

    +2 論壇幣
    k人 參與回答

    經(jīng)管之家送您一份

    應(yīng)屆畢業(yè)生專屬福利!

    求職就業(yè)群
    趙安豆老師微信:zhaoandou666

    經(jīng)管之家聯(lián)合CDA

    送您一個(gè)全額獎(jiǎng)學(xué)金名額~ !

    感謝您參與論壇問(wèn)題回答

    經(jīng)管之家送您兩個(gè)論壇幣!

    +2 論壇幣

    ①統(tǒng)一的編碼規(guī)范

    編碼規(guī)范往簡(jiǎn)單說(shuō)其實(shí)就是三個(gè)方面:

    換行

    空格

    變量命名

    放在 PHP 里面,還有一些附加的地方,比如關(guān)鍵字大小寫,語(yǔ)法糖的使用( array()   與   [] 等)的問(wèn)題。之前整理過(guò)   PSR   的標(biāo)準(zhǔn),也找過(guò)   php-cs-fixer   這樣的工具。這些都是規(guī)范代碼的重要手段。有統(tǒng)一的標(biāo)準(zhǔn),配合上工具的檢查,形成統(tǒng)一的編碼約束不是什么難題。

    沒(méi)有規(guī)范,不同的人甚至同一個(gè)人在空格、換行和命名上都有可能是十分隨意的。代碼一長(zhǎng),回使整個(gè)文件看起來(lái)無(wú)比雜亂。

    典型的例子比如: if   和   else   的組合,可以寫出無(wú)數(shù)種風(fēng)格,比如:

    # 單語(yǔ)句不寫大括號(hào)

    if(true) doSomething();

    # else大括號(hào)換行 十分占篇幅

    if(true)

    {

        doSomething();

    }

    else{

        doElseThings();

    }

    # 此外還有關(guān)鍵字后不帶空格,隨意縮進(jìn)等等

    # ...

    再比如變量函數(shù)命名的問(wèn)題上,各種混搭風(fēng)格層出不窮:

    # 全小寫

    $someparam1= null;

    # 首字母下環(huán)線

    $_some_param_1= null;

    # 某些庫(kù)的類,下劃線和大小寫混用

    classAbstract_ClassA

    {

    }

    這里并不探討各種寫法的優(yōu)缺點(diǎn),只是風(fēng)格需要保持統(tǒng)一,不要混用。

    ② 良好的編碼習(xí)慣

    如果你仔細(xì)看過(guò) PSR 的標(biāo)準(zhǔn),可能也會(huì)注意到某些地方其實(shí)是標(biāo)準(zhǔn)無(wú)法涉及到的。比如一個(gè)超長(zhǎng)的表達(dá)式在什么時(shí)候換行,如何縮進(jìn)等。

    這里涉及到的就是編碼習(xí)慣的約束問(wèn)題。

    比如方法的鏈?zhǔn)降恼{(diào)用的問(wèn)題,比如某些數(shù)據(jù)庫(kù)查詢的封裝:

    # 不換行的情況下句子會(huì)很長(zhǎng)

    $result=$this->db->select('id')->where('a', 1)

        ->groupBy('a')->orderBy('id','DESC')->result();

    # 這種情況下我建議是一個(gè)條件一行,保持縮進(jìn)

    $result=$this->db->select('id')

        ->where('a', 1)

        ->groupBy('a')

        ->orderBy('id','DESC')

        ->result();

    還有數(shù)組定義,某些數(shù)組成員字符串很長(zhǎng)的情況下的寫法:

    $array= ['abcdefg','acbdfeg','bcadgfe','cdadgef'];

    # 如果成員太長(zhǎng),我建議拆解,這樣

    $array= [

        'abcdefg',

        'acbdfeg',

        'bcadgfe',

        'cdadgef',

    ];

    . 尋找最優(yōu)的寫法

    寫代碼的過(guò)程中,最優(yōu)的寫法和編碼習(xí)慣又不是同一件事情。這里要說(shuō)的指的是如何遵循 PHP 的語(yǔ)言特性或者框架的特征,充分發(fā)揮語(yǔ)言和框架的能力來(lái)減少冗余。

    比如在獲取前端傳入的參數(shù)的時(shí)候,很多時(shí)候能見(jiàn)到這樣的代碼:

    $param= isset($_POST['param']) ?$_POST['param'] :'';

    更有甚者一些框架將前端傳入的參數(shù)封裝了一層,比如 $this->request->data['param'] ,如果再去用   isset   或者   array_key_exists   判斷,整個(gè)獲取參數(shù)的語(yǔ)句就會(huì)變得很長(zhǎng)。

    某些情況下使用三元運(yùn)算符的時(shí)候需要注意   ?:   是可以 合并使用 的。

    其實(shí)我們應(yīng)該去嘗試封裝這種寫法,防止同樣的變量出現(xiàn)在一個(gè)語(yǔ)句中多次的情況。對(duì)于默認(rèn)值的賦予,可以調(diào)研框架是否有封裝提供,或者通過(guò)強(qiáng)制類型轉(zhuǎn)換的方式進(jìn)行。

    還有一種情況是條件和循環(huán)嵌套的時(shí)候。比如從數(shù)組里抽取某一個(gè)字段,或者對(duì)某一個(gè)字段的值進(jìn)行處理的時(shí)候,善用 array_map   以及引用( & )往往能節(jié)省不少工作量。但是使用的時(shí)候也要注意數(shù)組指針最后的位置。

    在根據(jù)條件返回結(jié)果時(shí),需要善用 return 。還有就是合理的抽象與封裝。

    review 自己的代碼

    除了以上提到的在日常開(kāi)發(fā)中需要注意的一些問(wèn)題。還有就是事后的工作。

    我相信很多人在看自己以前的代碼的時(shí)候都有一種其實(shí)有更好的寫法的感覺(jué)。隨著時(shí)間的推移自己總會(huì)有更豐富的閱歷,更多的想法。偶爾 review 自己的代碼也是對(duì)過(guò)去的總結(jié),也許會(huì)有新的感知。

    . 推廣給你的隊(duì)友

    團(tuán)隊(duì)項(xiàng)目中,隊(duì)友的配合對(duì)整個(gè)代碼的規(guī)范起著決定性的作用。一個(gè)團(tuán)隊(duì)中有一個(gè)人不遵守規(guī)范,而又要到處修改代碼的時(shí)候,很快就能破壞到所有的約束。

    有統(tǒng)一的標(biāo)準(zhǔn),有良好的執(zhí)行力才能完成這件工作。有興趣的童鞋可以點(diǎn)擊學(xué)習(xí)更多php教程http://www.maiziedu.com/course/php/


    二維碼

    掃碼加我 拉你入群

    請(qǐng)注明:姓名-公司-職位

    以便審核進(jìn)群資格,未注明則拒絕

    關(guān)鍵詞:PHP something abstract orderby ABCDEFG 如何

    本版微信群
    加好友,備注cda
    拉您進(jìn)交流群

    京ICP備16021002-2號(hào) 京B2-20170662號(hào) 京公網(wǎng)安備 11010802022788號(hào) 論壇法律顧問(wèn):王進(jìn)律師 知識(shí)產(chǎn)權(quán)保護(hù)聲明   免責(zé)及隱私聲明

    GMT+8, 2025-1-1 12:19