我正在研究关于使用异常对代码复杂性的影响的论文。如果我有几千个LOC使用良好的旧错误处理和相同功能的异常,那将是非常好的。我甚至不知道从哪里开始使用谷歌搜索。任何C#,Java,C ++,D项目都足够了。我最好的猜测是在给定版本中切换到异常的项目。任何帮助表示赞赏。
答案 0 :(得分:0)
考虑到在Java和C#中,异常处理对于几乎完整的基本库都是必不可少的,我对此表示怀疑。
Java几乎完全脱离了循环,因为没有输出参数你必须求助于非常奇怪的结构(例如,你要么总是返回Object数组,要么实现具有返回值的类+应返回的值,...) 。
在c#中你理论上可以绕过使用异常并使用错误代码如果忽略基本库,但我仍然怀疑是否有人想要这样编程。对于这两种语言而言,它只是融入了核心概念中。
所以你最好的命名语言是C ++,但是与更现代的实现相比,C ++异常有很多问题 - 使用它们真的没什么乐趣。你可以四处寻找例如Python程序,我可以想象有人编程python而没有例外。
无论如何,它非常不可能(独立于语言;虽然C ++可能是我能想象的唯一一个)找到一个从错误代码更改为异常处理的项目 - 毕竟这几乎是完整的重写..
答案 1 :(得分:0)
我认为你不会找到这样的项目,即使有些项目在某个时间切换,它们仍然会有很大的不同,所以无论如何你都会比较苹果和橘子。论文不应该基于轶事信息,可疑的测试和无根据的结论。
您可以从两个角度来处理此主题。一个是讨论两种错误处理方法的理论含义,并用三线来说明。另一个是,进行一个可能很短(~1000行)的实际情况测试用例的对照实验,并对其进行分析,然后讨论它是否会扩展到更大的系统上。当然,如果你有时间(至少几年)和金钱(至少几百万美元)聘请一群经验丰富的开发人员并为他们提供大规模的问题,你可以收集一些有价值的统计数据。
答案 2 :(得分:0)
不确定它是否合适,但是:
C库中的GTK+使用错误代码,而其{C ++包装器} gtkmm将它们包含在异常中。 (示例:GTK+ g_thread_create() vs gtkmm Glib::Thread::create())两者都是面向对象的。