Re[17]: try-catch
От: Mr. None Россия http://mrnone.blogspot.com
Дата: 12.05.04 05:01
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>Здравствуйте, Mr. None, Вы писали:


MN>>В строчках:

MN>>пример 1 — 14
MN>>пример 2 — 21

Ш>Давай чуть-чуть подредактируем.


Ш>
Ш>ErrCode SomeObj::get_val(int &retVal)
Ш>{
Ш>    // делаем полезную работу, при ошибке делаем return <код ошибки>
Ш>    retVal = ...;
        
Ш>    return ErrOk;
Ш>}

Ш>//...

Ш>int val;

Ш>if( ErrCode code = obj->get_val(val) )
Ш>{
Ш> std::cerr << "Произошла ошибка " << GetErrorDescription(code) << std::endl;
Ш>}
Ш>else
Ш>{
Ш>}
Ш>


Ш>Те же 14 строчек.

Угу плюс необходимость лезть в документацию, чтобы выяснить, почему это val изменяется, когда я его передаю по значению.... ААА это он в функцию принимается по ссылке, ну зашибись!
Я думаю, что вызову бурю негодования, если скажу, что использование передачи параметров в функцию по ссылке, есть дурной стиль. Вот из этого кода: obj->get_val(val) можно сделать предположение, что значение val измениться только по названию функции, а если название другое, то это очень сильно отравит жизнь сопровождающему программисту. Ссылки нужны не для этого. И чтобы сразу прервать желания дискутировать на эту тему — отвечать на замечания в адрес этого высказывания я не буду. Если вы не согласны со мной, почитайте Страуструпа, Мейерса, Голуба — у всех есть статья, глава, совет, посвящённый этому вопросу.

MN>>Реалии современного ИТ-мира таковы, что работа программиста стоит дороже нового процессора.

Ш>У разных людей разные реалии. Тут всё зависит от процессора. Да и программисты бывают китайские.
Средняя стимость приложения у оффшорников (а цены здась самые низкие) примерно около 1500$ — 2000$, рейд программера около 5 баксов в час. Цена сопоставима с ценой нового компьютера, но новый компьюетр устарее через 3 месяца, а через полгода подвергнется обновлению, а данные приложения используются заказчиками годами.
Про большие проекты в серьёздных фирмах я вообще молчу... Даже для наших заказчиков стартовая цена лежит в районе 10000$ — имеется в виду, что если заказчик предложит меньше, то с ним точно разговаривать даже не будут. Вот таковы реалии.

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

Ш>Не всегда проще. Более того, если ты вспомнишь, например, мощность процессора, летавшего недавно на Марс, то поймешь, что в некоторых случаях просто невозможно (кстати, сколько этот процессор стоил, с учетом доставки, а?).
И как часто вы писали ПО, летавшее на Марс?

MN>>Никто не будет платить за доработку программы столько же, сколько за её разработку.

Ш>ХЗ. Всякое бывает.
У нас — да. У них — нет.

MN>>А чтобы дорабатывать программу (читай сопровождать) было проще, она должна быть как минимум понятна и легко читаема сопровождающим программистом.


Ш>Золотые слова. К сожалению, реальность очень часто не следует им.


Это некоторые программисты не следуют им.
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
Re[2]: try-catch
От: Mr. None Россия http://mrnone.blogspot.com
Дата: 12.05.04 05:08
Оценка:
Здравствуйте, Vamp, Вы писали:

V>Хороший пример — оператор new. Почему он бросает исключение, а не возвращает NULL в случае неуспеха? Мне кажется, по двум причинам:

V>1) ситуация достатчно редкая, значит вставлять проверку в виде if после каждого вызова нерационально
V>2) сделать что-либо разумное в этом случае зачастую нельзя — значит, в случае сбоя остается только вывести сообщение и завершить программу. А для этого будет достаточно самого "большого" try в начале программы.

new бросает исключение по следующей причине:
раньше new возвращал 0, но члены комитета по стандартизации языка C++ перед принятием стандарта 1998 года, выполнили анализ (не знаю чего) и пришли к выводу, что очень большое количество ошибок было связано с тем, что программисты не проверяли значение возвращённое оператором new, поэтому было решено принудить программистов обрабатывать эту ситуацию выбрасыванием исключения.
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
Re[3]: try-catch
От: Mr. None Россия http://mrnone.blogspot.com
Дата: 12.05.04 05:16
Оценка:
Здравствуйте, Шахтер, Вы писали:

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


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

Ш>Ошибки ввода пользователя, например. Логично переспросить неверно введённые данные.


А можно, как вариант, выбросить исключение, которое при срабатывании выведет сообщение с предупреждением и будет отловлено кем-то выше, например методом, который открывает окошко ввода.
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
Re[4]: try-catch
От: Павел Кузнецов  
Дата: 12.05.04 05:24
Оценка:
> Ш>Ошибки ввода пользователя, например. Логично переспросить неверно введённые данные.
>
> А можно, как вариант, выбросить исключение, которое при срабатывании выведет сообщение с предупреждением и будет отловлено кем-то выше, например методом, который открывает окошко ввода.

Можно. Только, когда ты захочешь по ходу ввода выдавать тул-тип о том, что данные введены неправильно, может статься, что придется все перепроектировать, избавившись от исключений.
Posted via RSDN NNTP Server 1.9 alpha
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[5]: try-catch
От: Mr. None Россия http://mrnone.blogspot.com
Дата: 12.05.04 05:35
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

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


Ну почему? Одно другому не мешает, но это к теме уже не относится.
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
Re[18]: try-catch
От: Шахтер Интернет  
Дата: 13.05.04 00:37
Оценка:
Здравствуйте, Mr. None, Вы писали:

Ш>>Те же 14 строчек.

MN>Угу плюс необходимость лезть в документацию, чтобы выяснить, почему это val изменяется, когда я его передаю по значению.... ААА это он в функцию принимается по ссылке, ну зашибись!
MN>Я думаю, что вызову бурю негодования, если скажу, что использование передачи параметров в функцию по ссылке, есть дурной стиль. Вот из этого кода: obj->get_val(val) можно сделать предположение, что значение val измениться только по названию функции, а если название другое, то это очень сильно отравит жизнь сопровождающему программисту. Ссылки нужны не для этого. И чтобы сразу прервать желания дискутировать на эту тему — отвечать на замечания в адрес этого высказывания я не буду.

MN>Если вы не согласны со мной, почитайте Страуструпа, Мейерса, Голуба — у всех есть статья, глава, совет, посвящённый этому вопросу.


А почему вы решили, что я их не читал?

MN>>>Реалии современного ИТ-мира таковы, что работа программиста стоит дороже нового процессора.

Ш>>У разных людей разные реалии. Тут всё зависит от процессора. Да и программисты бывают китайские.
MN>Средняя стимость приложения у оффшорников (а цены здась самые низкие) примерно около 1500$ — 2000$, рейд программера около 5 баксов в час. Цена сопоставима с ценой нового компьютера, но новый компьюетр устарее через 3 месяца, а через полгода подвергнется обновлению, а данные приложения используются заказчиками годами.
MN>Про большие проекты в серьёздных фирмах я вообще молчу...

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

MN>Даже для наших заказчиков стартовая цена лежит в районе 10000$ — имеется в виду, что если заказчик предложит меньше, то с ним точно разговаривать даже не будут. Вот таковы реалии.


Программы пишутся не только для PC.

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

Ш>>Не всегда проще. Более того, если ты вспомнишь, например, мощность процессора, летавшего недавно на Марс, то поймешь, что в некоторых случаях просто невозможно (кстати, сколько этот процессор стоил, с учетом доставки, а?).
MN>И как часто вы писали ПО, летавшее на Марс?

Это конфиденциальная информация.

MN>>>Никто не будет платить за доработку программы столько же, сколько за её разработку.

Ш>>ХЗ. Всякое бывает.
MN>У нас — да. У них — нет.

Не будьте столь категоричны.

MN>>>А чтобы дорабатывать программу (читай сопровождать) было проще, она должна быть как минимум понятна и легко читаема сопровождающим программистом.


Ш>>Золотые слова. К сожалению, реальность очень часто не следует им.


MN>Это некоторые программисты не следуют им.


Некоторые???
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[19]: try-catch
От: Mr. None Россия http://mrnone.blogspot.com
Дата: 13.05.04 03:43
Оценка:
Здравствуйте, Шахтер, Вы писали:

MN>>>>Реалии современного ИТ-мира таковы, что работа программиста стоит дороже нового процессора.

Ш>>>У разных людей разные реалии. Тут всё зависит от процессора. Да и программисты бывают китайские.
MN>>Средняя стимость приложения у оффшорников (а цены здась самые низкие) примерно около 1500$ — 2000$, рейд программера около 5 баксов в час. Цена сопоставима с ценой нового компьютера, но новый компьюетр устарее через 3 месяца, а через полгода подвергнется обновлению, а данные приложения используются заказчиками годами.
MN>>Про большие проекты в серьёздных фирмах я вообще молчу...

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

Ш>Программы пишутся не только для PC.

Вы можете не поверить, но я представляю себе этот зоопарк вычислительных платформ, который существует в мире (от кластерных систем до PDA). И вы можете не поверить, но я писал не только для PC под M$ Windows. Но при этом я делаю поправку, что несмотря на это лидером в ИТ-бизнесе является как раз связка PC + M$ Windows. И большинство задач за которые платят реальные деньги решаются на этой платформе (иначе бы M$ не стала монополистом, а мальчик Билли не стал бы самым толстым миллиардером). При этом я не вижу как всё это связано с моим предыдущим высказыванием, я привёл минимальные цены на заказное ПО в России для самой распространённой платформы, где конкуренция просто дикая. Для специфичных платформ цены будут на порядок выше (поверьте мне — я писал для экспериментальной платформы с экспериментальной ОС-кой, заказчик платил даже за моё обучение, а не только за заказ).

MN>>>>Никто не будет платить за доработку программы столько же, сколько за её разработку.

Ш>>>ХЗ. Всякое бывает.
MN>>У нас — да. У них — нет.

Ш>Не будьте столь категоричны.


Хорошо, поскольку я работал с иностранными заказчиками, находясь при этом исключительно в Новосибирске, и могу полностью не ориентироваться в этом вопросе. Давайте спросим у наших коллег, работающих за границей. Что они думают по этому вопросу?
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
Re[20]: try-catch
От: Шахтер Интернет  
Дата: 13.05.04 04:57
Оценка:
Здравствуйте, Mr. None, Вы писали:

MN>Вы можете не поверить, но я представляю себе этот зоопарк вычислительных платформ, который существует в мире (от кластерных систем до PDA). И вы можете не поверить, но я писал не только для PC под M$ Windows.


Замечательно.

MN>Но при этом я делаю поправку, что несмотря на это лидером в ИТ-бизнесе является как раз связка PC + M$ Windows.


Да нельзя смешивать всё в одну кучу. Есть масса направлений, где PC + M$ Windows не ночевали и ночевать не будут. Есть оборудование, которое ставится один раз и работает до тех пор, пока изоляция не сгниёт на проводах. Никакой железный апгрейд невозможен -- только флеш перепрошивается.

MN>И большинство задач за которые платят реальные деньги решаются на этой платформе (иначе бы M$ не стала монополистом, а мальчик Билли не стал бы самым толстым миллиардером). При этом я не вижу как всё это связано с моим предыдущим высказыванием, я привёл минимальные цены на заказное ПО в России для самой распространённой платформы, где конкуренция просто дикая. Для специфичных платформ цены будут на порядок выше (поверьте мне — я писал для экспериментальной платформы с экспериментальной ОС-кой, заказчик платил даже за моё обучение, а не только за заказ).


Я, честно говоря, уже потерял нить в рассуждениях.

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


Вы можете у меня спросить. Отвечу: бывает всякое. Вообще, представление о том что за границей умеют считать деньги несколько преувеличено.
... << RSDN@Home 1.1.0 stable >>

Удалено избыточное цитирование. -- ПК
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.