我正在对初级(也许是高级)软件工程师所犯的常见错误和错误假设进行一些研究。
你坚持时间最长、最终被纠正的假设是什么?
例如,我误解了整数的大小不是标准的,而是取决于语言和目标。说起来有点尴尬,但事实就是这样。
坦率地说;你有什么坚定的信念?你大概坚持了多长时间?它可以是关于一种算法、一种语言、一个编程概念、测试,或者任何关于编程、编程语言或计算机科学的东西。
我正在对初级(也许是高级)软件工程师所犯的常见错误和错误假设进行一些研究。
你坚持时间最长、最终被纠正的假设是什么?
例如,我误解了整数的大小不是标准的,而是取决于语言和目标。说起来有点尴尬,但事实就是这样。
坦率地说;你有什么坚定的信念?你大概坚持了多长时间?它可以是关于一种算法、一种语言、一个编程概念、测试,或者任何关于编程、编程语言或计算机科学的东西。
当前回答
@Kyralessa: It's worth noting that on most processors, in assembly/machine language, it's possible for functions to return someplace other than their caller while leaving the stack in good condition. Indeed, there are a variety of situations where this can be useful. One variation I first saw on the 6502, though it works even better on the Z80, was a print-message routine where the text to be printed immediately followed the call instruction; execution would resume after the zero terminator (or, as a slight optimization when using the Z80, at the zero terminator, since letting the zero byte be executed as a NOP would be cheaper than trying to avoid it).
有趣的是,在许多现代语言中,函数都有一个正常的退出点(将在调用之后恢复执行),但也可以通过抛出异常退出。即使在C语言中,也可以使用setjmp/longjmp来模拟这种行为。
其他回答
我不需要快速重构我的面向对象的代码。马丁·福勒终于睁开了我的眼睛。
我应该一直优化我的代码。这并不是说我在写之前不应该仔细考虑,而是说我应该努力思考如何从每个语句中挤出每一点性能,甚至牺牲可读性。
我想说的是,将日期的year元素存储为2位数字是一种困扰整个一代开发人员的假设。在千年虫问题上浪费的钱是相当可怕的。
如果每一行都计算条件,如果你写这样的代码:
Dim a as Boolean = True
If a Then
Console.WriteLine("1")
a = False
Console.WriteLine("2")
Else
Console.WriteLine("3")
End If
那么输出将是:
1
3
. net结构体(c#和VB.NET)是引用类型,就像类一样。
我是在。net 1.0出现之前或之后的某个时刻“收到”这条智慧的(我不知道从哪里来的,它可能完全从我的脑海中冒出来,就像雅典娜从宙斯的额头上冒出来一样),并一直保存着它,直到大约4个月前Jon Skeet对这个概念进行了消除。
感谢乔恩。
附注:与编程无关,但我也相信(直到5分钟前)“阿波罗从宙斯的额头上长成了一个完整的阿波罗”。