0

0

高级PHP工程师必备的编码技巧及思维

藏色散人

藏色散人

发布时间:2019-12-12 16:06:41

|

3119人浏览过

|

来源于learnku

转载

好的开发者通常以代码质量来定义。在软件行业,写好的代码意味着在在测试,更新,扩展或者修复漏洞中省钱。本文,我将向你展示一些现实生活中技巧和想法的例子,来帮助你清理你的逻辑代码,重构它,让它变得更健壮和模块化。这些技巧将不仅仅帮助你重构你的旧代码,而且给你一些如何从现在开始写出简洁代码的好建议。

什么是重构,为什么我们需要它?

重构是指帮组我们写简洁代码的方法和步骤。这对其他可能阅读,扩展和不需要怎么编辑来复用我们代码的其他开发者来说是很重要的。

下面的内容将向你展示一些重构逻辑代码,让它变得更好的例子。

不要在没有单元测试的情况下重构生产环境的代码

立即学习PHP免费学习笔记(深入)”;

我的第一条建议是从不在没有完全进行单元测试的情况下开始重构逻辑代码。我的理由是:你将会以很难有修复的损坏的功能收尾,因为你也很难指出是哪里损坏了。因此,如果你要重构它,从测试开始。保证你准备重构的部分被测试覆盖到。PHPUnit 代码覆盖分析.

从你代码最底层开始重构

看一下下面的图片。这是一个我从 Github 找到的真实的酒店管理系统项目。这是一个开源的项目,可想闭源项目将是糟糕的。

39082bf182f14b2ccb503dd22ed3268.png

示例:从底层开始重构

你看这个代码,这里用红色标出了三个层级。最底层应该是在第一个 if 条件下被 if/else 包围的申明。通常,最底层是集中在单一逻辑处理,比较容易重构。

让你的方法更短,分解它们到更小的方法或者配置文件 / DB 表

也许在这里,我们可以向下面一样提炼它到一个私有方法:

082463e5be021877dc187bb82d7c629.png

使你的方法更短

下一个深入点将是上传参数和加载视图。现在,再来看看在重构其他部分之后的 add() 方法。它变得更加简洁,易读,易于测试。

adb19a91ac7dfcf6d62e4714b27902e.png

示例:首先重构最底层

if 申明坚持使用大括号

大多数编程语言都支持单行 if 申明,因为这样比较简单,所以一些开发就这么使用,但是这样不便于阅读,而且容易造成问题,因为一个空行就可以中断条件造成崩溃。看下下面两个示例的不同:

5bfc6443a69da923a6b485c72171b36.png

示例:使用大括号

别使用魔术数字或者魔术字符串:

下个示例中,你注意到如果房间超过 250 ,会返回一个错误信息。这里,250 就被认为是一个魔术数字。如果你不是写这个的开发者,很难指出这个数字表示什么。

be3f23c31bf3a8c5a3312254b54e042.png

示例:魔术数字

为了重构这个方法,我们可以指出 250 表示最大的房间数。为了替换硬编码,我们可以提取它到一个变量 $maxAvailableRooms 。现在对其他开发者来说,它变得更易被理解。

Copy.ai
Copy.ai

Copy.ai 是一个人工智能驱动的文案生成器

下载

31eab1e831064b05d122c34c84d4442.png

示例:修复魔术数字

不要使用 else 申明,如果你不是真的需要:

在相同的 availablerooms () 函数中,你注意到那个 if 申明, 其中我们可以很容易摆脱 else 部分,而且逻辑保持一致。

88492ca88e759963bb2ddba8a0defa9.png

示例:忽略 else 申明

使用能够表示你的方法,变量和测试的命名

在后面的示例中,你会发现酒店管理系统有两个方法分别是 “index () ” 和 “ room_m () ”。 对我来说,我搞不清它们的目的是什么。我认为它应该很容易被理解,如果它们的命名都能够描述自己。

1d8deafb11f469c7b8efa4935d16286.png

示例:不好的方法命名

充分利用你的编程语言的功能

许多开发者不会利用到他们使用的编程语言的全部功能。很多功能能够节约你们的的时间,而且能够让你们的代码更健壮。看下下面的示例,注意如何在更少代码情况下更容易达到相同的结果的,通过使用类型提示。

1a2880ce197e7fe99efac6495dbd9dc.png

6e013883d48a8bd7e602a5506e66d0a.png

最后,我想提供一些关于更好编码的快速提示:

● 使用新的数组形式 [] 替代旧的 array ()。

● 除非不检查数据类型很重要,否则使用 === 操作符替代 ==。

● 给公共方法提供简短的描述性名称总是一个好主意。私有方法可以使用更长的名称,因为它们的适用范围比较有限。

● 仅对实现接口的方法使用通用名称例如 add (),并对单个类方法使用描述性名称例如 addUser () 或 addDocument ()。

● 从类中删除未使用的方法。

● 对返回值为 boolean 等的函数使用 is/has 前缀:isAdmin ($user),hasPermission ($user)。

● 始终在类方法和属性中使用访问修饰符。

● 注意接口污染:仅使用用户可以公开使用的方法。

● 在公共方法位于顶部的位置组织类方法。

● 始终在类中应用单一职责的概念。

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2631

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1630

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1511

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

952

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1418

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1234

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1447

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1306

2023.11.13

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

43

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.7万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 7.4万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号