MIT 6.033 Computer System Engineering, Spring 2005. Course lectures on YouTube.
JUnit’s evolving structure. Edmund Kirwan traces JUnit’s increasing code interdependencies. From early simplicity:
To increasing tangles:
I am thinking a lot about code architecture right now and trying to learn best practices for building structures that can scale over time. This is a huge topic that a lot of smart people have strong feelings about– when I read about it I often come upon vast areas I didn’t even know existed and it is easy to suddenly feel small and anxious, like people will judge me for not knowing how to do all of it. So I am appreciating this critique as much for the critical analysis as for the obvious love and admiration the writer has for the JUnit developers. I don’t know enough yet to evaluate the actual critiques, even!
Programmers should be forced to wear their systems’ package-structures on their tee-shirts.
Practice radial encapsulation.
JUnit is a masterpiece.
“The update command does a few things. – Search the registry for new versions of all the packages installed. – If there’s a newer version, then install it. – Point dependent packages at the new version, if it satisfies their dependency. – Remove the old versions, if no other package names them as a dependency. So basically, update behaves a lot like a “standard” package manager’s update command, except that it also checks to make sure that the new version isn’t going to break anything before it points stuff at it. You see, npm keeps you out of dependency hell.”