/首页
/开源
/关于
胡乱唠嗑,唠唠技术人员
发表@2020-06-29 13:57:54
更新@2023-04-27 18:42:02
大家好,我是彷徨、迷茫且失落许久的神棍局二号人物 --- 副局长兼谢顶道人老李。 前段时间吧,确切说自从《PHP网络编程》基本结篇后,巨大的真空以及某些原因导致我断更许久,天天泡在群里发小图小视频,最近理智逐渐恢复正常,遂写一篇唠唠。 先说后边我打算开个新的系列,叫做《API安全指东》,看完后去面试犹如上如天下入地,糊住面试官要50K,糊不住了要5K。放心,依旧是不要钱的套路,主要还是说:不要钱腰杆子就是直!说话就是硬气!拖更说拖就拖!这个系列呢,初步预期在八至十个章节左右,不限语言,你整完后真的是「小母牛周游世界 --- 走哪儿牛B到哪儿」。 最近一直在琢磨出路、未来、预期,思来虑去结论依然是一句废话:技术人员出路依然是技术,而且是深度到具备护城河效应。这里要给各位提个小醒:我知道有人说转管理,转管理没问题,只是你不要把当个技术小组长与管理划等号即可,这里边压根就不是一回事。「深度上,好好筑基;业务上,多思考沉淀」,其实,至少要占据深度上这一席之地! (以上为个人想法,百花争鸣,以你为准) 有些小老弟可能会有疑惑:可公司项目重构啊、设计啊,不都组长带头么?逻辑上肯定得组长带头啊,但没有人阻碍你主动参与。如果你遇上个爱划水骗工资的组长,他没准巴不得你冲到前边。你要收获的是积极参与过程中的经验、教训,而不是一个虚职。 此处再次借郭大爷一句话修改一下:技术人拼到最后,全是基础。 基础好,粘贴过来的代码就是靠谱;基础不好,无论你粘啥语言的代码都粘不好。尤其是对于PHP这种语言来说,非常容易就能看出这代码写的靠不靠谱。就比如下面这段代码: ```php order->where('id'=>$id); if($order['pay_type'] == 'credit'){ $creditInfo = $this->credit->where('id'=>$id); } $order['creditInfo'] = $creditInfo; return $order; } } ``` 你要说这代码能用不,反正也能用,倒是满足「又不是不能用」的底线。一个稍微比这个靠谱点儿的,应该写成这样: ```php order->where('id'=>$id); if(empty( $order )) { // 如何如何如何...抛一个异常 // 一般说没有该订单,属于核心逻辑故障 // 直接给错误,就不要走兜底返回空了,而是返回错误 throw new Exception(); } // 这种==判断,反着写,保证不会因你手残少写一个= // 而变成true if('credit' == $order['pay_type']){ // 没有拿到支付方式,根据业务取舍,如果在你 // 业务里属于关键数据,那就也抛异常 // 如果不算核心,直接走兜底空数据也可接受 $creditInfo = $this->credit->where('id'=>$id); // 判定获取信用卡结果错误,这里用 !抽象代替了 if(!$creditInfo){ $creditInfo = $emptyCreditInfo; } } $order['creditInfo'] = $creditInfo; return $order; } } ``` 上面这种写法,足以保证当你的调用方为静态语言时候,由于PHP过于「灵活」导致的解析失败继而crash,如果反馈到APP,修正前的写法极有可能直接导致APP闪退。如果你还想进一步完善一下,还可以这样再升级一下: ```php oOrder->where('id'=>$iId); if(empty( $aOrder )) { // 如何如何如何...抛一个异常 // 一般说没有该订单,属于核心逻辑故障 // 直接给错误,就不要走兜底返回空了,而是返回错误 throw new Exception("如何如何如何..."); } $aOrder['creditInfo'] = $oEmptyCreditInfo; // 这种==判断,反着写,保证不会因你手残少写一个= // 而变成true if('credit' == $aOrder['pay_type']){ // 没有拿到支付方式,根据业务取舍,如果在你 // 业务里属于关键数据,那就也抛异常 // 如果不算核心,直接走兜底空数据也可接受 $aCreditInfo = $this->oCredit->where('id'=>$iId); // 判定获取信用卡结果成功,这里用 if()抽象代替了 if($aCreditInfo){ $aOrder['creditInfo'] = $aCreditInfo; } } return $aOrder; } } ``` 就是变量命名方式: - 数组类型加个a前缀 - 对象类型加个o前缀 - 字符串类型加个s前缀 - 整数类型加个i前缀 - 浮点类型加个f前缀 这样,你在看到代码第一时间就能知道每个变量在正常时候应该是什么类型的数据。 如果你再讲究点儿,对于之前数组传参的地方都可以考虑使用对象传参,因为PHP数组永远都不能确定里边会有几个字段,但是PHP对象的成员对象可以替你保证字段永远存在。比如下面这个: ```php