Reinvent the Wheel Often

本文探讨了软件开发中是否应该重复造轮子的问题。作者认为,虽然利用现有代码可以提高效率,但重新实现某些功能可以帮助开发者深入理解其内部运作机制,并通过试错获得宝贵经验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Reinvent the Wheel Often

Jason P. Sage

Just use something that exists—it’s silly to reinvent the wheel….
HAVE YOU EVER HEARD THiS OR SOME VARiATiON THEREOF? Sure you have! Every developer and student probably hears comments like this fre- quently. Why, though? Why is reinventing the wheel so frowned upon?

Because, more often than not, existing code is working code. It has already gone through some sort of quality control and rigorous testing, and is being used successfully. Additionally, the time and effort invested in reinvention are unlikely to pay off as well as using an existing product or codebase. Should you bother reinventing the wheel?

Why? When?
Perhaps you have seen publications about patterns in software development, or books on software design. These books can be sleepers, regardless of how wonderful the information contained in them is. The same way that watching a movie about sailing is very different from going sailing, so too is using exist- ing code versus designing your own software from the ground up, testing it, breaking it, repairing it, and improving it along the way.
Reinventing the wheel is not just an exercise in where to place code constructs: it is about how to get an intimate knowledge of the inner workings of various com- ponents that already exist. Do you know how memory managers work? Virtual paging? Could you implement these yourself? How about double-linked lists? Dynamic array classes? ODBC clients? Could you write a graphical user inter- face that works like a popular one you know and like? Can you create your own web-browser widgets? Do you know when to write a multiplexed system versus a multithreaded one? How to decide between a file- or a memory-based database?


144 97 Things Every Programmer Should Know

Most developers simply have never created these types of core software imple- mentations themselves and therefore do not have an intimate knowledge of how they work. The consequence is that all these kinds of software are viewed as mysterious black boxes that just work. Understanding only the surface of the water is not enough to reveal the hidden dangers beneath. Not knowing the deeper things in software development will limit your ability to create stellar work.
Reinventing the wheel and getting it wrong is more valuable than nailing it first time. There are lessons learned from trial and error that have an emotional component to them that reading a technical book alone just cannot deliver!
Learned facts and book smarts are crucial, but becoming a great programmer is as much about acquiring experience as it is about collecting facts. Reinventing the wheel is as important to a developer’s education and skill as weightlifting is to a body builder.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值