如何能成为一个合格的程序员(不是一个优秀程序员该有的品质)

朋友们,我来了,今天来分享一点工作中的感悟,接下来我们就来聊聊关于如何能成为一个合格的程序员?以下内容大家不妨参考一二希望能帮到您!

如何能成为一个合格的程序员(不是一个优秀程序员该有的品质)

如何能成为一个合格的程序员

朋友们,我来了,今天来分享一点工作中的感悟。

最近看《程序员修炼之道》这本书,作者有反复提到一个点叫务实的程序员从不相信任何人,任何事,包括他们自己。

知道是一回事,完全贯彻是另外一回事。

mysql的时间类型字段,都会有一个随当前时间更新的选项,当你勾选之后,这个记录但凡有修改,这个字段就会更新成当前时间。所以,这个功能,通常用在update_time这个字段上,用来记录更新时间。

原本,在我的代码里,其实也是对这个字段有专门赋值的,但后来,有一段时间,我感觉挺麻烦的。既然数据库已经会赋值了,那我自己再单独赋值一次这个时间没有意义,所以,有一些表的这个字段,我就没有再写赋值语句了。

然后,前段时间,因为运维的交接做得不算太好,以至于数据库出现了一些问题,然后还没有备份。最后虽然大部分表和数据都找回来了,但是,还是产生了一些遗留问题。

比如,我上面说的这个会自动更新当前时间选项的这个勾,就莫名其妙没有了,然后,就导致,本来update_time应该更新的,却没有更新。但是,有一些业务是依赖于这个更新时间的。可以想见的,由此出现了一定量的数据修补工作。

其实,在这个数据库刚刚恢复的那段时间里,发生了另外一件事,已经给过我提示了,不过当时,我没有在意。就是,刚刚恢复的时候,数据库的时区是不对的,它自己变成了0时区,然而正确时间应该是东8区。因此,有一部分设置了默认值为CURRENT_TIMESTAMP当前时间的字段,时间是有问题的。但是,那些被我直接java代码赋值的字段,时间都是对的。

那个时候,我隐约地意识到了,java代码赋值的意义,但是没往深了想。直到今天,业务被影响了,才后知后觉地意识到了,这么做的意义。

我们不相信所有人,已经所有第三方的产品,虽然说,数据库出现这样的问题,是极其小概率的事件,但是,一旦它出现,可能影响,可能波及的范围就很广了。

如果我们过于依赖数据库的稳定性,那就会变得很被动,但,如果我们一开始就不相信它,做了一些防护措施,就不会陷入这样尴尬地境地。

就像是,同样是数据校验,前端页面脚本检验了一遍,理论上,数据应该是对的,但是,假如被黑了呢?假如网络波动,导致丢包了呢?假如前端页面脚本出现bug了呢?……

如果我们完全相信前端传过来的数据,直接往数据库里存,就可能导致,存入一条脏数据。所以,不管前端要验证,后端也要验证。

这些手段都不是用于正常情况的,而是为了防范异常情况的,尽量把影响降到最低。

阿里的开发手册里有一条我还印象挺深刻的,它说,不论你的代码做了多么精细地判重校验,数据库的唯一索引,也一定要加上。因为如果你不加上,就一定会出现重复地数据。

所以,就像前面说的,不能完全信任数据库,所以,即便是数据库有唯一索引,该加的判重校验,还得加,不能全部丢给数据库。

以上就是今天的分享啊,事情可大可小,但是,谁也不相信这种编码态度,是值得一直放在心里提醒自己的。

如果好好贯彻了这个原则,相信你一定会在未来的某个时刻,感谢当初的自己,做出了英明的决定,做出了看似多此一举的行为。

祝我们的代码都能抵抗意外的冲击。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页