Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Базарная площадь
  
О разделе

Основная страница

Группы обсуждений


Тематический каталог обсуждений

Архив

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  08:16[Войти] | [Зарегистрироваться]
Обсуждение темы:
Можно, но не нужно.


Последнее время я не программирую, а рaзгpебаю зaвалы которые оставили до меня покoления программистов. Чтобы внести минимальное декоративное изменение требуется исправить несколько модулей и потратить несопоставимую по сложности работу по выискиванию всех мест, в которые надо внести изменения.
Дело в том, что тем методы, которые допустимы в примерах, олимпиадах и лабах по программированию, совершенно неприемлемы при создании крупных и долгоживущих прикладных программ.
Предлагаю в этой теме публиковать примеры, как не надо программировать на Delphi, что бы потом не было мучительно больно от встречи с теми, кто исправлял твой код.

Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру


Всего в теме 421 сообщение

Добавить свое сообщение

Отслеживать это обсуждение
<<<... | 221—212 | 211—202 | 201—192 | ...>>>
Всего сообщений в теме: 421; страниц: 43; текущая страница: 22


№ 211   19-05-2008 02:13 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 208« (Geo)
___________________________
чтобы потестировать реализацию алгоритмов Это, вроде, не подходит под определение крупных и долгоживущих проектов, так что можно и забить :o)
 Cep


№ 210   19-05-2008 01:58 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 209« (DRON)
___________________________

Geo:
Кстати, фанатам борьбы со всеми и всяческими варнингами.


DRON:
Правильнее говорить: "фанатам борьбы с включенными варнингами"


Я бы даже уточнил: "фанатам борьбы с не по делу включенными варнингами"... :)


№ 209   19-05-2008 01:31 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 208« (Geo)
___________________________
Кстати, фанатам борьбы со всеми и всяческими варнингами.
Правильнее говорить: "фанатам борьбы с включенными варнингами", потому как иначе мы огребём миллион варнингов на тему UnsafeЧегоТоТам, не актуальных для не .NET. У меня выключены вот эти... и да, я тоже фанат :)
-w-SYMBOL_PLATFORM
-w-UNIT_PLATFORM
-w-GARBAGE
-w-UNSAFE_TYPE
-w-UNSAFE_CODE
-w-UNSAFE_CAST
 DRON


№ 208   19-05-2008 01:19 Ответить на это сообщение Ответить на это сообщение с цитированием
Кстати, фанатам борьбы со всеми и всяческими варнингами. Нужно было по-быстрому сваять тестовый пользовательский интерфейс для одной программки, чтобы потестировать реализацию алгоритмов. Бросил TShellTreeView и огреб регулярный хинт варнинг о том, что компонент явялется платформозависимым. Вот теперь думаю, бороться мне с этим варнингом или просто отключить :D
 Geo


№ 207   17-05-2008 14:02 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 199« (Бел Амор)
___________________________

Но если убрать после цикла присвоение значения Result, то, кроме того, что это будет неправильно по логике (о чём компилятор не знает), мы получим ещё и предупреждение компилятора:

Ну как же не знает, раз даже предупреждает? ;)

А вообще для этого есть while. Тем более, что через while куда красивее код.


№ 206   16-05-2008 11:22 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 203« (Бел Амор)
___________________________

С одной стороны - удобство и факт того, что в VCL это применяется.

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


№ 205   16-05-2008 08:57 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 204« (Бел Амор)
___________________________
И в этом случае совершенно не важно, что там стоит под несработавшим условием: Exit или Break... Действительно имеет место быть (в D2007 тоже), будем знать. Это, наверно, скорее в подводные камни и QC относится...
 Cep


№ 204   16-05-2008 06:05 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 203« (Бел Амор)
___________________________


если же Break заменить на Exit, то предупреждение появится, хотя принципиально ничего не изменилось: Result в обоих случаях может быть не присвоен, поскольку динамический массив может быть нулевой длины...

Более того, в обоих случаях, даже если массив - ненулевой длины, то в случае несрабатывания условия и штатного завершения цикла, переменная цикла, т.е. Result, должна рассматриваться как имеющая неопределённое значение... И в этом случае совершенно не важно, что там стоит под несработавшим условием: Exit или Break...


№ 203   16-05-2008 04:03 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 202« (Cepгей Poщин)
___________________________

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

В этом вопросе наши взгляды полностью совпадают. При полной компиляции проекта не должно быть ни одного предупреждения...
Вообще, причина, которая побудила задать вопрос - следующая... В принципе, этот приём мне известен давно, но до сих пор реально я его не применял. Чисто по психологическим причинам, поскольку сильно восприятие того, что переменная цикла за пределами цикла - вещь ненадёжная... С одной стороны - удобство и факт того, что в VCL это применяется. С другой - некоторые сомнения. А тут в одном вопросе привёл код с использованием этого приёма. Поскольку функция вложенная, не хотелось её раздувать... И как раз забыл ту самую строчку, получил предупреждение, пошёл читать справку. Вроде всё нормально, при выходе по Exit - можно. Но остались некоторые сомнения. Решил уточнить...
Но вопросы ещё остались.
1. Почему-то в перечень безопасных не попал break. Это недосмотр или за этим может что-то стоять?
2. Если приведённый ранее код немного изменить:

var
  Keywords: array of String;

function FindKeyword(Keyword: String): Integer;
begin
  for Result := Low(Keywords) to High(Keywords) do
    if Keyword = Keywords[Result] then
      Break;
end;

то предупреждение не выдаётся, если же Break заменить на Exit, то предупреждение появится, хотя принципиально ничего не изменилось: Result в обоих случаях может быть не присвоен, поскольку динамический массив может быть нулевой длины... Возможно, просто не предусмотрен случай массива нулевой длины, а Exit по условию - предусмотрен...


№ 202   16-05-2008 02:19 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 199« (Бел Амор)
___________________________
Но тут есть некоторые нюансы Нюанс тут один — не нужно оставлять в программе строки на которые выдаются предупреждения. Даже если по логике работы программы

Result := -1;

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


<<<... | 221—212 | 211—202 | 201—192 | ...>>>
Всего сообщений в теме: 421; страниц: 43; текущая страница: 22


Добавить свое сообщение

Отслеживать это обсуждение

Дополнительная навигация:
Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования