本文将分享如何将极简主义概念应用到代码中,使其更简洁、更高效。
作者 | Paula Santamaria
译者 | 谭开朗,责编 | 郭芮
出品 | CSDN(ID:CSDNnews)
以下为译文:
大约三年前,我在一家软件开发公司上班。我在那里工作了5年,但多方面原因使得这份工作变得越来越没有成就感——我想辞职去尝试自由职业,但又无从下手。
我开始在网上寻求帮助,有人推荐我去看纪录片《极简主义:记录生命中的重要事物》。
但是,什么是极简主义?
用极简主义者自己的话来说:
极简主义是一种生活方式,它帮助人们辨别给生活增添价值的事物。通过清理生活中的杂物,我们可以为生活中最重要的事物腾出空间:健康、人际关系、激情、成长和贡献。
在了解了极简主义之后,我发现它不仅仅是一种控制欲望来节省开支的生活方式。它教会我们专注于真正重要的事物以生活得更有意义。它教会我们不要在意别人的看法,不要为了满足他人的“期望”而给自己带来压力。但最重要的是,它鼓励你在将事物融入生活之前,考虑它们的价值。
我相信,极简主义也帮助我提高了效率并成为了一个更好的开发者:只编写和提交有价值的代码,使其更干净、更易于阅读和维护,并帮助我更好地利用时间。
我是如何在代码中应用极简主义的?以下是一些例子。
避免杂乱的依赖关系
换言之:npm install前请三思。
一些好用的库/模块/包可以解决很多问题,并节省我们的时间。本身依赖某些库是没问题的,但如果我们整个项目只使用它一两次,我们还要引用这个库吗?
我们添加到项目中的每个新依赖项,都会产生以下效果:
  • 增加项目的规模;

  • 你(和你的团队)必须学习如何正确使用新的依赖项;

  • 可能需要定期更新(例如,为了解决安全问题)。这也意味着,必须在每次更新时对项目进行全面测试,甚至开展一些重构工作。

此外,你应该花一些时间来研究软件包,以确保它是可靠的、安全的、最新的等等。
我并不是说要不惜一切代价避免使用外部库,但是在使用前请一定要三思。
注释代码是多余的
你正在更改某一特定的代码块,因此你注释旧代码并编写入新的代码。代码跑起来测试一下,工作正常,所以你提交......不!
这是我经常看到的情况,我想这是因为担心不能“恢复”。你不应该对你提交和推送的代码没信心,如果实现了目的,就意味着对改动点已经开展了足够多的测试工作,那为什么还要保留旧代码呢?即使真的需要恢复,你也可以查看Git历史纪录来找到它。
注释代码是多余的:它不影响软件功能,还会分散阅读代码的人的注意力,而且它并不美观。删掉它!
少即是多:不要写备用代码
有时我们会犯超前的错误,编写我们认为将来可能有用的代码。与注释代码一样,我们做了无用功,以换取它最终变得有价值的可能性。
例如,你正在开发一个网站的登录功能。编写一个名为UserService的类,此类包含了一个名为Login的方法。
然后你心想:“只要我引用了这个类,我就可以添加一个按名称搜索用户的方法,这可能在下次输出会用到。这样有什么问题呢?
  • 也许“搜索用户”功能永远不会用到,所以你只是在浪费时间。

  • 你正在向提交/分支/PR添加不相关的代码。这给代码审阅人员或PR审阅人员增添了理解难度。

  • 这段代码需要进行测试。你会花费更多的时间来添加和执行所需的测试,又或者是不测试代码?这两种选择听起来都很糟糕。

因此,如果不添加备用代码,那么你会更有效地利用时间(以及团队的时间)。
质疑你的想法
极简主义是对事物的质疑。不要经验主义,不要“我们一直都是这样做的”。质疑你的想法将帮助你更好地理解问题,并可能找到更好的解决方案,甚至是以前旧方法中出现的问题。
当然,有些时候你要质疑一些事情,有些时候你要放手让事情快速向前发展。不要陷入分析卡顿,试图质疑每一件小事。
充分利用现有资源
也就是我们常说的可复用性。在软件开发中,代码是可复用的:它节省时间,使代码更整洁,更容易维护等。
有时又很容易重新开始写一个功能……尝试新的代码,甚至尝试优化已经完成的工作。在某些情况下这样是可行的,但是要意识到可复用性的优点和编写新代码的成本:可能出现的bug、花费更多时间构建、记录和测试特性、可能需要向团队介绍新的解决方案等。
避免新奇事物综合症
有一些特性构建起来更有趣,但是我们需要关注什么才是重要的——我们的用户最需要什么?
优先考虑的应该是用户的需求,而不管某个特性有多有趣。注意自己的偏见,尽量不要受它的影响。
推荐资料
如果你对极简主义感兴趣,这里有一些资源供参考:
  • 极简主义者在Netflix上制作了一部非常酷的纪录片,叫做《极简主义:记录生命中的重要事物》;

  • 推荐马特·达维拉在YouTube上谈论的极简主义和自我完善;

  • 我最近还听了保罗•贾维斯(Paul Jarvis)的一集播客,我强烈推荐这一集:够了(如果你对创业感兴趣,可以查看所有的播客)。

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

本文为 CSDN 翻译,转载请注明来源出处。

【END】

Python学习线路高凊图,值得一看!

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

 热 文 推 荐 

点击阅读原文,即刻阅读《程序员大本营》最新期刊。

你点的每个“在看”,我都认真当成了喜欢

为什么要追求“极简”代码?相关推荐

  1. 30个Python极简代码

    Python 是机器学习最广泛采用的编程语言,它最重要的优势在于编程的易用性.如果读者对基本的 Python 语法已经有一些了解,那么这篇文章可能会给你一些启发.作者简单概览了 30 段代码,它们都是 ...

  2. python实现杨辉三角思路_Python极简代码实现杨辉三角示例代码

    Python极简代码实现杨辉三角示例代码 杨辉三角,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列. 把每一行看做一个list,写一个generator,不断输出下一行的list ...

  3. PHP 八羊闪电本地相册图片查看器V1 PHP极简代码直接查看本地文件夹图片 源码下载!

    该源码,直接读取本地IMGAGES文件夹的图片,直接显示在相册,点击放大查看,非常方便,非常适合二次开发,但是不适合小白.没有做UI和设计,比较简陋,所以仅仅售价10元钱,想要的就拿去,不想要的就别拍 ...

  4. LeetCode 1700. 无法吃午餐的学生数量:真假模拟(极简代码) + 奇技淫巧

    [LetMeFly]1700.无法吃午餐的学生数量:真假模拟(极简代码) + 奇技淫巧 力扣题目链接:https://leetcode.cn/problems/number-of-students-u ...

  5. 追求极简:Docker镜像构建演化史

    // Dockerfile.target.alpine 自从2013年dotCloud公司(现已改名为Docker Inc)发布Docker容器技术以来,到目前为止已经有五年多的时间了.这期间Dock ...

  6. 30个Python常用极简代码,拿走就用

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨Fatos Morina 来源丨Python 技术 编辑丨极市 ...

  7. python1000个常用代码-30个Python常用极简代码,拿走就用

    学 Python 怎样才最快,当然是实战各种小项目,只有自己去想与写,才记得住规则.本文是 30 个极简任务,初学者可以尝试着自己实现:本文同样也是 30 段代码,Python 开发者也可以看看是不是 ...

  8. 零基础python必背代码-30个Python常用极简代码,拿走就用

    学 Python 怎样才最快,当然是实战各种小项目,只有自己去想与写,才记得住规则.本文是 30 个极简任务,初学者可以尝试着自己实现:本文同样也是 30 段代码,Python 开发者也可以看看是不是 ...

  9. 30个Python常用极简代码

    学 Python 怎样才最快,当然是实战各种小项目,只有自己去想与写,才记得住规则.本文是 30 个极简任务,初学者可以尝试着自己实现:本文同样也是 30 段代码,Python 开发者也可以看看是不是 ...

最新文章

  1. 朋友来网易面试,挂了~
  2. 关于hadoop与jstl冲突的jar包
  3. transfer function
  4. jquery中ajax请求后台数据成功后既不执行success也不执行error解决方法
  5. c语言输入数字变成星期几,C语言程序设计: 输入年月日 然后输出是星期几
  6. npm install 安装软件,出现 operation not permitted, mkdir 'C:\Program Files\nodejs\node_cache'...
  7. 有人说华为最大的对手是5年后的小米,你怎么看?
  8. 2021水电消纳交易电量增长超150% 价格已提高16%
  9. Java并发编程之CAS和AQS
  10. cocos2d-x(概括)
  11. 声明与所在行数不兼容_深度理解:Windows DLL 二进制兼容性探究
  12. 《团队-团队编程项目作业名称-最终程序》
  13. 计算机键盘上范的怎么点击,微信怎么用键盘最小化 电脑最小化键盘怎么按
  14. 内网穿透软件对比——cpolar : 网云穿(下)
  15. 鸟枪换炮,利用python3对球员做大数据降维(因子分析得分),为C罗找到合格僚机
  16. ftp下载工具绿色版,网络上难找的绿色版ftp下载工具
  17. 微信小程序使用第三方插件
  18. Android+Sqlite 实现古诗阅读应用(一)
  19. 2020年非上海生源应届普通高校毕业生落户材料办理流程及注意事项
  20. 做网站域名_网站域名

热门文章

  1. C语言显示系统时间的几个办法
  2. 简单理解梯度消失与梯度爆炸
  3. can接收进入两次中断_STM32的CAN2口无法进入接收中断
  4. leetcode python3 简单题83. Remove Duplicates from Sorted List
  5. 解决下载GitHub项目速度慢的问题(2019.1.21亲测有效)
  6. mysql java safe model_被 MySQL sql_mode 深深伤害( 中 )
  7. 安川机器人焊枪切换设定方法_【分享】焊接机器人的性能要求与系统构成
  8. 【机器学习】Andrew Ng——05Octave
  9. 手机访问www如何自动跳转到m js代码实现
  10. Cordova用插件时注意事项,不然,插件调用不到!