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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

Тема открыта по просьбе жителей Королевства и посвящена обсуждению вопросов оптимизации кода. Выставляйте свои лучшие и худшие тексты и не стесняйтесь их обсуждать. В споре рождается истина. Или, по крайней мере, оптимизация.

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

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

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


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

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

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


Смотрите также обсуждения:
Тестирование проекта. Отладка.
  • Подводные камни
  • Централизованная обработка ошибок
  • Бета-тестирование
  • Давайте учиться на ошибках.
  • Почему программисты допускают ошибки?
  • Автоматизированные тесты для GUI
  • О системах контроля ошибок

  • <<<... | 387—378 | 377—368 | 367—358 | ...>>>
    Всего сообщений в теме: 737; страниц: 74; текущая страница: 37


    № 377   20-01-2007 16:13 Ответить на это сообщение Ответить на это сообщение с цитированием
    По моему Ins прав. Многие привыкают присваивать в начале функции значение Result. Во многих случаях это правильный стиль. Поэтому в приведенном выражденном случае делают присвоение автоматически.
    Действие по шаблону. Не слишком подходящему в данном случае, но в принципе правильному.


    № 376   20-01-2007 15:14 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 375« (Geniepro)
    ___________________________
    >>> Если бы этот программист хоть немного поработал на функциональных языках и привык к тому, что повторно присвоить значение переменной нельзя <...>
    Интересный момент. Я на функциональных языках не работад (Excel не в счет). Естественно, я привык иногда загонять в переменную промежуточные расчеты (для лучшей читаемости кода и, возможно, для поиска глюков при отладке). Однако такой способ реализации функции и у меня вызывает отторжение.

    Не убедительно ;-)
     Geo


    № 375   20-01-2007 13:57 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 366« (Geo)
    ___________________________

    Почему же чаще встречается первый вариант? Кто-нибудь задумывался над таким вопросом?

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

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

    :о))


    № 374   20-01-2007 12:05 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 373« (Ins)
    ___________________________
    >>> В том то и дело, что ну никак не нарвемся! :)
    Компилятор, как я понимаю, выдает свой варнинг исходя из того, что инициализация переменной Result происходит в операторе case, в котором нет раздела else. Соответственно, при таком подходе можно упустить какой-либо вариант. Вычислением логических выражение и определением их полноты компилятор не занимается.

    Честно говоря, меня это устраивает. Пусть он проверяет синтаксис и быстро компилирует это дело в EXE. А смыслом получившегося кода я займусь сам. А если представить себе противоположное... Компилятор, который работает два часа, чтобы в конце концов определить, что такая-то потенциальная ошибка на самом деле в данной программе никогда не наступит ;-)
     Geo


    № 373   20-01-2007 11:46 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 372« (Geo)
    ___________________________

    Компилятор просто честно и благородно предупреждает, что можем нарваться.
    Ага, честно. В том то и дело, что ну никак не нарвемся! :)

    А те, кому это давит на нервы, могут варнинги отключить ;-)

    О, это как раз про меня! ;)
    Так и поступаю, использую директивы {$WARNINGS ON} и {$WARNINGS OFF}
     Ins


    № 372   20-01-2007 11:38 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 371« (Ins)
    ___________________________
    А что плохого в этом варнинге? Компилятор просто честно и благородно предупреждает, что можем нарваться. Он (в отличие от программиста) не может понять, что третьего не дано ;-) А работе программы наличие варнинга при компиляции, насколько мне известно, ничуть не мешает.

    А те, кому это давит на нервы, могут варнинги отключить ;-)
     Geo


    № 371   20-01-2007 10:59 Ответить на это сообщение Ответить на это сообщение с цитированием
    Кстати, очень неприятно, что Delphi выдает
    [Warning] Unit1.pas(31): Return value of function 'Max' might be undefined
    на такую конструкцию

    function Max(a, b: Integer): Integer;
    begin
      case a > b of
        true: Result:=a;
        false: Result:=b;
      end;
    end;



    То же самое будет с другими перечислимыми типами, все значения которых можно перечислить в одном case. Приходиться либо использовать описанный Geo прием, либо вставлять в case..end else, что мне кажется не менее неестественным.
     Ins


    № 370   20-01-2007 10:54 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 367« (Антон Григорьев)
    ___________________________
    >>> А вообще - как-то мало я с чужим кодом работаю...
    Ну, я такое достаточно часто встречал, изучая примеры на VBA (Excel, Access). Будем считать, что это еще одна диверсия Микрософта против устоявшейся культуры программирования ;-)

    Ответ на »сообщение 368« (Ins)
    ___________________________
    >>> А я первый вариант использую часто <...>
    Это совсем другой случай. Задаем одно значение и потом проверяем все условия выхода с этим значением. Если не вывалились и дошли до конца, значит реультат прямо пртивоположный. Там это оправданная методика, позволяющая сделать код более читаемым. Я же говорю про абсолютно симметричный случай из двух вариантов. Будем считать, что виновата привычка ;-)

    Ответ на »сообщение 369« (panda)
    ___________________________
    >>> Потому что Вы плохо отстреливаете тех, кто так пишет ;)
    И чем я их буду отстреливать? МБР что ли? Никакое другое оружие просто не дострелит до США и не сможет поразить программистов Микрософта ;-)

    Господа, спасибо! Вы меня успокоили. А то я уже волноваться начал, что я такой дурак и не понимаю таких простых вещей. Оказалось, что дурак все же не я :-D
     Geo


    № 369   20-01-2007 10:35 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 366« (Geo)
    ___________________________

    Почему же чаще встречается первый вариант?
    Потому что Вы плохо отстреливаете тех, кто так пишет ;)
    Я вот хорошо отстреливаю, поэтому мне обычно второй вариант показывают :)


    № 368   20-01-2007 10:29 Ответить на это сообщение Ответить на это сообщение с цитированием
    А я первый вариант использую часто. Только немного не в таком виде. Допустим есть функция, которая выполняет какие-либо действия и возвращает true, если все прошло хорошо и false, если где-то по дороге произошел сбой.

    function SomeFunc: Boolean;
    begin
      Result:=false;
      {далее идет сложный алгоритм, построенный либо на if-then, либо на обработке исключений, и когда мы добираемся до конца алгоритма - выставляем Result:=true}
    end;


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


    <<<... | 387—378 | 377—368 | 367—358 | ...>>>
    Всего сообщений в теме: 737; страниц: 74; текущая страница: 37


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

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

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

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

    Перейти на конкретную страницу по номеру
      
    Время на сайте: 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» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

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