编程中,有哪些好的习惯一开始就值得坚持?
嗨,小伙伴们大家好,我是沉默王二,就是那个吹自己既有颜值又有才华的家伙。今天这个话题我觉得还是值得和大家探讨的,因为好的编程习惯对程序员的职业生涯真的非常重要。
记得我在学驾照的时候,遇到一哥们,之前开过车,属于无证驾驶的那种。但是,这哥们科目二竟然挂了四次,第五次有没有过我不知道,因为我科目三都考过了,那哥们还在练科目二。教练真气的不轻,天天扯着嗓门喊:“你那个脑袋瓜子特么能不能不要钻到车窗外面看,把车窗玻璃给我摇上去,里面难道看不到镜子吗?”
我在排队等车期间真的观察过,尤其是侧方停车的时候,这哥们总是有意无意把脑袋伸出窗外看,玻璃摇上去的时候都能磕到车窗上,看得我都替他捉急。教练说这哥们之前开车的时候养成了这个坏习惯,现在想改就是改不过来;报了 VIP 也没用,最后一次看天意吧,实在是没招了。
不是我吹牛,我科目二就考得挺顺利,一次性过,倒车入库的时候感觉都要压线了,但凭借着两周时间养成的好习惯硬是过了。
![](http://www.itwanger.com/assets/images/2020/04/biancheng-xiguan-01.gif)
那接下来我就来分享三个好习惯,自我感觉良好地认为,值得所有的小伙伴们借鉴。
01、代码一定要规范
任何编程语言都有自己的一套规范,好的规范能让代码更易阅读,能让 bug 没有容身之处。你比如说,Java 类的命名应该遵守以下规则:
- 必须以大写字母开头
- 最好是一个名词,比如说 System
- 尽量不要省略成单词的首字母
来看个例子:
public class Writer {}
再比如说,方法的命名应该遵守以下规则:
- 必须以小写字母开头
- 最好是一个动词,比如说
print()
- 可以包含多个单词,第一个单词的首字母小写,其他的单词首字母大写,比如说
actionPerformed()
来看个例子:
void writeBook(){}
遵守这些规则就像是在马路上遵守交通规则一样,否则后果不堪设想。之前给小伙伴们安利过两个 IDEA 插件,一个阿里巴巴的开发规约,一个 SonarLint,它们在提高代码质量上面的效果杠杠的,我自己一直在用。
还有就是阿里出品的 Java 开发手册,一定要把上面罗列的条目刻到脑子里,至少放一份在桌面上吧,活学活用。
我之前在日企的时候,公司内部就有一份编码规约,关于 ActionScript 方面的,详细程度可以和阿里的开发手册媲美,只不过没有对外开放。好多年过去了,虽然规约上面的内容忘得一干二净,但它给我的印象深刻——就像初恋女友一样,容颜早已忘却,背影却时不时涌上心头(逃。
![](http://www.itwanger.com/assets/images/2020/04/biancheng-xiguan-02.gif)
02、学会阅读源码
源码是香,但我不建议新手一上来就阅读源码,因为很容易劝退。就好像文章开头提到的学驾照一样,如果一开始就从科目三练起,那多半会在路上完蛋。
阅读源码之前,技术储备一定要到位。也就是说科目三练习之前,科目一的理论知识要过关,科目二的基本技巧要掌握,如果说方向盘都不会打,油门刹车都不会踩,档位都不会挂,那教练不被吓出心脏病才怪。
一旦你的技术功底达到一定程度后,想要更上一层楼,阅读源码就变得势在必行了。因为阅读源码有以下好处:
解决 bug。如果 Google、Stack Overflow 上搜不到答案,那么阅读源码几乎就是唯一可行的解决办法了。
知其所以然。比如说,你想知道为什么 String 类是不可变类,那就必须钻一钻源码才能明白。
学习。为什么大牛们都会推荐 GitHub,就是因为它上面的项目都是开源的,源代码是可以直接阅读的。
改造。很多时候,我们已经拿到了一个轮子,但需要对它进行一些改造才能满足需求,那就必须在改之前阅读源码,否则,轮子可能会被改造成锤子。
知道阅读源码的好处了吧?那有小伙伴可能要问,怎么去阅读源码呢,有哪些技巧呢?我来分享一下自己经验:
先阅读文档。知道库是干嘛的,知道类是干嘛的,知道方法是干嘛的,知道变量是干嘛的。
打断点,进行调试。代码之间会有很多调用关系,如果只看不动手和源码干一架的话,很可能不知道代码之间是如何衔接的,通过调试就可以看清楚整个源码之间的脉络。
分享阅读源码后的心得。所谓好记性不如烂笔头,写下来可不只是为了分享自己阅读源码后的喜悦之情,更重要的是,当你忘的差不多时笔记可以唤醒你的记忆。
![](http://www.itwanger.com/assets/images/2020/04/biancheng-xiguan-03.gif)
03、独立思考并解决问题
我的技术交流群里有过那么一个小伙伴,一年多时间过去了,几乎没什么成长,遇到问题就往群里群里扔,或者直接私信发给我。我发现,现在问的问题和一年前问的问题真差不多,无非就是形式上发生了一些变化。
这说明什么呢?这名小伙伴没有学会独立思考,没有学会举一反三。人最珍贵的财产其实不是钱,而是思考的能力,对吧?脑子是越用越灵活的,不用呢,就真的会生锈。
一旦你学会独立思考,那么你解决问题的能力真的是会提升一个很高的档次——从一名合格的程序员蜕变为一名优秀的程序员的关键节点。在我上大专的两年时间里,成长真的特别慢,因为遇到问题我就想着问同学啊,问老师啊,结果是同学和老师进步了,我还是原来的我。
等到大三去实习后,一切就悄然改变了,领导忙得很,压根就没有工夫帮你解决一些鸡毛蒜皮的小问题。再者,真不好意思,不能把底裤漏给领导看啊,没办法,我就只能自己硬着头皮上。
硬上的次数多了,真的发现,原来自己不通过别人的帮助也能够把问题解决掉。渐渐地,随着时间的推移,我在团队里面开始显山露水了。
那怎么才能培养独立思考的能力呢?按照胡适先生所说的,就是质疑一切,然后提出假设,最后去求证。
你比如说,Java 程序员都知道 String 类是不可变的,那假如说它是可变的呢?会是什么样子,研究完你就会明白,原来一个不可变类是这样设计的啊,自己也能搞个不可变类了!
![](http://www.itwanger.com/assets/images/2020/04/biancheng-xiguan-04.gif)
04、最后
如果觉得文章对你有点帮助,请微信搜索「 沉默王二 」第一时间阅读。本回答已收录 GitHub,传送门~ ,里面更有大厂面试完整考点,欢迎 Star。
我是沉默王二,一枚有颜值却靠才华苟且的程序员。关注即可提升学习效率,别忘了三连啊,点赞、收藏、留言,我不挑,嘻嘻。