LINUX.ORG.RU
ФорумTalks

[костыли] [ссзб] а вот и быдлокод

 ,


0

0

сделал я последнюю лабу на ооп. сел за неё неделю назад в первый раз, не особо читая примеры из ассистанта и сам ассистант(на Qt пытаюсь кодить). потом как-то не до неё было. и вот уже сдавать лабу через 7 часов, надо закончить и выясняется, что задача реализовывалась намного элегантнее и быстрее, да и выходит очень уж костыльно. но ничего не поделаешь, времени осталось мало, и я прикручиваю костыли. в итоге имею очень кривой мехонизм драг'н'дропа, демонстрировать который мне придётся очень аккуратно, нажимая только в нужные места.

уважаемые программисты со стажем, часто ли вы себя загоняете в подобные ловушки, проходит ли это?

★★★★★

С первого раза всегда выходить криво. Программисты здесь ни при чем, это применимо к любой сфере.

Pavel_LV
()

У плохих программистов это не проходит.

Хороший программист всегда стремится к большему, задача, решение которой он знает заранее на 100%, ему не интересна. Поставив такого программиста в сжатые сроки есть риск получить полувменяемый код, ибо автору хочется экспериментировать, искать оптимальное решение.

Думаю, лучшие программы получаются, когда есть задача, полные штаны энтузиазма и время 3-4 раза переписать код.

Dendy ★★★★★
()
Ответ на: комментарий от Dendy

+1
Могу часами оптимизировать SQL-запрос, изменять его план выполнения, когда есть время.

aydar ★★★★★
()

это применимо к любой сфере

if (первый_блин != комом)
{
    return "Новичкам везёт!";
}
C_H_A_D_o
()

Честно - первый проект мы переписывали несколько раз (на qt)

второй: серьезное изменение было 1 раз, остальное все развитие. И то это изменение было скорее всего хороший рефакторинг, а не кардинальное изменение

namezys ★★★★
()
Ответ на: комментарий от VladimirMalyk

> правильно спроектировать все с самого начала - признак великого мастерства.

которого никто кроме авторов книг по software engineering не достиг.

smh ★★★
()

По мере выполнения различных проектов, программист набирается опыта и начинает понимать, какие вещи каким образом лучше реализовывать. Своего рода вырабатывается чутье, что будет работать, а что нет. Но в любом случае - всегда есть чему учиться.
Хорошо, если в команде есть более опытный специалист, у которого есть что перенять. Но если ты варишься в собственном соку, процесс набирания опыта может идти медленнее. И да, все еще зависит от самих задач, так как можно вообще всю жизнь клацать мышкой в c++ быдлере, расставлять кнопочки и считать это программированием. А с другой стороны, можно тот же bcb использовать исключительно как RAD tool для интерфейса, но решать при этом в качестве основной совершенно другую, сложную и интересную задачу.

m0rph ★★★★★
()

«Всегда планируйте выбросить первую версию. Всё равно придётся.»

Осознание костыльности и понимание как можно сделать лучше — это прекрасно. А то, что первая версия — говно, так это нормально.

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

Relan ★★★★★
()

а чтобы в будущем сходу не городить кашу на ровном месте, есть паттерны проектирования - тогда первая версия будет состоять из более-менее вменяемых кусков если смотреть сверху, но с некоторым количеством временных хаков и упрощений внутри - переписывать ее все равно прийдется, но с гораздо меньшими потерями. Большинство типовых задач на 80% можно составить из стандартных паттернов - тогда от тебя потребуется только изначально их распознать в задаче, придумать имена для классов/методов ну и написать внутреннюю логику.

bender ★★★★★
()
Ответ на: комментарий от bender

> а чтобы в будущем сходу не городить кашу на ровном месте, есть паттерны проектирования

Есть кстати и такие программисты, которые начитавшись GoF делают чуть ли не смыслом рабоыт запихивание какого-нибудь модного паттерна. Главное в этом - знать меру ;-)

m0rph ★★★★★
()
Ответ на: комментарий от Dendy

>Думаю, лучшие программы получаются, когда есть задача, полные штаны энтузиазма и время 3-4 раза переписать код.

У Д.Кнута в первом томе есть такая полугуманитарная глава о процессе написания программ. Последним пунктом там было что-то типа «А теперь хорошо бы все выкинуть и переписать с привлечением всех знаний которые вы имеете на данный момент».

Absurd ★★★
()
Ответ на: комментарий от Dendy

>Думаю, лучшие программы получаются, когда есть задача, полные штаны энтузиазма и время 3-4 раза переписать код

+1. Имею программу возрастом 8лет, один раз переписана полностью, три раза - ядро, пару-тройку раз подсистемы. Осталось еще рефакторинг для замены пары костылей проделать и можно в Палату Мер и Весов отправлять.

redgremlin ★★★★★
()
Ответ на: комментарий от redgremlin

Да и некоторые потом утверждают, что мол Кутим быдлоподелие от того, что несколько раз был серьезно переделан, а сейчас переписывается с нуля. Просто кому то тяжело решится на это, вот и тянут за собой длинные костыли по много лет

Gorthauer ★★★★★
()

С одной стороны любую относительно сложную программу я не напишу с первого раза так, чтобы мне не хотелось её переписать. С другой стороны я не пишу осознанно на выброс. Грубо говоря, я каждый раз стараюсь писать так, чтобы мне не пришлось переписывать, но этого никогда не получается на 100%.

Legioner ★★★★★
()

> часто ли вы себя загоняете в подобные ловушки

В молодости это было регулярно. А потом я осознал, что все хорошие проекты сначала создаются «на бумажке», и с тех пор такие глупые вещи встречаются всё реже.

Terrens
()
Ответ на: комментарий от m0rph

Меру конечно нужно видеть, точнее чувствовать - вопросов нет. Можно еще пытаться спроектировать все в каком-нибудь uml-редакторе с самого начала до мелочей, а потом сразу после начала имплементации понять, что из-за того, что некоторые детали были не учтены, красивая модель стремительно обрастает костылями. Лично я на первом этапе просто в голове раскидываю задачу на основные модули, которые точно никак не должны пересекаться - в этом момент уже можно создать пустые проекты и придумать для них названия (причем очень часто придумать хорошее название - основная проблема) и дальше как приближение к фракталу - при начале работы над большим модулем, он также разбивается на подмодули (пэкэджи внутри проекта, дальше классы) и тп - нужные паттерны и шаблоны уже сами выворачиваются по каждую текущую задачу - увидеть и зафиксировать их все разом на первом этапе проектирования просто невозможно - в голове не умещаются.

Главное правило - чем выше уровень разбиения, тем меньше хаков можно себе позволять - тогда рефакторинг на следующих этапах будет локализован и не будет нести катастрофических последствий.

bender ★★★★★
()

уважаемые программисты со стажем, часто ли вы себя загоняете в подобные ловушки, проходит ли это?

Я без стажа. Но часто переписываю.

ShTH
()
Ответ на: комментарий от ShTH

Даже без попадания в ловушки бывает, что хочется всё переписать, ибо чему-то умному научился или открыл для себя новую технологию.

Gorthauer ★★★★★
()
#!/usr/bin/env python
if __name__ == '__main__':
    print "Пиши на Питоне и переписать программу с быдлокода на нормальный не будет лень!"
kost-bebix ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.