7工作的错误编程想法

更便宜,更容易,更快,更安全 - 有时坏习惯比足够好

7工作的错误编程想法
johnnymrninja通过wikimedia

任何听过青少年、体育评论员或公司管理层讲话的人都知道,单词和意思之间的联系是不固定的。一种新的舞蹈热潮可以同时“酷”和“热”。明星球员的“病态动作”并不需要任何医疗护理。如果一家公司要进行“重组”,这对任何人都没有好处,可能除了股东——即便如此,情况也并不总是明朗的。

计算机世界总是为这种疯狂提供喘息的机会。没有人会把“一”放在“零”的位置上。没有一个类型如果x = 0当他们真的想说的时候如果x!= 0.逻辑是一个基岩,在一个充满混乱和双层议员的世界中提供稳定的基岩。

唉,当你超越那些和零的时候,即使是电脑科学也不太清楚。一些想法,方案或架构可能会真正发臭,但它们也可能是您项目的最佳选择。它们可能更便宜或更快,或者也许是难以做到的正确方法。换句话说,有时候糟糕的只是足够好。

当一个糟糕的想法附带一线希望时也有场合。它可能不是最好的方法,但它具有如此良好的副作用,这是去的方式。如果我们陷入了编程地狱的次优路径,我们也可能发出最大的宝石可能埋在那里。

以下是7种非常糟糕的编程实践,它们通常都很有意义。

快速肮脏的代码

很少有事情可以杀死一个像良好设计和记录不好的代码一样的项目。即使你被拍打在一起的筹码,也要保持它将是一个噩梦。和那些继承你蒸蒸堆的比特的任何人都会成为一个宣誓的敌人。

然后,快速和肮脏的代码有其位置。事实上,追求干净,彻底的设计代码可以昂贵。我曾经与一位编程经理一起工作,他们看着眼睛里的每个人,并引用了我们软件所需的软件清理的长期列表。我们的旧代码可能已经运行,但该公司将另外两个月的预算中的预算,以确保代码线是阶级的。有时我们的编程经理会要求六个月的预算,她会得到它。毕竟,谁想要不洁净的代码?

不是每个人都可以访问那种预算,很少有人想告诉预算管理者咳嗽另一个月的开发人员时间,因为干净的代码是最好的。

更糟糕的是,清洁往往是一个滑溜的概念。一个程序员的干净代码是另一个过于复杂的代码。通常清理代码意味着添加新的抽象和图层,使其清除代码正在进行的内容。这可以很快成为TMI。有时,快速和肮脏的代码比与“战争与和平”的文件配对的复杂的“清洁”代码更好。

任何已经使用图层和抽象层的商程师代码的页面和页面衰减的人都知道有时有点简单输入的代码和一个简单的职位描述优于庞大的工程和计算机科学。Junky但功能代码可能需要10秒钟才能理解 - 复杂的架构可能需要数周。

这并不是那么好工作是一件坏事 - 然而,很多次没有人有时间或精力解开所有的复杂性。当时间短的供应时,有时快速且邋wity的胜利 - 并赢得大。

浪费的算法

有时候聪明并不值得付出代价。这一点最明显的当涉及到经过彻底研究并具有强大理论基础的算法时。

每个人都知道大学的教训。智能数据结构将在与数据大小成比例的时间内完成这项工作。一个坏的可能会随着数据元素数量的平方甚至立方而变慢。随着数据量的增长,一些真正可怕的数据会呈指数级增长。计算机科学课很重要。糟糕的算法可能真的很慢。

问题在于,智能,理论上有效的算法也可能很慢。它们通常需要详细说明的数据结构,充满了指针和中间值的缓存,咀嚼RAM的缓存。他们可能需要数月或数年才能获得权利。当然,从长远来看,他们将更快,但经济学家约翰梅纳德凯恩斯说的是什么?“从长远来看,我们都死了。”

部分问题是,大多数理论模型分析了算法在数据集生长时如何行事。但即使在大数据的时代,我们也可能不会处理数据集足够大的数据集,以享受所有理论储蓄。

在这些情况下,即使它可能慢速,它也可能是一个好主意折叠在一起陷阱算法。

使用单独的数据库服务器

谈到软件性能时,速度很重要。网上的几毫秒可能是早期退休和总签收之间的区别。常见的智慧是:为了加快软件层之间的通信,将数据库放在同一台机器上作为包装用户的结果。使用您的数据库代码和演示层快速通信,消除了必须ping单独的机器的延迟。

除非它并不总是还清,特别是当单机无法有效地满足演示和数据库层的需求时。

执行良好运行数据库的机器与运行演示软件的运行通常很大。为了进一步复杂化问题,差异取决于您正在使用的数据库的类型和结构。更多RAM始终有助于,但在涉及索引时,这是必不可少的。大表需要比大量小的小桌子更多。如果您计划执行许多连接,您可能会更好地抛弃一体化趋势并使用单独的数据库服务器进行。

当您将数据库和其余的软件放在一个引擎盖下时,一台机器被迫成为所有交易。它可能能够快速沟通,但无法调谐以有效地执行代码的各种任务。

用一个大的CMS锤子钉一个小钉子

今天的趋势之一是脱落中心集线器的工作,并将其拆分为像轻质微服务一样运行。您而不是将一个门户构建到您的所有数据,而是构建数十个或许致力于应答特定查询和收集特定数据的数百个单独的Web服务。这样做允许您独立创建,调试和部署每个服务 - 非常适合在不必升级单片代码库的情况下进行迭代更改。

但使用庞大的内容管理系统,如WordPress或Drupal来做同样的事情,是另一种提供JSON或XML数据的方式,只需要稍微重新配置。乍一看,这似乎是一个糟糕的主意,因为CMS的额外复杂性只会减慢堆栈的速度。但是CMS方法也可以加快开发速度并改进调试。所有的数据格式和“内容管理”都可以服务于管理系统的内部人员。即使没有用户接触到这些华丽的层,它仍然可以为内部用户提供很大的帮助。

额外的开销可能是一种痛苦,但通过向后端添加更多计算能力来解决它相对容易。

显示与数据集成

现代设计的一个基本规则是将项目拆分为至少三个部分:数据存储,决策和演示。这种分离使得更简单地重新设计任何一个部分,其独立于其他两个。

但也有缺点,因为将显示与数据分离意味着应用程序要不断地重新处理数据,以适应当前的显示模板。如果模板保持不变,这其中的大部分内容都是重复的。

最近,架构师一直在重新设计数据格式,以使显示代码更容易处理。向JSON数据结构和JSON NoSQL数据库的转移很大程度上是由于希望以一种更便于浏览器处理的格式交付数据。它并不是将数据与显示代码完全混合,而是将它们移得更近。

应用程序通常使用缓存来混合显示代码和数据。当数据混合到模板中时,结果会被存储回数据库中,以便一次又一次地服务。

使用次优基金会

过去,为长期增长目标选择“错误的”架构或战略意味着项目即将死亡。然而,如今,从糟糕的早期选择中恢复可能相对容易,只要在这个问题上投入更多的云计算机器仍然是可行的解决方案。

如果您的服务器堆栈变慢或数据库陷入困境,您通常可以简单地打开拨号并租用更多的机器。然后当人群散去时,你可以减少额外的计算能力。当额外机器每小时花费仅限便士在美国,犯一个架构错误不再是灾难性的。

当然,并非所有错误都可以通过投掷便士来修复。一些糟糕的决定导致公司成长时导致指数爆炸。当云计运行时,这些故障可以快速清空任何钱包。但只需选择StoDGy数据库或精心的过滤器,这只是慢的两倍,而不是一个不可否告的交易破坏者。

关键是要避免设计中最关键的核心部分出现瓶颈。保持活动部件的分离和独立有助于确保它们不会相互干扰,并产生致命的锁定。只要核心架构不产生阻塞,糟糕的决策就可以用更快的硬件来掩盖。它不漂亮,但通常很有效。

考虑Facebook,这是一个开始使用PHP的公司,这是一个已经感受到Facebook推出时已经感受到有点日期的早期工具之一。然而,不吸引人的问题是困扰程序员 - 而不是用户的问题。对于所有奇怪的语法和有限的功率,方法是坚实的。Facebook自创建HHVM刺激了PHP开发以来,这是一个更快的版本,它激发了对PHP内核的重写。现在Facebook更快地运行旧代码,用户不知道该公司在早期的平台选择上定居,仍然会使一些程序员的眼睛滚动。

选择可通过的解决方案通常比工程更便宜,这是一种复杂的新方法。坐在每个人到重新设计软件,以便它顺利,有效地运行可能会花费财富。智能程序员每年赚2万美元 - 但在亚马逊可以超过数百万的服务器。当更多硬件便宜并在小时后出租时,聪明往往不值得麻烦。

将充满灰尘的代码保持在生产环境中

一支经理队曾经打电话给我看看一个幻想,现代的网络应用程序,与最新的想法和最新的语言(当时Java)开发。问题是,与单色哑终端交谈的旧大型机更快,每个必须使用新代码的人都在抱怨。我们不能回到60年代 - 时代科技吗?

一个新的Java程序员甚至告诉我,令人沮丧的事情,“这不公平地将我们与旧的绿色屏幕应用程序进行比较。我们做得更多。“通过“更多”,他的意思是使用花哨的字体,雅致的颜色,以及适合可调整大大的窗户的形式。相同的数据仍然从手指从手指转移到数据库,但是接听电话的人会记得使用与固定宽度字体一起使用的加丽的绿色屏幕更快。

最新的软件技术并不总是改进。有一个原因的硬件工程师笑得那个程序员要创建新代码的Bazillion行,以确保新硬件像旧的一样慢慢运行。否则就没有新硬件。

一些认真的程序员喜欢与关于“技术债务”和“持续重构”等问题的严重音调交谈。他们对投资代码刷新的重要性讨论了。但有时擦拭石板的所有梦想清洁和重写一切都变成了噩梦。

这是个艰难的决定。如果旧代码有bug或失败,重写是唯一的选择。但有时候,仅仅为了让应用跟上潮流而重新构建应用可能是一个大错误。有时,您会倒退回去,最终得到一个用最新语言编写的时髦架构,但其中充满了新的、时髦的bug。

相关文章

这个故事,“工作”的7个不良编程想法“最初是出版的infoworld.

加入网络世界社区有个足球雷竞技app脸谱网linkedin对自己最关心的话题发表评论。
有关的:

版权所有©2016.Raybet2

IT薪水调查:结果是