Heim  >  Artikel  >  Backend-Entwicklung  >  什么是优雅编程?什么是优雅代码?

什么是优雅编程?什么是优雅代码?

WBOY
WBOYOriginal
2016-07-25 08:48:561002Durchsuche
个人理解:
所谓优雅编程就是喝着咖啡,摸着键盘,想着业务;
优雅代码的定义是:
1、尽可能的少单双引号;
2、不要嵌套;
3、命名全是最基本的英语单词;
4、代码像英文一样,是一段一段的;
5、一个应用代码组织调理清晰,最好是树关系,网关系少用。

下边是一个sql查询的连贯操作实现方法,请大家指导指导!
  1. /**
  2. * DB连贯操作、sql条件构造
  3. * From: EQPHP FrameWork
  4. * Author: art_youth
  5. * E-mail: 258122391@qq.com
  6. * Pub data: 2012-11-09
  7. */
  8. class query{
  9. public $sql='';
  10. public $option=array();
  11. static $keyword=array('select','from','where','group','having','order','limit');
  12. //初始化查询参数
  13. function __construct($table,$prefix=''){
  14. $this->option['from']=$prefix.$table;
  15. }
  16. //构造参数
  17. function __call($method,$param){
  18. if (in_array($method,self::$keyword)) {
  19. $this->option[$method]=$param[0];
  20. return $this;
  21. }
  22. }
  23. //输出查询结果
  24. function out($mode='sql',$rs_count=0,$now_page=1,$page_size=20){
  25. $this->sql='';
  26. foreach (self::$keyword as $key) {
  27. $value=($key == 'group' || $key == 'order') ? $key.' by' : $key;
  28. if ($key === 'where' && is_array($this->option['where'])) {
  29. $this->option['where']=self::condition($this->option['where']);
  30. }
  31. if (isset($this->option[$key]) && trim($this->option[$key])) {
  32. $this->sql.=' '.$value.' '.trim($this->option[$key]);
  33. }
  34. unset($this->option[$key]);
  35. }
  36. $this->sql=trim($this->sql);
  37. switch($mode){
  38. case 'rs':
  39. return db::rs($this->sql);
  40. case 'list':
  41. return db::rs_list($this->sql);
  42. case 'page':
  43. return db::page_list($this->sql,$rs_count,$now_page,$page_size);
  44. default:
  45. return $this->sql;
  46. }
  47. }
  48. //构造sql查询条件
  49. static function condition($data){
  50. //处理逻辑连接符
  51. $logic=' and ';
  52. if (isset($data['logic'])) {
  53. $logic=' '.$data['logic'].' ';
  54. unset($data['logic']);
  55. }
  56. //处理字符串(本生sql)
  57. if (isset($data['query'])) {
  58. $condition[]='('.$data['query'].')';
  59. unset($data['query']);
  60. }
  61. //处理条件数据
  62. foreach ($data as $key=>$value) {
  63. $condition[]='('.self::parse_expression($key,$value).')';
  64. }
  65. return implode($logic,$condition);
  66. }
  67. //解析表达式
  68. private static function parse_expression($key,$value){
  69. if (is_numeric($value)) return $key.'='.$value;
  70. if (is_string($value)) return $key.'="'.$value.'"';
  71. if (is_array($value)) {
  72. //基本条件查询
  73. if (preg_match('/^(eq|neq|gt|egt|lt|elt)$/i',$value[0])) {
  74. is_string($value[1]) && $value[1]='"'.$value[1].'"';
  75. $operator=array('eq'=>'=','neq'=>'','gt'=>'>','egt'=>'>=','lt'=>'' return $key.$operator[$value[0]].$value[1];
  76. }
  77. //in范围查找
  78. if (in_array($value[0],array('in','not in'))) {
  79. is_array($value[1]) && $value[1]=implode(',',$value[1]);
  80. return $key.' '.$value[0].'('.$value[1].')';
  81. }
  82. //between区间查找
  83. if (in_array($value[0],array('between','not between'))) {
  84. $param=is_string($value[1]) ? explode(',',$value[1]) : $value[1];
  85. return $key.' '.$value[0].' '.$param[0].' and '.$param[1];
  86. }
  87. //like模糊匹配
  88. if (in_array($value[0],array('like','not like'))) {
  89. if (is_array($value[1])) {
  90. $buffer=array();
  91. foreach ($value[1] as $param) {
  92. $buffer[]=$key.' '.$value[0].' "'.$param.'"';
  93. }
  94. $logic=isset($value[2]) ? ' '.$value[2].' ' : ' or ';
  95. return implode($logic,$buffer);
  96. }
  97. if (strpos($key,'|') !== false) {
  98. $buffer=array();
  99. foreach (explode('|',$key) as $field) {
  100. $buffer[]='('.$field.' '.$value[0].' "'.$value[1].'")';
  101. }
  102. return implode(' or ',$buffer);
  103. }
  104. if (strpos($key,'&') !== false) {
  105. $buffer=array();
  106. foreach (explode('&',$key) as $field) {
  107. $buffer[]='('.$field.' '.$value[0].' "'.$value[1].'")';
  108. }
  109. return implode(' and ',$buffer);
  110. }
  111. return $key.' '.$value[0].' "'.$value[1].'"';
  112. }
  113. //数学区间查询(1,9)/[2,3)
  114. if ($value[0] === 'extent') {
  115. $logic=isset($value[2]) ? ' '.$value[2].' ' : ' && ';
  116. $operator=array('('=>'>','['=>'>=',')'=>'' preg_match('/^(\(|\[)(.*),(.*)(\)|\])$/',$value[1],$param);
  117. $result='';
  118. isset($param[2]) && $result.=$key.$operator[$param[1]].$param[2];
  119. isset($param[4]) && $result.=$logic.$key.$operator[$param[4]].$param[3];
  120. return $result;
  121. }
  122. return '';
  123. }
  124. }
  125. //资源回收
  126. function __destruct(){
  127. unset($this->option,$this->sql);
  128. }
  129. }
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:简单中文验证码 Nächster Artikel:简易网络投票系统