- 论坛徽章:
- 0
|
重构lingling代码
在添加getRecentGames和getTvChannels接口过程中,发现很多自己都看不过去的代码,试举两例:
1,判断传入的日期是否是合法形式:xxxx-xx-xx xx x x
编码时,用最土的方式,挨个判断字符是否合法。- function isDateValid($date){
- $date = trim($date);
- $arr = explode(' ', $date);
- if(empty($arr)){
- return false;
- }
- $datePart = $arr[0];
- $elements = explode('-', $datePart);
- if(count($elements) != 3){
- return false;
- }
- if(! checkDate($elements[1], $elements[2], $elements[0])){
- return false;
- }
- $timePart = $arr[1];
- $elements = explode(':', $timePart);
- if(count($elements) != 2 && count($elements) != 3){
- return false;
- }
- foreach($elements as $ele){
- if(! is_numeric($ele)){
- return false;
- }
- }
- return true;
- }
复制代码 用正则表达式修改后:- public function isDateValid($date){
- $pattern = '/^ *[0-9]{2,4}(-[0-9]{2}){1,2} [0-9]{2}(:[0-9]{2}){1,2} *$/';
- $ret = preg_match($pattern, $date, $matches);
- return $ret == 0 ? false : true;
- }
复制代码 重构过程中,又复习了下正则表达式,平常极少用到{},这次痛快的用了N次。
2,类似的业务,调用接口的层数也应类似,比如:
添加足球比赛信息:addFootballTvb() –> finalAddTvb()
添加篮球比赛信息:finalAddTvb()
出现这样的调用层次,是因为后一个功能上层得到的数据,正好符合finalAddTvb()的要求,所以将原来private的接口public出来,看起来好像省事了,但在后来阅读代码过程中,总感觉非常别扭。后来改为:
添加篮球比赛信息:addBasketballTvb() –> finalAddTvb()
代码读起来顺畅多了。重构的目的并不为解决功能问题,而是为了提高代码可读性,进而提高可维护性。
|
|