作者 | Oscar Merida译者 | 弯月 出品 | CSDN(ID:CSDNnews)PHP是一门有趣的编程语言。语言与利用语言构建的程序通常属于两种设计理念。这里我指的不是瀑布式或敏捷之类的软件开发生命周期,而是软件管理的基本思想。有人将这些思想称为“正确的方式”以及“Worse is Better”。PHP包含一些奇怪的问题,很多人由于这些问题而贬低这门语言,但他们也没有错。这门语言有很多问题。有人嘲笑PHP糟糕的设计,还提出了一些正确的观点,尽管这些观点是九年前提出的,但它们依然是正确的。然而,开发人员却可以利用PHP创建结构“正确”的软件,而且还引入了其他公认好评的实践。你可能接触过Laminas和Symfony之类的框架,它们拥有最佳面向对象编程实践,开发人员可以利用这些框架编写结构正确的代码。为什么会这样?因为PHP是最糟糕的编程语言。
设计软件
1991年,Richard P. Gabriel发表了一篇题为《Lisp: Good News,Bad News, How to Win Big”》的论文。该论文的论点是,对于软件的设计和寿命,“Worse is Better”,也就是说越糟越好。他之所以得出这样的观点,是因为他意识到程序设计出现了两种截然不同的流派,他称之为“MIT/Standford Style”(学院派)和“The Right Way”(正确的方式,又称新泽西风格,即后来的Worse is Better)。这两种理念的目标相似,但对关键领域的看法不同。两种风格都侧重于四大关键思想领域:简单性、正确性、一致性和完整性。学院派的风格描述为:
首先,越糟越好的软件会被接受;其次,用户的期望更低;第三,这些软件可以被改进,直到接近“正确”的程度。—— Richard Gabriel几年后,Rasmus Lerdorf开始致力于创建个人主页/表单解释器(Personal Home Page/Forms Interpreter),即我们现在所说的PHP。PHP/FI的诞生是因为Lerdorf 需要维护他的主页,并与表单和数据库进行交互。PHP/FI的设计甚至称不上编程语言,而是作为C之上的脚本和函数层。
设计不能过于不一致。在某些情况下,为了简单性,可以牺牲一致性。我从不会说PHP具有一致性,但它的一致性已经足够了。提及数组与字符串函数,人们可能会抱怨Needle/haystack的参数顺序。不过一般来说,数组函数是一致的,字符串函数是一致的。与保持语言的一致性相比,保持与底层 C 库的一致更简单。PHP在其他方面也很一致。比如strpos()函数,PHP的函数在遇到错误时,就会返回FALSE,这一点非常一致。不一定正确,但很一致。函数命名是否带下划线往往也是与底层库保持一致。PHP语言为了简单性牺牲了一致性,但即使没有规范,它也在努力在有意义的地方保持一致。