吴枫 python小课怎么样_编程中,有哪些好的习惯从一开始就值得坚持?

电影《喜剧之王》里,周星驰饰演的尹天仇,是一个渴望成为真正的演员,却不断沦为落魄跑龙套的小人物。

即便如此,他对演戏的态度始终认真而可敬。他每天不但锲而不舍寻找演戏机会,还在街坊福利社开了个戏剧训练班,更是在逼仄房屋的床头,一遍遍看着《演员的自我修养》

少有人专门去看这本书到底讲了什么,却也能从星爷身上感知,对待职业的态度和修养被刻画得如此淋漓尽致,大概也是这本书所传递的精神吧。

在职场上,在编程界,也流传着程序员的自我修养。

开发人员的技能范围很广,往往不会根据工作年限来评价一个人的才能。所谓五年、十年的“工作经验”也不一定是有能力、高效开发人员的佐证。

培养良好编程习惯,形成专业的风格和极致的治学态度,是一名优秀的开发人员会考虑的问题。在追求卓越的过程中,这些习惯都会积累下来,形成人生道路上优秀的修养和品质。

那么,编程中,尤其是对于初学者而言,有哪些好的习惯从一开始就值得坚持呢?

通过查阅收集国内外一些优秀程序员,公开分享的方法和经验,我们总结出以下7条良好的编程习惯:

1.代码规范

一切皆对象。程序员初学者在规划代码结构的时候,也需要有面向对象的思维方式,培养良好的代码规范。

对于个人而言,良好的代码规范能提升代码质量,减少低级的代码错误。

对于团队而言,每个人写代码的思维方式、技术水不同,保持一致的规范,能保证项目结构不混乱调用,有效降低协作沟通成本,更好地保障线上的稳定性。

很多小白初学Python,会发现在 Python 里涉及到很多名字,模块名、变量名、函数名、类名。给它们命名的时候,往往为了节省时间而喜欢缩写命名。

例如,使用‘r’来代替圆的半径而不是用‘radius’;更夸张的,喜欢使用拼音缩写,比如xswl、kcsl、zgxm……

这是非常错误的示范,因为当你投入大量的编程工作,你会发现一开始节省时间的缩写,之后会浪费更多的时间,去猜测缩写变量名代表什么。

无论如何,使用有意义的变量和函数名称。除命名外,布局规范、注释规范、代码使用规范等,都需要学习和遵守。

最直接的办法,遵循公司已有的代码规范,从简单的变量命名到模块划分,一些现有规则可以导入到编码工具中。

还可以用检测工具来规范。每一门编程语言,都有属于自己的编程规范,通常也有属于自己专属的检测工具,如Python有PEP8、Java有CheckStyle等,一开始你可以用一个工具来,帮助自己检测程序是否符合规范,结构是否良好。

正如风变编程Python小课第一节,吴枫老师引用的《Python之禅》,在Python届,用来阐释代码规范是最合适不过了:

优美胜于丑陋(Python以编写优美的代码为目标)

明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)

简洁胜于复杂(优美的代码应当是简洁的,无复杂的内部实现)

复杂胜于凌乱(若复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)

扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)

间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)

代码的可读性很重要,优美的代码是可读的。

2.阅读源码可以提高编程能力

学习都是从模仿开始,路遥在创作《平凡的世界》之前读了大量的“名著”,他把所有尊敬的作家都安放在历史为他们准备的“先圣祠”中,让他们各自光芒四射,照耀大地,才创作出百万巨著《平凡的世界》。

程序员亦是如此。

编程有时就像写作文,提出问题,分析问题,解决问题。要想提高写作文的水平,就要增加阅读量,读高水平的作文,从中学会模仿作文的套路,从而写出高水平的作文。

在编程学习中,阅读源码我们可以学到很多东西:别人高效的代码书写、别人对设计模式的熟练使用、别人对整个架构的布局等,不仅能帮助我们在早期形成良好的代码风,更提高我们debug的能力。

因为不管是入门时阅读教程里的示例代码,还是进阶时阅读优秀项目源码,会使用固然重要,但知道为什么这么使用同样重要。

多阅读、记录一些源码作品吧,这将帮助你写出既可执行,也能别人读得懂的代码,对代码的维护和扩展大有好处。

3.掌握多种语言

刚入行的程序员都有一个梦想,希望利用自己掌握的编程语言,实现心中所想象的应用场景。

但真正开始工作后,发现仅用自己掌握的编程语言去圆梦,几乎是不可能的事情。因为很多项目几乎不是一个人做的事情,需要一个团队,甚至几个团队协作。

(图片来自网络)

每门程序语言都有其最适合的领域,当你需要解决问题时,你要找到一个最适合的语言来解决这些问题。

如果你需要性能,可能C/C++是首选,如果你需要跨平台,可能Java是首选,如果你要写一个Web上的开发程序,或是处理文本和别的应用交互,可能 Python会是最好的。

所以,花一些时间去探索一下其它你并不熟悉的程序语言,能让你的眼界变宽,知识面越广阔,思考问题也就更为全面。

4.培养代码模块化思维

生活没有什么是独一无二,我一直相信,我们所要的生活,所面临的问题,肯定前人都有经历过,更多时候我们只是重走前人的足迹而已。

如同一个个模块,因为前人有去经历、感悟、总结,最终将所有优秀的、稳定的、持久的因素结合在一起,形成我们所看到的,一般人能接受的模块。

模块化的思维方法是一种站在巨人肩膀上的思维方法。

它对工作效率的优化帮助很大:帮助我们把复杂的工作分解,分而做之,降低难度;

帮助我们更好把握工作中的重点和主次,合理分配时间和精力。

一个优秀的程序员,遇到大的难题,能够将问题划分到功能相对独立,输入输出关系相对明确的模块实现和组合的问题。

并且,他们的思想往往不会局限于当前的工作任务里,更会去看自己写的模块,是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。

这样编写代码,还能够作风险隔离。

赫伯特·西蒙就讲过一个关于制表匠的故事。假设每只手表都有1000个零件,第一个制表匠一个零件一个零件地安装,如果他出了一个小错,或是工作被打断,就得从头再来;

第二个制表匠则把手表分为10个模块,每个模块中又有10个小模块,每个小模块中有10个零部件,那么,即使他装错了,或是工作被打断,损失的只是工作的一小部分。

时常训练自己的模块化思考,能够在你编程时具备这种风险隔离意识,规避出错带来的不必要劳动。

5.理性面对不同的编程语言或操作系统

开发者的世界里总是充斥着各种各样的争论,从编程语言、框架甚至到编辑器、Windows/Mac 系统,都可以成为争得面红耳赤的“宗教战争”。

就拿编程语言来说,人们往往偏向于喜欢自己用得熟练,用得多的那个语言。语言好坏之争,就和争谁的女朋友漂亮一样,我当然觉得自己的女朋友(虽然是null)最漂亮,但是别人并不这么觉得。

但任何语言都是为解决问题服务的。

从来没有什么最优秀语言,能够让一个人变得聪明又厉害。任何运用得当的开发语言或者技术,都会让精神愉悦。

Java也好,C#也罢,都是开发者们用来解决问题的工具。不要过于陷入浮躁的争论,而是暗示自己要理性去分析和面对,才能客观地做出正确的选择。

6.学会独立思考解决问题

作为一枚程序员,我们天生就是来解决问题的。因此最忌讳的就是,遇到困难时,没有经过自己的思考和检索,就截图抛向别人。

如果你入门学编程,一定要养成这样的习惯:在问别人问题之前,先自己搜索一下吧。

当你有什么需求的时候,往往别人也有这个需求,而且往往也有了相应的工具去解决你这个需求。用好搜索功能,Google +Stack Overflow + GitHub 能解决你的大部分编程问题。

7.时刻保持求知欲

除了写代码,程序员的日常还包含编写需求文档、设计数据库结构等,这些技术性工作可能已经排满了工作的八小时。

因此,很多人常常疲于去训练非技术的软技能。

很多程序员被挂上“直男”和“不善沟通”标签,是因为他们并没有刻意去训练沟通能力和管理能力。但往往这些能力,能带来意想不到的价值。

比如一个善于沟通的开发,可以更好地阐述用户故事,无需借助行业术语(那些让别人把他们当作外星人的话)就能把技术细节讲给外行人听。

能够问出更好的问题,进而更深入地理解客户需求,最后才能实现最漂亮的东西。

就像学员喜欢听吴枫(Python小课的老师)上课,觉得吴枫充满魅力,讲的课堂充满意思、通俗易懂。其实是因为吴枫涉猎广泛,除了专业知识外,刻意训练许多学科的技能,比如学沟通,学团队合作,学写作,好读文史、读心理、读科学等。

一定要时刻保持求知欲。

互联网时代的技术来得快,去得更快。如果没有足够强的求知精神,就无法跟上变化。

10多年前,做前端页面,写js脚本都是直接html里写

jquery来了,不用自己写一堆操作DOM的原生js API了,也能较好的解决浏览器兼容性问题。

到后来,js模块化的概念来了,典型的如requirejs,解决了js文件按需分块加载的难题。

到现在,react、angular、vue的崛起,jquery基本上已经到了退出历史舞台的地步了。

你苦心钻研多年引以为傲的技术,往往可能一夜之间就没有用武之地了。

因此,保持求知精神,既敢于在技术栈在保持不断地更新,也不排斥接纳非技术实力的学习,才是一个卓越者的胸怀的见识。

8.尾声5ffb1d70cf48bd74ed4db5127619b867c40fd0c9.gif

我们每个人,都不愿成为一个被生活牵着鼻子走的人,于是会把一个个小习惯融入到自己的生活,尽力去成为我想要成为的那个人。

有的好习惯做着做着就习惯了,谈不上坚持,最终成了喜欢的自己,明白了自律真的给人自由。

编程同理。希望每个初学者,都能尽早领悟且找到属于自己学习的那份好习惯,并自然而然地保持,最后成为超级厉害的人。

想要获取相关免费资料给UP来个素质三连,看主要的联系方式!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设置width不生效_关于padding被计算在width中问题——box-sizing相关

前一阵子遇到一个小问题,在同样的样式(主要是宽高边距之类的)条件下,DIV在移动端和PC端的宽度不一样,排除了绝大多数样式的问题,但是有个比较陌生,就是box-sizing,其实经常看到&…

我的Python成长之路---第六天---Python基础(19)---2016年2月20日(晴)

shelve模块shelve模块是pickle模块的扩展,可以通过key,value的方式访问pickle持久化保存的数据持久化保存:12345678910111213import shelvesw shelve.open(shelve_test.pkl) # 创建shelve对象name [13, 14, 145, 6] # 创建一个列表dist_tes…

apache 设置404 页面_SpringBoot自定义错误页面

SpringBoot请求错误如404可能看到如下页面:有时可能需要自定义错误页面针对不同的http.status,如404/400。【1】解决方法① 注册错误页面如下所示:Componentpublic class ErrorPageConfig implements ErrorPageRegistrar { Override public void r…

Java 编程:如何提高性能?(简单总结篇)

2019独角兽企业重金招聘Python工程师标准>>> 开发者在编程中除了要有编程规范,还要注意性能,在 Java 编程中有什么提高性能的好办法呢? 本文转自国内 ITOM 行业领军企业 OneAPM Cloud Insight(一款能够优雅监控多种操作…

mysql没有开启binlog能恢复数据吗_神了!一个妹子 rm -rf 把公司整个数据库删没了......

经历了两天不懈努力,终于恢复了一次误操作删除的生产服务器数据。对本次事故过程和解决办法记录在此,警醒自己,也提示别人莫犯此错。也希望遇到问题的朋友能找到一丝灵感解决问题。01事故背景安排一个妹子在一台生产服务器上安装 Oracle&…

android手机活跃度,微信Android机型活跃度曝光,这个结果你满意吗?

原标题:微信Android机型活跃度曝光,这个结果你满意吗?在本周的第二届前端开发者大会上,由腾讯微信工程师公布了微信Android客户端机型前十的发布图,说的也是某款手机的存量跟用户活跃度的统计,在这张微信分…

postgresql9.4.4中文手册笔记-9.10 支持枚举函数

2019独角兽企业重金招聘Python工程师标准>>> 创建枚举类型 create type name as ENUM(zhao,qian,sun,li,zhou,wu, zheng,wang,cheng); 支持枚举函数 select enum_first(null::testenum); --查询枚举类型第一个元素 enum_first ------------zhao (1 row) select e…

.NET Framework源码研究系列之---Delegate

前言 曾几何时能看到微软产品的源码简直是天方夜谭,不过现在这却成了现实,微软终于对外开放了它的产品的源代码.抛去开源运动与微软之间的世代情仇,抛去微软这一做法的初衷,这总归是件好事,能够让我们拨开云雾,一窥优秀产品的秘密. 前两天看到有位仁兄在随笔中的留言,说他以为&…

如何设置多个图层层叠关系_如何玩转 XMind 中的多种思维结构?

熟悉 XMind 的用户都知道,XMind 支持多种思维结构,并且不同思维结构可以混用。每一个分支都可以是一个不同的结构,让你不受限制、自由地进行思维的发散和整理。这个是目前其他思维导图工具少有的。在 XMind 中,你可以用思维导图、…

python修改html表格,使用styles和css更改pandas dataframe html表python中...

这需要几个步骤:首先导入HTML并重新输入from IPython.display import HTMLimport re你可以通过to_html方法得到html pandas.df_html df.to_html()接下来,我们将为html表和我们要创建的样式生成随机标识符.random_id id%d % np.random.choice(np.arange(1000000))因…

PHP关于VC11,VC9,VC6以及Thread Safe和Non Thread Safe版本选择

2019独角兽企业重金招聘Python工程师标准>>> 这里是我在搭建php环境时收集的资料供大家参考: 现在PHP官网上下载PHP安装包都有VC11或VC9的字样,这是什么含义,我们应该下载哪种安装包更好呢?其实PHP官网给出了答案&…

Silverlight与WCF之间的通信(5)silverlight应用和wcf服务的发布方法

上一篇博文中有朋友问到关于silverlight程序发布的问题,上一篇写的是silverlight访问host在console上的wcf,其实关于wcf和silverlihgt通信的问题有好几种方式,这里列举了一下 客户端和服务端采用http协议通信(分两种,同…

小程序引用其他页面js_来聊聊小程序页面之间如何通信

小程序页面之间如何通信?首先将通信的模型列举出来, 分为以下几种兄弟页面间通信父路径页面向子路径页面通信子路径页面向父路径页面通信通信的方式localStorage 本地存储globalData 全局对象eventBus 发布订阅PageModel 缓存整个pageModel至globalDataLocalStorage利用onShow…

用碧海潮声制作的宋体(雅黑宋体)替换Windows7原生的火柴棍式的宋体

第一眼见到Windows7的时候,界面真的非常漂亮,但是当查看文件属性的时候,里面宋体出奇的难看,网上有很多在XP里替换宋体的方法,但是到了Windows7里就不那么好用了,经过多次查找相关方法,终于使用…

json动画_three.js动画(四)

ThreeJS的动画系列分为:基础动画、相机控制、变形动画、用骨骼和蒙皮制作动画以及使用外部模型创建动画。用骨骼和蒙皮制作动画用骨骼来做动画时,移动一下骨骼,Three.js必须决定如何相应地迁移附着在骨骼上的皮肤,一起来看吧~~~举…

session很快失效_一口气说出 4 种分布式一致性 Session 实现方式,面试杠杠的~

前言公司有一个 Web 管理系统,使用 Tomcat 进行部署。由于是后台管理系统,所有的网页都需要登录授权之后才能进行相应的操作。起初这个系统的用的人也不多,为了节省资源,这个系统仅仅只是单机部署。后来随着用的人越来越多&#x…

定义动画名字html,CSS3 animation-name属性怎么用?

css3 animation-name属性是用来检索或设置对象所应用的动画名称,必须与keyframes配合使用,因为动画名称由keyframes定义 ;如果有多个属性值,可以用逗号进行分隔。css3 animation-name属性作用:animation-name 属性为 k…

线程中如何使用对象_多线程中如何使用gdb精确定位死锁问题

在多线程开发过程中很多人应该都会遇到死锁问题,死锁问题也是面试过程中经常被问到的问题,这里介绍在c中如何使用gdbpython脚本调试死锁问题,以及如何在程序运行过程中检测死锁。首先介绍什么是死锁,看下维基百科中的定义&#xf…

html中如何把两行合并单元格,css合并两列单元格内容

用纯DIVCSS做一个两行两列的表格,但第二列中两行怎么在html里把一行中的两列合并世界最不可以相信的话,就是从女人嘴里说出的话〃如上图,怎么做出上面图中的效果,分享大神详解CSS表格单元格占两行可以参考以下的代码: 单元格占两行…

ASP.NET MVC 实现二级域名(泛域名)

自从微软发布 ASP.NET MVC 和routing engine (System.Web.Routing)以来,就设法让我们明白你完全能控制URL和routing,只要与你的application path相结合进行扩展,任何问题都迎刃而解。如果你需要在所处的域或者子域处理数据标记的话&#xff0…