Существуют ли проекты с открытым исходным кодом, которые реализуют ту же функциональность с и без исключений? - PullRequest
0 голосов
/ 20 июня 2011

Я работаю над диссертацией о влиянии использования исключений на сложность кода.Было бы здорово, если бы у меня было несколько тысяч LOC, которые используют старую добрую обработку ошибок и исключения для той же функциональности.Я даже не знаю, где начать поискать в Google.Подойдет любой проект на C #, Java, C ++, D.Мое лучшее предположение - проект, который переключился на исключения в данной версии.Любая помощь приветствуется.

Ответы [ 3 ]

0 голосов
/ 20 июня 2011

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

Вы можете подойти к этой теме с двух сторон.Один из них - обсудить теоретические последствия двух подходов к обработке ошибок и проиллюстрировать это с помощью трех строк.Другой - провести контролируемый эксперимент, написав, вероятно, короткий (~ 1000 строк) тестовый сценарий из реальной жизни и проанализировать его, а затем обсудить, будет ли он масштабироваться в более крупных системах.И, конечно, если у вас есть время (по крайней мере, пару лет) и деньги (по крайней мере, пара миллионов долларов), чтобы нанять группу опытных разработчиков и предоставить им масштабные проблемы, вы можете собрать некоторые ценные статистические данные.

0 голосов
/ 20 июня 2011

Не уверен, что подходит, но:

GTK + , библиотека C, использует коды ошибок, тогда как gtkmm , ее оболочка C ++, заключает их в исключения. (Пример: GTK + g_thread_create () vs gtkmm Glib :: Thread :: create () ) Оба являются объектно-ориентированными.

0 голосов
/ 20 июня 2011

Учитывая, что как в Java, так и в C # обработка исключений важна практически для полных базовых библиотек, я сомневаюсь в этом.

Java практически полностью вышла из цикла, потому что без параметров out вам приходится прибегать к чрезвычайно странным конструкциям (например, вы либо всегда возвращаете массивы Object, либо реализуете классы с возвращаемым значением + значением, которое следует вернуть,..).

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

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

В любом случае это крайне маловероятно (независимо от языка; хотя C ++, вероятно, единственный, где я вообще мог бы это представить), найти.проект, который изменился с кодов ошибок на обработку исключений - в конце концов это было бы в значительной степени полное переписывание ..

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