引言
明天老王同学跟我说,他的代码好蹩脚,像一坨 xiang。问我要怎么
进步本人的代码品质,让本人代码看得悦目一点,难受一点,就像
看到大长腿 MM,两眼放光那种。
于是我: 你先这样,而后这样,而后再那样。。。。。。<!–more–>
老王同学: 别闹, 到底是哪样?
好的, 我要开始装 13 了。。。
根本标准
先说一下最根本的货色:
- 变量名应用驼峰命名。不懂的单词不要用拼音,而是要查词典找到对应的单词。
- 常量命名应用大写下划线形式命名。如:
SYSTEM_EROOR = 50000
。 - 缩进应用 Tab 键,不要打一堆空格做缩进。
- 类名首字母大写驼峰命名,须要见名知其意,正文阐明这个类的性能。例如:
- 办法名驼峰命名,办法行数尽量管制在 80 行左右,正文阐明函数干嘛用的。
- 花括号独占一行,例如:
- foreach 慎用援用,例如以下代码会有问题:
预期后果是输入: 2 4 6
,理论后果是 2 4 4
, 至于为什么可
以看我之前的文章: PHP 中
& 符号你真的理解吗?`。
能够应用 array_walk
办法防止这个问题, 示例:
- 防止
if
,elese
嵌套过深,很多嵌套能够通过提前终止来打消, 举个简略的例子:
倡议应用第二种形式,不符合条件的间接返回,剩下的就是符号条件的,那么防止了在 if 外面写很多代码。
- 多个
if/else
应用 switch 来代替,PHP8.0 版本能够应用match
更为简洁。 phpstorm
中装置SonarLint
插件。如果你写的代码呈现虚线,阐明不太现实,那么能够依据提醒批改,置信有强迫症的同学肯定会改,长此以往代码就很标准了。例如:
办法未应用,办法名不标准曾经通知你了,能够快捷批改,也能够本人批改。
框架标准
- 后面说得都是比拟根底的货色,接下来才是次要的内容。
- 置信很多同学都用过罕用的
thinkphp
丶laravel
丶yii
等风行框架之一。 - 这些框架都是 MVC 架构的,看过很多人的代码,要么把业务逻辑写在控制器外面,要么写在 Model 外面,写在 Model 外面相比写控制器外面的还绝对好一点。其实对于大型项目都不太敌对。
- 下文以 Laravel 框架为例。
参数验证
-
API 须要进行参数验证,然而参数验证写在哪里比拟优雅呢?可能很多人在 controller 定义规定,而后在调用验证办法,那么验证那段代码将在每个 API 外面呈现,例如我共事写的。
这段代码在每个 API 外面均会呈现一次,岂不是很啰嗦,那么如何解决呢?
- 在 Laravel 的 http 目录下建设一个
Requsts
目录,用于寄存申请的参数验证类。建设一个BaseRequest
类:
比方登录须要参数验证再建设一个 LoginRequest
类继承这个BaseRequest
。
- 应用的时候只有在 Controller 的办法中注入这个申请类即可。
这里获取申请参数的时候会对表单进行验证,否则参数验证失败会调用刚刚 Request 积攒定义的办法抛 Json 异样,返回信息给客户端。
控制器
控制器的次要工作负载获取申请数据和返回内容,不应做更多的事件,那么能够定义一个 Service 层来解决业务逻辑。
所以我的控制器的代码只有一行。
- 在 Laravel 的 app 目录下建设一个 Services 文件夹用于寄存 Service 类,建设一个 BaseService 类:
而后建设一个 UserService 来解决用户相干的业务逻辑。
在 UserController 中注入这个 UserService 应用:
Model
Model 不倡议写业务逻辑。Model 次要是用来定义一些内容,不应该操纵数据。
Model 的数据操纵应该放在 Repository 中,在 Laravel 的 app 目录下建设一个文件夹Repositories
。
定义 BaseRepository:
定义 UserRepository,用于用户数据相干的操作, 在构造方法中注入 UserModel:
常量
我的项目中很多常量该怎么定义?
在 app 目录创立一个 Constant 目录,再建设一个 Contstant 类来保留这些自定义常量。
这样的益处是:
- 自定义常量能够集中的治理。
- 批改常量值的时候,只须要在这个类中找批改一次即可,代码更新维护性好。
附录