如何让PHP编码更加好看利于阅读


Posted in PHP onMay 12, 2019

写出优秀的程序代码是一门艺术,要想如此,就必须在一开始就养成良好的编程习惯。良好的编程习惯不仅有助于项目初期的设计(如模块化),还可以使你编写的代码更易于理解,从而使代码的维护工作更轻松、更省力。不好的编程习惯则会造成代码bug,并且会使以后的维护工作困难重重。

本文以PHP语言为例,介绍一些良好的编程习惯,希望能够对你有所帮助。

1. 规划代码结构

优秀的PHP代码应该有清晰的结构。PHP面向对象的特性允许程序员将应用程序分解为函数或方法。如果代码晦涩难懂,你也可以添加注释,使代码的功能一目了然。编码时应尽量将前端代码(HTML/CSS/JavaScript)与应用程序的服务端规则分开,或者你可以使用遵循MVC模式的PHP框架来构建你的应用程序。

2. 编码风格统一

优秀的PHP代码应该具备统一的风格。比如,为变量和函数制定统一的命名规则,为循环任务(比如数据库存取、错误处理)制定统一的接入标准,或者保持有规律的代码缩进,这些编码习惯都可以让别人阅读代码更加轻松。

3. 可移植性

优秀的PHP代码应该具有可移植性。程序员应学会运用PHP现有的特性(比如魔术引号和短标签等),应该了解产品需求,适应PHP的特点,保证写出的PHP代码具有可移植性和跨平台性。

4. 代码安全性

优秀的PHP代码应该具有安全性。PHP5具有卓越的特性和灵活性,但应用程序的安全往往掌握在程序员的手中。作为专业的PHP开发人员,应该对安全漏洞有一些深入了解,常见的安全漏洞有跨站脚本攻击(XSS)、跨站请求伪造(CSRF)、代码注入漏洞和字符编码漏洞等。使用PHP中的特定功能和函数(比如mysql_real_escape_string等)可以帮助程序员写出安全的代码。

5. 添加注释

代码注释是代码中的重要组成部分,它解释了函数运行的目的,这种注释会在代码以后的维护中提供非常有用的帮助。

6. 避免简写标记

应使用完整的起始标记,不推荐使用简写的起始标记。

7. 用单引号代替双引号

由于PHP会对双引号中的内容进行变量搜索,为了避免这种搜索带来的性能影响,程序员应该使用单引号引用字符串。

8. 转义输出

应该在htmlspecialchars函数中使用ENT_QUOTES参数,保证单引号(')也可以被转义。尽管没有规定必须这样做,但这是一个好习惯。

9. 使用逗号隔开字符串输出

字符串连接符(.)可以将单一的字符串传递给echo语句进行输出,与之相比,逗号可以实现echo语句中字符串的分别输出,这对PHP来说是一个性能改善。

10. 在输出前检查传递值

应该记得在输出前检查$_GET['query'] 的传递值。使用isset函数或是empty函数可以检查变量值是否为空。

PHP 相关文章推荐
php批量删除数据
Jan 18 PHP
php 购物车实例(申精)
May 11 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
Jun 26 PHP
php中hashtable实现示例分享
Feb 13 PHP
实现PHP框架系列文章(6)mysql数据库方法
Mar 04 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
May 11 PHP
PHP串行化与反串行化实例分析
Dec 27 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
Feb 15 PHP
php面向对象的用户登录身份验证
Jun 08 PHP
Codeigniter里的无刷新上传的实现代码
Apr 14 PHP
php报错502badgateway解决方法
Oct 11 PHP
如何在PHP中使用AES加密算法加密数据
Jun 24 PHP
Yii2处理密码加密及验证的方法
May 12 #PHP
php和asp语法上的区别总结
May 12 #PHP
Laravel推荐使用的十个辅助函数
May 10 #PHP
PHP下载大文件失败并限制下载速度的实例代码
May 10 #PHP
PHP 7.4 新语法之箭头函数实例详解
May 09 #PHP
PHP文件类型检查及fileinfo模块安装使用详解
May 09 #PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
May 09 #PHP
You might like
php中一个完整表单处理实现代码
2011/11/10 PHP
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
php header功能的使用
2013/10/28 PHP
一组PHP加密解密函数分享
2014/06/05 PHP
PHP开启opcache提升代码性能
2015/04/26 PHP
php将金额数字转化为中文大写
2015/07/09 PHP
服务器迁移php版本不同可能诱发的问题
2015/12/22 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
JS Range HTML文档/文字内容选中、库及应用介绍
2011/05/12 Javascript
JS OffsetParent属性深入解析
2014/01/13 Javascript
如何动态的导入js文件具体该怎么实现
2014/01/14 Javascript
JS可以控制样式的名称写法一览
2014/01/16 Javascript
java中String类型变量的赋值问题介绍
2016/03/23 Javascript
Vue.js双向绑定实现原理详解
2016/12/22 Javascript
javascript+jQuery实现360开机时间显示效果
2017/11/03 jQuery
150行Node.js实现的dns代理工具
2019/08/02 Javascript
详解React 条件渲染
2020/07/08 Javascript
JavaScript ES 模块的使用
2020/11/12 Javascript
python str与repr的区别
2013/03/23 Python
Python冒泡排序注意要点实例详解
2016/09/09 Python
使用python爬虫获取黄金价格的核心代码
2018/06/13 Python
Selenium chrome配置代理Python版的方法
2018/11/29 Python
pymysql 插入数据 转义处理方式
2020/03/02 Python
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
2012/02/06 面试题
Shell编程面试题
2016/05/29 面试题
高中生的自我评价
2014/03/04 职场文书
共筑中国梦演讲稿
2014/04/23 职场文书
教师职位说明书
2014/07/29 职场文书
幼儿园小班见习报告
2014/10/31 职场文书
内勤岗位职责
2015/02/10 职场文书
儿童诗两首教学反思
2016/02/23 职场文书
python爬取企查查企业信息之selenium自动模拟登录企查查
2021/04/08 Python
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android