全文共1500字,预计学习时长5分钟

来源:Pexels

开始编程时遇到的第一个挑战是编写功能代码。但成为开发者后,编程技能也会随之增长。你的代码应该从普通的功能代码发展为简洁、高效、可理解且可维护的代码。

这才是开发人员面临的真正挑战。

本文将会介绍助你实现超级代码状态的5个原则。

1.代码一目了然

程序的大小增加时,代码的复杂性也会随之增加。代码也会变得很难调试,因为调试复杂的代码是一项可怕的任务。没有人喜欢维护复杂的代码。这个原则指出应该始终保持代码的简单性。如果代码复杂,请努力将其分解成更小、更易维护的代码。

编写简洁的代码比编写复杂的BS代码更困难。作为开发人员,随着技能不断成熟,你的代码就应该越干净、越有意义。

2.你并不需要它

来源:Pexels

有时应当未雨绸缪,但不是在编程方面。人们倾向于编写将来可能需要但现在还不需要的代码。这些代码不必要地增加了程序的大小,因为编写的代码从来没有实现过。更重要的是,大多数程序员将来都不会使用这些代码。程序员的这种习惯会使代码不必要地膨胀。

这一原则规定在必要时才实施。这是每个开发人员都应该遵循的一条建议。

3.不要重复

这一原则对于编写简单且易于修改的代码至关重要。重复的代码是程序员常犯的错误。这个原则指出,一段代码应该在源代码中的一个地方实现。如果注意到同样的代码块重复出现,说明违背了这个原则。

这一概念的反义词为WET代码:所有内容都重复一遍

可以创建一个公共函数或将代码抽象化,以避免代码中的任何重复。

4.关注点分离(SoC)

关注点分离原则:管好自己的事——就是字面意思。这个原则建议将复杂的代码划分为不同的部分或域。每个部分相互独立,因此每个部分可以独立处理。而且,维护、更新和重用代码也更加容易。

SoC一个很好的例子就是MVC架构。该架构将程序分成三个区域:数据(模型)、逻辑(控制器)和最终用户看到的内容(视图)。MVC在现代框架中大量运用。

图片来源:Wikimedia

5.避免过早优化

我们都希望优化自己的代码。但是该原则指出不应该在开发的早期阶段优化算法。

此原理与YAGNI原理非常相似。不同之处在于,YAGNI原则谈到了实现不必要函数的趋势,而该原则谈到了在必要之前加快算法速度的趋势。

过早优化的问题在于,直至出现问题之前,你永远无法真正知道程序的瓶颈在哪里。当然可以猜测,有时猜测甚至可能是对的。但是更常见的情况是,你会浪费宝贵的时间来尝试加速一个并不比预期慢的或者不像期望的那样经常被调用的函数。

结语

来源:Pexels

“编写代码的时候,永远要把维护代码的人当成一个知道你住在哪里的暴力精神病患者。”——马丁·戈尔丁

成为开发人员后,你会意识到项目的成功在很大程度上取决于你的团队。上面的原则可以帮助你编写可维护的代码——不仅是你自己,将来任何人都可以维护这些代码。毕竟,团结就是力量。

希望本文能让你有所收获。你有没有见过糟糕的代码?请在评论中告诉我们。

编程快乐!

推荐阅读专题

留言点赞发个朋友圈

我们一起分享AI学习与发展的干货

编译组:蒋馨怡、胡昕彤

相关链接:

https://medium.com/better-programming/kiss-dry-and-code-principles-every-developer-should-follow-b77d89f51d74

如转载,请后台留言,遵守转载规范

推荐文章阅读

ACL2018论文集50篇解读

EMNLP2017论文集28篇论文解读

2018年AI三大顶会中国学术成果全链接

ACL2017论文集:34篇解读干货全在这里

10篇AAAI2017经典论文回顾

长按识别二维码可添加关注

读芯君爱你

开发者必看!KISS、DRY和需要遵守的编码原则相关推荐

  1. 3月18日云栖精选夜读 | 开发者必看!探秘阿里云Hi购季开发者分会场:海量学习资源0元起!...

    [点击订阅云栖夜读周刊] 开发者分会场致力于帮助开发者学习了解阿里云最新技术,为开发者设计全方位的技术成长与进阶之路. 热点热议 开发者必看!探秘阿里云Hi购季开发者分会场:海量学习资源0元起! 作者 ...

  2. 3月18日云栖精选夜读 | 开发者必看!探秘阿里云Hi购季开发者分会场:海量学习资源0元起!... 1

    [点击订阅云栖夜读周刊] 开发者分会场致力于帮助开发者学习了解阿里云最新技术,为开发者设计全方位的技术成长与进阶之路. 热点热议 开发者必看!探秘阿里云Hi购季开发者分会场:海量学习资源0元起! 作者 ...

  3. 8月22日云栖精选夜读 | Java开发者必看!机器学习开发库精选!

    本文将介绍一些目前流行的.强大的基于Java的机器学习库. 热点热议 Java开发者必看!机器学习开发库精选! 作者:[方向] 学界 | 不!机器学习才不只是统计学的美化! 作者:技术小能手  发表在 ...

  4. java面试题大合集(开发者必看)

    ###前言 本文来自百度网络的一篇文章,由于没有答案,现在整理了一些比较好的回答和好的博客,可以自己扩展思路,如果大家有一下面试题的更好的答案,欢迎在评论区留言.以上全部来自网络!此外,我的微信公众号 ...

  5. java面试题大合集(开发者必看二)

    前言 本文来自百度网络的一篇文章,由于没有答案,现在整理了一些比较好的回答和好的博客,可以自己扩展思路,如果大家有一下面试题的更好的答案,欢迎在评论区留言.以上全部来自网络!此外,我的微信公众号将每日 ...

  6. 开发者必看!Windows Server 2012全攻略

    转载自品略网:http://www.pinlue.com/article/2020/03/0904/2410000394727.html 品牌:微软操作系统1Windows Server 2012概论 ...

  7. 开发者必看:iOS应用审核的通关秘籍

    磨刀不误砍柴工.作为手机应用开发者,你需要向应用商店提交应用审核,迅速通过审核可以让你抢占先机.对苹果iOS应用开发者来说尤其如此.苹果应用商店的审核近乎吹毛求疵,下面这些清单可以让你知道苹果会在哪些 ...

  8. 盘点iOS开发者必看的105个全球最佳博客

    如果你正在寻找见解深刻,并富有教育意义的iOS开发博客,那就找对地方了.下面列出了质量最好且最为活跃的105个线上博客.如你所知,互联网上高质量的iOS博客并不缺乏,但我决定再过滤一下,去芜存菁,找出 ...

  9. 【开发者必看】【Health kit】运动健康服务典型问题合集

    1.如何判断系统是否支持 hms服务? 答:HMS 提供了方法用于判断系统是否支持hms方法,HuaweiApiAvailability.getInstance().isHuaweiMobileSer ...

最新文章

  1. bzoj 2870 最长道路tree——边分治
  2. ajax post forbidden,POST方法总是返回403 Forbidden
  3. CentOS 7.6 下安装 MySQL8.0.13
  4. ClickOnce 部署概述
  5. C++中局部变量可以和全局变量重名吗?
  6. android应用开发全程实录-实现甩动拨打和挂断电话
  7. erlang开发环境配置
  8. POJ 1064 Cable master (二分答案)
  9. Linux 命令(92)—— locate 命令
  10. mitmproxy安装证书_在 macOS 上使用 mitmproxy 透明代理进行网络抓包
  11. 25款有用的桌面版博客编辑器
  12. account.php,account.php
  13. Spring中的工厂模式
  14. 14、CSS渲染:CSS是如何绘制颜色的?
  15. 亚马逊中国发布2018图书排行榜
  16. Hive获取周月时间
  17. 【JAVA 学习笔记】HashMap 探究
  18. fgets 函数用法
  19. 知乎上对 国内机器视觉行业的发展的 讨论-经典
  20. 欢迎随时回家——python制作一个火车票抢票版本(附完整代码,仅供学习参考)

热门文章

  1. 题海精华——算法题精选
  2. 冬战柴达木的压裂“将士”
  3. orangepizero2(全志H616)
  4. 最全总结 | Android 系统抓包喂饭教程!
  5. 永安在线API安全管控平台正式发布,以情报建立API安全基线
  6. 微型计算机原理第三版考试,微机原理考试试题及答案分析
  7. zabbix4.0安装部署
  8. 如何在 Windows 中更改桌面位置
  9. android11电视,适用于Android TV的安卓11更新:提高性能与隐私
  10. ffffffffffffff