成为好程序员必须避免的5个坏习惯


Posted in PHP onJuly 04, 2014

当你开始成为一个程序员的时候,在编程的时候很容易陷入下面所述的一些坏习惯。

作为一名程序员,犯错误不可避免,这是你学习编程课程中的一部分。在你的职业生涯中你会犯很多错误 ? 有的特别、有的普遍 ? 通过这些错误你可以学习如何避免在将来再犯同样的错误。

但是如果你是一个初学者,你犯的错误可能会比其他人更频繁。那么如何才能避免大部分程序员每天都犯的这些普遍的错误呢?

想要避免错误,就要对它有所了解。这也是为什么我要和大家分享一些在我们的程序员生涯中阻碍我们成长的普遍错误。

在开始之前,你可能想知道为什么我知道这些是错误,不是最佳的方法?

有一个简单的回答就是 ? 在我的职业生涯中,所有这些情况我都遇到过。有些情况经常遇到,有些只遇到过几次。每次犯错之后,我都后悔莫及。

最坏的情况是我根本你不知道我在做错的东西。一旦我意识到我在做错事,我就开始避免这些失误。至少,我现在写的代码比以前写的要好多了。

现在你们也可以避免这些错误。首先要知道你现在在做的是错误的。我知道大部门程序员都不会做任何错事,因为他们认为那是正确的,所以他们的行为会对程序和程序员的职业成长产生不利影响。

绝大部分的不良编程习惯都源于无知,而没有任何其他原因。

要成为一个好的程序员,我们必须一个一个的去掉这些无知。这也是那些好的编程书籍所尽力展示给我们的。

我们犯这些错误的部分原因在于它们确实完成了工作。并不是我们要做的 ? 让我们的程序运行起来,完成我们日常的工作。

但是让什么好用只是你工作的一部分。如果想要让你的应用程序好用,你将不得不定期更新,修复任何新的bug,这些将有可能变得很频繁。这样一来能让你的工作变得比较容易的方法就是遵循好的编程实践。

另外,即使你在小型程序中能够摆脱这些错误,在大型程序中你也可能碰到他们。

如果你仍然犯这些错误,可能你的程序依然正常运行,能够完成需要的任务,但是它会变得易出bug,充满低效率的代码,难于维护。并且,当你很长时间后再来看它的代码的时候,你会发现代码很难理解。

作为程序员,我们的工作不仅仅是让我们的程序工作,而让用户来处理bug。我们的工作是确保用户即使输入错误也不会得到意外的结果。

所以要创建高品质的应用程序,请确保你不会在编程的时候犯下面的这些普遍的错误:

不加理解的拷贝代码

你经常会发现你需要的代码在一些别的程序里面有。整段的拷贝代码并且就这么使用它而不去烦恼于理解每一行代码是很诱人的。

有时候你拷贝的代码可能太大了以至于没有时间去完全理解它。如果你拷贝任何代码都像这样,就会有让你的程序变得脆弱易出bug等风险。

这样可能让工作完成,但是如果这段代码在某种情况下产生了一些意外的行为将会怎么样?如果使你的程序变慢或者有恶意行为将会怎么样?因此需要恰当的理解这些代码,或者需要绝对的确信你拷贝的代码的出处。

如果以后产生了bug,你会发现很难理解这些代码,因为你从来没有写过它。甚至于你会发现很难去找出bug并且修复它,特别是如果拷贝了很多代码在程序的不同地方。

所以当拷贝代码的时候要小心,即使很少的代码。确保你完全理解它了。如果你以前用过一段代码并且可以百分之百的保证它可以工作,那么它是安全可用的。但是如果不是的话,就要当心了。

每次都从头开始

这和我之前说完全相反,但是这确实是初学者容易犯的另外一个错误。

也许你认为每次都从头开始会很好,但是实际上它浪费了太多资源?时间,精力和思维,你可以更好的在其他方面使用它们。

如果你需要的东西已经存在了,那么使用它们。不要反复重复最基础的东西。

你可以使用这些时间让你的应用在其他方面更加优秀。

如果一个API、框架或者游戏引擎让你的任务更加轻松,你没有理由不适用它们。你的目标不是展示你有多么的优秀,也不是证明你可以独立完成任何任务。你的目标是保证你的应用完美工作,并且尽可能少花费一些资源去创造它们。

如果你这样做,你可以用更少的时间去完成同样地工作。时间就是金钱,即使是你为你自己工作,你也应该试着在同样的时间赚更多的钱。

没自己尝试就开始Google

很多次,出于习惯,每次出现新的问题,你都会通过Google来找找解决方案。对于程序来说,这不是个好办法。如果你总是没有自己试一试就通过外部方法来搜索答案,那么你的思维永远都不会受到挑战。

当你的思维停止挑战,你自身的编程技能就会停止增长。把你自己的任何技能都练得很棒,你就可以自己解决问题,这也适用于程序开发。

你是创建一个已经存在的东西,你从来不进行原创。这真是你想要做的吗?

搜寻存在的解决方案看起来很聪明,但是这会蒙蔽你的双眼,你的懒惰会阻止你成为一个好的程序员。如果你真的你想要搜寻一个解决方案,至少,开始的时候你在这个问题上先花一点事件思考一下。

也许你自己不花多少事件就能解决掉它。也许你会有比其他人更好的解决它。也许你的解决方案比其他人的更加精确。

如果你不尝试,你永远都不知道。

忽略警告

这是一个早期我进行程序开发时犯的另一个错误。我不能告诉你当你的程序中出现几百个警号和一次都不出现有什么大的不同-最重要的是忽略掉它就出现新的问题。

警告通常是你做的东西可能不是每次都能正常工作的一个标志。有时,忽略这些警告会造成很大的安全问题。但是真正的问题通常是出现在程序出现几百个警告,或者程序不能正常工作时。

很难确定到底是什么原因造成了那个错误,你必须花更很多的时间来分析每一个警告来找出造成问题发生的根本原因。相反,你可以在警告发生的时候就处理掉它。

通常你仅仅需要使用正确的变量或者正确的函数来处理这些警告。不会花你几小时,只需要几分钟遇到它们就把它们处理掉。

要尽早的处理警告。干净的代码看起来舒服工作起来也会很高。记住- 对待警告和对待错误一样 .

快速修复而不是永久性解决

是的,我对这样做感到愧疚。我不为此而自豪。但通常,我们仅仅是草草的修复一下,很少会去从根本上解决这个问题。

它能正常工作了,问题也处理掉了。但是如果你一不小心,问题又会以不同的方式重新出现。

无论你怎么修复一个问题,都应确保你不会把整个系统破坏掉。修复应该提升整个系统的运行状况,而不是让它更慢或更笨重。

同时,进行一个修复要能永久性的解决这个问题。要长期,不要短期。有时,由于懒惰和无知,我们通常喜欢快速的把问题解决掉,而不想在上面花太多时间。这就是为什么我们的写的代码能正常的工作,但是却不是在所有情况下都能工作。

如果你在工作的时候把它忽略掉,你会在后面花更多的时间。

了解上面这些错误能有助于你避免它们。如果你知道你所做的是错误的,一般来说你就不会去做。

为了把工作干好你应该热爱你所做的。如果因为某些原因你不喜欢编程了那么你几乎不会花额外的功夫来编写好的可维护的程序。

如果你打算写一手好程序那么你就应该 改变你对编程的看法。

你要把编程看成一门艺术而你自己则是一个艺术家。那么你就不会因为懒惰和不小心而犯错。

作家会把一篇未完成的文章发表么?画家会把未完成的画作拿来出售么?歌手会在他的歌中唱没有用的歌词么?

绝不会。

对编程来说也一样。任何情况下,都别编写未经测试的半吊子代码。在你的程序未写完前,不要发布它。别编写不会使用的无用代码。

这都是一些我们犯的一般性错误,因为我们喜欢在工作花更少的时间而去干其他事情。但这是不行的,迟早你都会为确保你的代码不出问题而负责。

越早的练习正确的编程方法,就对你的用户和自己越好。有时成为一个好的程序员意味着你不会犯糟糕程序员同样的错误。

谢谢大家的阅读。如果你知道谁不知道这些编程技巧的,请你把这篇文章发给他们,以便让他们成为好的程序员。

PHP 相关文章推荐
最小化数据传输――在客户端存储数据
Oct 09 PHP
桌面中心(一)创建数据库
Oct 09 PHP
php 归并排序 数组交集
May 10 PHP
php解决约瑟夫环示例
Apr 09 PHP
20个2014年最优秀的PHP框架回顾
Oct 22 PHP
最新制作ThinkPHP3.2.3完全开发手册
Nov 23 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
Mar 23 PHP
PHP文件操作实例总结
Sep 27 PHP
PHP实现根据数组的值进行分组的方法
Apr 20 PHP
PHP分页显示的方法分析【附PHP通用分页类】
May 10 PHP
Laravel Eloquent分表方法并使用模型关联的实现
Nov 25 PHP
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
Apr 01 PHP
windows7下安装php的php-ssh2扩展教程
Jul 04 #PHP
windows7下安装php的imagick和imagemagick扩展教程
Jul 04 #PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
Jul 04 #PHP
php实现批量压缩图片文件大小的脚本
Jul 04 #PHP
PHP实现的英文名字全拼随机排号脚本
Jul 04 #PHP
PHP临时文件的安全性分析
Jul 04 #PHP
PHP curl实现抓取302跳转后页面的示例
Jul 04 #PHP
You might like
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
php实现贪吃蛇小游戏
2016/07/26 PHP
PHP入门教程之会话控制技巧(cookie与session)
2016/09/11 PHP
PHP实现的方程求解示例分析
2016/11/11 PHP
老生常谈PHP数组函数array_merge(必看篇)
2017/05/25 PHP
js 替换功能函数,用正则表达式解决,js的全部替换
2010/12/08 Javascript
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
js动画效果制件让图片组成动画代码分享
2014/01/14 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
2015/01/13 Javascript
纯javascript代码实现计算器功能(三种方法)
2015/09/07 Javascript
果断收藏9个Javascript代码高亮脚本
2016/01/06 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
2016/06/09 Javascript
微信小程序 location API接口详解及实例代码
2016/10/12 Javascript
基于vue.js实现侧边菜单栏
2017/03/20 Javascript
详解Angular Forms中自定义ngModel绑定值的方式
2018/12/10 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
python实现批量转换文件编码(批转换编码示例)
2014/01/23 Python
Python如何生成树形图案
2018/01/03 Python
深入浅析python变量加逗号,的含义
2020/02/22 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
2020/10/26 Python
python中pow函数用法及功能说明
2020/12/04 Python
松本清官方海外旗舰店:日本最大的药妆连锁店
2017/11/21 全球购物
La Senza官网:北美顶尖性感内衣品牌
2018/08/03 全球购物
吉尔德利巧克力公司:Ghirardelli Chocolate Company
2019/03/27 全球购物
Stührling手表官方网站:男女高品质时尚手表的领先零售商
2021/01/07 全球购物
人力资源专员自我评价怎么写
2013/09/19 职场文书
你懂得怎么写自荐信吗?
2013/12/27 职场文书
村优秀党员事迹材料
2014/01/15 职场文书
小学优秀班主任事迹材料
2014/05/17 职场文书
大四优秀党员个人民主评议
2014/09/19 职场文书
评先进个人材料
2014/12/29 职场文书
人与自然观后感
2015/06/16 职场文书
启动Tomcat时出现大量乱码的解决方法
2021/06/21 Java/Android
利用JavaScript写一个简单计算器
2021/11/27 Javascript
全新239军机修复记
2022/04/05 无线电