DLE: "говно-код" и пользователь

RO
На сайте с 13.07.2009
Offline
88
#21

толсто. очень.

ukrdev
На сайте с 15.11.2011
Offline
31
#22
0zero:
Иногда ругаются некоторые кодеры ананимусы на CMS, мол она из "говно-кода" сделана. Ну а на моей скромной практике эта CMS работает и не пыхтит.
Вопрос такой: что мне, как пользователю, этот "говно-код"?
Интересно насчет DLE в частности...

Как пользователю - вообще все равно, вы же пользователь, какая разница какой там на сайте код? Работает, и слава богу)

Как владельцу ресурса - в случае если захотите расширить функционал вашего проекта, говнокод станет основной причиной для увеличения сроков и стоимости, т.к. разработчику сначала придется разобраться в говнокоде на что потребуется n-е кол-во времени.

Ayavryk
На сайте с 11.10.2003
Offline
209
#23
0zero:
Вопрос такой: что мне, как пользователю, этот "говно-код"? .

Пользователю нет никакого дела. Дело до этого разработчику, которому нужно навесить какую-то свою фичу. Иногда совершенно плевая работа занимает кучу времени из-за невменяемости исходного кода. А иногда код читается как беллетристика - все прозрачно, красиво оформлено, снабжено комментариями и понятно куда что втыкать. Еще лучше когда и в код лезть не надо - есть документированное API. Одна из претензий к DLE по вашей ссылке - как раз к API

LEOnidUKG:
Говнокод всё подряд, это норма.

Извините меня, у вас замечательный скрипт, но... :)

Потраченных денег было не жалко. Но использовать было совершенно нереально.

Тынгыр, мынгыр, комсомол (http://erum.ru). Ехари, ехари, (жалобно) аяврик. /народная тунгусская песня/
_vb_
На сайте с 25.07.2009
Offline
104
#24
php.developer:
mr.Phoenix, скиньте пример неговнокода, например, на JavaScript, хотя бы 10 летней давности..по возможности вашего.

---------- Post added 24-09-2012 at 22:57 ----------

Поправка, который тогда являлся хорошим кодом и сегодня, а не вызывает тысячу фейспалмов.

Ну вот код (моя правка 1997 года неизвестного источника), который продолжаю использовать и сейчас. Правда не js, а це.

int match (char *pattern, char *str) {


for (; *pattern && *str; ++pattern, str++) {
if (*pattern == '*') {
while (*++pattern == '*');
for (; *str; str++) if (match(pattern, str)) return 1;
break;
} else if (*pattern != '?') {
if (*str != *pattern) return 0;
}
}
return (*pattern == '*') ? 1 : *str == *pattern;
}

Вот еще хороший пример рождения не говнокода. Правда, многабукф.

Саратовская фракция серча (). Давайте посчитаемся.
Segey
На сайте с 23.08.2005
Offline
404
#25

_vb_,

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

Поубирал скобки и говорит так лучше, а мне со скобками лучше везде где они есть или вообще без них как в том же Питоне.

А вот как потом лопатиш такой оптимизированный код где "все лишнее" выпили, так и начинаешь играть в разгадывание ребуса. Хорошо если код маленький, а если его много, начинаются проблемы.

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

Вот приведите пример, чем в практическом смысле это лучше?

Brexit - уже совсем рядом. (https://about-this-model.blogspot.com/2019/03/brexit.html)
sabotage
На сайте с 14.02.2007
Offline
192
#26

Ayavryk, о как говнокодеры возбудились. На воре и шапка горит :D

_vb_
На сайте с 25.07.2009
Offline
104
#27
Segey:
_vb_,
Ну в статье не совсем ясная оптимизация, проработать так 6-25к строк кода и будет, возможно, лучше но по моему сразу можно писать достаточно хорошо, оптимизация прироста производительности не дает, а читабельность падает - только автор знает каким хитрым способом и от чего он решил отказаться.

Вообще то в отрывке речь о том, что

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

Если речь о конкретном примере, то для меня разобраться в том, что делает (и как работает) код в варианте 2 гораздо легче, чем в варианте 1.

Ида, обратите внимание на присутствие комментариев в 1 варианте, и их отсутствие во 2. 🚬

Вариант 1.

DWORD WINAPI SecondThread (LPVOID lpwThreadParm) {
BOOL fDone = FALSE;
DWORD dw;

while (!fDone) {
// Wait forever for the mutex to become signaled.
dw = WaitForSingleObject(g_hMutex, INFINITE);

if (dw == WAIT_OBJECT_0) {
// Mutex became signalled.
if (g_nIndex >= MAX_TIMES) {
fDone = TRUE;
} else {
g_nIndex++;
g_dwTimes[g_nIndex - 1] = GetTickCount();
}

// Release the mutex.
ReleaseMutex(g_hMutex);
} else {
// The mutex was abandoned.
break;// Exit the while loop.
}
}
return(0);
}

Вариант 2.

DWORD SecondThread(void *ThreadParm)
{
while(Index < MAX_TIMES &&
WaitForSingleObject(Mutex, INFINITE) == WAIT_OBJECT_0)
{
if (Index < MAX_TIMES)
Times[Index++] = GetTickCount();
ReleaseMutex(Mutex);
}
return(0);
}
Segey:

Вот приведите пример, чем в практическом смысле это лучше?

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

NEOmancer
На сайте с 06.07.2007
Offline
80
#28

Все зависит от задач, можно код затачивать под определенные условия, а придет "левый" программист и скажет "фу, что за говнокод" и такого наоптимизирует и нафакторизирует, что система начнет еле корячиться. А потом еще скажет "это виноват прошлый программист, он тут столько костылей наставил!" и потребует переписать систему.

И даже если ему разрешат переписать систему и начнет он её переписывать в лучших традициях чистого кода Роберта Мартина, то через определенное количество времени на его место придет другой программист и скажет "фу, что за говнокод". Говнокод - это реальность. Чистый, оптимизированный, понятный, расширяемый код - это фантастика. У каждой задачи свой хороший код. Если примерять этот код на другие задачи, то он станет говнокодом.

По поводу DLE - есть новостной портал музыкальной тематики. Посещаемость 4000 уников/сутки, просмотров до 12000/сутки. Стоит на виртуальном хостинге стоимостью $4/месяц. Свою лицензию окупил уже 100500 раз. Может там и нет MVC и компонентной структуры, но зачем усложнять систему, если она выполняет свою задачу? Всё лучшее враг хорошего.

P.S. Кусочек хорошего листинга в 20 строк - это разговор не о чем, когда проекты состоят из 10 000 строк и более, то этот кусок в 20 строк может выглядеть уже не так выигрышно.

Ayavryk
На сайте с 11.10.2003
Offline
209
#29
NEOmancer:
Все зависит от задач, можно код затачивать под определенные условия.

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

sabotage:
Ayavryk, о как говнокодеры возбудились. На воре и шапка горит :D

Вы о себе? Обо мне? О ком?

Если обо мне, напомните при каких обстоятельствах вам приходилось править мой программный код? Я вроде ничего не распространяю ни за деньги ни за бесплатно.

sabotage
На сайте с 14.02.2007
Offline
192
#30

Ayavryk, о твоем дипломированном оппоненте, который не видит разницы между говнокодом и устаревающими технологиями.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий