您当前的位置:首页 > 电脑百科 > 程序开发 > 程序员

我写代码时的小倔强

时间:2021-06-03 10:00:16  来源:CSDN程序人生  作者:鱼皮

作者 | 鱼皮

来源 | 程序员鱼皮(ID:coder_yupi)

分享自己写代码时的好习惯,让你的编程能力突飞猛进!

很多同学在学编程时不注重代码质量,养成坏习惯的同时,失去了提升自己编程能力的机会。如何有意提升自己的代码质量呢?我根本就发现不了自己代码中的问题,以为已经写得很棒棒了,怎么办?

我写代码时的小倔强

要解决这个问题其实非常简单,既然自己经验不足、或者是 “只缘身在此山中”,看不出来代码哪里写的不好,那就找其他朋友或有经验的程序员帮你看看代码,给出一些意见。

虽然每个正常的程序员都无法忍受自己写的代码被人说是辣鸡,但是虚心接受指正,并加以修改,的确能大大加深我们的印象,下次写代码时就会注意了。慢慢地,就养成了好习惯,不仅注重自己的代码质量,还会 “继承传统”,开始说别人写的代码辣鸡,从而帮助更多人改进。

我写代码时的小倔强

但有一个很残酷的现实,谁这么好心帮我看代码呢?

我大学期间,虽然做过很多项目,写过很多代码,但是自己的代码基本都只给自己看。即使把大作业的代码交给老师,他们也根本不看代码,只看运行效果的,这也是上次提到的为什么大家越来越不注重代码质量的原因之一。而且实不相瞒,我也曾经求学长帮我看代码,但换位思考一下,如果不是和你关系非常好,谁闲的蛋疼免费去帮你看你写的辣鸡代码?

我写代码时的小倔强

求人不得,只能求己。

一种方式就是把自己开发好的作品上线,让用户来使用它,从而帮你发现一些自己没注意到的 Bug 或功能问题,驱使你去仔细阅读和改进代码。还可以把自己的代码公开到 GitHub 等代码托管平台,允许其他同学阅读和指出问题。但是,这种方式过于硬核,前期需要耗费大量精力去做推广,否则根本没人用你的项目,也没人去看你的 GitHub!

硬核的方式咱玩不了,那我就教大家人人都能轻松学会的一招,也是我自己一直坚持的编程习惯。

下面一起来看看我写代码时的小倔强吧,有效提高你的代码质量,编程能力突飞猛进!

我写代码时的小倔强我写代码时的小倔强

 

我的编程习惯

就像之前说的,我们之所以发现不了代码中的问题,很大程度上是因为我们的编程态度是 “乐观” 的,相信视频教程、相信书本、相信编辑器,只要没报错,那就是对的。

但我写代码时,非常地 “悲观” 且倔强,我会细致入微地把自己写过的每一行代码都看作是病人,坚持认为他们是有问题的,甚至可以说是从鸡蛋里挑骨头!

有同学说了,你特么不就是在说废话么,这不就是仔细检查代码?或者说是防御性编程?

先别急,这和防御性编程可不一样,我有多倔,举个栗子你就明白了,下面请跟上我的思路~

我写代码时的小倔强我写代码时的小倔强

 

我有多倔?

假如我写了这样一端前端代码,作用是获取某条狗的名字:


 
// 默认狗名let name = '无名狗';// 狗、狗信息、狗名称都存在if (dog && dog.info && dog.info.name) { name = dog.info.name;}

你觉得这段代码有问题么?

如果你觉得没有问题,那么很好,你很乐观。

无所谓了,我才不要你觉得,我很倔,我就偏偏觉得这段代码有问题,没问题我也得挑挑问题 。

我写代码时的小倔强

嗯,代码逻辑好像没毛病,那硬要说有问题的话,代码量是不是有点多?

比如在获取狗名时,为了防止报错,要先判断狗是否存在,再判断狗的信息是否存在,最后才能取到狗名,好啰嗦啊。如果还要获取一堆其他的信息,这代码简直没法看了。

所以,我就开始思考,如何让这段代码更加精简,有没有更好的写法呢?

通过百度,我发现了一个牛逼的玩意儿,叫 可选链操作符( ?. ),允许读取对象深处的属性值,而不必明确验证链中的每个引用是否有效;在引用为空的情况下不会引起错误,会自动短路返回值。

于是,代码变成了这样:


 
// 默认狗名let name = '无名狗';// 狗、狗信息、狗名称都存在if (dog?.info?.name) { name = dog.info.name;}

已经比刚刚简化了不少,但我不满足,获取个狗名竟然要写 4 行代码?这肯定有问题啊!能不能再简化一下呢?

思考了一下,这次我凭着自己贼硬的基础知识储备,没有百度就想出了更精简的写法,使用 JAVAScript 的三元运算符就行了,代码如下:


 
let name = dog?.info?.name ? dog.info.name : '无名氏';

怎么样,一行代码搞定!

我写代码时的小倔强

下面给大家个机会,代码写成这样还有问题不?或者说,你看这行代码觉得舒服么?

反正我觉得不太行,我鱼某偏要从鸡蛋里挑骨头!

仔细看,我们发现 dog、info、name 这三个单词都重复出现了两遍,那有什么办法再精简一下呢?

再次打开搜索引擎,这次搜了半天都没找到优化的方法,那我干脆就去搜了 “JavaScript 小技巧”、“JavaScript 高级写法” 等关键词,终于找到了答案。

空值合并操作符( ?? ),当左侧的操作数为 或者 undefined 时,返回其右侧操作数,否则返回左侧操作数。

最终,代码缩成了这样:


 
let name = dog?.info?.name ?? '无名狗';

舒服多了吧!

这就是我写代码时的倔强,通过这次挑问题,起码帮助我学到了两个 JavaScript 操作符的用法,爽死了!

我写代码时的小倔强我写代码时的小倔强

 

值得么?

那有同学说了:像你这样写代码,不累么?这么认真地去抠代码的细节,不会很花时间么?

小了,格局小了。

从这一次写代码来看,的确我花了更多的时间,代码能跑就行了,管那么多别的干啥呢?但从长远来看,这是学习的必经之路,通过自己思考去发现问题、解决问题,学到的知识可以说是深深地刻在了脑海里,以后再写类似的代码时,就能更轻松、规范和高效,省下的时间是无限的!

当然,抠细节也要看情况,如果你要开发的东西很紧急,肯定还是先以完成功能为主。但等后面有空了,一定要记得优化一下,否则你也算是为代码 “屎山” 贡献了自己的一份力量。

我写代码时的小倔强

悲观编程还有什么其他的好处呢?

乐观编程时,我们往往是被动地发现问题,以为代码跑的很顺利,但却往往被别人来提 Bug,再被迫修改,心态会越来越差。

而悲观编程时,我们是自己主动找问题,主动去优化代码。当你通过思考、搜索和实践,将原本很复杂的代码化繁为简后,你会惊喜地发现:我去,原来代码还可以这样写!牛逼牛逼!

我写代码时的小倔强

然后,你就会收获成就感,继续坚持这种习惯,不断进步。

这让我不禁想起了拼多多,早期没有给用户很高的预期,让他们觉得这是个多牛逼的产品。而是主动降低用户的预期,让大家都觉得这是个土味儿产品,后来再一次次地超出预期,最终走向成功。

我写代码时的小倔强

 

找不到问题?

看到这里,大家应该理解我写代码时的倔强了。但一定会有同学表示,我没有这种敏锐的直觉,看不出自己代码中的问题咋办呢?

我自己有一些经验方法,大家可以尝试一下:

  1. 当你觉得有段代码写起来很麻烦时,多半有问题,不妨去搜索下有没有现成的组件,或者别人是怎么实现的。

  2. 当你重复写某段代码时,一定有问题,不妨把它抽象成函数或组件、或者用设计模式来优化。

  3. 当某段代码中写了大量的 If Else 时,一定有问题,试着重新梳理逻辑,减少条件和分支。

  4. 多关注开发工具的报黄和报红提示,通常能得到很多好的优化建议,尽早发现问题。

我写代码时的小倔强

再给大家一道练习题,上面举的栗子是前端的,这次就举个 Java 的吧。

目标是获得所有狗的名字列表,老弟小阿巴写的代码如下:


 
// 获得所有狗的名字列表List<Dog> dogList = new ArrayList<>;List<String> dogNameList = new ArrayList<>;if (dogList !=  && dogList.size > 0) { for (int i = 0; i < dogList.size; i++) { Dog dog = dogList.get(i); if (dog != ) { dogNameList.add(dog.getName); } }}return dogNameList;

这段代码有问题么?如何优化呢?大家快来试试吧~

小提示,一行代码就可以实现同样的功能!欢迎在评论区交流。



Tags:代码   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
在SEO优化中,最重要的评估之一就是确定网站上存在哪些HTTP状态代码。这些代码可能会变得很复杂,成为一个难题,必须先解决这些难题,然后才能完成其他任务。例如,如果你放置的页面...【详细内容】
2021-12-24  Tags: 代码  点击:(4)  评论:(0)  加入收藏
1、通过条件判断给变量赋值布尔值的正确姿势// badif (a === &#39;a&#39;) { b = true} else { b = false}// goodb = a === &#39;a&#39;2、在if中判断数组长度不为零...【详细内容】
2021-12-24  Tags: 代码  点击:(5)  评论:(0)  加入收藏
前言本文提供将视频调整分辨率的Python代码,一如既往的实用主义。环境依赖ffmpeg环境安装,可以参考我的另一篇文章: windows ffmpeg安装部署_阿良的博客-CSDN博客ffmpy安装:pip...【详细内容】
2021-12-14  Tags: 代码  点击:(14)  评论:(0)  加入收藏
大家好, 我是林路,今天就给大家介绍Python代码都是用的什么编辑器写的?Jupyter Notebook ,没有Pycharm,没有Vscode,没有Sublime text。 只有一款工具:Jupyter Notebook 。工欲善其...【详细内容】
2021-12-09  Tags: 代码  点击:(26)  评论:(0)  加入收藏
在这篇文章中,我将与你分享一些关于JS的技巧,可以提高你的JS技能。1.避免if过长如果判断值满足多个条件,我们可能会这么写:if (value === &#39;a&#39; || value === &#39;b&#39;...【详细内容】
2021-11-17  Tags: 代码  点击:(22)  评论:(0)  加入收藏
一、为什么需要使用内存池在C/C++中我们通常使用malloc,free或new,delete来动态分配内存。一方面,因为这些函数涉及到了系统调用,所以频繁的调用必然会导致程序性能的损耗;另一...【详细内容】
2021-11-17  Tags: 代码  点击:(37)  评论:(0)  加入收藏
《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个由百度开源的低代码前端框架&mdash;&mdash;amis...【详细内容】
2021-11-05  Tags: 代码  点击:(65)  评论:(0)  加入收藏
程序员是青春饭,这在国内似乎是公认的。所以很多公司不愿招大龄程序员,很多程序员也“知趣”地及早转型。有的做管理,有的做架构,我还见过改行卖保险的。总之,年龄大了不想敲代码...【详细内容】
2021-10-27  Tags: 代码  点击:(29)  评论:(0)  加入收藏
我们来看看我们拨号键盘除了能打电话还能干什么iphone 的拨号键盘除了用来拨号,其实暗藏代码输入星井06井可以查询手机真实的IMEI码,这个码是独一无二的没有双胞胎 输入星3001...【详细内容】
2021-10-25  Tags: 代码  点击:(78)  评论:(0)  加入收藏
1. 字符串有整型的相互转换String a = String.valueOf(2); //integer to numeric stringint i = Integer.parseInt(a); //numeric string to an int 2. 向文件末尾添加内容B...【详细内容】
2021-10-13  Tags: 代码  点击:(91)  评论:(0)  加入收藏
▌简易百科推荐
JAVA开发工程师(北京)本科 3-5年经验 面议 (招1人)岗位职责:1.负责我行应用系统的设计,完成软件编码工作,负责管理代码设计规范等工作;2.根据应用需求分析说明书,评估需求研发的可行...【详细内容】
2021-12-27  just do丶IT公众号    Tags:国企   点击:(0)  评论:(0)  加入收藏
今天聊聊编程的本质。程序就是数据结构+控制+逻辑,程序员编程工作的本质是翻译,翻译机要来了,程序员怎么办?黑客帝国中的程序黑客帝国4就要上映了,不知道前三部你看懂了么?值得多...【详细内容】
2021-12-17  博士聊IT    Tags:程序员   点击:(8)  评论:(0)  加入收藏
梦醒之后,每个人对于这份职业的未来、互联网行业的未来,以及更重要的,自己的未来都有了更现实的判断 文 | 祝颖丽编辑 | 黄俊杰一个生于 1986 年的人,他所走过的前半生:从出生起,...【详细内容】
2021-12-03    财经杂志  Tags:程序员   点击:(15)  评论:(0)  加入收藏
前些天在头条看到一个八二年的哥们,述说自己找工作屡次被拒的问题,在网上引起了广泛的讨论,这件事给我留下了很深的印象,因为这哥们和我同是程序员,都人到中年,上有老下有小。唯一...【详细内容】
2021-12-01  云南贤哥在深圳    Tags:程序员   点击:(20)  评论:(0)  加入收藏
很多读者都问过一个问题:程序员如何实现高速成长?之前也写过相关的文章,强调的主要是夯实计算机体系基础知识。 再说另一个诀窍:多看经典开源项目,这些项目大多是众多顶尖程序员...【详细内容】
2021-11-30  findyi    Tags:程序员   点击:(14)  评论:(0)  加入收藏
近日,一位45岁的网民在中国政府网留言求职,引发关注。该网民自称是一名软件开发人员,今年45岁,精通各种技术体系,“而我辞职回家半年后再回来寻找工作机会的时候,却发现连个面试...【详细内容】
2021-11-17  郭主任    Tags:程序员   点击:(42)  评论:(0)  加入收藏
即使在安全技术取得进步之后,网络犯罪仍在不断增加。据统计,网络犯罪每分钟给企业造成约 290 万美元的损失。主要是因为新技术不断涌现,难以维护安全。随着网络威胁的增加,网络...【详细内容】
2021-11-04  章大千    Tags:编程语言   点击:(40)  评论:(0)  加入收藏
北漂小伙李强(化名),在北京互联网大厂工作7年,月薪3万,离职回老家开摄影店,亏了200万。李强出生于山西一座名不经传的小城市,互联网专业大学毕业的他,没有听父母的劝言回到家乡考公...【详细内容】
2021-10-29  霸王课  今日头条  Tags:程序员   点击:(51)  评论:(0)  加入收藏
程序员是青春饭,这在国内似乎是公认的。所以很多公司不愿招大龄程序员,很多程序员也“知趣”地及早转型。有的做管理,有的做架构,我还见过改行卖保险的。总之,年龄大了不想敲代码...【详细内容】
2021-10-27  编程的艺术    Tags:   点击:(29)  评论:(0)  加入收藏
软件工程专业有Web开发、移动终端开发、大数据开发、计算机系统工程师、视频开发工程师、计算机软件应用工程师等就业方向。第一,Web开发。Web开发包括前端开发和后端开发。...【详细内容】
2021-10-19  辰新   企鹅号  Tags:软件工程   点击:(79)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条