程序员的代码行数越少越好?

点击上方“码农突围”,马上关注,每天上午8:50准时推送

这里是码农充电第一站,回复“666”,获取一份专属大礼包

真爱,请设置“星标”或点个“在看”

作者 | Ryland Goldstein

出自 | CSDN


代码行数越少越好?读懂别人的代码很困难?如何编写出“完美”的代码?每天要坚持8小时编程?...拜托,这些编程误区程序员应该尽早知道!

以下为译文:

作为开发人员,你会听到许多有关“代码行数”的令人难以置信的疯狂理论——不要相信他们!以代码行数作为决策依据是一件非常荒谬的事情。在极少数情况下,代码行数可能还有那么一丁点意义,在绝大数情况下,代码行数什么都代表不了。根据代码行数做决策就好像按照页数评价书籍的水准。

有些人可能会认为,应用程序中的代码行越少,就越容易阅读。这句话只有部分正确,我认为代码可读性的度量标准包括:

  • 代码应具备一致性

  • 代码应具备自我描述性

  • 代码应具备良好的文档

  • 代码应使用稳定的现代功能

  • 代码不应过于复杂

  • 代码的性能不能有问题(不要故意编写速度过慢的代码)

如果减少代码行数会影响到上面任何一条,那么就有问题。实际上,基本上减少代码行数都会影响到上面的标准,因此总会出问题。不过,如果你能够设法满足上述条件,那么代码行数就是完美的,根本用不着统计数量。

语言没有好坏之分

除了PHP(开个玩笑)。

总是有人会说:

“C比X更好,因为C的性能更好。”

“Python比X更好,因为Python更简洁。”

“Haskell比X更好,因为Haskell是外星语言。”

一言以蔽之,比较编程语言本身就是无稽之谈。它们是语言,又不是口袋妖怪。

别误会,语言之间的确有差异,只不过“一无是处”的语言毕竟是少数(尽管有很多过时的语言)。每种语言都有其独特的优点,从这个角度来说,语言就好像工具箱中的工具。螺丝刀能够胜任锤子做不到的事情,但是你会说螺丝刀比锤子好吗?(显然锤子更好使)。

在谈论如何评估语言之前,我想先说明一点。在少数情况下,语言的选择确实很重要,某些语言显然无法处理某些情况。如果你编写前端代码,那么连选择语言的权利都没有。在某些特定的情况下,性能很重要,那么就不能选用X语言了,但这种情况很少见。通常,语言的选择都是项目中最不重要的问题之一。

以下是我认为在选择语言时,你应当考虑的核心因素(优先级从高到低):

  • 在线资源的数量(比如StackOverflow上的问题数量)

  • 开发速度

  • 出错的概率

  • 软件包生态系统的质量和广度

  • 性能特征

  • 招聘人才的难度(对不起,COBOL)

还有一些无法控制的紧密联系。如果你从事数据科学工作,那么就需要使用Python、R或Scala(也许是Java)。如果是一个业余项目,那么就随心所欲选择自己喜欢的。只有一条规则我觉得没有商量的余地:如果遇到的大多数问题都无法通过StackOverflow直接解决,那么我会拒绝使用这种语言。不是说我没有解决问题的能力,而是我觉得不值得花那么多时间。

读懂别人的代码是一件难事

读懂别人的代码是一件困难的事情。Robert C. Martin在“干净的代码”中谈到了这一点:

“实际上,读代码和写代码所花费的时间之比远超过10:1。在编写新代码的时候,我们一直在阅读旧代码。……[因此,]我们的代码应该易于阅读,易于编写。”

很长一段时间里,我一直以为自己不善于阅读别人的代码。随着时间的流逝,我意识到几乎每个程序员每天都在为阅读别人的代码而苦恼。

阅读别人的代码就像学一门外语。即使你很熟悉某种语言,但仍然需要使用别人的不同风格以及体系结构。而且我们一般都会假设写代码的人贯彻了一致性和可靠性,但有时并非如此,这确实是一个很难克服的问题。但是我发现了很多有帮助性的技巧。

阅读别人的代码可以极大地提高你阅读代码的能力。在过去的两年中,我查看了很多Github中的PR。每读一个PR,就会觉得阅读别人代码的能力又提高了一点点。Github中的PR特别具有帮助性,原因如下:

  • 可以随时练习,只需找到自己想贡献的开源项目即可。

  • 在一定范围内练习阅读别人的代码(功能性的PR或改bug的PR)。

  • 注意所需的细节,努力读懂每一行。

还有一种对阅读别人的代码有帮助行的技巧,这种技巧更加独特。我想到的这种技巧可以大幅减少阅读陌生代码库所需的时间。在看到我想阅读的风格的代码后,我首先我会打开vi,然后开始用项目中使用的风格编写代码。这样会减少对代码的陌生感。即使我在Github上浏览随机项目,我也会这样做。一起来试试看吧。

你永远无法编写出“完美”的代码

在加入团队工作之前,有4年的时间里我这个开发人员都是“独行狼”。在大多数时间里,我会假设每位程序员编写的代码都是完美的。我以为稍加努力和假以时日,我也会编写出“完美”的代码。

以前,我曾经常常为此而感到焦虑。在加入团队后,我很快就发现没人能够编写“完美”的代码。但是,进入系统的代码几乎总是“完美”的,为什么会这样呢?答案就在于代码审查。

我们团队拥有非常出色的工程师。他们都是最有能力,最有信心的程序员。如果有人建议提交未经审查的代码,那么我们团队中的每个成员(包括我)都会群起而攻之。即使你觉得自己是下一个比尔·盖茨,你也会犯错。甚至都无需上升到逻辑上的错误,就连错字、漏字的问题都无法避免,这些都是你的大脑无暇顾及的问题,所以需要由别人来帮你检查。

努力与注重细节并乐于指摘你的代码的人一起工作。虽然刚开始听到批评时,你会觉得很难受,但这是持续改进的唯一方法。尽最大努力避免在代码审查过程中产生抵抗情绪,也不要发表针对个人的评论。努力做到对事不对人。

审核代码时,如果代码的作者做出的选择我并不熟悉,那么我会立即通过Google查看他们的选择是否与流行观点不符。我并不是说流行观点永远是对的,只不过流行观点是默认的选择。如果有人决定不采纳流行的观点,那也很好啊,只不过我需要知道这是否合理。在审查代码时,有一点至关重要:你必须了解决策背后的基本原理。另外,用“初学者的头脑”看同样的问题,往往可以发现被这个人抛诸脑后的东西。

程序员的工作并不意味着每天要坚持8个小时的编程

一般的开发人员或“伟大的”开发人员每天需要做多长时间的编程工作呢?这是一个非常普遍的问题,但是从来没有人给出明确的答案。

每天写代码的时间超过4小时的人非常少。

不赞同这一点的人要么是个例外,要么公司应该珍惜他们。编程是一项耗费精力的工作,需要精神高度集中。要求程序员每天写5-8小时的代码是不近人情的做法。在极少数情况下,为了按时完成任务或为了加班费,有人会延长工作时间,但这种情况很少见。其实我这里说的“极少数情况”的意思是几乎没有。如果由于公司计划上的问题或招聘的人手不足而导致你加班,那么请不要容忍。

坦白来说,每天编写8个小时的代码,对你和公司都没有好处。如果你的老板有这种要求,那么只能说他目光短浅,因为从长期来看,这种高强度的工作对生产力和心理健康都有恶劣的影响。

请注意,我并不是建议你每天只工作4个小时。通常,我们应该把剩下的4小时用在如下工作上:

  • 研发与工作有关以及无关的主题

  • 与同事讨论工作

  • 帮助其他努力工作的同事

  • 计划未来的工作

  • 代码审核

  • 开会

除此之外,我强烈建议你在白天的工作时间里定时休息并锻炼身体(即使只是短暂的锻炼)。事实证明,运动对缓解精神疲劳有很大的帮助。我发现,我在无法集中精力的时候,锻炼特别有帮助。

说句题外话,有不少人想加鱼哥微信,鱼哥姑且放出来,但是坑位有限哦

有热门推荐????

1、裸辞4个月,面试了30家公司,终于找到了理想的工作

2、程序员可接私活的10个平台和一些建议,别掉坑里!

3、可怕!只因写了一段爬虫代码,全公司200人被警察一锅端!

最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。

获取方式:点“在看”,关注公众号并回复 Java面试 领取,更多内容陆续奉上。

明天见(。・ω・。)ノ♡.

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

PE启动盘和U启动盘(第三十六课)

PE启动盘和U启动盘(第三十六课) 一 WindowsPE工具盘 1. 制作WinPE镜像光盘 双击WePE64_V2.2-是-点击右下角光盘图标-选择ISO的输出位置-立即生成ISO 2. 通过光盘启动WinPE

细胞分裂2java版第4关怎么过_奇迹暖暖第二卷第二章第4关怎么过_ 奇迹暖暖II-2-4通关攻略_游戏吧...

奇迹暖暖游戏中有很多玩家都想知道第二卷第二章第4关怎么过,下面游戏吧小编为大家奇迹暖暖II-2-4通关攻略,感谢大家的阅读,更多精彩内容请关注游戏吧! 属性:华丽、可爱、活泼、清纯、清凉; 技能推荐&#x…

面试问题大通关

面试问题大通关大灰狼 问题一:“请你自我介绍一下” 常规思路: ①介绍内容要与个人简历相一致; ②表述方式上尽量口语化;③要切中要害,不谈无关、无用的内容;④条理要清晰,层次要分明&a…

FC金手指代码大全·持续更新-亲测可用-FC 经典游戏完整可用的金手指大全---持续更新,偶尔玩玩经典回味无穷,小时候不能通关的现在通通通关一遍

FC 经典游戏完整可用的金手指大全—持续更新,偶尔玩玩经典回味无穷,小时候不能通关的现在通通通关一遍 2021年5月11日更新: 每次翻金手指一些垃圾小网站标题党吸引进去吓一大堆木马什么也没有,什么xx无敌版,浪费了宝…

codecombat极客战记森林61-70通关代码

codecombat极客战记森林61-70通关代码 python代码 61.罪与罚 # 看起来食人魔酋长正在偷你的宝石啊! # 指挥两门火炮攻击敌人达成目标。while True:item hero.findNearestItem()if item:itempos item.pos.x " " item.pos.yhero.say("item at :&…

在线sqli-labs 通关大全 Less-2

sqli-labs (2) 励志语录 青年是学习智慧的时期,中年是付诸实践的时期。——卢梭 1.知识点 sql注入常见参数 user():当前数据库用户 database():当前数据库名 concat():联合数据,用于联合两条数据结果。如 concat(us…

在线sqli-labs 通关大全 Less-1

sqli-labs (1) sqli-labs实验前: 本人因在sqli-labs搭建过程中遇到大量问题,百度后依旧无果,所以现决定在在线sqli-labs平台进行试验。 sqli-labs在线平台: http://43.247.91.228:84/ 在线平台sqli-labs Page-1 点击Less-1可直接进行试验 …

龙狼三国神龙守护者自动通关脚本

2019独角兽企业重金招聘Python工程师标准>>> 本段代码是一个按键精灵脚本 龙狼三国的神龙守护者既刷新BUG被修复后,官方又想出了新的策略:每次需要用鼠标左键单击“开始战斗”进入神龙守护者,而连续两次鼠标不能在同一个位置点击这…

Java面试通关要点

Java面试通关要点 2018-03-23 梁桂钊 占小狼的博客 占小狼的博客 占小狼的博客 微信号 whywhy_zj 功能介绍 Java进阶技术干货、实践分享,跟着狼哥一起学习JVM、性能调优,欢迎关注。 首先,声明下,以下知识点并非阿里的面试题。 …

商家如何低成本搭建声音人无人直播开展带货直播?

随着直播行业日渐火热,人工智能也开始逐渐渗透到这个领域。在前不久刚出现的AI数字人直播间已经成为一种创新的直播模式。而在这个领域里,声音人无人直播也逐渐展现出了自己的优势。那么,在AI数字人直播之后出现的声音人无人直播又有哪些优势…

这五部关于宇宙的神级纪录片,带你探索未知的外太空世界

宇宙之大无奇不有,在你的认知里你又知道多少关于宇宙的事情,如果单单用外星人概括你所对宇宙的认知就真的太片面了,小编今天就带来下面这四部关于宇宙的硬核纪录片,带你真正的去了解关于宇宙的知识,让你遨游在宇宙的知…

有没有人救救

c语言掷骰子代码 不会求求

放置英雄-深空探索-传输空间 地图

这个传输空间有点复杂,整理了一个地图出来,需要的朋友可以参考一下

Hello工作室制作《无人深空》更新档

《无人深空》(No Man’s Sky)可能很快又要更新了,这款备受争议的太空探索游戏曾在去年12月进行过一次大型更新,不知道本次制作的更新规模如何,是单纯的bug修复还是有额外内容扩充。 无人深空 《无人深空》(…

盘点美军的无人机家底

相对于国内无人机产业,国外军用无人机起步较早,积累了大量发展经验和先进理念,尤其是美国,在发动的近几场战争中都广泛应用无人机进行监视和侦察,还参与空中打击行动。军用无人机的使用大大能降低军事行动中的经济成本和自身伤亡情况。既然如…

ubuntu python 查看系统是否可用 cuda

ubuntu python 查看系统是否可用 cuda 初环境与设备查看环境演示效果 本篇文章将介绍ubuntu python 查看系统是否可用 cuda 初 希望能写一些简单的教程和案例分享给需要的人 环境与设备 系统:ubuntu 22.04 工具:python 3.10.6 设备:Nvidi…

Vue2-绑定样式、条件渲染、列表渲染、列表过滤、模糊查询、Vue监测数据原理

🥔:想只有苦难,做才有答案 更多Vue知识请点击——Vue.js VUE2-Day3 绑定样式1、class绑定2、绑定style样式 条件渲染1、v-show2、v-if条件渲染案例 列表渲染1、v-for2、key的作用与原理(重要)面试题:react、…

win10笔记本触摸板手势大全

转载于:https://www.cnblogs.com/wangyuehan/p/9745806.html

win10触控板手势

进入手势设置的位置 先打开开始菜单,点击设置 进入设备 windows 10触控板有以下手势操作

Windows快捷键(三)—— 触摸板手势

先来一张图: like Mac 放大缩小:双指张开或捏合。右击:双指点击触摸板。滚动条:双指上下左右滑。切换桌面:四指左右滑。 显示桌面 三指下滑(再往上滑则恢复最初的页面),Win D&…