编程中,有哪些好的习惯从一开始就值得坚持?

重视模块化,重视抽象但不滥用
我刚接触编程的时候,在网上看到许多大牛写程序都十分注重模块化,因此我就下意识的模仿他们;后来看SICP,知道了抽象的好处,因此在写程序的时候会仔细思考抽象的问题。这些对我都有着非常大的帮助。
在一篇讲述程序员代码行数瓶颈的博客中(程序员的成长和代码行数的关系)提到,程序员在2k行、20k行、200k行等若干程序规模时会遇到瓶颈,如果不用更科学有效的方法,超过了这个行数代码就会混乱到难以维护。但我第一次写很大的程序时(8k+)并没有感觉到文中提到的瓶颈;我目前接手的项目有近900k行,我自己写的部分也已经快上10k,但我仍然没遇到文中提到的瓶颈。
针对这一现象,我做过一些实验。我在很不认真的写一些小程序时,也总是写的混乱不堪,我发现,这种情况下,程序行数超过200行我就觉的很难受了,在需要进行一点小的修改时,我往往需要花很长时间去寻找到底该改哪里,十分吃力——这种吃力感是我在那些精心思考的大项目里从未感受过的。这说明了,我并没有过人的天赋能在混乱中轻易找出清晰的脉络,那就是说,之前的如鱼得水,是因为好的习惯。
后来,我进行了深入的思考。在模块划分合理、抽象合理的程序里,我可以简单的把一个个功能抽象为一个简单的黑盒,我不需要知道他们内部发生了什么复杂的反应,我只需要知道他们对什么样的输入会做出什么样的输出。这种抽象极大的减轻了大脑的负担,让我可以把精力更多的投入到真正需要考虑的地方。而那些混乱的程序里,我需要理清每一句话之间的关系,这无疑会极大的消耗脑力。
这种情况下,200行就浑身难受就可以理解了——因为我用于维护项目关系所消耗的脑力已经远远大于了那些好程序里的消耗。这个习惯,真的让人十分受益,请一定坚持。刚开始的时候,你或许觉得花很长时间去思考程序的模块划分、抽象层级是十分浪费时间的无用功;但久了以后,你就会感受到这种习惯带来的好处:它会在无声无息之间帮你消除掉许多瓶颈。而且还有额外的好处:当你习惯用模块化组织你的思维时,思维能力也会有一定的增强。
原回答就一句话: 请坚持:不要追求完美。
我解释一下。我说两个比较虚的回答:
一、请坚持:不要追求完美。
不要有代码是“在一开始时设计好”的想法。相反,请相信软件应用系统是自己有生命的。它会在自身成长到一定程度时,反过来作用于它的设计。为什么?虽然程序员看起来像是程序的上帝,但其实软件应用系统会发展成什么样子,本来就至少由写程序的,提需求的,以及软件自己的现状决定的。所以,微信为什么是这样子,QQ 又为什么会是这样子,微软的Window10又为什么会是这样子,等等等等,都不是当初最早那位设计者完全能想到的。再者,就算你真能决定一切,但当下的你哪怕作为一个程序员,也不是完美的,不完美的你怎么可能写出完美的代码?事实上有十分本事的程序员,也应当坚持从写六分(及格)的代码开始。坚持不追求完美 ,和你的代码一起成长,多少拥有一点产品经理的思维方式。
二、 请坚持:写代码的时候不要掏鼻孔。
(大概)20年前,我身边就有一位少年科大出来的高材生。他曾是我的偶像,刚认识他时,他负责做一个某产品的动画。他负责算法方面的数学知识。他总是下午3点才出现在位置 上,他不拘小节,一件外套能从今年10月穿到来年5月。他写算法或写代码时,总是不断地掏鼻孔,仿佛那些美妙的算法思路,总是要伴随着鼻里的掏出一颗比较大的成果一起出现。
有一天作为低好几个级别的我有幸和他结对编程(后来这么叫的,当初我们只是出于原始需求地结对,并不懂“结对编程”的理论)。我觉得我苦练五笔字型一分钟200个字符的指法跟不上他的思路,一切卡卡的……终于发现原因,是键盘里有太多泥垢,打着字生生是“嘈嘈切切错杂弹”的感觉。只好将键盘翻个身于背后猛拍,看着“大珠小珠出键盘”,我心想这是师兄一年多的心血吧?作为新人我一定要努力。 后来我离开师兄,离开那家公司,但后面有十年时间,不管到哪家公司,我都永远 斜挎一个长长的电脑包,电脑包的背带必然要松得很长很长,以确保包能够在我膝盖那个位置不羁地晃荡着。曾经有一位领导在电梯里看到我这形像,善意地提醒我改进。我嘴上没说,却在心里怼他(“真正的技术牛人,不都这样吗?”)。 至于鼻屎……那当然是我编程时的标配,桌面上一杯劣质咖啡。桌底下是从宾馆里带回来的拖鞋,拖鞋里的袜子时有破洞,偶尔写代码写得急了烦了燥了,直接把脚丫子放到椅面上当一回扣脚大汉……写的是代码,心里却以为是《广陵散》。那十年我一事无成。
幸好因缘巧合,我突然间醒悟过来,程序员,特别是优秀的程序员不一定要这样子。于是我开始在写代码前,检查一下指甲是不是太长,照个镜子看看是不是鼻毛外露需要修理;我开始有人生中第一双上千元的皮鞋(我知道很便宜,但这是相对于我一直穿2,3百元的),开始穿西裤,开始学扎领带,开始自己买咖啡豆,开始愿意去发现原来有针对瘦子的修身的衬衣;我甚至开始交钱去学习如何发声,如何习惯性地对众生(其实主要是屏幕)露出微笑。关键是,当我微笑着面对屏幕时(当然,也不扣鼻孔和脚,上半身直挺了,下半身伸展了),我发现我写的代码也不那么极端了,我用的设计模式明显地少了;我的代码质量和效率居然双高了,我开始拥抱“代码并不是一开始你就能把它写优秀”的想法了……终于,我记得有那么一天,独自一人代码写着写着写着,感觉很爽时,突然间有个85后过来叫我“总监,有个算法我们总是搞不定,能不能支持下?”“嗯?”我居然是总监了? 我下意识是收紧了自己因为长年掏鼻屎而变大的鼻孔。
因为去年年底员工意见总结中,有几位匿名意见反应说,技术总监总是一对大鼻孔向下,不仅显得傲慢,而且很丑。我有些懊恼,我本应在十三年前就是技术总监了,那时候我鼻孔并不大。
所以我觉得要向新人建议:从你写代码的第一天开始,就坚持写代码的时候不要掏鼻孔。
一个程序员学习平台分享给你们,让你在实践中积累经验掌握原理。主要方向是JAVA工程师。如果你想拿高薪,想突破瓶颈,想跟别人竞争能取得优势的,想进BAT但是有担心面试不过的,可以加我的Java学习交流群:282711949。

注:加群要求

1、大学学习的是Java相关专业,毕业后面试受挫,找不到对口工作可以

2、在公司待久了,现在过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的

3、参加过线下培训后,知识点掌握不够深刻,就业困难,想继续深造

4、已经在Java相关部门上班的在职人员,对自身职业规划不清晰,混日子的

5、有一定的C语言基础,接触过java开发,想转行的

小号勿扰,不喜勿加
来源:知乎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值