Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];

Вниз

Методики разработки в условиях нехватки ресурсов.   Найти похожие ветки 

 
Anatoly Podgoretsky ©   (2006-11-22 11:20) [120]

> SlymRO   (22.11.06 10:52) [116]

Где Free за который ты ратуешь?

except
  result:=false;
end;


 
SlymRO   (2006-11-22 11:43) [121]

Плохо смотришь.
const str="Task := TTask.Create(cFormateDisk, s);
try
 if not Self.TaskManager.AddTask(Task) then
   raise Exception.Create("Can""t AddTask");
except
 Task.Free;
 raise;
end;
"
while not See(str) do Read(Post([111]))
Так не кошерно?


 
SlymRO   (2006-11-22 11:45) [122]

Чета пост почикался... продолжение
while not See(str) do Read(Post([111]));


 
Anatoly Podgoretsky ©   (2006-11-22 11:46) [123]

> SlymRO  (22.11.2006 11:43:01)  [121]

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

Ты то не вываливал свой код как эталон, более того ты привел его как опозит вываленому.


 
SlymRO   (2006-11-22 11:58) [124]

Anatoly Podgoretsky ©   (22.11.06 11:46) [123]
там дальше еще есть места где может возникнуть ошибка

не думаю что в оставшемся коде [111]
inc(FEnterCount, 1);
if FAddHistoryFlag then
 Self.History.Add(cFormatDisk, s, NumOperator);
Result := true;

имеется утечка если толко не в Self.History.Add, но это выходит за рамки рассмотрения проблемы


 
вразлет ©   (2006-11-22 11:59) [125]

[33] Sergey Masloff   (11.11.06 22:30)

Еще раз ;-) Несколько - УЖЕ есть. 40 человек таких держать - бессмысленно. Идея создать компактное ядро вокруг которого студенты за 400 у.е будут рисовать рюшечки.


Может проще взять на стройке бригаду таджиков?


 
SlymRO   (2006-11-22 12:09) [126]

вразлет ©   (22.11.06 11:59) [125]
Ненадо... у такжиков тоже свои программеры имеются... думаю найдется и такой который и тебя в DeathMatch перекодит


 
Anatoly Podgoretsky ©   (2006-11-22 12:29) [127]

> SlymRO  (22.11.2006 11:58:04)  [124]

Именно, что за рамки, поэтому не буду говорить, где может возникнуть ошибка.
В тоже время я не знаю, что такое TaskManager.AddTask и как оно реализовано, без этого вообще трудно конкретно говорить.

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

А не по теме, лишь потому что, вываленый код представлен как эталон в необходимости пустого except end и невозможности иначе, как и предыдущий код с TryStrToInt - что и было развеяно участиками обсуждения, я тоже поучаствовал и это тот случай когда надо было привести конкретный код, подверждающий мысль. Если бы на этом было закончено, так нет же вместо одного кривого кода приводится как эталон другой не менее кривой.
Но хоть на этот раз признал свои знания, вот цитата

> так, вершина моего творения :)

ключевое слово "моего"


 
Anatoly Podgoretsky ©   (2006-11-22 12:30) [128]

> вразлет  (22.11.2006 11:59:05)  [125]

И паспорта отобрать :-)
Минимизация Текущих издержек, за счет переноса их в будущее.


 
Курдль ©   (2006-11-22 12:31) [129]


> Sergey Masloff   (11.11.06 13:27)  


Все, что вам нужно - реорганизация команды.
Архитектор, технические лидеры направлений и главное - опытный, пусть даже и дорогостоящий ПМ, желательно имеющий опыт работы в похожих проектах с похожими потребностями. Опытные ПМ-ы умеют очень эффективно балансировать на отношении мотивация/производительность.
При правильном подходе ничей код проверять не надо будет. Линейкой по рукам бить - тоже. Для этого нужно соблюсти два правила:
1. Жесткая формализация ТЗ.
2. Тотальное тестирование.
Ошибки должны выявляться не исследованием чужого кода, а тестированием. Поэтому придется некоторых опытных сотрудников направить на организацию такового.


 
Anatoly Podgoretsky ©   (2006-11-22 12:31) [130]

> SlymRO  (22.11.2006 12:09:06)  [126]

А есть такая нация, где их нет?


 
Jeer ©   (2006-11-22 13:05) [131]


> Anatoly Podgoretsky ©   (22.11.06 12:31) [130]


Пигмеи африканския.
Они до клавы со стула не дотягиваются.


 
Piter ©   (2006-11-22 14:21) [132]

Eraser ©   (22.11.06 2:15) [104]
локальная переменная Task ведь явно лишняя, это еще в [100] ЮЗ заметил )


это не суть важно, здест разговор кажется не об этом? Я после create могу вызвать там какой-нибудь метод и тогда переменная будет не лишняя.

Anatoly Podgoretsky ©   (22.11.06 9:35) [106]
Простейшие коды читать не умеешь, ну тогда запусти Дельфи и не пори чепуху


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

Anatoly Podgoretsky ©   (22.11.06 9:38) [107]
Какая проблема

// Result := false;
try
...
except
 Result := false;
end;


проблема такая, что вы нихрена не поняли. ПЕРЕПИШИТЕ мой код из [103].

Ваши отмазы почему вы не захотите переписать код - меня не интересуют. Если не можете - то и все прозрачно с вами.

Anatoly Podgoretsky ©   (22.11.06 9:40) [109]
Безграмотный код и утечки и AV


если вы отвечаете за слова - то расскажите в чем код беграмотный, где там утечки и тем более AV.


 
Игорь Шевченко ©   (2006-11-22 14:23) [133]

Piter ©   (22.11.06 14:21) [132]

Тебе напомнить про первый пункт правил, так, чтобы почувствовал ?


 
Romkin ©   (2006-11-22 14:25) [134]

Курдль ©   (22.11.06 12:31) [129] Исследование кода позволяет выявить будущие, еще не возникшие ошибки :) Глядишь, и тестировать меньше придется


 
Piter ©   (2006-11-22 14:28) [135]

Игорь Шевченко ©   (22.11.06 14:23) [133]
Тебе напомнить про первый пункт правил, так, чтобы почувствовал ?


а перед этим навести порядок в своих рядах слабо?
Вам не кажется, что оскорбления от модераторов недопустимы?


 
Иксик ©   (2006-11-22 14:29) [136]


> Курдль ©   (22.11.06 12:31) [129]

Я согласен с Курдль.


 
Anatoly Podgoretsky ©   (2006-11-22 14:32) [137]

> Piter  (22.11.2006 14:21:12)  [132]

> а вы вообще не программист, тогда и не лезьте на программисткий форум.

Форум открытый, вход всем разрешет, тебе тоже!


 
Anatoly Podgoretsky ©   (2006-11-22 14:33) [138]

> Piter  (22.11.2006 14:21:12)  [132]

> то расскажите в чем код беграмотный,

Я это пытался делать для тебя все эти годы, но мне уже надоела, поскольку толку нет.


 
Piter ©   (2006-11-22 14:55) [139]

Anatoly Podgoretsky ©   (22.11.06 14:32) [137]
Форум открытый, вход всем разрешет, тебе тоже!


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

Anatoly Podgoretsky ©   (22.11.06 14:33) [138]
Я это пытался делать для тебя все эти годы, но мне уже надоела, поскольку толку нет


как я говорил, меня отговорки не интересуют. Если не можете переписать код в [103] - так и говорим, разговор заканчиваем, ноу праблем.

Если таки попытаетесь переписать, поймете о чем я говорил.

Я даже на последок объясню, в чем фишка. В том, что заранее задается Result := -1; - поэтому задавать это в Except смысла НЕТУ.

Если не задавать заранее Result := -1 - то тогда вам после каждой проверки в else придется задавать. Можно даже схематически привести код, так даже наверное лучше:


Result := -1;
try
 if ... then ...
 begin
   ....
   if ... then
   begin
     ...
     if ... then
     begin
       ...
       Result := ... ;
     end;
   end;
 end;
except
end;


А вы мне его предлагаете заменить на:

try
 if ... then ...
 begin
   ....
   if ... then
   begin
     ...
     if ... then
     begin
       ...
       Result := ... ;
     end
     else
       Result := -1;
   end
   else
     Result := - 1;
 end
 else
   Result := -1;
except
 Result := - 1;
end;


и чем оно лучше? Имхо, первый вариант нагляднее и там нету ничего в except, потому что уже по дефолту задано.


 
Anatoly Podgoretsky ©   (2006-11-22 15:05) [140]

> Piter  (22.11.2006 14:28:15)  [135]

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

Тебе не нравятся сообщения, так не читай, в клиенте поставь игнор, делов то.


 
Anatoly Podgoretsky ©   (2006-11-22 15:07) [141]

> Piter  (22.11.2006 14:55:19)  [139]

> как я говорил, меня отговорки не интересуют. Если не можете переписать код в [103] - так и говорим, разговор заканчиваем, ноу праблем.

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


 
Piter ©   (2006-11-22 15:23) [142]

ну что я могу сказать: взрослый ребенок.
Засим диалог прекращаем в силе его бессмысленности.

Подождем более авторитетных товарищей, может ЮЗ заглянет...


 
Anatoly Podgoretsky ©   (2006-11-22 15:29) [143]

> Piter  (22.11.2006 15:23:22)  [142]

Так я смысла не вижу уже давно, тебя все равно ни какой код никогда не устраивал.


 
ferr ©   (2006-11-22 15:33) [144]

интересная тема, объясните пожалуйста мне лучше :)
1) почему бы не записать
function TCore.Format(const s: string; const NumOperator: integer): integer;
var
Task: TTask;
begin
try
  Task := TTask.Create(cFormateDisk, s);
  if Self.TaskManager.AddTask(Task) then
  begin
    inc(FEnterCount, 1);
    if FAddHistoryFlag then
      Result := Self.History.Add(cFormatDisk, s, NumOperator);
  end;
except
  Result := -1;
end;
end;

так, по-моему, эстетичнее.
2) А разьве правильно обрабатывать все исключения, мне кажется стоит ловить ожидаемые?

P.S. Заведомо интересно чужое мнение. :))


 
Piter ©   (2006-11-22 15:38) [145]

ferr ©   (22.11.06 15:33) [144]
1) почему бы не записать


а что у тебя вернет функция, если например условие:

ferr ©   (22.11.06 15:33) [144]
if Self.TaskManager.AddTask(Task) then


не выполнится? Функция вернет НЕОПРЕДЕЛЕННЫЙ результат. Тебе даже delphi об этом напишет.


 
Anatoly Podgoretsky ©   (2006-11-22 15:39) [146]

> ferr  (22.11.2006 15:33:24)  [144]

Ну объясняли же, например в случае ошибки здесь, получим -1 хотя все остальное выполнено нормальною

    inc(FEnterCount, 1);
except
 Result := -1;
end;

А вот в случае ошибки здесь, имеем утечку памяти

if Self.TaskManager.AddTask(Task) then


 
ferr ©   (2006-11-22 15:39) [147]

сорри, не заметил, спасибо :)


 
Anatoly Podgoretsky ©   (2006-11-22 15:40) [148]

> ferr  (22.11.2006 15:33:24)  [144]

Вот это пропустил

     Result := Self.History.Add(cFormatDisk, s, NumOperator);

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


 
Piter ©   (2006-11-22 15:41) [149]

Чтобы этого не произошло, у тебя для этого условия должно быть:

else
 Result := - 1;


И на условие: "if FAddHistoryFlag then" тоже должно быть:

else
 Result := - 1;


И вообще, на все условия, и чем их больше, тем больше у тебя будет:

else
 Result := - 1;


Не проще ли сразу задать Result := -1 и уже установить его в нужном месте, если туда выполнение вообще доберется?

А в этом случае писать в except result := -1 уже ненужный повтор.


 
SlymRO   (2006-11-23 04:41) [150]

Удалено модератором


 
SlymRO   (2006-11-23 04:43) [151]

Изменение:
Код должен быть переписан:
function MyDoWork(params):integer;
begin
try
  DoWork(result);
except
  result:=-1;
end;
end;


 
Gero ©   (2006-11-23 04:47) [152]

> [132] Piter ©   (22.11.06 14:21)


> а вы вообще не программист, тогда и не лезьте на программисткий
> форум.


> Ваши отмазы почему вы не захотите переписать код - меня
> не интересуют.

> если вы отвечаете за слова

Только лопаткой кидаться не надо!


 
SlymRO   (2006-11-23 05:07) [153]

Удалено модератором


 
KSergey ©   (2006-11-23 06:05) [154]

> SlymRO   (23.11.06 04:41) [150]

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

Хотя это и весьма слабо связано с исходной темой ветки :)


 
SlymRO   (2006-11-23 06:54) [155]

KSergey ©   (23.11.06 6:05) [154]
А как ты думаешь WinAPI работает? Правильно: true/false, INVALID_HANDLE_VALUE/VALID_HANDLE_VALUE - и никаких эксепшинов!
Сам девелопер решает: RaiseLastOSError, чтоб спустить обработку ловушке или обработать самому if then без ненужных юзеру красных Warningов.


 
KSergey ©   (2006-11-23 06:59) [156]

> SlymRO   (23.11.06 06:54) [155]
> А как ты думаешь WinAPI работает? Правильно: true/false,

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


 
SlymRO   (2006-11-23 07:02) [157]

KSergey ©   (23.11.06 6:05) [154]
обрабатывать это все централизованно проще

Не обрабатывать, а утилизировать и корректно? без halt() завершить приложение.
Обработка должна быть в коде в месте знающем о причине, обстоятельствах, месте исключения и готовым к коректному его гашению.
Можно вообще без try код писать. он будет работать в идеальных условиях. при малейшем отклонении от идеальных, ОС выкинет вашу программу к едренефене, а может и сама себе сепуку сделает.


 
SlymRO   (2006-11-23 07:07) [158]

KSergey ©   (23.11.06 6:59) [156]
стандартизованного механизма работы с исключениями

Опять насмешили... WinAPI не стандарт?
KSergey ©   (23.11.06 6:59) [156]
.NET системный ф-ции не стесняются кидать исключения

Дельфи приложение ничего не знает об исключении возникшем в COM объекте написанном на .NET, кроме самого факта исключения и то только при ситуации когда иключение не обработано внутри объекта.


 
KSergey ©   (2006-11-23 07:28) [159]

> SlymRO   (23.11.06 07:02) [157]
> обрабатывать это все централизованно проще
> Не обрабатывать, а утилизировать и корректно? без halt()
> завершить приложение.
> Обработка должна быть в коде в месте знающем о причине,
> обстоятельствах, месте исключения и готовым к коректному
> его гашению.

Я, признаться, не очень понимаю предмета спора (если спор вообще есть).

Если при возникновении ошибки (исключения) для приложения допустимо завершиться - тогда можно вообще не заморачиваться обработкой ошибок и исключей. Однако, в норимальных коммерческих, а тем более серверных приложениях  - это недопустимо.
По поводу места обработки - опять же зависит от ситуации. Но в любом случае важно то, что исключения можно обработать в одном месте (пример - Application.Run() из VCL). Да, не очень информативно (т.к. детали контекста, возможно, потеряны, хотя никто не мешает сделать исключения весьма детальными). А вот обработать коды ошибок всех ф-ций в одном месте - действительно нельзя.

> SlymRO   (23.11.06 07:02) [157]
> обстоятельствах, месте исключения и готовым к коректному
> его гашению.


Я бы заменил на "корректная обработка" :)

> SlymRO   (23.11.06 07:07) [158]
> KSergey ©   (23.11.06 6:59) [156]
> стандартизованного механизма работы с исключениями
> Опять насмешили... WinAPI не стандарт?

WinAPI предоставляет средства для работы с исключениями? Может я чего не знаю?

> Дельфи приложение ничего не знает об исключении возникшем
> в COM объекте написанном на .NET, кроме самого факта исключения

Вранье. В COM - нет исключений. Поверьте уж. Только коды ошибок.


 
Alex_p   (2006-11-23 07:34) [160]

Жалко что тему начатую Sergey Masloff испортили



Страницы: 1 2 3 4 5 вся ветка

Форум: "Прочее";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.84 MB
Время: 0.055 c
15-1164377403
Loginov Dmitry
2006-11-24 17:10
2006.12.17
Весело


2-1164708881
MaXie
2006-11-28 13:14
2006.12.17
Присвоение события


15-1163250575
poganka
2006-11-11 16:09
2006.12.17
ISAPI в Delphi


10-1126883726
TStas
2005-09-16 19:15
2006.12.17
Как ответить экселю "не сохранять"?


2-1164380188
Квэнди
2006-11-24 17:56
2006.12.17
И снова Winamp





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский