在《喜剧之王》中,周星驰扮演的尹天仇,一直梦想成为一名演员,而他不管是在扮演跑龙套,或者在街坊中开设演员训练班,亦或成为主角时,他对待演员的态度,始终是认真,热爱而又投入的。而那一本他随身携带的书--《演员的自我修养》,尽管不知道里面具体写的是什么,但我猜,他对待演员的态度和行为,就是书中内容显示的。

  于是,不禁问了问自己,作为一名程序员,一个“程序员的自我修养”是什么?

  尽管我们不一定要像尹天仇那么的认真对待自己的事业,但,一些基本的修养,作为一名新时代的码农,总应该是要具备的吧。不过真要说修养,方面还是挺多的,技术自我提示自不必说。但我并不打算从这个大家都觉得理所当然的技术方面入手,而是谈谈,可读性代码,这个容易被大家忽视的基本素养。

1、遵从所在团队的代码规范。

  一个高效、成熟的团队,必定有一个属于自己的代码规范,这个规范是团队的宝贵的财富,它是整个团队从各种坑中爬起来后积累的经验教训。什么是规范,它是人们从无数经验中总结出来的规则,标准。而代码规范,指导团队成员如何以最短的时间写成最高效,可读性强的代码。试想,如果成员不遵从规范,你用驼峰命名,他用下划线,这对程序的可读,将造成多大的影响。我想,应该没有一个人愿意去阅读一段,各种变量命名形式都能见得到,private, public 方法随意排序,甚至常量类都散落在各个角落的代码吧。

  代码,一个作用是让机器阅读,另一个重要的作用是让人阅读!!!

2、遵从行业内通用的规范

  在团队的代码规范未涉及到的,那请按照行业内的规范来编写代码。规范的一个好处是,可以明显减少学习和交流成本。在java中,当我们看到全大写的变量名时,我们就知道这是常量,而不需要去看注释,不需要去看代码逻辑。为什么这么迅速,因为行业里大家都习惯把常量用大写命名。但假如你用其他命名方式命名常量,比如team_nums命名常量,不仅不能让人迅速知道这是个常量,而且可能让人误会这是个变量,增加了团队成员学习和沟通成本,甚至可能误导他们。就见过一位仁兄,明明用的是工厂模式,偏偏按模版模式的命名方式来命名,问他,他说他知道这是工厂模式,但他觉得,更应该叫模版模式。。。我的天,,你这么任性,以后还能做朋友么?

  举个例子,我们需要根据支付类型,来生产多个支付产品,于是,我们写了个工厂类,命名为FactoryPay。当其他人看到一个类叫FactoryPay,他们会猜测,这应该是个工厂类,负责生产各种支付产品的工厂,然后按照这个猜测去阅读代码,就能比较快速的理解整个类的作用。但是,假如我取名PowerPay,别人还不知道是啥,看了半天,才明白,这是个工厂的作用。这就明显增加了他人的学习成本和维护代码的成本。

  不管你是新手还是老鸟,务必了解施行行业规范,切勿为了标新立异而违反规范。这么低端的装逼,就没必要采用了,要装也写个高端的框架来提升逼格呗。

3、变量、方法命名要能表达变量作用

  在程序员这个圈子很久了,就发现,程序员这货,都喜欢这套,“这个接口干嘛用的,有文档么”,“自己看代码去”。很多时候都是一脸黑。

  尽管程序员阅读别人代码技术都是一流,不管你是有没有注释,不管你是怎么循环嵌套,也不管你是怎么命名,他们都能耐心的,把代码分析个所以然来。但,对于程序员这个视时间宝贵如生命,分分钟都能创造几百万价值的群体来说,您行行好,给我们省点时间吧,把变量是干啥用的,说清楚呗,没准节省的这几分钟,多赚个几万,还能请大家出去嗨呢。

  每每看到部门的某大神,用一个神一般的变量名“flag”,我就有吐血的冲动,他还这个flag一直雪藏,不用,只是传递到第n个方法才使用,顿时心力交瘁,我的天,这个flag都是是干嘛用的啊,后来才明白,是isPay的意思,用来标识用户是否支付成功了。当时一口老血吐屏幕上,心里狂吐槽,老兄,你命名个isPay会死么,我的脑细胞这么不值钱么。到后来看到,去魔法数字,用int NUM_7 = 7,而不是MAX_MEMBERS来表示最大成员、用x y z来命名变量名,各种只有作者,或者作者后来都忘了的独特命名方式,都见怪不怪了。更有甚者,一个变量命名为passed,作用居然是“未通过”的意思,当时就石化了,作者还真是用心良苦,这都要考我细心不细心。

  一个好的变量名,能帮助阅读者了解变量的作用,也辅助了对整段代码的理解。

4、不要show英语,乡下的孩子伤不起唉

  LZ所在的团队,英语一直都是团队的硬伤,但总是能看到,某位仁兄,加上大把大把的英文注释,有些变量名也取些高大上的复杂的英语单词。敢问,你这么高的逼格,以后我们怎么和你玩啊。(那位仁兄其实就是LZ,年轻时唉,罪过罪过)

  代码是用来沟通的,传递作者意图的,都看不懂,怎么沟通交流。建议英语好的童鞋,英语能力可以放到阅读英文书籍中展示,在代码中,如果团队英语能力很弱,避免使用英文,变量命名也尽量按照团队英语水平来命名

5、添加必要的注释

  正如上面LZ说的,经常遭遇“你仔细看看代码,就知道干嘛用的”这样的神回复。尽管阅读代码是每个程序员的强项,但必要的注释,比如逻辑比较复杂的地方,添加必要的注释,对提升团队成员阅读熟悉代码的效率是有很大帮助的。试想,一个类,几百行,没有一行注释,对于阅读者来说,阅读它将是一个多么恐怖的事。

 

6、注释保持简洁,避免没有必要的注释

  即看过一行注释都没有的代码,也看过注释比代码还要多的程序。一个是让人生不如死,一个是让人痛不欲生。(唉,有时不仅感叹,在程序员界混,真的是难)。

LZ就经常看过,一大段注释,啰嗦了半天,要不就是没表达清楚重点,要不就是只为说明它是个循环的作用!!!譬如i++这样的代码,有必要加个“每个计数增加1”这样的注释么,这完全是把读者定位为非程序员啊,或者就是严重鄙视读者的编程水平。

  注释是帮助阅读的人更好的理解程序的逻辑,只是辅助,如果不重视通过命名等方式来传递代码的作用,而是依赖于注释,这就是本末倒置了。而且,冗长啰嗦的注释,这到底是帮助人理解,还是阻碍人理解啊,是读程序还是读小说啊。 

7、拥有自己的编码规范

  规范是为了让团队更快的理解、熟悉代码的,同理,拥有自己的一套规范,就能帮助其他人更快的理解我们所写的功能,减少学习和沟通成本。 

 

8、代码清晰简洁的表达出作者的意思

  在我们每次写完一段代码时,一定要问问自己,代码是否表达清楚了我的意思,是否需要添加些注释,名字取得是否恰当了,别人在阅读时是否吃力。。每每看到别人一团糟的费解的代码,就时刻提醒自己,一定要把代码写好咯,我也确实是这么做的,一遍又一编的检查,看变量名、方法名是否表明了它的用途,是否有些不必要的、只是为了提升逼格的代码,别人是否能在短时间内看懂。所有的这些,只是为了写出一段更优美的代码。如果大家对Python感兴趣的话,可以加一下我们的学习交流抠抠群哦:649,825,285,免费领取一套学习资料和视频课程哟~

9、坚持并捍卫上面的准则

  经常能听到,有些公司是代码行数来定义绩效的,但作为一个有操守,并秉承基本自我修养的程序员,我们绝不能为了各种诱惑或者胁迫,甚至是自己的惰性、个性,而放弃写出简洁清晰,可读的代码。

  

  以上的几点,并不是严格的意见或者建议,只是提醒广大程序员同胞们,在痴心与高端的技术时,千万不要忘了,代码不仅机器要阅读,人也需要阅读。就算你写出再复杂的代码,但它让人完全无法阅读,这有什么用呢。这就如同,你很牛逼很牛逼,但别人听不懂你说的话,还不是没用。如果你真的写出了可读性强的代码,但你也不应该鸣鸣得意,我觉得,写出一段优美,健壮,可读性高的代码,是一个程序员最基本的自我修养。如果这个追求都没有,那和咸鱼有啥区别呢。虽然常被外人看来邋里邋遢,不善交流,但我们的的代码优美,每段代码都清晰简洁的表达了心中的想法,这不也很好么。代码作为程序员间交流沟通的媒介,一定要保持它的高效沟通的属性,切不要为了自己的个性,而牺牲它的可读性。在此,建议大家业余时间阅读些比如《clean code》、《how to be a better programmer》等相关书籍

一个“程序员的自我修养”是什么?相关推荐

  1. 论一个程序员的自我修养

    本篇文章转载-转瞬之夏 在<喜剧之王>中,周星驰扮演的尹天仇,一直梦想成为一名演员,而他不管是在扮演跑龙套,或者在街坊中开设演员训练班,亦或成为主角时,他对待演员的态度,始终是认真,热爱而 ...

  2. 一个程序员的自我修养

    摘要: 如何成为华为技术专家. 原文:一个程序员的自我修养 作者:徐宏伟 一天晚上,我和老婆聊天,说部门要我写个"大咖谈软件"的文章,老婆斜了我一眼,淡淡地说:"Linu ...

  3. 在华为写了十几年代码,一个程序员的自我修养

    以下内容来自公众号逆锋起笔,关注每日干货及时送达 本文来自<华为人>徐宏伟,转载请注明出处 一天晚上,我和老婆聊天,说部门要我写个"大咖谈软件"的文章,老婆斜了我一眼, ...

  4. 黑马程序员 一个程序员的自我修养

    ---------------------- <a href="http://www.itheima.com"target="blank">ASP. ...

  5. 第八周读书笔记(人月神话X月亮与六便士)——到底什么才是一个程序员的自我修养?...

    写了这么久的读书笔记,涉及到问题大多是一些如何把软件工程做好,如何把自己的职业生涯做好.但总感觉逻辑链上缺了一环,亦即:我们为什么要把软件工程做好,我们成为一名优秀的职业生涯的意义到底在于什么?我觉得 ...

  6. 没想到真有此书!!!《一个程序员的自我修养》

    点击蓝色"程序员书单"关注我哟 加个"星标",每天带你看好文,读好书! 本文转自知乎:https://zhuanlan.zhihu.com/p/34994820 ...

  7. 很认真的聊一聊一个程序员的自我修养

    首先要谈的是,今天的话题所聊的程序员包含哪些人? 在中国,写程序,不仅仅是一种兴趣,更多的时候,还是一种普通职业和谋生工具 大公司有厉害的程序员,优秀的架构师,但大量的小公司也有很多普通的程序员.在我 ...

  8. 从996谈一个程序员的自我修养

    996已经是个老生常谈的问题了,由于最近发生了几起打工人猝死的悲剧,这个问题又被推到了风口浪尖,大有将企业与打工人对立起来的趋势,我认为大可不必.虎兕出于匣,龟玉毁于牍中,孰之过?下面我将试着从技术人 ...

  9. 论一个程序员的自我修养-从一张图片说起

    故事起源 本来今天想写.NET Core实战之CMS系统第十五篇文章的.哈,奈何今天在新生命人脉群里面看到石头哥分享的一张图片,然后大家就议论了起来,不过我看的很懵逼,这图什么意思啊?当一个朋友讲述了 ...

最新文章

  1. 评分卡实战中的几个问题
  2. JS——样式类的添加
  3. LeetCode动态规划 环形子数组的最大和
  4. 2019写给对象的话_恋爱中写给对象看的说说 2019最流行的情侣间情话
  5. 面试中几个基本的重要问题总结
  6. css中background的使用总结
  7. sql server 开源_开源工具SQL Server安全注意事项
  8. 机器学习笔记网盘分享
  9. 【HDOJ2222】Keywords Search(AC自动机)
  10. 实习成长之路——SpringBean一:BeanDefinition元信息有什么?除了Bean名称和类型,还有那些Bean的元信息值得关注?
  11. 【Java】java 读写 json文件,java读写文件
  12. 第三章 准备工作 极值点
  13. tf SavedModel 保存模型的新方式
  14. win10安装visio2010出错_win10系统安装Office2010提示错误1935的解决方案
  15. go中的interface
  16. 使用grub启动虚拟软盘的方法
  17. 每一题-101(患某种疾病的患者)
  18. 【2014最新】iOS App 提交上架store 详细流程
  19. thymeleaf 语法——th:text默认值、字符串连接、th:attr、th:href 传参、th:include传参、th:inline 内联、th:each循环、th:with、th:if
  20. 传感器模组:手机摄像头模组-1亿像素是如何实现的?

热门文章

  1. 互联网晚报 | 8月10日 星期二 | 携程启动“2021混合办公试验”;网易云音乐暂缓IPO;上汽通用五菱年累销量突破百万...
  2. 以后再想大数据杀熟就没那么容易了
  3. 互联网日报 | 安邦保险集团将申请解散并清算;360中原总部落户郑州;英伟达400亿美元收购ARM...
  4. 2020年7月美妆行业抖音小红书营销报告
  5. rn 实现上下滑动选择列表_用大前端技术实现的一款仿Boss直聘app(已开源)
  6. Paper Pal:一个中英文论文及其代码大数据搜索平台
  7. 作者:周涛,博士,北京启明星辰信息安全技术有限公司教授级高工。
  8. 【Python】一种pyahocorasick库安装方法
  9. 【软件质量】代码注释的消极作用
  10. 解决Silverlight中DataGrid在显示数据时多一空白列