информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft обещает радикально усилить... 
 Ядро Linux избавляется от российских... 
 20 лет Ubuntu 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / site updates
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
BCPL 22.08.07 22:03  Число просмотров: 5468
Автор: dl <Dmitry Leonov>
<"чистая" ссылка>
<site updates>
Клиника плохого кода 22.08.07 12:55  
Publisher: dl <Dmitry Leonov>
<"чистая" ссылка>
Клиника плохого кода
Овик Меликян http://www.melikyan.com/dalshe/


Исходный код программ, которые создают программисты во всем мире, по качеству можно разделить на четыре категории: хороший код, плохой, ужасный и с трудом компилируемый хаос.
В последнее время мне пришлось иметь дело с исходным кодом одной исключительно, адски плохо спроектированной и хаотически реализованной программы, которую в течение шести лет писали люди, едва ли имеющие отношение к программированию, если забыть об их дипломах в Computer Science из разных авторитетных университетов мира. Все что должна была делать эта программка - это копировать файлы с одной Windows-машины на другую. Эта задача была решена в 80,000 строк кода на Си++ (функциональная часть) и в 55,000 строк кода на VB (GUI часть). Компиляция порождала примерно 10 файлов: 6 EXE и 4 DLL. На одном конце устанавливались 3 системных сервиса и две COM компоненты, а на другом - 2 сервиса, одна COM компонента и собственно графический интерфейс для управления этим монстром. ...

Полный текст
ИМХО, в статье ничего нет, кроме неаргументированной рекламы... 18.03.08 12:50  
Автор: Estellehtaon Статус: Незарегистрированный пользователь
<"чистая" ссылка>
ИМХО, в статье ничего нет, кроме неаргументированной рекламы unix. Понятно, что есть плохой код и хороший код. Но чтобы писать хороший код совсем необязательно отазываться от программирования под винды. В любой операционной системе можно написать как плохой, так и хороший код. Конкретных же рекомендаций нет, только их обрывки.
Re: ИМХО, в статье ничего нет, кроме неаргументированной рекламы... 09.05.08 17:50  
Автор: Линда Кайе Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Верно замечено. Особенно смутил упрощённый подход к реестру и вывод из этого что уж в UNIX оно было бы намного проще. А уж как по XML автор проехался, заявив, что это всё плохо, а загадочные текстовые файлы в стиле UNIX - это хорошо. W3C тихо плачет в уголке.
Опечатка в тексте 28.08.07 09:41  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
Вот в этом параграфе:

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

За чем шаг? ;)
fixed, спасибо 28.08.07 10:07  
Автор: dl <Dmitry Leonov>
<"чистая" ссылка>
очепятка "по Фрейду"? ;-) 29.08.07 16:49  
Автор: leo <Леонид Юрьев> Статус: Elderman
<"чистая" ссылка>
Даже хочется поблагодарить за тему. Сам хотел поднять... 23.08.07 13:04  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
> Клиника плохого кода
> Овик Меликян http://www.melikyan.com/dalshe/

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

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

Среднее арифметическое неудачный пример из-за своей простоты и специфики. Здесь я бы аппонировал следующим правилом, самым первым, которому учат новичков: Правильно выбирайте тип переменной, так, чтобы при работе программы все возможные ее значения с запасом могли храниться и участвовать в вычислениях ("int", "long", "float", "double", ...)! Но не используйте "float" везде, особенно там, где достаточно будет "int".

Если уж писать про корни квадратного уравнения, то надо быть последовательным и не останавливаться на полпути, а то в статье упоминается про idiot proof, неочевидность результата и "поводные камни", связанные, что программист (как шахматист) не предусмотрел возможные варианты. Корни не всегда могут быть действительными. "Корней нет" - это "начальная школа". Надо бы чуть доработать статью. Наверняка в интернете можно найти всю инфу, которая покажет, насколько сложно написать программу вычисления корней кв. ур. без ошибок, что у многих кодеров волосы дыбом встанут и они почуствуют себя на месте микрософтовских программистов.

Ругают статью наверняка программеры, которых задело "за живое", которые себя узнали. Я похвалю, потому что читал статью как пользователь. Точнее не пользователь, пользователи в организациях сами с кривыми программами не борятся, они сразу к автоматизаторм обращаются, когда программа ведет себя неадекватно (выдает неожиданно непредсказуемый результат) в ответ на введеную информацию, характер которой не был предусмотрен программистом.

Когда я хотел поднять аналогичную тему, то думал о чуть другом, а именно не о том, что в программе не предусмотрена реакция на "внештатные" данные и результат ее неадекватен, а о скорости ее реакции. Порой программы слишком "тормозные", причем настолько, что это шокирует. Чаще всего я сталкивался с тормознутостью экономическими баз данных.
Я когда-то школьникам рассказывал - Соверменный процессор действительно может выполнять около двух простых арифметических операций за один такт, то есть 500Мгц проц может сложить 1000000000 чисел в секунду! Если записать эти числа в столбик, то высота этого столбика получится 10000000 метров или 10 тысяч километров, если число будет примерно сантиметровой величины. Сколько нужно человеку времени, чтобы проделать такое вычисление даже если он будет вооружен калькулятором? Так вот решение на таком компьютере определенных экономических задач занимает от нескольких десятков минут до нескольких часов времени в зависимости от разработчика ПО и загруженности базы. Я уверен, что вооружившись калькулятором, я бы обогнал компьютер, хотя комп должен был бы решить эту задачу за микросекунду. Как программерам удается писать такие тормозные программы?
Абсолютно согласен. Но у меня даже желание как-то слабо выражалось. В действительности тема хороша, но реализация заставляет рыдать (. Чего стоит, уже разчавканный в комментах "пример про среднее". Суть: плохо плохо писать о плохом ;) 23.08.07 20:54  
Автор: kstati <Евгений Борисов> Статус: Elderman
<"чистая" ссылка>
Ну не стОит так драматизаровать. Мне думается, что не взирая... 24.08.07 12:05  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
Отредактировано 24.08.07 12:06  Количество правок: 1
<"чистая" ссылка>
Ну не стОит так драматизаровать. Мне думается, что не взирая на количество любых комментариев, как минимум один из трех задумается и сделает выводы, а это не так уж и мало в рядах программеров зоны ".ru".
Я, признаюсь, как то давно книжку купил, в которой описывались и "правила хорошего тона", и предостережения от ошибок, связанных со стилем, и аргументированно, хотя и не навязчиво объяснялось почему нужно именно так или подобным образом, а другим не следует. Ну приведу самый из "детских" примеров: "Нужно быть осторожнее с классами, одним из свойств которых является указатель, особенно на динамически выделяемую память. Нужно обязательно не забыть реализовать и оператор присваивания, и иницилизацию объектом этого же класса и ...". Книжка не с собой, ее реквизиты потом могу сюда вписать.
Сам за собой не уследишь, надо у юзеров спросить - сколько раз за последний год я горорил "Тем, кто писал эту программу, надо руки поотрубать", "Вешать надо таких программеров за ноги", а бывает и другая любимая фраза "Таким гениям нужно памятник при жизни ставить". Что поделать, без некоторых программ никуда, некоторые навязывают использовать без возможности выбора альтернатив, вот и приходится всеми правдами и неправдами биться с "ветрянными мельницами" и плясать с бубнами, чтоб заставить какую-то прогу работать. Пользователь то он в программировании не рубит, а для руководителя чем программа жирнее и дольше думает, тем она круче, дороже, ценнее. Когда же сам такое видишь, то стыдно немного становится, за людей, которые, видимо, не своим делом занимаются. Давайте писать красиво, во всех отношениях. Давайте писать качественно, на совесть. Давайте думать о тех, кто потом будет использовать эту программу.
*****!!! 23.08.07 05:54   [DamNet, Heller]
Автор: Zef <Alloo Zef> Статус: Elderman
<"чистая" ссылка>
А можно подробнее? 23.08.07 16:47  
Автор: Fighter <Vladimir> Статус: Elderman
<"чистая" ссылка>
5 респектов. 24.08.07 03:39  
Автор: Zef <Alloo Zef> Статус: Elderman
<"чистая" ссылка>
Мат на форуме запрещен ). Имхо - у хороших авторов есть читатели, а у плохих - комментаторы. (т.е. кол-во сообщений кроме короткого "спасибо!" прямопропорционально кривизне статьи) 23.08.07 20:51  
Автор: kstati <Евгений Борисов> Статус: Elderman
<"чистая" ссылка>
С имхо - полностью не согласен. Коротко и красиво ответить не смогу, поэтому рекомендую почитать АБС "Хромая судьба". Там этот вопрос подробно рассмотрен. Там где про Сорокина 24.08.07 17:03  
Автор: Fighter <Vladimir> Статус: Elderman
<"чистая" ссылка>
Не согласен с несогласием ) Почитай Сократа. Тот поди постарше будет. И признан до сих пор. 15.09.07 20:38  
Автор: kstati <Евгений Борисов> Статус: Elderman
<"чистая" ссылка>
Не согласен с Сократом. Он Стругацких не читал. :)) Опять же, кто сказал, что Сократ умнее каждого из нас? ;) 16.09.07 00:10  
Автор: Fighter <Vladimir> Статус: Elderman
<"чистая" ссылка>
лаконично и понятно 23.08.07 07:38  
Автор: kstati <Евгений Борисов> Статус: Elderman
<"чистая" ссылка>
[off] Очень понравилось предложение "Компиляция порождала примерно 10 файлов: 6 EXE и 4 DLL." 22.08.07 20:27  
Автор: Fighter <Vladimir> Статус: Elderman
Отредактировано 23.08.07 12:14  Количество правок: 1
<"чистая" ссылка>
Ну просто отлично. Я в шоке 22.08.07 18:49  
Автор: smartov Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Ну просто отлично. Я в шоке
>>int avg(int a, int b) { return a + (b - a) / 2; }

С каких пор int при делении на 2 стал на результате всегда выдавать int. Или средним арифметическим из 1 и 2 является int? О каких чужих ошибках мы тут говорим, когда свои не видим, еще и других пытаемся учить.

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

float my_avg(float a, float b) { return a/2 + b/2; }

и все! Никаких 28 условий! Никакого переполнения.

Статье незачет.
Я бы вам не доверил реализацию двоичного поиска, например -... 22.08.07 19:51  
Автор: crontab Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> float my_avg(float a, float b) { return a/2 + b/2; }

Я бы вам не доверил реализацию двоичного поиска, например - а там как раз нужно постоянно вычислять среднее двух индексов. a/2 + b/2 - это было бы катастрофой для алгоритма, который должен быть очень быстрым. А надо бы представлять вообще во что это компилируется. Незачет :)
1  |  2  |  3 >>  »  




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach