我正在对初级(也许是高级)软件工程师所犯的常见错误和错误假设进行一些研究。
你坚持时间最长、最终被纠正的假设是什么?
例如,我误解了整数的大小不是标准的,而是取决于语言和目标。说起来有点尴尬,但事实就是这样。
坦率地说;你有什么坚定的信念?你大概坚持了多长时间?它可以是关于一种算法、一种语言、一个编程概念、测试,或者任何关于编程、编程语言或计算机科学的东西。
我正在对初级(也许是高级)软件工程师所犯的常见错误和错误假设进行一些研究。
你坚持时间最长、最终被纠正的假设是什么?
例如,我误解了整数的大小不是标准的,而是取决于语言和目标。说起来有点尴尬,但事实就是这样。
坦率地说;你有什么坚定的信念?你大概坚持了多长时间?它可以是关于一种算法、一种语言、一个编程概念、测试,或者任何关于编程、编程语言或计算机科学的东西。
当前回答
OOP的好处是你可以重用对象,而实际上它是通过创建一个具有相同接口的新对象来重用其余的代码。
实际上,对象可能占代码的2%,因此重用只会给您带来2%的好处。真正的好处是通过创建一个新对象来重用其他98%的代码,从而允许所有其他代码完全不同。现在您重用了98%的代码。把一个东西写为一个对象所花费的时间延长3倍是值得的。
例如,如果你有一个绘图程序,突然有一个你想要绘制的新形状,你只需要改变ShapeObject(同时保持界面相同)。项目中的其他内容都不需要改变。
其他回答
面向对象不一定比非面向对象好。
我认为OO总是更好的。然后我发现了其他技术,比如函数式编程,并意识到OO并不总是更好。
我需要定义所有的变量,我将使用在我的函数在其开始(Pascal风格)。
我曾经相信我需要考虑我的函数使用的所有资源,并在我开始编码之前定义它们,这可能是因为我的第一门语言是Pascal,这是要求。然后当我转移到C语言时,我会定义只在这些循环之外的循环中使用的临时变量,忽略循环内作用域,只是为了“一切都将在开始时定义”。
我花了几年时间才明白,提前定义所有资源并不是一件容易的事,而且范围本身对代码可读性非常重要。
字节和字符实际上是一回事——“ASCII”只是将字节值映射到屏幕上的符号的一种方式。
阅读关于Unicode的文章真的让我大开眼界(尽管我仍然没有完全理解它)。
适合系统编程的语言必须支持可变变量。
就查询性能而言,SQL WHERE子句中整数的位比较实际上是免费的。
碰巧,对于前50万行左右来说,这在某种程度上是正确的。在那之后,它被证明是完全无联合国的。