学编程一开始就值得坚持的习惯

​学习任何一门技术,在一开始就养成优秀的习惯,这是非常重要的。

1

看官方文档

遇到不清楚或不懂的知识点,先去看官方文档!

很多官方文档是英文的,硬着头皮也要看!看着看着就习惯了。

刚开始读英文文档会费时间和精力,但是等你回过头来再看,你会觉得这才是最恰当的选择。

为什么这样讲?

且不说你的英文水平得到提升(这是程序员无法回避的问题),耐性得到锻炼,什么叫官方文档?!两个字:权威!准确!当你习惯了在百度上百度一些似是而非,似懂非懂的答案时,甚至有的文章观点完全不一样,你就会懂了。

当然,并没有否认网上有好的答案和文章,我自己也经常看别人的博客。只是,作为初学者,你的水平很难去辨别一些文章,观点的好坏对错,而这可能会对你理解一些知识带来致命的误导!

所以,作为初学者,应该多读官方文档,不要浮躁,要知道任何成长都没有捷径!

2

掌握逻辑,遵循统一原则

2.1:不要过分纠结于“怎样把代码写得更短”或者“把代码写进一行”。

print filter(lambda x: len(filter(lambda y: x % y == 0, xrange(2, int(sqrt(x) + 1)))) == 0, xrange(2, 100))

这样的代码尼玛意义何在?

2.2:至少在同一个项目里,遵循统一的命名原则。

class Test(object):

...

class ShuRuTest(Test):

...

class shuchu_ceshi(Test):

..

这真不能忍……

2.3:如果有比较通用的广为接受的格式标准,请务必遵守。

比如Python的PEP008,比如C/C++至少有K&R(当然还有其它)……诸如此类。

2.4:代码较长时记得写好注释,整个项目写好文档。

几十行的小东西写个说明也好;几百几千行的不写注释维护起来太麻烦。最可恨是项目没文档,别说转手了,就自己过个小半年再来看都成了互不认识。

2.5:尽量拆分函数功能及类,保证一个函数只做一件事,不要全堆一个函数里。

一个函数几百行?一个函数六七重循环?

……

2.6:考虑好异常处理,无论用if还是try。

毕竟一个RE线程就挂了,尽量考虑全可能的意外情况吧。

2.7:掌握好你所用语言的设计逻辑,或者说“世界观”。

真正学好用好一种语言所必须的过程。其实并不复杂,多写多总结很容易就能得到正确的理解,至少抽象层的理解务必要有。当然上手抓着本国人编写的“xx语言编程实例”照着抄来抄去然后说哇擦我懂了这种……可能性不是很大。

2.8:出现问题时,请先怀疑自己的代码。

在各种社区里经常会出现这样的提问:

“你们有谁遇到过这样的情况吗?xxxx工作不正常!我的程序绝对没有错!”

一口咬定自己程序没问题,然后直接就开始质疑广泛使用的库、解释器有着神奇的无数人用过都没有发现的bug……然后代码贴出来一看,几乎99%是他自己代码里的错误……

2.9:务必看懂错误提示。

其实是编程的最基本要求,编译器(解释器)及运行时给出的错误提示务必看懂。其实没啥难的,常见的也就那么些个单词,就那么几项概念,看明白就不用带个错误提示满世界问“我这个错误什么意思”这类的问题了……

如果你使用C语言或者C++,小伙伴们也可以在公众号后台直接回复笔记,就能找到C和C++的编码规范哦。如果是C#,有Resharper插件即可。

3

不炫技

什么叫不炫技?就是能用最通用的方法解决的问题,绝不引入个人的方法,即使这个方法能突显一个程序员的逼格。

因为一个程序员的逼格就意味着别的程序员智商被碾压,更多的程序员没法维护你的这段代码。而让一段代码规范且可读,是一个团队程序员的最基本的责任。

开源项目不是版本越新越好;

别人写的代码也不一定都是垃圾,不一定非要自己重构一遍;

不是所有模块都套上某个设计模式才能开发;

做优化模型的时候,不是越复杂越高大上的模型越好用,有时候组合优化和逻辑回归就能解决很多工程问题;

中小项目里泛型不是用的越多越好;

Scala的程序员不好招,Spark的项目没必要都用Scala写;

网站也不是都一定用node.js写才不过时。

在最合适的项目上用最合适的技术,不炫技,是程序员最好的习惯。

4

重视模块化,重视抽象但不滥用

一般来说,程序员在2k行、20k行、200k行等若干程序规模时会遇到瓶颈,如果不用更科学有效的方法,超过了这个行数代码就会混乱到难以维护。

针对这一现象,一个在编程方面很有成就的人做过一些实验。在很不认真的写一些小程序时,也总是写的混乱不堪,这种情况下,程序行数超过200行就觉的很难受了

在需要进行一点小的修改时,往往需要花很长时间去寻找到底该改哪里,十分吃力——这种吃力感是在那些精心思考的大项目里从未感受过的。这说明了,并没有人有过人的天赋能在混乱中轻易找出清晰的脉络,那就是说,能如鱼得水,是因为好的习惯。

后来,进行了深入的思考。在模块划分合理、抽象合理的程序里,可以简单的把一个个功能抽象为一个简单的黑盒,不需要知道他们内部发生了什么复杂的反应,只需要知道他们对什么样的输入会做出什么样的输出。

这种抽象极大的减轻了大脑的负担,可以把精力更多的投入到真正需要考虑的地方。而那些混乱的程序里,需要理清每一句话之间的关系,这无疑会极大的消耗脑力。这种情况下,200行就浑身难受就可以理解了——因为用于维护项目关系所消耗的脑力已经远远大于了那些好程序里的消耗。

这个习惯,真的让人十分受益,请一定坚持。刚开始的时候,你或许觉得花很长时间去思考程序的模块划分、抽象层级是十分浪费时间的无用功;但久了以后,你就会感受到这种习惯带来的好处:它会在无声无息之间帮你消除掉许多瓶颈。而且还有额外的好处:当你习惯用模块化组织你的思维时,思维能力也会有一定的增强。

好的习惯是成功的开始,从一开始就值得坚持。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 210,914评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,935评论 2 383
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,531评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,309评论 1 282
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,381评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,730评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,882评论 3 404
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,643评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,095评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,448评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,566评论 1 339
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,253评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,829评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,715评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,945评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,248评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,440评论 2 348

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,732评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,628评论 18 139
  • 阅读这本《停止盲目努力,你的人生需要再设计》的最初目的,是冲着封面的宣传语:“写给所有不满于现状,却不知如何改变的...
    源本kiki阅读 759评论 0 12
  • TCP是个“流”协议,所谓流,就是没有界限的一串数据。大家可以想象河里的流水,他们是连成一片的,其间并没有分界线。...
    端木轩阅读 1,863评论 2 4