О наболевшем

Jan 26, 2013 14:50

Некоторые программисты почему-то считают, что писать абстрактный код - благо. Так вот, код нужно писать как можно боле конкретный, до тех пор пока это не мешает. Хорошие абстракции нарисуются сами в процессе.

Навеяно рефакторингом длинной в неделю.

programming

Leave a comment

Comments 6

gin_kage January 26 2013, 11:28:08 UTC
Ну да, "преждевременная оптимизация - корень всех зол". И оптимизации API это тоже касается.

Reply


lightscore January 26 2013, 12:39:16 UTC
Это у хороших программистов так. У них абстракции прут через край.
А у плохих наоборот :3

Reply


che_shr_cat January 26 2013, 14:24:58 UTC
Я считаю, здесь нет универсального ответа. It depends. Чрезмерное абстрагирование где ни попадя может и плохо, зато разумная проактивность вполне хороша. Не обязательно ждать конкретного случая, чтобы переписать код на более абстрактный. Для меня лично уже много раз оправдывались сторицей попытки добавить универсальности там, где изначально она прям щас и не требовалась. Зато мне это экономило время потом, и чем дальше по времени, тем больше - и за счёт того, что не надо снова восстанавливать контекст, и за счёт того, что всегда есть уйма других важных дел.

Reply

the_lazy_guy January 26 2013, 19:35:28 UTC
Мне кажется, если в одно предложение нельзя сформулировать зачем нужен более абстрактный код, значит абстрактный код и не нужен. YAGNI во всей красе.
//----
Чтоб 2 раза не вставать, напишу сразу. В разных языках цена абстракций разная. В C++ - весьма немаленькая. В языках с выводом типов, замыканиями и сборкой мусора - сильно меньше. Хотя и там злоупотреблять не стоит.

Reply

che_shr_cat January 27 2013, 13:54:44 UTC
Я склонен считать, что это вопрос экономический. Оправданы ли затраты на создание более обобщённого кода с учётом ожиданий, какой от этого профит, сколько этот код проживёт, будет ли он расширяться, будут ли другие задачи в то время, когда он будет расширяться и так далее. И да, в зависимости от языка и среды цена и соответственно ответ на этот вопрос будут разные. Абстрактный код - это же [обычно] не самоцель.

Reply


_oxpa_ January 28 2013, 05:34:26 UTC
Любой "экстремизм" - зло. В том числе зло считать, что любой экстремизм - зло.
Про абстракции столько всего понаписано, если я правильно понял, то можно свести к фразе: "чтобы строить абстракции, нужно хорошо разбираться в предметной области". Обычно это означает "уже написать программу". Потому подходы есть разные.
Твоё "Хорошие абстракции нарисуются сами в процессе" - один из наиболее популярных подходов.

Reply


Leave a comment

Up