惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
Jina AI
Jina AI
大猫的无限游戏
大猫的无限游戏
Martin Fowler
Martin Fowler
博客园 - 司徒正美
云风的 BLOG
云风的 BLOG
C
Cybersecurity and Infrastructure Security Agency CISA
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
S
Securelist
S
Security Affairs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
L
LINUX DO - 热门话题
博客园 - 三生石上(FineUI控件)
T
Threatpost
T
The Blog of Author Tim Ferriss
C
CERT Recently Published Vulnerability Notes
IT之家
IT之家
P
Palo Alto Networks Blog
Microsoft Azure Blog
Microsoft Azure Blog
Spread Privacy
Spread Privacy
Cyberwarzone
Cyberwarzone
腾讯CDC
L
LangChain Blog
Know Your Adversary
Know Your Adversary
C
CXSECURITY Database RSS Feed - CXSecurity.com
GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
I
Intezer
T
Tor Project blog
AWS News Blog
AWS News Blog
T
Tenable Blog
NISL@THU
NISL@THU
Security Latest
Security Latest
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
H
Hackread – Cybersecurity News, Data Breaches, AI and More
人人都是产品经理
人人都是产品经理
MongoDB | Blog
MongoDB | Blog
MyScale Blog
MyScale Blog
D
DataBreaches.Net
Microsoft Security Blog
Microsoft Security Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
量子位
美团技术团队
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
罗磊的独立博客
The GitHub Blog
The GitHub Blog
阮一峰的网络日志
阮一峰的网络日志
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Stack Overflow Blog
Stack Overflow Blog

博客园 - Shinn

开发一个12306网站要多少钱?技术分析12306合格还是不合格 完美的web 2.0站点用户中心标准,及开源用户中心nUserCenter进展报告 开源 Asp.net mvc 用户中心(nUserCenter) 产品机会评估 开源 Asp.net mvc 用户中心开发计划 [转]为什么首页最后设计 [转]从社区常识说起 [转]内容运营与冷酷态度 [转载]2008-2010中文SNS的观察和实践 如何建立有效的UGC激励机制 技术领导的疑难:如何掌控其他成员的开发 从面试题看高级软件工程师需要哪些技艺 测试 【翻译】WEB安全设计规范(4.1) 也为读者说几句(兼为什么要骂烂书译者) "千里之堤毁于蚁穴"------重点项目不能交付之谜(一)泥淖中的验收测试 最长代码有多长:不符[单一职责原则(SRP)]的常见设计 不足百行代码 实体数组转DataTable通用类 企业快速开发框架--基于配置文件 面试英语【转】
重用之前应仔细分析问题---------用错轮子有感
Shinn · 2010-04-14 · via 博客园 - Shinn

   作为程序员,“懒”更像一个褒义词。比如将类写的更易重用,比如使用一看就明了的命名,比如编写自动测试代码等等。

   最最最重要的一点就是不重复制造轮子。以我的的了解无非是同一个项目尽量不有重复代码,有相似类库尽量用现成的,能借用的功能就不自己实现。但最近的一些事情却让我有了不同的感悟。

    半年前 产品中需要一个看似比较复杂的功能,恰巧操作系统带有类似的功能,简单中转一下就新。也没有思考太多,发了大约3个工作日“解决了”问题。当时心里非常有成就感,因为系统自带的这个功能看起来配置很多,功能强,还“稳定”。“稳定”的理由是微软开发的产品质量那自然是没的说的。

    最近产品需要兼容windows 2008,无论怎么搞就是不能实现。该死的微软,该功能和以往变化很大,且有运行权限控制。只能重新选择新的方案。我之后又在网上寻找替该功能的替代产品,要么是死贵,要么功能不完整,要么干脆就不兼容新版操作系统。让我心中产生了一点寒意,甚至周末心里都老是吊着。说实话我已经很久没有这种不能控制问题的感觉了,非常的不爽。

    周一,简单列出了我需要的功能。其实远远不需要单独那么多的功能,那么多的配置项。列出最核心的功能,也就四五个功能点。比且是有行业标准的。事情远远没有我之前想的那么复杂。在网上一搜索,介绍非常详细,而且还有开源项目。

    周二,下载开源代码,对照协议标准。找出核心代码,Demo一下完全满足需求。分析已有代码,当初是以单独模块完成适配的,修改也起来非常简便,预计修改工作不会超出一个工作日。

   周三,使用开源代码为基础,实现一个我需要的功能最小集的小服务程序,一个新的适配器。大功告成。

   从整个事情来看,我是“懒”过头了,将最重要的分析环节也省掉的。其实我也太不会“偷懒”了,一有头绪立马埋头苦干,反而发了更多的时间。

  但是这种偷懒不成反更累的情景,我回忆一下以往的项目,其实有很多回了。那为什么会老是犯同一个错误呢?原因有几点,一个是有畏惧心理,一看微软提供的功能这么多,我想我一个人是在短时间完成的。二是真懒,没有发心思分析问题的实质。三是有占小便宜的心理,看见有现成的,来不及思考捡起就跑。

   但是,本文的意思并不是鼓励重新造轮子,而是强调在拾起现成轮子之前要分析。

你需要什么样的轮子?

这个现成轮子是否合适?

有没有更好的轮子?

这几个问题是否值得思考呢。