如果你热爱编码,就应该少写代码

“如果你喜欢一个人,就应该尽量少说那些甜言蜜语。”不知道大家是否听过某些恋爱专家的肺腑之言。对于程序员来说,如果你热爱编码,那么我也劝你:“能少写一行代码就尽量少写一行。”

可能有些同学觉得这话听起来有点玄乎:“代码写得少,不就意味着缺乏实战经验吗?那我何年何月才能进一线大厂,成为真正的大神呢?”

如果你要这么理解的话,我就必须要纠正你一下。我表达的意思是这样的,来通过两行简短的代码表情达意吧。

if (str == null || "".equals(str)) {}if (StringUtils.isEmpty()) {}

就上面这两行代码来说,我的第一选择是使用第二行代码来进行判空操作,因为它的代码量更少——简洁明了,也更不容易出错。

如果我们程序员没有这种(写更少代码的)追求的话,那我们的编程技艺就只会原地踏步,长此以往的后果就是各种避免重复造轮子的第三方类库就不会出现。

就判空操作来说,str == null || "".equals(str) 已经干得非常漂亮了(null 和空字符串都考虑在内了),但性能仍然有待优化,可以使用更高效的 str == null || str.length() == 0 来替代。为什么这么说呢?

因为 Sting 类的 equals() 方法本身是很沉重的,其源码如下所示。

public boolean equals(Object anObject) {    if (this == anObject) {        return true;    }    if (anObject instanceof String) {        String aString = (String)anObject;        if (!COMPACT_STRINGS || this.coder == aString.coder) {            return StringLatin1.equals(value, aString.value);        }    }    return false;}

str.length() == 0 则简单得多,无非就是两个数值“==”比较。孰优孰劣,高下立见。StringUtils.isEmpty() 的内部就恰好使用的是 str == null || str.length() == 0

对于某些程序员来说,承认这个事实是痛苦的,因为他们是那么的热爱原生。他们争辩说:“那我宁愿使用 str == null || str.length() == 0 也不使用第三方类库的 StringUtils.isEmpty(),因为写原生更直接、更纯粹。”

不,别这样,我耐着性子再劝一句,要理智啊。假如哪天需要把" "(n 个空格)这样的字符串也作为空字符串进行判断呢?难不成要在原生的判断条件中追加 n 个 || " ".equals(str)

还是追求简洁点好啊!因为我们可以把 StringUtils.isEmpty() 换成 StringUtils.isBlank(),该方法已经为我们考虑好了,来看一下源码。

public static boolean isBlank(final CharSequence cs) {    int strLen;    if (cs == null || (strLen = cs.length()) == 0) {        return true;    }    for (int i = 0; i < strLen; i++) {        if (Character.isWhitespace(cs.charAt(i)) == false) {            return false;        }    }    return true;}

很周全吧?

作为程序员,为我们编写的每一行代码负责任是理所应当的一件事

  • 代码简洁度;
  • 功能的完整度;
  • 执行速度;
  • 编码所花费的时间;
  • 健壮性;
  • 灵活性。

这 6 项指标都值得我们去考量,尽管它们之间有些是对立的,比如说花了一个月的时间实现了一个健壮性非常良好、执行速度也非常快的程序,那可能“编码所花费的时间”(一个月)就有点长了。那怎么样做是值得的呢?

答案只有一个:从简洁开始,再去达其他的标。

代码会随着时间的推移慢慢增加(新的需求、bug 修复),你写的代码越多,bug 藏身的地方就越多,代码编译的速度就会越慢,维护代码的压力也会随之增加。

这是不争的事实。

就好像我们程序员一样,岁月这把杀猪刀不仅会给我们理个发(减少一下发量),还会增加我们的赘肉,如果不坚持锻炼的话,新陈代谢的减缓就会让我们胖成球。

代码是我们程序员创造出来的,如果只在扩展功能的时候追加代码,不在重构的时候精简代码,那么堆叠如山的代码就会像苹果一样腐烂,一个传染俩。

当然了,代码并不是我们的敌人,真正的敌人是谁呢?你往镜子前面一站就恍然大悟了。真正的敌人是我们自己,如果你还热爱编码,就要时刻提醒自己,能少写代码就少写

记得伟大的文学家马克吐温曾说过这样一句话:

我没有时间写一封简短的信,所以我写了一封长的。

写代码和写文字在本质上是一种事情,把代码写得少一点远比写得多一点更不容易,它需要耗费更多的脑力才能完成。

Medium 上的一个作者 Elliot Chance 也曾表达过和我类似的观点,他说:“要分辨两个程序员的优劣,就是给他们一样的时间,越好的程序员写出来的代码越少(当然是可以运行的)。”

越多的代码并不一定代表着认真,有可能代表的是懒惰,懒得去思考,才会写出臃肿的代码。那怎样才能写出更少的代码呢?

  • 首先,要多思考,不要拿到需求就开始敲代码;
  • 其次,多积累经验,张三丰打架都是赤手空拳,武器招数都不要不要的,因为他真的是身经百战啊;
  • 最后,基础扎实,只有把编程语言的本质吃透,比如说上文中提到的 str.length() == 0"".equals(str),如果你没有研究过源码,你压根就不知道它们之间的性能优劣。

不过,有一点我需要提醒大家,假如你的公司的绩效考核是按照代码的数量来评定的,那就当我什么皮也没放过。或者,要不你换一家注重代码质量的公司?

好了各位读者朋友们,以上就是本文的全部内容了。能看到这里的都是最优秀的程序员,升职加薪就是你了??。如果觉得这篇文章有点用的话,请不要吝啬你们手中点赞的权力

原文地址:https://www.cnblogs.com/qing-gee/p/12210927.html

时间: 2024-10-08 08:34:35

如果你热爱编码,就应该少写代码的相关文章

思考-少写代码

聪明的程序员使用50%-70%的时间用来思考,尝试和权衡各种设计和实现,而用30% – 50%的时间是在忙碌着编码,调试和测试.聪明的老板也会让团队这样做.而傻逼的老板,苦逼的程序员会拿出来 在现在这个浮躁的时期,再加上敏捷咨询师们念的歪经,他们让人感觉上就像是软件产品是可以在很短的时间内高质量的完成的,这令那些管理者们很兴奋,就像巴甫洛夫的条件反射实验中的狗看到了肉就会流口水那样兴奋.他们使用TDD,快速迭代,不断重构,持续集成直至持续部署的方法在进行软件开发. 软件开发真是这样的吗?难道不需

3-3 多使用PHP自身能力=== 少写代码,多用php内置

优化点:少写代码,多用php自身能力 性能问题 代码冗长较多,可读性不佳,并且性能低 多使用内置常量 变量 函数

多些时间少写些代码

我在我的微博上说过这样一段话,我想在这里把我的这个观点阐述地更完整一些. @左耳朵耗子:聪明的程序员使用50%-70%的时间用来思考,尝试和权衡各种设计和实现,而用30% – 50%的时间是在忙碌着编码,调试和测试.聪明的老板也会让团队这样做.而傻逼的老板,苦逼的程序员会拿出来100%-150%的时间来忙着赶进度,返工,重构,fix 大量的bug… 所以, 越差的团队一般会越忙,而且还忙不完. 在现在这个浮躁的时期,再加上敏捷咨询师们念的歪经,他们让人感觉上就像是软件产品是可以在很短的时间内高质

多些时间能少写些代码

我在我的微博上说过这样一段话,我想在这里把我的这个观点阐述地更完整一些. 聪明的程序员使用50%-70%的时间用来思考,尝试和权衡各种设计和实现,而用30% – 50%的时间是在忙碌着编码,调试和测试.聪明的老板也会让团队这样做.而傻逼的老板,苦逼的程序员会拿出来100%-150%的时间来忙着赶进度,返工,重构,fix 大量的bug… 所以, 越差的团队一般会越忙,而且还忙不完. 在现在这个浮躁的时期,再加上敏捷咨询师们念的歪经,他们让人感觉上就像是软件产品是可以在很短的时间内高质量的完成的,这

javascript学习笔记-正则表达式-少写1000行代码的正则表达式

正则表达式的要点  :  查找   匹配   替换 程序员必知:让你少写1000行代码的20个正则表达式 一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑.熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升. 正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基本日期格式的Java代码: 下面是蓝鸥HTML5培训小编整理的,在前端开发中经常使用到的20个正则表达式. 1 . 校验密码强度 密码的强度必须是包含大小写字母和数字

多谢时间能少写些代码

在现在这个浮躁的时期,再加上敏捷咨询师们念的歪经,他们让人感觉上就像是软件产品是可以在很短的时间内高质量的完成的,这令那些管理者们很兴奋,就像巴甫洛夫的条件反射实验中的狗看到了肉就会流口水那样兴奋.他们使用TDD,快速迭代,不断重构,持续集成直至持续部署的方法在进行软件开发. 软件开发真是这样的吗?难道不需要花时间去思考吗?对此,有些观点在Todd的<"品质在于构建过程"吗?>以及<Bob大叔和Jim Coplien对TDD的论战>中谈到过了.我只想想表达下面的

[转帖]知道这20个正则表达式,能让你少写1,000行代码

知道这20个正则表达式,能让你少写1,000行代码 https://zhuanlan.zhihu.com/p/29163295 一直说要学习 正则 一直没学习.. 正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑.熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升. 正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基本日期格式的JavaScript代码: var reg = /^(\\d{1,4})(-|\\/

看数据结构写代码(32) 赫夫曼树编码以及译码

杂谈:最近有点慵懒,不好不好.好几天都没写代码,原本准备上星期完结 树 这一章节的.现在 又耽误了.哎.要抓紧时间啊. 下面直接上代码: 可以到我的网盘下载源代码,或者 直接拷贝下面的源代码 运行 网盘地址:点击打开链接 // HuffmanTree.cpp : 定义控制台应用程序的入口点. //哈弗曼编码,译码 #include "stdafx.h" #include <stdlib.h> #include <cstring> enum E_State { E

CSS 黑魔法小技巧,让你少写不必要的JS,代码更优雅

首页 登录注册 CSS 黑魔法小技巧,让你少写不必要的JS,代码更优雅 阅读 8113 收藏 927 2017-09-26 原文链接:github.com 腾讯云容器服务CSS,立即免费体验容器集群吧!cloud.tencent.com 之前不久,由于自己平时涉猎还算广泛,总结了一篇博客:这些JavaScript编程黑科技,装逼指南,高逼格代码,让你惊叹不已,没想到受到了大家的欢迎,有人希望能博主还能整理个 CSS 的一些黑魔法小技巧,无奈我 CSS 一直很渣,没什么干货,最近写了一个 Chro