专栏首页Java技术栈如何写出简洁、高效的代码?

如何写出简洁、高效的代码?

本文将分享如何将极简主义概念应用到代码中,使其更简洁、更高效。

以下为译文:

大约三年前,我在一家软件开发公司上班。我在那里工作了5年,但多方面原因使得这份工作变得越来越没有成就感——我想辞职去尝试自由职业,但又无从下手。

我开始在网上寻求帮助,有人推荐我去看纪录片《极简主义:记录生命中的重要事物》。

但是,什么是极简主义?

用极简主义者自己的话来说:

极简主义是一种生活方式,它帮助人们辨别给生活增添价值的事物。通过清理生活中的杂物,我们可以为生活中最重要的事物腾出空间:健康、人际关系、激情、成长和贡献。

在了解了极简主义之后,我发现它不仅仅是一种控制欲望来节省开支的生活方式。它教会我们专注于真正重要的事物以生活得更有意义。它教会我们不要在意别人的看法,不要为了满足他人的“期望”而给自己带来压力。但最重要的是,它鼓励你在将事物融入生活之前,考虑它们的价值。

我相信,极简主义也帮助我提高了效率并成为了一个更好的开发者:只编写和提交有价值的代码,使其更干净、更易于阅读和维护,并帮助我更好地利用时间。

我是如何在代码中应用极简主义的?以下是一些例子。

1、避免杂乱的依赖关系

换言之:npm install前请三思。

一些好用的库/模块/包可以解决很多问题,并节省我们的时间。本身依赖某些库是没问题的,但如果我们整个项目只使用它一两次,我们还要引用这个库吗?

我们添加到项目中的每个新依赖项,都会产生以下效果:

  • 增加项目的规模;
  • 你(和你的团队)必须学习如何正确使用新的依赖项;
  • 可能需要定期更新(例如,为了解决安全问题)。这也意味着,必须在每次更新时对项目进行全面测试,甚至开展一些重构工作。

此外,你应该花一些时间来研究软件包,以确保它是可靠的、安全的、最新的等等。

我并不是说要不惜一切代价避免使用外部库,但是在使用前请一定要三思。

2、注释代码是多余的

你正在更改某一特定的代码块,因此你注释旧代码并编写入新的代码。代码跑起来测试一下,工作正常,所以你提交......不!

这是我经常看到的情况,我想这是因为担心不能“恢复”。你不应该对你提交和推送的代码没信心,如果实现了目的,就意味着对改动点已经开展了足够多的测试工作,那为什么还要保留旧代码呢?即使真的需要恢复,你也可以查看Git历史纪录来找到它。

注释代码是多余的:它不影响软件功能,还会分散阅读代码的人的注意力,而且它并不美观。删掉它!

3、少即是多:不要写备用代码

有时我们会犯超前的错误,编写我们认为将来可能有用的代码。与注释代码一样,我们做了无用功,以换取它最终变得有价值的可能性。

例如,你正在开发一个网站的登录功能。编写一个名为UserService的类,此类包含了一个名为Login的方法。

然后你心想:“只要我引用了这个类,我就可以添加一个按名称搜索用户的方法,这可能在下次输出会用到。这样有什么问题呢?

  • 也许“搜索用户”功能永远不会用到,所以你只是在浪费时间。
  • 你正在向提交/分支/PR添加不相关的代码。这给代码审阅人员或PR审阅人员增添了理解难度。
  • 这段代码需要进行测试。你会花费更多的时间来添加和执行所需的测试,又或者是不测试代码?这两种选择听起来都很糟糕。

因此,如果不添加备用代码,那么你会更有效地利用时间(以及团队的时间)。

4、质疑你的想法

极简主义是对事物的质疑。不要经验主义,不要“我们一直都是这样做的”。质疑你的想法将帮助你更好地理解问题,并可能找到更好的解决方案,甚至是以前旧方法中出现的问题。

当然,有些时候你要质疑一些事情,有些时候你要放手让事情快速向前发展。不要陷入分析卡顿,试图质疑每一件小事。

5、充分利用现有资源

也就是我们常说的可复用性。在软件开发中,代码是可复用的:它节省时间,使代码更整洁,更容易维护等。

有时又很容易重新开始写一个功能……尝试新的代码,甚至尝试优化已经完成的工作。在某些情况下这样是可行的,但是要意识到可复用性的优点和编写新代码的成本:可能出现的bug、花费更多时间构建、记录和测试特性、可能需要向团队介绍新的解决方案等。

6、避免新奇事物综合症

有一些特性构建起来更有趣,但是我们需要关注什么才是重要的——我们的用户最需要什么?

优先考虑的应该是用户的需求,而不管某个特性有多有趣。注意自己的偏见,尽量不要受它的影响。

推荐资料

如果你对极简主义感兴趣,这里有一些资源供参考:

  • 极简主义者在Netflix上制作了一部非常酷的纪录片,叫做《极简主义:记录生命中的重要事物》;
  • 推荐马特·达维拉在YouTube上谈论的极简主义和自我完善;
  • 我最近还听了保罗•贾维斯(Paul Jarvis)的一集播客,我强烈推荐这一集:够了(如果你对创业感兴趣,可以查看所有的播客)。

原文:https://dev.to/paulasantamaria/6-ways-minimalism-can-help-you-write-clean-code-45kp

翻译:CSDN,译者:谭开朗,责编:郭芮

本文分享自微信公众号 - Java技术栈(javastack),作者:Paula Santamaria

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 告别狗屎代码,请记住这 11 条编码秘诀!

    我已经写了20年代码了,在此期间曾与17个团队共事过,使用不同的语言做过数百个项目。

    Java技术栈
  • 代码不规范,同事两行泪,撸码七宗罪!

    编程江湖中一直盛传着一个段子,那就是要问程序员最讨厌哪 4 件事?那必须是:写注释、写文档、别人不写注释、别人不写文档。

    Java技术栈
  • 扔掉狗屎代码,永不言晚!

    https://dzone.com/articles/its-not-too-late

    Java技术栈
  • 这5个编程名言还请您收好

    三月份的开篇翻译,把我自己给搞的不知所措,一看名字的时候,感觉对编程这方面挺有帮助的,5个著名的编程名言,以及解释,吸引了我的兴趣。

    程序员小跃
  • 每个程序员都应该了解的十句话

    我们可以因为掌握了最新的JavaScript框架Ahem、Angular的IoC容器技术或者某些编程语言甚至操作系统而欢欣雀跃,但是这些东西并不是作为程序员的我...

    三哥
  • 新手程序员如何写出好的代码

    我之前的博客文章在推特上火了。这篇文章指出了一个问题——始终遵守某些规则实际上并不能帮助人们更好地编写代码。

    程序你好
  • 每一个程序员都应当了解的11句话

    每一个程序员都应当了解的11句话   1.技术只是解决问题的选择,而不是解决问题的根本   我们可以因为掌握了最新的JavaScript框架ahem、Angul...

    用户1289394
  • DL时代的代码补全利器,北大出品,效果远超语言模型

    在本文中,机器之心采访了项目总负责人北京大学计算机科学技术系副教授李戈,请他为读者朋友解读自动代码补全背后的技术,以及 aiXcoder 背后的技术特性和优势。

    用户2769421
  • DL时代的代码补全利器,北大出品,效果远超语言模型

    在本文中,机器之心采访了项目总负责人北京大学计算机科学技术系副教授李戈,请他为读者朋友解读自动代码补全背后的技术,以及 aiXcoder 背后的技术特性和优势。

    机器之心
  • 怎样编写高质量的Java代码

    精讲java

扫码关注云+社区

领取腾讯云代金券