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

Ayavryk
На сайте с 11.10.2003
Offline
209
#51
Segey:
Приведите уже в пример какое нибудь ПО

Любой средних размеров код сделанный с использованием jquery/ExtJS на стандартных компонентах и то же самое сделанное от начала и до конца на голом JS.

То же самое и с php. ПО на базе известного фреймворка более понятно чем нечто недокументированное и неописанное.

И то и другое естественно при прочих равных условиях. При желании можно даже Hello World написать так что никто не поймет.

Тынгыр, мынгыр, комсомол (http://erum.ru). Ехари, ехари, (жалобно) аяврик. /народная тунгусская песня/
php.developer
На сайте с 22.11.2010
Offline
94
#52
_vb_:
Ну вот код (моя правка 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;
}


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

Ввиду того, что на "це" не пишу, не могу не спросить - сильно он изменился за 15 лет?

Segey
На сайте с 23.08.2005
Offline
404
#53
_vb_:
https://www.djangoproject.com/

Кода там существенно больше 30К строк.

multipartparser.py

def parse(self):
"""
Parse the POST data and break it into a FILES MultiValueDict and a POST
MultiValueDict.

Returns a tuple containing the POST and FILES dictionary, respectively.
"""
# We have to import QueryDict down here to avoid a circular import.
from django.http import QueryDict

encoding = self._encoding
handlers = self._upload_handlers

# HTTP spec says that Content-Length >= 0 is valid
# handling content-length == 0 before continuing
if self._content_length == 0:
return QueryDict(MultiValueDict(), encoding=self._encoding), MultiValueDict()

# See if the handler will want to take care of the parsing.
# This allows overriding everything if somebody wants it.
for handler in handlers:
result = handler.handle_raw_input(self._input_data,
self._meta,
self._content_length,
self._boundary,
encoding)
if result is not None:
return result[0], result[1]

# Create the data structures to be used later.
self._post = QueryDict('', mutable=True)
self._files = MultiValueDict()

# Instantiate the parser and stream:
stream = LazyStream(ChunkIter(self._input_data, self._chunk_size))

# Whether or not to signal a file-completion at the beginning of the loop.
old_field_name = None
counters = [0] * len(handlers)

try:
for item_type, meta_data, field_stream in Parser(stream, self._boundary):
if old_field_name:
# We run this at the beginning of the next loop
# since we cannot be sure a file is complete until
# we hit the next boundary/part of the multipart content.
self.handle_file_complete(old_field_name, counters)
old_field_name = None

try:
disposition = meta_data['content-disposition'][1]
field_name = disposition['name'].strip()
except (KeyError, IndexError, AttributeError):

Вы его вообще видели?

Brexit - уже совсем рядом. (https://about-this-model.blogspot.com/2019/03/brexit.html)
_vb_
На сайте с 25.07.2009
Offline
104
#54
php.developer:
Ввиду того, что на "це" не пишу, не могу не спросить - сильно он изменился за 15 лет?

Нет, не менялся.

Segey:
multipartparser.py

Вы его вообще видели?

Видел, видел :)

Докстринги - это способ генерации документации. А комменты в коде - это дружелюбие джанговского комьюнити. Если их убрать, код останется таким же ясным. Попробуйте поэкспериментировать на досуге.

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

_vb_,

# Whether or not to signal a file-completion at the beginning of the loop.
old_field_name = None
counters = [0] * len(handlers)

Ну вам конечно как специалисту без этого понятно, по красоте кода что это значит, если комментарий убрать :)

А комменты в коде - это дружелюбие джанговского комьюнити.

Ну выше вы привели в пример его как проект где это вообще отсутствует :D Так приведите настоящий, без всяких "оговорок", где дружелюбие в самом коде и там правда не нужны эти пояснения :) А то выходит комьюнити так дружно, что все таки следует нормальным правилам и все документирует как и надо, а не режет :) Они кстати видели как строки то не экономят? Ужас один, вообще не думают об этом

p.s. Давайте честный пример :)

_vb_
На сайте с 25.07.2009
Offline
104
#56
Segey:
_vb_,

Ну вам конечно как специалисту без этого понятно, по красоте кода что это значит, если комментарий убрать :)

Речь совсем не о том, чтобы взять произвольный модуль и сразу сказать что и как он делает. Мне трудно представить себе, когда это может понадобится.

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

Я не буду утверждать, что там нет запутанных мест, требующих комментов. Проект все таки достаточно большой. Может, просто повезло оба раза.

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

Segey:

Ну выше вы привели в пример его как проект где это вообще отсутствует :D Так приведите настоящий, без всяких "оговорок", где дружелюбие в самом коде и там правда не нужны эти пояснения :) А то выходит комьюнити так дружно, что все таки следует нормальным правилам и все документирует как и надо, а не режет :) Они кстати видели как строки то не экономят? Ужас один, вообще не думают об этом

Ну да, судя по кол-ву смайликов, требований и вопросов, вы настоящий интенет-воин и знатный боксер по переписке. Вы меня победили, признаю. Довольны? 🚬

Segey
На сайте с 23.08.2005
Offline
404
#57
_vb_:
Вы меня победили, признаю. Довольны?

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

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

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

Я вам больше про то, что экономить время и не делать то что можно не делать по моему лучше

[Удален]
#58

Всё таки зря модератор название темы сменил :)

и штраф мне выписал

---------- Добавлено 25.09.2012 в 20:00 ----------

forest25:
Шутки шутками, но тормозящие смартфоны с 4-ядерными процами и 1 гиг оперативы делают меня печальным.

Или программы на .net реализующие окошки с двумя кнопками и простейшие операции который тянут за собой .net framework (сюда же мелкие утилиты под Linux в зависимостях которых куча либо какого-нибудь питона).

Лень - двигатель прогресса 🍾

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

Нет скорее всего такого примера, если говорить о реальных проектах (не примерах). Речь об идеале, а он по определению недостижим. Можно говорить только о степени приближения к идеалу.

Но, повторюсь, недостижимость идеала вовсе не означает того, что к нему не нужно стремиться.

Segey:

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

Не могу себе представить, как наличие комментов в коде может помочь определиться в отношении сколько нибудь большого проекта. Пусть те же 20-30К строк кода, из вашего примера. Тут уже играют роль другие вещи - наличие доков, какого то комьюнити и т.п. Даже график чекинов за последние полгода-год имхо больше скажет, если речь об опенсорсе.

Z1
На сайте с 09.12.2005
Offline
164
#60

Ну не сказал бы, что дле эталон говнокода. Там довольно мало "индусских решений", разобраться в коде проще, чем в большинстве популярных cms. Уязвимости безопасности правда частенько находят, ну так а кто неуязвим?

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