php代码常见的变量缩写,PHP代码简洁之道——变量部分
将代码写的简洁并且易读易懂是每一位优秀的coder所应该具备的基本功。
前几天在github上看到clean-code-php这个项目,感觉很有收获,于是在这里记录一下。
使用有意义并且可读的变量名称
Bad:
$ymdstr = $moment->format("y-m-d");
Good:
$currentDate = $moment->format("y-m-d");
对同一只类型的变量使用同样的词汇
Bad:
getUserInfo();
getUserData();
getUserRecord();
getUserProfile();
Good:
getUser();
使用易于查找的命名
Bad:
// 这里的4是什么鬼??
if ($user->access & 4) {
// ...
}
Good:
class User
{
const ACCESS_READ = 1;
const ACCESS_CREATE = 2;
const ACCESS_UPDATE = 4;
const ACCESS_DELETE = 8;
}
if ($user->access & User::ACCESS_UPDATE) {
// do edit ...
}
不要让读者猜
Bad:
$l = ["Austin", "New York", "San Francisco"];
for ($i = 0; $i < count($l); $i++) {
$li = $l[$i];
doStuff();
doSomeOtherStuff();
// ...
// ...
// ...
// $li 变量代表什么???
dispatch($li);
}
Good:
$locations = ["Austin", "New York", "San Francisco"];
foreach ($locations as $location) {
doStuff();
doSomeOtherStuff();
// ...
// ...
// ...
dispatch($location);
}
避免过深的嵌套
Bad:
function isShopOpen($day)
{
if ($day) {
if (is_string($day)) {
$day = strtolower($day);
if ($day === "friday") {
return true;
} elseif ($day === "saturday") {
return true;
} elseif ($day === "sunday") {
return true;
} else {
return false;
}
} else {
return false;
}
} else {
return false;
}
}
Good:
function isShopOpen($day)
{
if (empty($day) && ! is_string($day)) {
return false;
}
$openingDays = [
"friday", "saturday", "sunday"
];
return in_array(strtolower($day), $openingDays);
}
Bad:
function fibonacci($n)
{
if ($n < 50) {
if ($n !== 0) {
if ($n !== 1) {
return fibonacci($n - 1) + fibonacci($n - 2);
} else {
return 1;
}
} else {
return 0;
}
} else {
return "Not supported";
}
}
Good:
function fibonacci($n)
{
if ($n === 0) {
return 0;
}
if ($n === 1) {
return 1;
}
if ($n > 50) {
return "Not supported";
}
return fibonacci($n - 1) + fibonacci($n - 2);
}
不要添加不必要的上下文
如果你的类/对象已经说明了一些信息,不要在你的变量名和属性里重复
Bad:
class Car
{
public $carMake;
public $carModel;
public $carColor;
//...
}
Good:
class Car
{
public $make;
public $model;
public $color;
//...
}
参数初始化时设置默认值
function create($name = null)
{
$newName = $name ?: "ABC";
// ...
}
设置默认值一个比较明显的好处是,当对一个较早之前已经定义好的函数添加参数时,将新增的参数设置默认值可以省得去修改以前使用该函数的地方。
php代码常见的变量缩写,PHP代码简洁之道——变量部分相关推荐
- Python 工匠:善用变量来改善代码质量
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由鹅厂优文发表于云+社区专栏 作者:朱雷 | 腾讯IEG高级工程师 『Python 工匠』是什么? 我一直觉得编程某种意义上是一门『手艺 ...
- R语言基本介绍 | 数据科学、Rstudio介绍、快捷键操作、R代码常见命令、数据类型、示例代码等等
一.数据科学 数据科学:计算和统计技术的综合应用,用于解决一些真实世界中的问题. 计算:获得结果 统计:分析和建模 真实世界:机器学习.AI 数据科学Data Science = 统计+数据处理+机器 ...
- java中静态变量,静态代码块,静态方法,实例变量,匿名代码块的加载顺序
1. java中静态变量,静态代码块,静态方法,实例变量,匿名代码块 在Java中,使用{}括起来的代码称为代码块,代码块可以分为以下四种: (1)普通代码块:就是类中方法的方法体 public vo ...
- [系统安全] 四十六.Powershell恶意代码检测系列 (1)Powershell基础入门及管道和变量的用法
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...
- 今天你的静态变量和静态代码块执行了吗?
摘要:今天你的静态变量和静态代码块执行了吗? 本文分享自华为云社区<[java]静态变量和静态代码块那些事>,作者: 大金(内蒙的). 今日题目: 今天你的静态变量和静态代码块执行了吗? ...
- 常见的变换总结与代码:DCT,STFT,K-L变换等
文章目录 前言 一.从DFT到DCT 二.从CTFT到STFT 三.K-L变换与降维思想 四.K-L变换实例:人脸识别(含代码和详细注释) 五.参考资料 前言 之前学信号和DSP的时候,除了常见的 ...
- 八种常见回归算法解析及代码
目录 一.线性回归 1.最小二乘法 -导数/偏导为0求参数 最小二乘法求解参数优缺点 2.迭代求解参数-梯度下降.坐标轴下降.最小角回归 2.1使用梯度下降-对回归系数中w的每个元素分别求偏导并乘 ...
- 常见字典用法集锦及代码详解
目录 前言 字典的简介 1. 字典对象 1.1 Add 方法 1.2 Exists 方法 1.3 Keys 方法 1.4 Items 方法 1.5 Remove 方法 1.6 RemoveAll 方法 ...
- python的有效变量名_python里用变量命名改善代码质量
编程时,总会遇到各种各样的变量,取一个好的变量名能够有效提高代码的可读性,而且python是一种,动态类型的语言,良好的变量名,能够在编写代码或者再次阅读代码时提高效率. 1. 变量名不要太宽泛,要有 ...
最新文章
- 关于IE6下CSS选择器失效的问题
- latex 无穷_《天龙3D》新资料片“骑乐无穷”即将上线
- HttpClient通过Post上传文件(转)
- [置顶] IE与FireFox的JavaScript兼容问题
- 数据结构和算法———P1 绪论
- 旷视科技Face++进军机器人业务
- NWT失败反思:公司都死了,还怕得罪人
- 电影:美国队长:复仇者先锋
- 万能启动的最后的传说:UD三分区法部署教程!UD加UEFI!
- QT移植Linux平台
- 用excel制作双层饼图_excel双层饼图怎么做
- Win系统 - Windows10 系统恢复语言栏位置的方法(二)
- 冬日魔幻之旅-seata+dubbo+nacos+springboot解决分布式事务的全网段唯一实践之作(上)
- 开关电源-半桥LLC控制
- 两级交错升压 DC/DC 转换器中传导 EMI 噪声的建模和预测
- 代码块、if语句、if-else语句、switch语句、while循环、do-while循环、for循环——JS流程控制
- 深度学习常用软件纪录
- 1.1.5 在同一折线图中画2条曲线
- Fragment 与 Viewpager 联合使用在网络上获取图片
- 2022年广东省安全员B证第三批(项目负责人)上岗证题目及模拟考试
热门文章
- lstm训练情感分析的优点_LSTM对电影评论进行简单的情感分析
- 微信和Python之间,还能这样玩,你所不知道的骚操作!
- Python 绘制出酷炫的三维图
- MATLAB机器学习系列-5 RBF、GRNN和PNN神经网络原理及其例子代码
- tomcat的基本使用
- Java8 ArrayBlockingQueue 源码阅读
- VTK:图像亮度用法实战
- boost::mp11::mp_pop_front相关用法的测试程序
- boost::heap模块实现可变堆的测试程序
- boost::geometry::strategy::distance::pythagoras_point_box用法的测试程序