国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

手把手教你做關(guān)鍵詞匹配項目(搜索引擎)---- 第十八天

2019-11-15 01:46:49
字體:
供稿:網(wǎng)友
手把手教你做關(guān)鍵詞匹配項目(搜索引擎)---- 第十八天

第十八天

客串:屌絲的坑人表單神器

走過的那些事兒:數(shù)據(jù)庫那點事兒

起點:手把手教你做關(guān)鍵詞匹配項目(搜索引擎)---- 第一天

回顧:手把手教你做關(guān)鍵詞匹配項目(搜索引擎)---- 第十七天

上回說到小帥帥把代碼交給于老大時,于老大批了小帥帥,小帥帥真的感覺受委屈了。

我們回到站在技術(shù)總監(jiān)的角度看問題,技術(shù)總監(jiān)真的要做到監(jiān)管代碼的可讀行嗎?

我記得很多公司都是提倡利益,利益作為衡量一個技術(shù)總監(jiān)的價值。

技術(shù)總監(jiān)做錯了嗎?超出他的職責(zé)范圍了嗎?

其實于老大看到LinklistCharListHandle類里面exec方法出現(xiàn)了三層foreach,就把小帥帥給批了。

好嚴(yán)格的于老大,還是于老大對小帥帥的期望比較高。

小帥帥沒辦法,他只好把foreach盡量提取出來,小帥帥的版本:

class LinklistCharListHandle extends CharListHandle {    public function exec(){        $sql = "select Word from category_linklist where cid='$this->selectorItem->cid'";        $linklist = DB::makeArray($sql);        foreach($linklist as $strWords){            $words = explode(",",$strWords);            $this->PRopertiesTransferCharlist($words);        }    }    public function propertiesTransferCharlist($linkWords){        $properties = $this->selectorItem->getProperties();        foreach($properties as $property){            $this->charlist->addCore($property->value);            if(in_array($property->value,$linkWords)){                $this->addCores($linkWords);            }        }    }    public function addCores($words){        foreach($words as $char){            $this->charlist->addCore($char);        }    }}

小帥帥提取了兩個方法,使程序更加能夠看懂了。

其實小帥帥的的做法就是使用重構(gòu)-改善既有代碼的設(shè)計的技巧之一,Extract Method 提煉函數(shù)

Extract Method:將這段代碼放進一個獨立函數(shù)中,并讓函數(shù)名稱解析該函數(shù)的用途。

小帥帥很有成就感,繼續(xù)把代碼給于老大的時候,于老大提到了兩點。

1. propertiesTransferCharlist為什么要接受個參數(shù)。2. addCores到底是那個類的職責(zé)范圍。

小帥帥第2種他知道怎么做,他把該方法移到Charlist類里面,代碼如下:

<?phpclass CharList {    private $core = array();    private $blacklist = array();    public function addCore($char){        if(!in_array($char,$this->core))            $this->core[] = $char;    }        public function addCores($words){        foreach($words as $char){            $this->addCore($char);        }    }    public function getCore(){        return $this->core;    }    public function addBlacklist($char){        if(!in_array($char,$this->blacklist))            $this->blacklist[] = $char;    }    public function getBlacklist(){        return $this->blacklist;    }}

其實小帥帥的這次做法還是使用重構(gòu)-改善既有代碼的設(shè)計的技巧之一,Move Method 搬移函數(shù)。

Move Method:在該函數(shù)最常引用的類中建立一個有著類似行為的新函數(shù)。將舊函數(shù)變成一個單純的委托函數(shù),或是將舊函數(shù)完全移除。

小帥實在搞不懂第1個怎么辦,又去請教于老大,于老大直接把代碼給了小帥帥,于老大的代碼為:

<?phpclass LinklistCharListHandle extends CharListHandle {        private static $linklist;         public function exec(){       $this->propertiesTransferCharlist();    }        public static function linklist($cid){        if(!isset(self::$linklist) || !isset(self::$linklist[$cid]) || self::$linklist[$cid] == null){            $sql = "select word from category_linklist where cid='$cid'";            self::$linklist[$cid] = DB::makeArray($sql);        }        return self::$linklist[$cid];    }    public function propertiesTransferCharlist(){        $properties = $this->selectorItem->getProperties();        foreach($properties as $property){                        $this->charlist->addCore($property->value);                        $this->extendCharlist($property->value);                   }    }        public function extendCharlist($char){        $linklist = self::linklist($this->selectorItem->cid);        foreach($linklist as $strWords){            $words = explode(",",$strWords);            if(in_array($char,$words)){                $this->charlist->addCores($words);            }        }            }    }

小帥帥看了,發(fā)表了一次感嘆,原來代碼隨便改變下,區(qū)別這么大,以前為啥從來沒有這感覺。

小帥帥真希望自己能夠獨單一面,不用天天去找于老大。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 巢湖市| 烟台市| 临桂县| 滦平县| 收藏| 贞丰县| 郧西县| 永安市| 江西省| 自治县| 长治县| 大厂| 象山县| 平度市| 富源县| 皋兰县| 黔东| 保亭| 咸阳市| 蕉岭县| 承德县| 沈丘县| 甘肃省| 宁阳县| 荆门市| 彝良县| 兴和县| 内黄县| 盐池县| 天津市| 安吉县| 石首市| 襄樊市| 松阳县| 泗洪县| 会理县| 扎赉特旗| 三门县| 宣汉县| 汉阴县| 巴中市|