最近讀完的重構這本書。可能是今年看了不少設計模式,代碼簡潔之道之類的書,收穫並沒有特別大。
1 對於get和set的理解
申明一個private變量,又同時寫了get(getter)和set(setter)這種用法。之前對於它的理解是,可以在get和set裏面做點文章。比如
class Person{
private $sex;
public function getSex(){
return $sex == 1 ? "男" : "女";
}
}
其實還有一個好處,就是封裝了。代碼中所有的調用都是通過這個函數實現的,當我要重構的時候,就只需要對這個函數進行處理,或者說重命名。
class Person{
private $sex;
public function getSex(){
$this->newGetSex();
}
public function newGetSex(){
return $this->sex == 1 ? "男" : "女";
}
}
2 封裝基本類型
這裏面的基本類型其實並不是指int,boolean等等之類的類型,而是指一些常用的數據,比如說電話號碼,姓名。比如說下面是對電話號碼的封裝。
class Tel{
private $tel;
function __construct($tel){
this->tel = $tel;
}
function checkTel(){
$res = preg_match("/^1[34578][0-9]{9}$/",$this->tel);
if($res === false){
throw new Exception("tel error");
}
return $res > 0 ? true : false;
}
function encryptTel(){
return substr_replace($this—>tel,'****',3,4);
}
function toUid(){
//...
return "";
}
}
或者感覺可以將這些代碼封裝static形式的工具,形成自己的代碼庫,以後應該就能複製,粘貼了。