于是,代码变成了这样:
// 默认狗名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,再被迫修改,心态会越来越差 。
而悲观编程时,我们是自己主动找问题,主动去优化代码 。当你通过思考、搜索和实践,将原本很复杂的代码化繁为简后,你会惊喜地发现:我去,原来代码还可以这样写!牛逼牛逼!

文章插图
然后,你就会收获成就感,继续坚持这种习惯,不断进步 。
这让我不禁想起了拼多多,早期没有给用户很高的预期,让他们觉得这是个多牛逼的产品 。而是主动降低用户的预期,让大家都觉得这是个土味儿产品,后来再一次次地超出预期,最终走向成功 。

文章插图
找不到问题?看到这里,大家应该理解我写代码时的倔强了 。但一定会有同学表示,我没有这种敏锐的直觉,看不出自己代码中的问题咋办呢?
我自己有一些经验方法,大家可以尝试一下:
- 当你觉得有段代码写起来很麻烦时,多半有问题,不妨去搜索下有没有现成的组件,或者别人是怎么实现的 。
- 当你重复写某段代码时,一定有问题,不妨把它抽象成函数或组件、或者用设计模式来优化 。
- 当某段代码中写了大量的 If Else 时,一定有问题,试着重新梳理逻辑,减少条件和分支 。
- 多关注开发工具的报黄和报红提示,通常能得到很多好的优化建议,尽早发现问题 。

文章插图
再给大家一道练习题,上面举的栗子是前端的,这次就举个 Java 的吧 。
目标是获得所有狗的名字列表,老弟小阿巴写的代码如下:
推荐阅读
- 小时代电视剧角色介绍
- 发型|爱美女士都在剪的发型,优雅时尚还显瘦,超级有魅力
- 小时代小说作者简介
- 小时代小说中的经典语句
- 赵武灵王为什么拥立秦昭襄王,秦昭襄王赵武灵王两位英雄出现在同一时代
- 如果刘备接受了刘表的荆州,刘表在荆州时的兵力
- 孙权做过什么著名的事,孙权小时候这么聪明长大后平庸
- 瓦芫怎么读,荼蘼怎么读
- 固伦和孝公主出生时乾隆多大,固伦温宪公主与雍正关系如何
- 在春秋时期管仲的著作中就有,管仲为什么被称为千古一相
