优雅的代码(PHP)

优雅的代码(PHP)

KanekiYuto
2025-01-22 / 4 评论 / 14 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2025年01月22日,已超过71天没有更新,若内容或图片失效,请留言反馈。

介绍

软件工程原理,摘自 Robert C. Martin 的著作 《代码整洁之道》,适用于 PHP。这不是风格指南。而是使用 PHP 编写可读、可重用和可重构软件的指南。

并非本文中的每一条原则都必须严格遵循,而且得到普遍认可的原则甚至更少。这些原则仅是指导方针,仅此而已,但它们是《代码整洁之道》作者们经过多年的集体经验总结而成的。

受到 clean-code-javascript 的启发。

尽管许多开发人员仍在使用 PHP 5,但本文中的大多数示例仅适用于 PHP 7.1+。


变量

变量是编程中不可或缺的一部分,在编写时应该考虑如何能够通俗易懂,避免给自己和他人造成不必要的麻烦。


使用有意义且易发音的变量名

不建议的:

$ymdstr = $moment->format('y-m-d');

推荐的:

$currentDate = $moment->format('y-m-d');

对同一类型的变量使用相同的词汇

不建议的:

getUserInfo();
getUserData();
getUserRecord();
getUserProfile();

推荐的:

getUser();

使用可搜索的名称(第 1 部分)

我们阅读的代码比我们编写的代码要多。我们编写的代码必须可读且易于搜索,这一点很重要。如果不命名对理解我们的程序有意义的变量,我们会伤害读者。请使您的名称易于搜索。

不建议的:

// 448 到底是干什么用的?
$result = $serializer->serialize($data, 448);

推荐的:

$result = $serializer->serialize($data, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);

使用可搜索的名称(第 2 部分)

不建议的:

class User
{
    // 这个 7 是做什么用的?
    public $access = 7;
}

// 这个 4 是做什么用的?
if ($user->access & 4) {
    // ...
}

// 这里发生了什么事?
$user->access ^= 2;

推荐的:

class User
{
    public const ACCESS_READ = 1;

    public const ACCESS_CREATE = 2;

    public const ACCESS_UPDATE = 4;

    public const ACCESS_DELETE = 8;

    // 默认情况下,用户可以读取、创建和更新一些东西。
    public $access = self::ACCESS_READ | self::ACCESS_CREATE | self::ACCESS_UPDATE;
}

if ($user->access & User::ACCESS_UPDATE) {
    // 编辑...
}

// 拒绝创建某些内容的访问权限。
$user->access ^= User::ACCESS_CREATE;

补充

原文来自 clean-code-php,本文仅翻译后编辑 。

0

评论 (4)

取消
  1. 头像
    cdffgttfff
    Windows 10 · Google Chrome
    @

    文章结构紧凑,层次分明,逻辑严密,让人一读即懂。

    回复
  2. 头像
    kjtypakvtg
    Windows 10 · Google Chrome
    @

    建议引入反面案例,增强辩证性。

    回复
  3. 头像
    pplqahopkl
    Windows 10 · Google Chrome
    @

    ?内容类评语?

    回复
  4. 头像
    zjcehwytvl
    Windows 10 · Google Chrome
    @

    作者的情感表达细腻入微,让人在阅读中找到了心灵的慰藉。

    回复