让“锤子理论”适可而止

简介:

“当你有一把锤子,你会把一切看成是钉子。”

        ——马斯洛

  技术人员经常会陷入“锤子理论”中。当掌握一门新技术,了解一门新框架,或者编写了一个插件,我们总是迫不及待的想大展身手,把这些新的东西,融入到产品中、项目中,或者自己的作品里,甚至很少会去想,它是否真的适合?

  昨天下午,在我的HoorayOS交流群里,和群友讨论图标拖动排序的原理,后面讨论到拖动结束后排序是否要改变dom结构,有人提了个不错的思路,就是不改变dom结构,只改变dom的top和left样式,实现排序更新,达到高效。

  无需质疑,这肯定是个好方法,并且当晚我就在考虑怎么将现有排序修改dom的模式换成新模式。然而在实际情况下,却有很多问题,比如,想要达到不修改dom必须保证dom元素必须是同辈的,如果将桌面图标拖动到文件夹,这种情况就无法处理。

  但我有新思路,就是当拖动的区域处于同个父级下时,采用不更新dom结构的模式,跨区域拖动依旧采用原有模式。问题又来了,如果不更新dom结构顺序,那就必须创建一个数组来记录图标的实际顺序,每次拖动结束后,更新数组,然后通知dom更新top和top。

  这时候,我不得不开始思考,这种模式是否真的适用?因为提供专属的解决方案只能解决某种特定环境下的拖动,如果这样操作,势必会提高维护的成本,同时也潜在的增加了代码的阅读体验。同一个操作为什么会有不同的处理模式,新手阅读代码会很困惑,这样我就必须花下足够的时间成本去讲解,让其明白其中的“奥妙”。在这几点的权衡上,我决定放弃。

  这件事过后,我就想到了“锤子理论”,还真是像,不过我很庆幸,我没有陷入。一把锤子,想解决所有问题,必然不可能。而我们要做的是,权衡这把锤子,它可能每下能敲3个钉子,但敲每下必须用出原先5倍的力气,这就需要我们自己来决定是否使用这把锤子了。

  架构师尤其要在这方面注意,因为每一步的举棋落棋,都影响着整个项目、产品的未来,不要盲目的去“为了解决问题而解决问题”。



    本文转自胡尐睿丶博客园博客,原文链接:http://www.cnblogs.com/hooray/archive/2012/07/28/2612918.html,如需转载请自行联系原作者


相关文章
|
存储 消息中间件 负载均衡
互联网之总体架构设计篇
互联网之总体架构设计篇
545 0
互联网之总体架构设计篇
|
SQL 关系型数据库 MySQL
一文带你了解MySQL的DDL语句
一文带你了解MySQL的DDL语句
801 1
|
数据采集 存储 编解码
LabVIEW用高速数据流盘
LabVIEW用高速数据流盘
131 1
|
人工智能 运维 监控
方向云加入阿里云原生合作伙伴计划,共同打造智慧物流云!
当前,数字化浪潮汹涌来袭,颠覆了整个物流行业,迈入“云端”已是全行业的共识。“云”的独特性在于它提供了“平台开放,资源共享,服务集成,终端无限”的运作模式,使企业通过一站式产业服务以较低的费用获得较高级别的IT服务和业务支撑,也使终端消费者能够更容易地获得所需的数据、内容、应用和服务。
3951 58
方向云加入阿里云原生合作伙伴计划,共同打造智慧物流云!
|
前端开发 算法 JavaScript
程序员必备的技术网站合集
程序员必备的网站PROGRAMMER NECESSARY一提到程序员的话,大部分人想到的都是高薪的代名词,然而在这背后需要大量不间断的学习来支撑,我们需要时刻保持自己...
543 0
|
关系型数据库 MySQL
|
4天前
|
人工智能 运维 安全
|
2天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!