Naming considered MOSTLY harmless
This is a continuance of a thought that I'd briefly mulled over on twitter to some reaction. No point in summarizing as it's only a few characters: "In #Clojure I find it best to try and avoid naming anything except for the tools (fns and constants) used to construct a running system."
The reactions were great, as I would more or less expect, namely trying to drive at the thrust of why I would say such a thing. "What are examples of things I would avoid naming?" "By naming do I mean assigning to a Var, or something else?" and "My examples are primarily stateful things, is this to cure live programming woes?"
I'll do my best to expound on my reasoning in more detail, become more crisp in defining what I mean, and perhaps persuade you to strive in the vicinity of this same goal.
Git & Cerberus
Looking at this past article is a good start as most of the problems to be solved are similar or the same.
Auditing Rails Projects
Or how I learned to stop worrying and love SVN, Cerberus, and RCov
I recently was given carte blanche to enact some authoritarian controls on our source code at work, and ran with it. My general feeling is not to limit what people can do with our repository, just to audit that they have done it, and when it is problematic, make their work widely known rapidly. Thus, my intent was not to lockout checkins which would cause rake to fail, just to report on the checkins when they happened.
We had at a prior point in time incorporate the Cerberus system with a cron job on our source control server, every 10 minutes it would checkout the revision and then bitch about whoever had the last checkin if the build was broken to a mailing list all developers were signed up to. This was okay except:
- If two people comitted in that 10 minute period, the last got the blame.
- If you made huge structural changes to the project, it would cause the build to fail.
So our cerberus system got switched off and we quickly stopped having a reliable rake build. People broke things and didn't know they broke them, and we were slowly marching down the path of madness.
I decided that I wanted us to have a different system, one that:
- Would run the build process on every checkin.
- Could cope with large structural changes to the source tree.
- Would not violate our prior decision not to have config files checked into the source tree.
- Would generate code coverage reports.
It was more work than I anticipated!