Open ambition-consulting opened 8 years ago
Hi John,
Thanks for reaching out. I have a few thoughts, which I'll brain-dump below (forgive my lack of organisation, it's early, and I'm only one coffee down):
Regarding an IDE plugin, I'm sceptical that this can work. Don't let my scepticism stop you however! The problem as I see it is that you have two choices: have the programmer note the connascences, or try and do it automatically. The automatic approach is impossible for dynamic connascences unless you start running the code, at which point you have an additional set of problems. Even if you limit yourself to the static connascences, detecting them automatically will be very hard: Connascence of Type will be particularly problematic for dynamically typed languages, but even things like Connascence of Position will be tricky.
If you have the programmer note the connascences in a comment, I worry that all you're actually doing is adding yet another things that has to be kept in sync with the code. How would this be any more effective than a run-of-the-mill TODO plugin? Perhaps what you should be thinking about instead is a TODO plugin that allows you to assign priorities to the TODO item, at which point you can use it to track high-value connascent entities.
I'm more than happy to discuss these ideas, although there may be a variable time-lag depending on how hectic real life gets.
Hi there,
I am glad, that connascence is finally getting some attention. I was always a little amused, that something explained in "what every developer should know..." was known by so few.
Anyway, I was thinking about creating a plugin, that would allow me to manage connascence markers in code - and I was wondering if you would be interested in
Basically a predefined comment format would allow various IDE plugins to pick up the various pieces that are "born together". Assuming that connascence can be fixed, then this comment is basically a fancy TODO. Assuming it cannot be fixed, it serves as a more visible reminder to others.
The plugins job is where I could use some help - namely the calculation of the connascence properties locality, strength and degree. If this could be quantified, then a priority/severity list could be automated.
This is obviously only a vague idea - so I am also open for any suggestion. My motivation is simple: help developers to build better software.
kind regards, John