为什么你还在纠结于语法糖?

栏目: PHP · 发布时间: 6年前

内容简介:为什么你还在纠结于语法糖?

前几天在一个 Laravel 论坛看到一个问题,大致意思是说一个查询的方法应该怎么写显得更为优雅。而我给出的答复是

首先要明确一下对于“优雅”的定义,每个人的定义不同,我个人对他的定义是,各个层级清晰,代码耦合度低,而不是在于语法糖的写法优雅。

诚然,这是一个看似带着些许“装逼”和“讽刺”意味的答案,但是并不意味着这个答案没有可以参考的价值。虽然后来作者给我的回答没有任何的不妥,甚至在几年前,我也会对这种回答嗤之以鼻而不以为然。不过这也引发了我对“优雅”这个词的进一步思考。

那么“优雅”到底是什么?

有人说,优雅就是你的语法糖要用最新的。比如说,能用 switch 的地方就千万别用 if

也有人说,你的代码要命名规范,语义清晰。

其实正如鸟哥在 知乎 中所述,优雅有不同的层次,站在不同的层次所理解的优雅是截然不同的。

而我对“优雅”的理解,却有些许不同。

首先,“优雅”应该是至简的。

经常会有人有这样的理解,同样的功能,实现的过程越复杂则越有成就感。然而在这类工作中,大多数都是重复且可替代的。事实上,各个语言都是一个工具,而 工具 的目的应该是让每个人都能快速使用,帮助我们节省重复工作的时间。举个例子,我们常说 Laravel 框架非常优雅,其中有一点我个人认为在于他强大的 artisan 指令,解放了我们复制和粘贴。从语言层面而言,虽然我主要使用的语言是 PHP ,但是如果 Python 能实现的方式更快和合理,那么我自然会选择 Python

因此,在我们写代码的过程中也是如此,虽然我们的确需要在写代码的过程中考虑各种不同的因素,但是这并不意味着我们可以在代码中书写完全不需要的内容。

其次,“优雅”应该是清晰的。

这里所说的清晰是指两个方面,一方面我们的变量名要清晰,另一方面我们的结构层要清晰。当我们给变量名或者函数取名时,我们能很快通过函数名知道,这个函数是用来做什么的,即我们说的见名知意。而我们的结构层说要清晰,是指我们代码的各个层级各司其职,比如我们框架的 MVC 分层,当然,现在很多框架(诸如 Laravel )在 C 这一层做了更加细致化的区分,让整个结构更加明朗。此外,你的结构设计合理,比如基本的“开闭原则”之类。

所以,我不会对--纠结于语法糖的这种行为做太多的评判,当然,我承认一些新的语法糖能帮助我们更快的书写代码或者更好的理顺我们的代码,但是我想强调的是,我们是不是应该花更多时间在我们的代码简洁层面和我们框架结构层面,而这才是我所理解的“优雅”。

依稀还记得几个月前,一个同事跟我说的话让我印象特别深刻:

其实写 PHP 特别能看出一个人的代码能力,当你见的多了之后你会发现,高手和小白写出来的代码差异性特别大。

的确,每每当我们回顾我们半年前或者一年前写的代码,大概都会有“一团糟”的感觉,我想这就是所谓的成长吧。甚至于,我们会对那些还在说着“PHP学习算法和 设计模式 没用”观点的人觉得可悲。

本文由nine 创作,采用 知识共享署名4.0 国际许可协议进行许可

本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名

最后编辑时间为: Dec 21, 2017 at 02:17 pm


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据结构与算法分析

数据结构与算法分析

Frank.M.Carrano / 金名 / 清华大学出版社 / 2007-11 / 98.00元

“数据结构”是计算机专业的基础与核心课程之一,Java是现今一种热门的语言。本书在编写过程中特别考虑到了面向对象程序设计(OOP)的思想与Java语言的特性。它不是从基于另一种程序设计语言的数据结构教材简单地“改编”而来的,因此在数据结构的实现上更加“地道”地运用了Java语言,并且自始至终强调以面向对象的方式来思考、分析和解决问题。 本书是为数据结构入门课程(通常课号是CS-2)而编写的教......一起来看看 《数据结构与算法分析》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具