> (services not using other services)
meant services not used by other services

Simon Chemouil racontait le 03/06/2014 21:20:
> Gary Dusbabek racontait le 03/06/2014 19:59:
>> This has come up before. Let's face it, removing the singletons is a
>> tempting proposition.
>>
>> Several of us have been down the path of trying to do it.
>>
>> At the end of the day, here's what you'd end up with (absolutely best case):
>>
>> 1. Modifying just about every class, sometimes substantially.
>> 2. A huge patch for someone else to review.
>> 3. No performance gains, no bug fixes.  In fact, since so many classes have
>> to be changed, I'd say that the risk of introducing a bug/regression is
>> fairly likely.
>> 4. Complicated merges when bugs need to be fixed in older versions.
>> 5. More modular and testable code.
>>
>> So far, the positive aspects of 5 have not been able to trump the
>> challenges presented by 1, 2, 3, and 4.
> 
> Thanks for your reply. I understand the reasoning, yet obviously I think
> your 5th point weighs a lot more than the others, because it also means
> more hackable code, and though a huge patch might be scary, seeing so
> many static fields is scary as well ;).
> 
> We could make the patch more manageable by splitting it in several
> patches, one per 'service', and start from the leaves of the dependency
> graph (services not using other services), but we'd have to apply the
> patches in a specific order. Still, it would make it easier to review.
> 
> The 3rd point is I guess usual in the life of an healthy project: fixing
> the 'technical debt' the project accumulated over the years seems almost
> as important as fixing bugs and improving performance. While doing it,
> we would also port the tests and hopefully introduce new tests to make
> sure we didn't introduce bugs, and generally be careful we don't break
> anything. Yes, there might be new bugs, probably the kind of bugs that
> are already there but lurking because of the initialization order or
> relying on specific side-effects, but those already exist and might pop
> out any time. Refactoring this code seems, for the most part, to be a
> fairly repetitive process and doing it carefully should allow to avoid
> most bugs introduced by inattention.
> 
> The (4) is an important problem, but merging this would probably mean a
> major version bump (e.g, within the 3.0.0 branch), and at some point in
> time, older versions will reach their EOL. It seems to me that only bug
> fixes are backported, and the patches already have to be adapted for the
> 1.x branch... But unless people give up entirely on the idea of fixing
> this, this problem is going to become worse as time goes by.
> 
> Cheers,
> 
> Simon
> 
> 
>> Kind Regards,
>>
>> Gary.
>>
>>
>>>
>>> Cheers,
>>>
>>> --
>>> Simon
>>>
>>>
>>> [1]
>>>
>>> http://grokbase.com/t/cassandra/dev/107xr48hek/creating-two-instances-in-code
>>>
>>
> 

Reply via email to