Log in

No account? Create an account
12 August 2017 @ 01:43 am
Code reuse abuse  
I think it's more likely that your "great programmers" simply understand the difference between the same functionality and accidentally similar functionality. The latter is where you have two use cases that are very similar, so you spend all this time deduplicating. Then one of the use cases changes... The correct response would be to duplicate the code again, because the two use cases are no longer similar. In reality, they should have never been combined in the first case. They weren't the same; they were only accidentally similar.
But instead what you usually see is minor tweaks to the common functions. Pass in a flag here, tweak the inputs there, add an if statement over yonder... And before you know it, it's all a terrible tangled mess that is full of branches and technical debt. The two use cases have the same functions, but don't even follow the same branches within the functions.

Originally posted at: http://dennisgorelik.dreamwidth.org/138616.html
ReCoder: corporaterecoder on August 14th, 2017 08:13 pm (UTC)
Вот кстати - да, удвительно большой процент программистов путают тёплое с мягким. А в результате - имеем кучу некорректных абстракций, что даже хуже чем отсутствие оных вообще. На этом видимо и основан успех Go как идеологии.
Dennis Gorelikdennisgorelik on August 14th, 2017 09:30 pm (UTC)
Успех Go основан на то, что программисты путают тёплое с мягким?
ReCoder: corporaterecoder on August 14th, 2017 09:36 pm (UTC)

Путают похожесть с общей функциональностью ⇒ клепают плохие абстракции ⇒ жизнь становится ужасной ⇒ решают запретить сложные абстракции на уровне языка ⇒ Go рулит.
Dennis Gorelikdennisgorelik on August 14th, 2017 09:38 pm (UTC)
А в Java разве разрешены сложные абстракции?
Чем Go лучше?
ReCoder: maskedrecoder on August 14th, 2017 09:48 pm (UTC)
IMHO, да, в Java абстракции сложней. Отсюда и все эти шутки про фасады абстрактных фабрик синглетонов.
Dennis Gorelikdennisgorelik on August 14th, 2017 10:50 pm (UTC)
So, unlike Java, Golang has no [whitebox] inheritance?
That sounds like VisualBasic 6.0

Edited at 2017-08-14 10:50 pm (UTC)