程序员的工匠精神-请允许我向您介绍真正的代码艺术品

PHP自学 / 2019-01-02 18:55:19

动与静

“ 从业这几年来,见过很多类型的代码,有些像坨屎,有些像杂草,但今天我见到了代码中的艺术品 ”

作为一个程序猿,我的工作就是撸代码,上班撸到下班,我努力让自己撸的代码规范一些,因为我害怕什么时候另一个程序猿接手我的代码,或者团队中的搭档查看源码时,一不小心问候了我的全家,本来撸代码已经是一个挺费神的工作,我真的不想再给大家心中奔腾一万匹草泥马的机会。所以,我自认为自己写的代码,注释清晰,层次分明,排版工整,相对规范,毕竟规范一些可以让别人感觉到专业。

大一点的公司会有自己的代码规范,即便人员有一定的流动性,但大概规范总是有的。但是对于小公司而言,人手有限,加上人员流动,程序猿为了赶工期,赶进度,自成一派的写法,最终等到你接手的时候,尴尬至极。先抛开代码的质量,从最基础的排版风格都让你跟进早市一样,有的像番茄,有的像土豆,有的像杂草,时不时碰见遛狗的,没准还能踩上一堆狗屎。常在河边走,哪有不湿鞋。我相信同道中人一定也深有感触。

前不久我跳槽到了一家新的公司,尽管是一家小公司,但是相对开放和自由的氛围让我觉得不那么压抑,毕竟压抑的环境很难让人有工作热情。我接手的代码是上一个老大哥写的,我和他都是干后端的,而公司是做一个资讯类APP,刚起步,也没什么名气,后端语言采用PHP,后端的代码大多出自他手。我跟着他熟悉了几天项目,简单的做了一些交接,他就离开公司,听同事说他可能回老家结婚,结完婚可能就不来北京了,其实我心里还是有一些小遗憾的,毕竟对于程序猿来讲,逃离北上广深到二线城市,意味着收入下降,另外那位老大哥人很nice,即便是接触不久,深有好感。好了,言归正传,因为刚来时间不长,所以大部分时候都是在熟悉接口和业务逻辑,所以并没有深入的去翻看他遗留的代码,一直到这个周末,因为下周可能会加一些新需求,我觉得有必要把整个项目的代码仔细的阅读一遍。然后,我被惊艳到了!

最先被震惊的是他并没有使用任何一个成熟的PHP框架,而是采用自己封装的一个小框架,非常小巧,框架结构也非常合理。

只取了部分文件,重要的是结构

简单的做一下说明,可能作为程序员你们一定非常容易理解,如果不是程序员也没关系,直接忽略掉这段话!

Actions是控制器文件夹

Configs是配置文件夹

Extends是第三方SDK文件夹

Models是数据服务层

Services是逻辑服务层

SQLs存放数据库查询文件

Tools是项目常用到的系统工具类

乍一看中规中矩,层次还算分明,但这不是重点,重点是Services层和Models又划分为抽象层和实现层,这种结构在php项目中并不算多见。这是令我惊喜的开始,也有可能是我没见过世面,不管怎么说我觉得这个项目的层次划分很高明,比MVC要更灵活一些。

如果说仅仅是这样我就被惊艳到的话,那我真的算是菜鸟了。优秀的代码风格如同一身得体的打扮,能够给人以良好的印象。废话不多说,上干货。

看看这代码,我很惭愧

这是一个获取客户端请求IP地址的一个系统方法,代码已经精炼到一定程度,如果是个新手没准还真看不懂。

重要的是这注释,这排版,这就是艺术品有木有!

这缩进,这注释,膜拜了

一个简单的插入排序算法,我已经膜拜了。

艺术品有木有

简单高效的到处表格的方法,还能说点什么呢!!!

注释中竟然有示例,还要我怎样

注释中竟然还有示例,真的很贴心!!!

注释的还能再清晰一点?

这个是他写的依赖注入容器类的一个方法,真的很精炼!!!

看起来代码很少,但逻辑量不少

在递归解析这几行代码,真的能看出来大哥的逻辑处理能力不一般,代码精炼程度,让人折服;

接口的使用

我们经常说面相对象,但是!!!

一个单例模式,两种不同的实现

我看到了大哥对编程的热情,一个单例,两个决然不同的实现方法,充分兼顾了速度与可读性,让接手的人可以自由选择,我觉得工匠精神,他做到了!!!

如果仅仅只是代码写的极其精致也算算了,来看点更体现功力的东西

数据库语句

如果仅仅是数据库语句够整齐也就算了,毕竟每个人都可以做到,但是如果我告诉你,主表的数据量超过500万,再加上其他关联表,数据量总体超过2000万,加上连结操作,你猜这条语句从查询到接口需要多久?

你没看错,49毫秒,这不是最好成绩

是的,49ms,也许这个速度你觉得也就凑合,但是对于在阿里云上购买的一核2G的MySQL数据库来讲,这个成绩堪称完美。我已经彻底被征服了,你可能会笑话我没见过世面,但是对于我来说,这真的算是一个艺术品,我看到了工匠精神,之后我也会用更高的标准来要求自己,如果说仅仅是为了升职加薪,我相信我会一事无成!

这个社会上很多人在生活上追求更高的品质,但愿意对自己手头所做的事情坚持高标准坚持卓越理念的人已经不多见了,以至于我们发现花再多的钱也买不到 安全的食品了,花了一辈子的积蓄买的房子却有各种质量问题。

扪心自问自己在工作中是否能坚持某些东西,大部分人的态度都差不多,只是你糊弄一下不会怎样, 而他马虎一点就会死人,区别仅仅在于这里。

程序开发者应该知道优秀程序员的价值,不在于其所掌握的几招屠龙之术,而是在细节中见真著。

做一个追求极致的工匠,而不是一个垒代码的民工。

我试着想用更加冷静客观的态度来阐述这些,但是真的没有把持住。如今像上面这位大哥这样可以把代码写的像艺术品一样的人已经不多见了,我相信这样的人,无论是否回到北上广深,都一定能找到一份如意的工作。常言道,以人为镜,可明得失,但愿每个程序员都成为一个追求极致的工匠。如果这篇文章让你们中间的任何一个人有所觉悟,那么我的目的就达到了!