17. PHPer x Code Quality Tool

老板说程序码写得好就不会有 bug,你 bug 太多要扣你绩效。
为什麽前辈写的就没有 bug?我哪里写不好?要怎样才叫写得好呢?

Code Quality Tool 跟跟前面介绍过的 debug 有些关联。
程序品质好,bug 自然少。

问题

PHP 是弱型别的脚本语言,因为没有编译阶段,错误在执行时才产生。
但其实有些错误是可以在执行前就发现的,例如变数不存在(打错字)、引用的路径不存在、函式调用错误等等。

如何透过减少执行阶段的错误

使用这些工具目的是透过程序码的建议规范、预检查,增进程序码的品质,进而减少执行阶段的错误。

[风格] 遵守建议规范
前面的文章提过 PSR,其中 PSR 1, 12 是写作风格的规范。
团队合作就像是合作编剧一样,需要的是稳定的风格,确保团队成员都能快速理解与接手修改,所以会希望大家能写出一致的程序。
「我的程序码一眼就看出来是我写的,都不用 git blame 呢!」像这样的个人特色在团队里并不会受到欢迎唷。

[静态分析] 检查 source code
检查 source code 会检查命名重复、宣告後未使用等等问题。
在 PHP 7 之後的版本也加入了加强型别宣告的功能,所以在较严格的检查模式里,我们也可以透过检查参数型别、回传型别来减少错误。

如何安装工具

其实我原本用 VSCode 有安装,有的要做一些设定,有的看起来好像功能重复,但我也不知道差别是什麽。
因为不想花太多时间在研究工具,後来就用 PHPStorm。

我的 VSCode 有装的:

  • phpstan: 静态预检查的工具
    • 可以检查出:call to method unknown、params type invalid
    • 也可以提高检查等级,例如要求要有函式必须宣告回传型别,如果没有就会抛出:type has no return typehint specified
  • php_sniffer PSR & auto fix
    • phpcs (PHP Code Sniffer): 检查程序码标准。
    • phpcbf (PHP Code Beautifier and Fixer): 修正不符合标准的程序码。

今年的 LaravelCof 刚好有一场这个主题的分享,想看更专业的分享一样是建议付费买票罗 ^_^
https://laravelconf.tw/agendas?modal=agenda.WzJd

ref


<<:  【Day19】导航元件 - Dropdown

>>:  Day17 开发套件 - 实作BasicMessageChannel

Day_24 Nginx/FRP/ZeroTie

前两天介绍两个以VPN以点对点加密方式连回我们所架设的网路。但这里有个问题是我们得具有硬体与实体IP...

[DAY13] 跟 Vue.js 认识的30天 - Vue 模组自定义事件(Custom Events)

每次写笔记都在想要怎麽写得让大家(包含未来的我)看得懂,所以每次都要写很久,但好像自己的内容有点太无...

Vue.js 从零开:v-bind:is 动态元件

如果要控制元件出现或是消失,依照之前讨论的章节,会使用到v-if、v-show的指令来完成,但当你的...

LeetCode解题 Day12

882. Reachable Nodes In Subdivided Graph https://l...

Day-24 Thread

Thread tags: IT铁人 虽然前面说CPU在执行程序时,都用process来叙述,不过其实...