00:00
大家好,我是于皮,自学编程时,因为种种不可抗力,我学会了写bug,像这些电脑上都有我翻车的痕迹,但我并不觉得写霸这是件坏事,反而呢,我要感谢他们陪我度过了无数个空虚寂寞的夜晚,让我变秃变强。于是今天我来回报社会了。我从自己五年期间写过的种种bug中选出了一些有代表性的,并且想通过这个视频教大家如何成为bug制造机,写出更多的bug。以下内容绝对真实,想提高编程能力的同学一定要看完,如果感同身受,不要忘记一键三连支持下哦。下面先造几个入门级的bug,首先是中文编码,看似是一行最最最简单的代码,但只要是我写的,它就运行不了。
01:01
哦,原来是用了中文的标点符号。此外,我喜欢把项目文件名从英文改成中文,有时也会有出其不意的效果,像乱码、无法读取文件什么的,二代码不规范。我是一个洒脱的程序员,什么团队开发我的代码由我做主。这种飘逸的代码命名,透露着我想要成大事就要不拘小节的霸气,一不小心拼错了这单词,用错了变量,算了,不管了,反正以后同事发现问题的时候会来找我的。三、复制粘贴我喜欢复制粘贴,这是我完成工作的主要技能,三秒粘贴一个文件,随便改两下代码,能跑就行了。看着相同的变量名和注释,想象到同事引入我写的代码时一脸懵逼的表情,我就心满意足的下班了。四、硬编码写代码时经常会用到一些常量,为了追求极致的效率,我就是不单独为这些值定义变量A,哪里用到它们,我就复制粘贴一遍,简单粗暴。假如哪一天这些值要改掉了,同事会帮我从所有的文件中找到这个值,然后全部修改。
02:19
那假如说他改漏了,那也是他写的bug,和我无关。五、不释放资源,想从数据库中获取数据,就要和数据库建立链接,占用连接资源,拿到需要的数据后呢?诶,我就不是纺置的连接,我就要占着茅坑不拉屎,一会儿坑就被占满了,其他人想访问也都访问不了了。此外呢,还有HTTP连接文件的输入输出流,都可能导致资源泄露的bug。六圈复杂度过高。圈复杂度是衡量代码复杂度的标准,简单的说,If else分支越多,圈复杂度就越大。我就写过一个特别复杂的逻辑,就几十个ifl,层层套娃,但我就是懒得去优化代码,我就是懒得去封装函数,而且我还就是不写注释。
03:12
所以以后呢,这段代码也就只有我能看懂,提高了我的不可替代性。下面再分享一些企业开发中常见的bug。首先是依赖冲突,依赖是指我们项目中用到的框架、类库等等别人写好的代码和工具,那我做项目图省事,就是用到什么处都往项目里塞,而且都要用最新版本的。那对于一个大项目,很多人同时开发,往往就要引入很多很多的依赖,稍有不慎就可能产生依赖冲突。比如说我给类出A引入了C的1.0版本,类出B引入了C的2.0版本,那我到底该用C的哪个版本呢?依赖冲突的后果往往就是项目起不来,或者运行时突发bug。下一点不区分环境。我做网站时,为了方便,在自己电脑上开发时和已上线的项目用的是同一个环境,同一个数据库。结果呢,有一天我就忘记了,指的是在开发时我造了一条测试数据,不小心上传了我的预兆,结果大意了,线上几万个用户全部都能看见,就这还是小事,就说不定哪一天你在本地写了个bug,不小心把线上的数据给删了。
04:29
我觉得这才是真正的欲哭无泪,下一点不做自测。企业开发中,测试是很重要的,开发同学也要写单元测试来自测,像我就很自信,我写好代码从来不测,哎,就是一把锁,后面真出了问题呢,测试找我,产品找我,老板找我,我大不了就花更多的时间去改吗?这样我的工作不就更多更饱和了吗?下一点不做评估。在写代码前,一般要评估系统的并发量,数据的量级、接口的时延等等来选择相对合适的技术。哎,我就是不管,反正我只会买circle这一个数据库,我还不懂用索引啊,就来个上千万数据,那我的系统是分分钟挂掉啊。这个时候我再去提出用新的数据库技术,什么分库分表,老板一定会夸我进步的飞快,Nice,下一点自作主张。
05:28
我写的代码,我提供的接口,只有我来定义,我也不管谁请求了我,我请求了谁啊,只要我需要改我就改,我改了我也不告诉别人,比如说老的接口呢,返回了整形的数据,新的接口呢,我改成返回字符串。我自己这儿可能没有问题,但分分钟请求我接手的人啊,他们那爸这就来了,就都来找我了,这个时候就能体现出我的重要性了,对不对?下一点文档读不全,现在的技术框架啥的一般都提供了详细的使用文档,但我呢,一般是打开文档看到有这么多自己需要的函数,我就直接复制过来用了,哎,我就是不看完文档,出了问题呢,我就去找他们的负责人,体现出我强烈的求知欲,然后是版本号错误。
06:19
在阅读文档时,一旦不注意版本号,想写霸者就真的很容易。我有一个项目用到了JAVA8,但我觉得文档要和看书学技术一样,你得看最新的,然后我就打开了JAVA16的文档,结果呢,就好多语法都不支持,一大片的爆红。最后再分享两个性质很严重的bug,首先是不了解需求,在写代码前一定要先了解需求,就是要做什么,为什么要做,它有什么价值。否则就会像我有的功能点我没有搞懂,我也不去问产品同学,我就全靠自由发挥,就最后哪怕我的代码能运行,没有bug,但并不是产品或者说用户想要的,那是不是就意味着我这个程序本身的存在?
07:09
就是一个bug,然后是不做设计,写代码和盖房子一样,一定要先想好怎么写代码再去写,像我就懒得做设计,我就直接打开编辑器,企图一把锁啊,最后啊,等我删删改改,好不容易凑出来了代码呢,我才发现了大问题,结果整段逻辑都要全部删掉重新写。最后啊,我要说以上行为请勿模仿,想学好编程,就要多写bug,多遇到和解决bug,多积累和总结。几年之后,你再来看自己当时的翻车经历,也是一笔宝贵的财富啊。那最近呢,我也把自己的140篇原创文章编程资源都在公众号程序员鱼皮做了整理,欢迎大家关注后阅读,学编程少走弯路。那如果本期视频有帮助,还请大家多多三连支持,我是程序员鱼皮,我们下期再见。
我来说两句