热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

记住程序猿永远不要再犯的5个编程错误

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1. 不加理解的拷贝代码

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

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

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

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

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

2. 每次都从头开始

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

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

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

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

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

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

3. 没自己尝试就开始Google

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

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

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

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

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

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

4. 忽略警告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

绝不会。

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

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

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

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


推荐阅读
  • Valve 发布 Steam Deck 的新版 Windows 驱动程序
    Valve 最新发布了针对 Steam Deck 掌机的 Windows 驱动程序,旨在提升其在 Windows 环境下的兼容性、安全性和性能表现。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 深入理解Java泛型:JDK 5的新特性
    本文详细介绍了Java泛型的概念及其在JDK 5中的应用,通过具体代码示例解释了泛型的引入、作用和优势。同时,探讨了泛型类、泛型方法和泛型接口的实现,并深入讲解了通配符的使用。 ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 随着网络安全威胁的不断演变,电子邮件系统成为攻击者频繁利用的目标。本文详细探讨了电子邮件系统中的常见漏洞及其潜在风险,并提供了专业的防护建议。 ... [详细]
  • 网易严选Java开发面试:MySQL索引深度解析
    本文详细记录了网易严选Java开发岗位的面试经验,特别针对MySQL索引相关的技术问题进行了深入探讨。通过本文,读者可以了解面试官常问的索引问题及其背后的原理。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 在 Windows 10 中,F1 至 F12 键默认设置为快捷功能键。本文将介绍几种有效方法来禁用这些快捷键,并恢复其标准功能键的作用。请注意,部分笔记本电脑的快捷键可能无法完全关闭。 ... [详细]
author-avatar
手机用户2502912197
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有