【开发者成长】每个人都在编写草率代码

云栖号资讯:【点击查看更多行业资讯】
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!

所有开发人员都认为自己写的代码完全能让人看懂,然而,他们却无法解密彼此的代码(更不用说维护代码了)。

原因在于他们写的代码都是有效却草率的,看起来很干净,但实际上却很凌乱。草率代码是指就是那些可以正常运行,但因凌乱而不能很好地拓展或通用的代码。

计算机科学家与之不同——他们写的是无法正常运行的漂亮代码。

原因何在?以下的四大理由将为你揭秘。

 

image

四大理由

理由1:对于计算机科学家来说,编码是一项艺术。而对于其他人来说,编码是一种工具

计算机科学家编码是因为他们想编码,而其他人编码是因为他们想完成某件事。开发人员一般会根据自己的第一个想法来构建程序。之后,他们会以之为基础,直到最简化可实行产品出现,通常不会考虑其他方法。

而计算机科学家恰恰相反,他们会考虑实施的每一种选择,并权衡利弊。几周之后,他们会写出一段漂亮的代码,不过由于尚未确定输出格式,代码仍然无法完全正常运行。

开发人员使用简单的工具有组织地扩展代码,从而产生了大量草率代码;计算机科学家则会在一开始建立起一个结构,之后在结构中开展工作。

最有效的就是用有机方法避免编码器的阻碍并按时交付。但是,如果想要编写持久代码,则可能需要把结构放在首位。

理由2:开发人员写代码时不常考虑读者的感受

即使是在合作项目中,开发人员写代码时也往往只考虑到它的功能。实际上,代码也需要维护,不过他们经常会把这件事抛之脑后。

问题在于,这样的习惯会造成意想不到的后果。当三个月后,他们想给代码添加一个功能时,很可能会看不懂自己写的代码。这种情况经常出现,次数之多超乎想象!

其他开发人员按要求实施新功能时,则会更艰难。看懂别人写的代码可能需要几天或几周的时间,这取决于项目的大小。

理由3:即时奖励的谬论

被问题困扰了好几天,最后终于找到了解决方案,是不是感觉特别痛快?

这确实是激动人心的时刻。但问题在于,开发人员对快速修复的渴望往往会让他们忽略那些长期存在的问题。比如,他们可能解除了故障或添加了功能,但他们没有意识到代码结构已经过时了。

这意味着每添加一个新功能,他们都必须要开展更多的工作。相反,从长远来看,对程序进行一次重组会让功能的添加变得更容易。

宁愿快速修复而非解决根本问题的人不在少数。与长期的变化相比,人类的奖赏系统更容易受到短期修复的影响。但这样一来就会累积大量的技术负债。从长远来看,这会消耗人的很多精力。

理由4:风格也是一个因素

每个人的编码风格都不一样。有些人讨厌内嵌注释,有些人却很喜欢这么做。有些人在第一行代码上方添加函数注释,有些人却选择在下方添加。有些人喜欢单值判断,有些人却对此厌恶至极。

这就是为什么同一段代码对一个人来说仿佛洪水猛兽,而对另一个人来说却是小菜一碟。要是独立工作还好说,然而如今的很多软件都是通过合作构建的。因此,在项目的早期阶段确定好风格十分重要。

当然,确保所有开发人员遵守风格指南也是必须的。否则,最后产生的将是混乱代码,毕竟其中混杂着不同的约定。

干净的危害vs.凌乱的危害

一些开发人员声称自己一直在写干净代码的,他们要么是在撒谎,要么高估了自己。话虽如此,开发人员不想写过分干净代码也不是毫无理由的:

  • 有些开发人员整天都在清理代码,只是为了美观。如果是与其他人合作或者代码需要呈现,这当然很有用。但通常来说,完善代码与普通医疗保健提供的外科手术产生的效果一样——看起来不错,但没有解决深层次的问题。
  • 如果他的目标是从头开始编写非常干净的代码,那么他遭遇编码器阻碍的几率就会变大。为避免出现重大阻碍,最好从一开始就自然生成代码。初学者尤其适用。

 

image

但反过来讲,开发人员也并不想让代码过于混乱,这会让代码变得难以维护。缺少维护会导致代码腐烂,从长远来看,这样弊大于利,项目会被放弃。

因此,开发人员需要在立竿见影和可维护代码之间找到平衡。很多人都深陷混乱的困境,因此提高清洁度是必由之路。

五项技巧

养成一些良好的习惯,可能会对开发人员的清洁度和生产力大有益处。

 

image

技巧1:尽早测试,经常测试

有些开发人员对自己的技术很有信心,甚至到了不运行测试就构建整个项目的地步。但是,除非手头的任务完全微不足道的,否则会后悔的。

他们一开始编译或执行程序,屏幕上就会显示错误信息,情况可能还会更糟。几个月以后,用户发现程序无法正常运行,错误才被发现。

从事技术工作会获得如下经验:

“如果没有经过所有情况的测试,永远不要认为程序会正常运行。”

尽快构建可执行文件。只要有机会,就进行测试,一旦出现错误就可以立即进行修复。

技巧2:结构合理,格式随意

只要代码的基础结构良好,就可以进行快速修复。而现实是,开发人员常常面对的是结构凌乱或过时的代码。在这种情况下,最好花些时间重构代码。如果修复程式未正确注释或存在隐藏变量名,也没什么大不了。

但是,在错误代码中构建干净的功能完全是浪费时间和资源——开发人员可能必须要重写很多功能。

因此,保持清洁度和速度的折中方案就是保持基础结构的清洁和更新,在细节上尽可能让内容混乱。

技巧3:让代码保持干净状态

笔者称之为厕所法则。如果人们使用完的公共浴室(至少)像使用之前的一样干净,那这公共浴室的状态就堪称完美。从大多数公共厕所的状态来看,现实并非如此。维持厕所法则需要所有人遵守纪律——还需要一位优秀的管理者。

遵守这样的纪律是值得的,因为从长远来看获得的回报是巨大的。通过完成不可能的事情来实现不可能,这是天方夜谭——做出明智的决定,每天前进一一点点,不可能才会实现。

技巧4:为重构分配时间

每一次混乱都在产生技术负债。像金融一样,时间越长,产生的债务就越多。

对于普通开发人员来说,花上几天甚至几周时间清理代码听上去并不是那么美好。这就是为什么要养成每天偿还一点债务的习惯。

一开始可以每天抽出15%的时间进行重构,这是个不错的方法。笔者称之为时间规划,长此以往完善的代码数量将令人惊叹!

技巧5:要求审查

有时候,代码出现混乱是因为开发人员不知道该怎么完善。比如,某个代码可能使用了switch语句,但使用映射会容易得多。在这种情况下,高级开发人员的建议至关重要。

建立代码审查例程有助于创建反馈环路。这会帮助年轻开发人员改善学习曲线,形成健康的讨论文化。

例程是关键,这与厕所法则以及时间规划是一样的。初级开发人员应养成要求审查的习惯,而高级开发人员也应提供建议。理想情况下,审查时间应该是开发团队核心过程的一部分,每次讨论也应总结关键建议。

平衡结构与混乱

过多的清理会浪费时间和资源,编写草率代码比受到编码器阻碍而完全无法交付要好得多。但同时,草率代码不灵活且难以维护。

这五大技巧能帮助你有效清理代码同时节省时间,在混乱和结构之间找到平衡点。

快去实践一下吧!

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/zhibo

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-03-31
本文作者:读芯术
本文来自:“今日头条”,了解相关信息可以关注“今日头条”

如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:yqgroup@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/516529.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

疫情与资本寒冬双重危机下,智领云为何能拿到数千万融资?

经济下行,资本收缩,加之中美贸易摩擦,2019年可谓“难熬”。转眼2020年,资本寒冬未消退,疫情再来雪上加霜,募资搁置、投资放缓、退出暂停,本已残酷的一级市场寒冬再次被拉长。据清科研究中心数据…

云原生基础架构的最佳状态,就是没有架构?

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 云原生基础架构是通向云原生时代的基石,对于很多架构师来说,上云之后,架构为什么成为了云…

美军开发远程人脸识别系统,实现1公里内目标识别

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 编者按:本文来自微信公众号“学术头条”(ID:SciTouTiao),作者:小婷…

“蚂蚁漫步”背后的定位原理思考

作者 | 陆春晖责编 | 李雪敬头图 | CSDN下载自视觉中国蚂蚁的里程表最近看了一本很有意思的书,克利福德皮寇弗所著的《数学之书》。其中一篇《蚂蚁的里程表》,讲述蚂蚁惊人的定位导航能力,对机器人及无人车的设计者们有强烈的启示作用。笔者对…

10个 Python 工程师,9个不合格!!

毋庸置疑,Python越来越被认可为程序员新时代的风口语言。 无论是刚入门的程序员,还是年薪百万的 BATJ 的大牛都无可否认:Python的应用能力是成为一名码农大神的必要项。 所以,很多程序员把Python当做第一语言来学习。 但对于Pytho…

漫谈新零售:疫情对新零售的十大影响

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 席卷全球的新冠疫情,骤然影响了全人类的生活和工作方式。作为一起震动全球的黑天鹅事件,它对整个世界…

SpringBoot2.6.1 elasticsearch7.1.5 Vue

文章目录1. 版本兼容2. 导入依赖3. 配置4. 主页面5. 控制层6. 逻辑处理层7. pojo8. 工具类9. 常量类10. 前端页面项目开源地址1. 版本兼容 框架/组件版本SpringBoot2.6.1elasticsearch7.1.5 2. 导入依赖 <parent><groupId>org.springframework.boot</groupId&…

德勤发布2020技术趋势报告,五个新趋势可引发颠覆性变革

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; “2020 年的趋势将颠覆整个行业&#xff0c;并在未来十年重新定义业务&#xff0c;即使数字创新已成为各种规模企业的常规行为…

ZooKeeper的十二连问,你顶得了嘛?

来源 | 捡田螺的小男孩【前言】一线大厂ZooKeeper的十二连问&#xff0c;你顶得了嘛&#xff1f;本文已经收录到github&#xff1a;https://github.com/whx123/JavaHome什么是Zookeeper面试官&#xff1a;工作中使用过Zookeeper嘛&#xff1f;你知道它是什么&#xff0c;有什么…

【机器学习】脑机接口利器:错误率仅3%

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 编者按&#xff1a;本文来自微信公众号“AI科技评论”&#xff08;ID:aitechtalk&#xff09;&#xff0c;36氪经授权发布。 …

【人工智能】AI如何把招人效率提高四成

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 近日&#xff0c;受新冠肺炎病毒影响&#xff0c;美国劳工部报告显示&#xff0c;将近 330 万人申请了失业保险&#xff0c;这…

中国移动云智融合峰会 与您相约揽胜九天

当前&#xff0c;5G、AI和云计算等技术加速发展&#xff0c;成为建设智慧社会、网络强国、数字中国的根基。中国移动大力推动人工智能建设和运营&#xff0c;实现规模化AI赋能。在这一背景下中国移动融智战略布局将会有何不同?人工智能时代&#xff0c;云融产业如何打造智能生…

【安全】一名安全数据科学家的日常生活

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 导读&#xff1a;目前网络安全领域的工作岗位远远多于合格的人选&#xff0c;所以好消息是网络安全还是一个适合涉足的领域。…

docker rocketmq4.7.0

创建数据挂载目录 mkdir -p /app/rocketmq/rmqserver01/logs mkdir -p /app/rocketmq/rmqserver01/store mkdir -p /app/rocketmq/rmqbroker01/logs mkdir -p /app/rocketmq/rmqbroker01/store mkdir -p /app/rocketmq/rmqbroker01/conf编辑配置文件 vim /app/rocketmq/rmqbr…

【远程办公】5分钟一拍照、10分钟一截屏 ?

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 随着新冠病毒疫情的爆发&#xff0c;选择远程办公的企业越来越多&#xff0c;雇主们也开始大量采购监控软件以保证员工们没有…

明源云:与阿里云生态共同成长

公司介绍 我们公司&#xff0c;即明源云&#xff0c;是国内领先的地产生态链“互联网”服务商&#xff0c;致力于让地产生态链更智慧。秉承产品领先战略和让用户成功的经营理念&#xff0c;我们成功为全国超过5000家房地产企业提供“互联网”解决方案和管理系统&#xff0c;帮…

Docker RocketMQ 集群

创建挂载目录 mkdir -p /app/rocketmq/logs/nameserver-a mkdir -p /app/rocketmq/logs/nameserver-b mkdir -p /app/rocketmq/store/nameserver-a mkdir -p /app/rocketmq/store/nameserver-b mkdir -p /app/rocketmq/logs/broker-a mkdir -p /app/rocketmq/logs/broker-b …

佰腾科技:专利大数据的云上裂变之路

公司简介 我们江苏佰腾科技有限公司是一家从事专利信息应用、专利咨询服务的企业&#xff0c;是国内知名的知识产权服务公司&#xff0c;以佰腾网和专利巴巴为网络平台&#xff0c;面向国内外用户提供知识产权、科技创新整体解决方案。2014年起&#xff0c;我们公司积极推进互…

27年前研发出国内首台小型机的浪潮,如何怎么样了?

IDC数据显示&#xff0c;2019年浪潮商用机器有限公司在面向关键计算的RISC/EPIC服务器领域&#xff0c;市场份额达到73.5%&#xff0c;保持市场第一的领导地位。 浪潮商用机器有限公司在成立不到一年时就推出了基于POWER处理器的K1Power产品线&#xff0c;在成立仅两年时便取…