听说,很多新手程序员都曾踩过这些坑....
日期: 2018-04-11 分类: 个人收藏 328次阅读
作者: Samer Buna ,EdgeCoder编辑
这篇文章总结了我在过去这些年编程过程中踩过的坑。希望能够分享给走在编程路上的你,时刻警醒避免再犯。
01 没有合理计划
高质量的代码从来不是一蹴而就的。它需要经过思考,调研,计划,疯狂写,测试,改进一系列周而复始的过程,百转千回,方能炼成。
新手最常犯的错误之一就是拿到任务,没有任何调研和计划就开写。
小程序或许还行得通,如果是一个非常大且复杂的项目,基本就狗带了...
02 过度计划
凡事过犹不及。永远没有一个完美的计划,计划也总是在变化。
所以开始有一个大体的规划后,就要开始想怎么着手去写代码了。
要在过度计划和计划不足间追求一个动态平衡,才能写出最优代码。
切忌一下子把一个大程序中所有的feature一步一步全部考虑周密。
在写代码的过程中,你需要随时准备添加,删改feature以及debug,保持高度灵活性。计划重要,但开始写更加重要。
03 不关注代码质量
混乱代码基本等同于垃圾。编程的本质是和别人交流关于问题的解决方案,力求清晰简洁。
一些代码在写的时候需要注意如下小细节:
注意缩进和大小写
每行别超过80个字符
function长度别超过10行
变量名能够不言自明,不易混淆
大多数时候,短代码比长代码好
“想象后面接管你代码那人是个有暴力倾向的精神病,一旦写不清楚,他随时到你家找你”
04 想到一个方案就开写
刚开始编程时候,往往想到一个方案就开始写,很少考虑这个方案的时间空间复杂度或者潜在的错误。
一个问题如果你没有想到多个解决方案,很可能是你并没有真正理解这个问题。
程序员的工作重点并不是找到一个问题的答案,而是找到一个问题最简单的答案。
这里简单的意思是这个方案可以正确解决问题,同时又简单易读懂。
这个时候需要开阔思路,去google一下其他方法,综合评定下,选一个可以解决问题并且最简洁的。
05 不用封装
封装,简单理解就是把一系列的数据放在一个类中。不用封装常常会造成严重的系统维护问题。
新手程序员,很难按照直觉建立一个类,或者决定类里面放什么。
如果你想改个东西,发现需要同时改更多其他的feature,这个时候得重新想想是不是自己开始架构架错了 。
就整体而言,你的代码需要高聚合性和低耦合性。
06 没有正确选择数据结构
新手程序员常纠结在算法上,其实熟练掌握每种数据结构的优缺点更能让你在编程中如虎添翼。关于正确使用数据结构的建议 :
多使用map来代替list
多使用栈来优化循环
让现有程序更乱
在一堆已经很乱的程序里面找到正确位置并且添加新的feature,类似于向乱成狗窝的房间里随手扔进一个新东西 —— 让现状变得更乱,并且你也找不到新东西放哪了。
正确的做法是先把现有的整理干净,然后再往里面填加新东西。
以下是一些错误的做法:
仅仅为改一行而复制粘贴一整段代码
不用配置文件
用没必要的if条件语句和临时变量
关于上述的第三点,请看下面的例子
改动前的代码:
把不必要的if条件语句稍加改动,编程的样子就清晰多了:
07 不写测试
如果没有自动化的话,在建网页过程中,一般你会每写几行就刷新下来测试。
手动测试并没有什么错,但是更多你要考虑的是,怎么让测试这部分自动化,基本上是人做人该做的事情,电脑做电脑该做的事情。
制造并使用工具,是人和动物的本质区别。
“以测试为目标编程”并不是一句空话,甚至你可以在写程序之前先想想怎么设计测试程序。
08 没找对工具
锤子可以将一个钉子砸进墙里,但却不能把螺丝拧进墙里。不能说仅仅因为你喜欢用,或者你这把锤子在亚马孙上面五星好评,你就非要用它做它并不能胜任的事情。
新手需要多了解现在手头上工具的优缺点和局限性,然后多去了解,多去学习新工具,力求用最合适的工具最高效的干活。
没意识到程序问题
会造成数据问题
新手开始往往不会想到数据和代码之间的这种关系,有bug的代码很可能持续带来数据一致性的问题。
为避免此类问题,可以选择用多层数据验证方式,在前后端,网络传输和数据库这些地方都加入数据验证。
如果无法办到这些,至少在数据库层次加入以下限制。
能够熟练应用:
NOT NULL
UNIQUE
CHECK
PRIMARY KEY
FOREIGN KEY
09 对Code Review持怀疑态度
新手常把code review当成负面的东西,所有比较抵触,消极对待甚至害怕。
请点击此处输入图片描述
Code Review其实是一个很好的学习过程。
一朝为程序员,你需要接受这个过程并学会享受其中。
很多时候,code review会教你一些你不懂的东西,请用积极热情的态度去迎接你的reviewer。
10 不用版本控制
新手程序员常常忽略用版本控制软件,比如git的重要性。
版本控制并不只是指把你改好的东西汇入别人的程序里面。
版本控制更多是关于一部开发的历史。
从这里面能够帮我们和后续的开发者提供最一手,最全面的信息,来了解现在的代码是怎么一步一步得来的。
版本控制意味着可恢复性。 Git甚至可以通过二分法查找到当初引进bug的那个commit是源自哪里
更多科技求职咨询,请关注“来Offer网”
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
精华推荐