3 ms·
From scratch? Like, rewrite all your libraries and nifty little UI tricks? Of course not. But sometimes ripping out the plumbing and throwing the bigger pieces
by nerme 16y ago
From scratch? Like, rewrite all your libraries and nifty little UI tricks? Of course not.
But sometimes ripping out the plumbing and throwing the bigger pieces back together works wonderfully.
I guess that's called refactoring, though. :)
The point I'm getting at is, who does The Big Rewrite? I can't ever see myself wanting to rewrite sections of code that are working perfectly fine Just Because.
How much of The Big Rewrite was Mozilla? Did they literally rewrite everything? I can't imagine so. I bet they kept a LOT of code. It was probably more along the lines of a rather daunting refactor.
I'm just wondering what "starting fresh" means. For me, it normally means fixing architectural decisions that have become a huge pain in the but I'm keeping a LOT of the code base.
- stcredzero 16y agoRefactoring, as talked about in Martin Fowler's book and by people who've done academic work on the subject, consists of changes that alter the structure of code while preserving functionality. In many environments, specific refactorings are pre-packaged, such that they know their preconditions for working properly, and work with almost mathematical precision. In these sorts of environments, with additional support like Unit Tests, you gradually morph from one structuring of the system into another. This can be a lot safer than "ripping out the plumbing and throwing the bigger pieces back together." (I've also done the rip/reassemble thing. It's often fun and yields good results too.)
- deleted 16y ago[deleted]
- dlsspy 16y agoI've done very large rewrites from scratch successfully and I've done very large rewrites incrementally successfully. I think it can happen just fine. Of course, doing that as a one-man team with a closed-source commercial product that you have promised to give away for free doesn't seem like the kind of thing that can get done.