本篇文章转载-转瞬之夏

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

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

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

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、代码清晰简洁的表达出作者的意思

  在我们每次写完一段代码时,一定要问问自己,代码是否表达清楚了我的意思,是否需要添加些注释,名字取得是否恰当了,别人在阅读时是否吃力。。每每看到别人一团糟的费解的代码,就时刻提醒自己,一定要把代码写好咯,我也确实是这么做的,一遍又一编的检查,看变量名、方法名是否表明了它的用途,是否有些不必要的、只是为了提升逼格的代码,别人是否能在短时间内看懂。所有的这些,只是为了写出一段更优美的代码。

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

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

  

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

每篇技术博客,应该像代码一样,条理清晰,易于阅读,同时又应该简洁,观点鲜明,这才是一篇合格的技术博客。(一切为了知识的传播)

转载于:https://www.cnblogs.com/xuwendong/p/6295763.html

论一个程序员的自我修养相关推荐

  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. BZOJ 4009 接水果
  2. android mediaplayer状态机
  3. 面试季,Java中的static关键字解析
  4. 用Scrum看板工具Leangoo做Sprint迭代管理-看板分享
  5. C语言关闭文件总是错误,C语言程序错误,不能正常读写文件,求解啊
  6. Asp.net页面和Html页面之间的关系
  7. 微软关闭音乐服务器,微软关闭Zune音乐服务 Zune播放器变为MP3
  8. 华罗庚先生教会我如何学习
  9. 《超级搭讪学》— 综合素质提升书籍
  10. GPU图形绘制管线简介
  11. 现代语音信号处理之线性预测分析
  12. SPSS16 视频教程 共17章全
  13. idea快捷键:在上一行插入,在下一行插入
  14. 如何使用计算机计算平方面积,平方怎么算面积公式-3种方法详解须知
  15. 数字电子技术-逻辑门电路
  16. mysql设置校对规则_MySQL校对规则
  17. 输入大小写混合的字母,大写转小写,小写转大写
  18. Android笔记本处理器,惠普或推Android笔记本:配Tegra处理器
  19. Silverlight 5 强袭 !! 圣临王者之三端大一统
  20. HouseRobber

热门文章

  1. Windows update 注册表项
  2. Java | MySQL Emoji表情写入数据库时报错问题解决,Incorrect string value: ‘\xF0\x9F\x98\x84\xF0\x9F...‘ for column
  3. PM第1步:产品需求文档
  4. kubelet nodelost
  5. QIIME 2教程. 01简介和安装 Introduction Install(2020.11)
  6. 区块链为什么叫区块链
  7. OpenJudge百炼-1183-反正切函数的应用-C语言-简单计算
  8. java 检测表情符号_hutool工具包:判断一个字符串中是否包含emoji表情符号(emoji-java)...
  9. 建立网站费用大概需要多少钱?如何计算建立网站的成本?
  10. Kubernetes系列之五:使用yaml文件创建service向外暴露服务