一个没有BUG的软件
身为开发人员,如果有一件事情发生,那么公司领导会突然让你做一件别人不愿做的事情——去管理传统系统。既然这个平台已经开发多年,那么它已经过时了。所以维护和运行这个遗留系统尤其困难,甚至由于您的一个小小的错误而导致系统崩溃。
一个没有BUG的软件
抛弃太过花哨的东西,使用更加稳重的技巧。
做技术选型平台时,可以将目光集中于经过时间历练、较为稳定的技术,而不要去追求那些新颖、吹捧的高科技。由于技术变化不大,即使技术变化不大,您也同样可以依靠原来的可靠性继续进行维护。这会降低系统出现错误的可能性。
别太依赖一个平台做车轮不一定是不好的。
几年来,一些平台和编程语言甚至在其自身的基本功能发生变化的情况下,的确使它在技术上前进了一大步,但是在这个过程中却忽视了向后兼容。由于某种原因,或者是由于某种原因,或者是一些无法预料到的问题,这些平台最终不得不停止向后兼容。正如自然界的生物演化一样,这几乎是软件版本变更的一种自然趋势。但是与之不同的是,自然进化我们很少有办法能做到这一点,但是软件版本的进化我们可以避免,可以通过自做功能来避免对平台功能的依赖,从而消除软件版本更新的影响。
若此平台或编程语言向您提供所需的特定功能,而您的系统仍然非常依赖于此功能,那么您的系统也无法完全依赖于该功能。此时,我们应该考虑是否自己开发一种替代功能,以消除对平台的依赖。在系统中,我们也不必担心平台更新之后,该特定功能将停止工作。
但是这并不意味着你需要自己写所有需要使用的功能,但是你对平台的依赖性越低,当你的软件在升级平台时失败的可能性就越小。这个私人网站的所有者已经多次使用了这个策略,他为客户开发的一款软件最初是用PHP4.x开发的,(并没有说明PHP4.x确实有问题,只是举个例子),现在PHP升级到8.0,而他的软件仍然完全正常工作。这一战略的缺点是,在软件开发之初要花更多的时间,但是从长期来看,这将会带来巨大的收益。
请勿随意使用框架。
架构并没有给您的系统增加太多复杂度,但是它给您的系统带来的失败风险却使您的系统无法部署。通常只有“玩具”软件和非常小的应用程序才有必要使用框架这种类型的东西。
类库与框架不同,但是即使是库也会造成问题。对于一个软件来说,复杂度越高,它的开发也会受到影响。我们需要考虑下到底需要多少个库,并且考虑仅仅从那些库中抽取您需要的部分或者自己创建能提供精确功能的定制函数。
有人说,当你在与开发团队打交道时,一定要使用流行的框架,因为这样每个人都知道这一框架,也很容易理解它的功能,如果你开发出自己的解决方案,没人能够理解它。但是,作为一名软件开发人员,基本的工作就是要能够理解代码,其中一些代码相对难以理解,但是它只涉及开发人员的个人专业技能,和开发软件使用的无用框架没有关系。目前,大部分框架已经变得相当复杂,理解它们所需的时间要比基础代码长。
制造高质量软件的另一项要求是要有清晰清晰的文件说明,确保您从一开始就将所有软件做好记录,并且保证您使用了清晰的编码风格。通过这种方式,甚至初级开发人员都可以很好地研究和理解软件的内容。执行内部解决方案,使用清晰的文档,确保不会更改任何内容,删除,或者添加,避免下一次升级平台时破坏某些内容。
但是,一些客户只是无法理解。这些人总是在思考一种能够在很短的时间内完成的解决方案,一种能够迅速建立起来的解决方案,并且完全忽视了软件长期运行的后果。人们总会对你说:“我知道你的意思,但是我们现在就需要这个软件,当我们赚到大钱时,我们就可以把精力集中在安全性、性能和长期支持上。”这是个例外,他们的软件最终都出了问题。制作一款垃圾软件简单快捷。优质的软件需要开发人员的认真思考和长期的积累。
别担心打破所谓的正确规则。
开发人员应该考虑如何构建更加可靠、安全的软件。不要解决盲目构建的软件中的问题。由于我们是开发人员,不是ctrlc/v的代码搬运工,所以我们将会浪费时间来构建我们自己的函数或方法,这里就不需要简单地复制粘贴了。
这样做与如何使你的软件运行无关,但是它仍然非常重要,因为当你遵循所谓正确的原则时,你的思维就会僵化,从而使你作为开发人员的创造力逐渐丧失。要学着独立地思考,用自己的头脑做正确的事情,而不要沿着那种简单但固定下来的方法来写代码。