我正在对初级(也许是高级)软件工程师所犯的常见错误和错误假设进行一些研究。

你坚持时间最长、最终被纠正的假设是什么?

例如,我误解了整数的大小不是标准的,而是取决于语言和目标。说起来有点尴尬,但事实就是这样。

坦率地说;你有什么坚定的信念?你大概坚持了多长时间?它可以是关于一种算法、一种语言、一个编程概念、测试,或者任何关于编程、编程语言或计算机科学的东西。


当前回答

面向对象始终是设计源代码的最佳方式,而且永远都是。

其他回答

PHP的mysql_fetch_row是从执行的SQL查询中检索数据的唯一方法。

老实说,我编写了一个完整的web应用程序,而没有使用mysql_fetch_array,并且每次我想要更改函数以添加额外的列时都必须更改一堆数字。

通过实现客户想要的东西来满足客户——不幸的是,这意味着客户知道他想要什么。

唯一的本地化/国际化问题是翻译消息。

我曾经认为所有其他语言(我没有语言环境的概念)在各个方面都像英语,除了单词和语法。因此,要本地化/国际化一个软件,您只需要让翻译器翻译显示给用户的字符串。然后我开始意识到:

有些语言是从右向左书写的。 一些脚本使用上下文塑造。 日期、时间、数字等的格式有很大的变化。 程序图标和图形可能对某些人群毫无意义或具有冒犯性。 有些语言有不止一个“复数形式”。 ...

即使在今天,我有时也会读到令我惊讶的国际化问题。

:

for (int i = 0; i < myObj.variable; i = i + 1)

优化为:

int j = myObj.variable; 
for (int i = 0; i < j; i = i + 1)

哇,当我意识到它们每次都在运行时,我停止在j的地方放入函数调用!

原因:

for (int i = 0; i < myObj.variable; i = i + 1){ 
    if (function_argument == NULL){ 
        myObj.variable++; 
    } else { 
        printf("%d", myObj.variable);
    }
}

并不等同于:

int j = myObj.variable;
for (int i = 0; i < j; i = i + 1){ 
    if (function_argument == NULL){ 
        myObj.variable++; 
    } else { 
        printf("%d", myObj.variable);
    }
}

任意的例子,但是您可以看到优化将如何改变执行。

我可以阅读,可以完成任何工作。