谈谈编程习惯

在2018年12月份的时候,看到一些微信公众号发了《python八宗罪》之类的文章,大家不知从哪里得到的稿子,内容完全一样,也就是换了换题目,一些我觉得还不错的科技公众号竟然争相发表。

来自“新智元”的文章:https://baijiahao.baidu.com/s?id=1620256692823955322&wfr=spider&for=pc

来自“机器之心”的文章:http://www.sohu.com/a/282908451_129720

那几天网友对这些文章的评论褒贬不一,不过大多数还是持反对态度的,认为作者没有足够的编程经验就在这里大谈特谈python

以为也就这么骂骂就过去了,谁知道,在2019年1月份的时候,竟然有个后知后觉的公众号给这篇文章加上了剧情,看似顺理成章地引出了python的八大缺点,然后再换一个题目,继续发表。面对这样的公众号,读者看了只能呵呵哒

来自“AI科技大本营”的文章:https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/86066022

我在这里就不说各家公众号互相抄袭吧,这种事情我也不关心的,我是想借着这篇文章说一说作为一名工程师,应该有哪些好的编程习惯。

大家看一下“机器之心”的文章,里面第三点提到了句法,说python强制使用缩进来区分层次,不像其他语言那样使用{...},这害的作者要搞一大堆的缩进,降低了代码的可阅读性。作者早就习惯了写程序不缩进,看到缩进甚是痛苦!

这,是,我,最,无,法,认,同,的,观,点!

从这个观点就可以看出,作者其实并没有什么编程经验,不知道从哪里学的几句编程语言,就在这里吐槽python,真是欲加之罪,何患无辞啊……

/*******************************说完了我对这些文章的看法,接下来说一说我认为好的编程习惯****************************************/

首先,谈一谈对编程的理解吧。

编程的首要目的是要实现一个功能,在能实现功能的基础上,还要追求书写的规范,甚至要有详尽的注释。这个就好比文学创作,不能只是把作者的思想表达出来就完事了,还要该优雅的地方优雅,该通俗的地方通俗。让别人觉得,这是一件艺术品,而不只是一个功能作品,丑陋的不想多看它一眼。编程又何尝不是一个艺术创作呢!严谨的逻辑是基础,就像大树的根和树干,规范的代码以及合理的结构就像那枝和叶,枝繁叶茂了,大树才能有活力。

接下来,从细节上说一说编程的规范吧

1.命名习惯。对于变量和函数的命名,尽量使用英文,完整的英文单词还是英文缩写,这个要考虑整体的名称长度和个人喜好。我一般是混合着用的,在单词之间有时候会用下划线当作空格(一般是缩写和完整单词之间的区分),有时候会用首字母大写来区分不同的单词(一般是一个词组内的单词)。有一些不好的习惯在这里也说一下:

(1)我是比较反对使用汉语拼音命名的,因为首先咱们的代码有可能会被外国友人看到,或是和你合作的人里有外国人,总要考虑到国际通用性吧,如果别人看不懂,你代码的可读性岂不是很低了?其次呀,逼格啊!你用汉语拼音命名,别人会认为你不会英语的,会首先想到你可能也就小学毕业,英语词汇量匮乏还懒得学习,这种不好的印象还是不要有的好。如果你就是碰上自己不会的单词了,你就查字典嘛,或是看一下相关文献,看看外国人一般都怎么说。

(2)比汉语拼音还让人抓狂的,是用abcdefg这种单个的字母或是毫无意义的字母组合(aa,bb,cc)……汉语拼音最起码咱们中国人能看懂,那abcdefg是什么鬼,鬼能看懂啊!在代码中,一般只有一些特定的地方才用这样的命名。比如说欧拉空间的坐标轴一般用xyz,for循环里一般用ijk来计数,或是一些物理量大家一眼就能明白的,可以用单个字母来命名。在其他地方,不要使用这种弱智的命名方法。不要说这种命名简单省事,等你自己过两个月再看你写的代码的时候,你就知道什么叫弱智了。

2.缩进习惯。缩进,是能体现代码结构层次的一种方法。有的人缩进2个空格,有的人缩进4个空格,也有的人喜欢用Tab键,这个就不在这讨论了,个人爱好而已。但是你说你不缩进,还觉得看缩进难受,这种人如果搞项目合作的话,分分钟叫队友打死。我们在写代码的过程中,难免会有各种嵌套,if,for,while各种混着嵌套,这时候你如果再不缩进,你自己怎么能看出来哪句话嵌在哪句话里面?有人说,经过几次嵌套之后,我感觉自己的屏幕不够宽了……那这你可不能怪缩进有问题,而是你自己的逻辑有问题。正常写代码一般都是三四个嵌套,或四五个嵌套,如果再多,那你就要考虑一下是不是可以优化一下,逻辑能不能更好一些。

虽说我是反对上文中作者硬说不缩进才是正确的,但对于python的缩进,我也是要吐槽一下的。python将缩进作为语法,放弃了{...},这确实不知道是怎么考虑的。因为在缩进的时候,我们可以使用空格,也可以使用Tab键,但是当在一个项目里既使用空格键又使用Tab键,则很有可能造成语法错误。这对开发者来说是有一定的困扰的。

3.注释习惯。这个真是太重要了。这里的注释不止是对代码中的变量、函数进行注释说明,甚至对整个项目也要有一定的说明,就像类似ReadMe的一份说明。一份好的注释,可以让别人不怎么费力地看懂你的代码,明白想要做什么,这也会让你在很久以后回头看自己参与的项目的时候,能快速回忆起当时的想法。注释是增强代码可读性的重要一环。我的习惯是在一份代码文件的最上方,写一段话,说明这份文件的作用,然后用注释将这份代码分开层次,就像分隔符一样,很明显,细长的一行。对于里面的函数,一般会写这个函数的功能,输入参数和返回值,这样在使用函数的时候便会更方便。对于那些变量,也不是所有的都注释,因为变量一般都是用英文写的,看着名称就能猜到大概是做什么的了,所以对于一些需要特别说明的变量,才会有注释。要不然注释太多,会让自己找代码便得麻烦,全篇注释比代码还多,有点喧宾夺主的感觉。

4.子函数习惯。对于一些有完整功能的代码,要尽量写成子函数的形式。这样可以有效避免代码的冗长,也能让代码看起来简洁。子函数不止可以增强代码的可读性,还可以减少代码所占的程序空间,这是一件一举两得的事情。很多初学者会喜欢一个主函数一步到底,对于几十行代码的小程序而言,这样做随便吧,不在这里讨论了。

/**********************************************************大概就说这些吧******************************************************************/

今天,我只是挑了几个编程习惯来说的,不是在这里让大家都按照我的建议去做,而是让大家对自己的编程习惯有所思考。毕竟习惯这种事,是自己的事情,每个人都有自己不同的习惯,而且习惯与习惯之间,有的无法分辨好坏,只是选择不同而已。但是在能分清楚好坏的时候,我们还是要选择好习惯的,因为这不仅是对我们自己的严格要求,也是对他人,对阅读你代码的人的一种善意。

如果大家觉得还有什么坏习惯是无法忍受的,欢迎在博客下方留言讨论

猜你喜欢

转载自blog.csdn.net/kangyi411/article/details/86217604