我正在对初级(也许是高级)软件工程师所犯的常见错误和错误假设进行一些研究。
你坚持时间最长、最终被纠正的假设是什么?
例如,我误解了整数的大小不是标准的,而是取决于语言和目标。说起来有点尴尬,但事实就是这样。
坦率地说;你有什么坚定的信念?你大概坚持了多长时间?它可以是关于一种算法、一种语言、一个编程概念、测试,或者任何关于编程、编程语言或计算机科学的东西。
我正在对初级(也许是高级)软件工程师所犯的常见错误和错误假设进行一些研究。
你坚持时间最长、最终被纠正的假设是什么?
例如,我误解了整数的大小不是标准的,而是取决于语言和目标。说起来有点尴尬,但事实就是这样。
坦率地说;你有什么坚定的信念?你大概坚持了多长时间?它可以是关于一种算法、一种语言、一个编程概念、测试,或者任何关于编程、编程语言或计算机科学的东西。
当前回答
Unix和Linux操作系统设计得很好……我可能应该限定这个(!)
首先,这一观点被一些反真理的观点所强化,例如:
每个后续开发的操作系统最终都以对Unix的拙劣重新设计而告终(Lisp也是如此,在那里它更正确)。 构成“Unix哲学”的一系列规则。这并不是说他们错了,而是暗示Unix本身紧跟他们的步伐。
更确切地说,它们设计得很好/做得很好,当然其中一部分确实如此,但即便如此,这也只是相对的判断,相对于一些糟糕的Windows版本。下面是一些做得不好的事情的例子:
配置一团糟,特别平面文件配置不好 C语言在很久以前就应该被(类似D语言的)语言所取代 Shell脚本是精神分裂。它不利于开发,因为它是为快速输入而设计的速记。 目录结构命名不当 GNU工具链是不必要的神秘 一般目的总是胜过特殊目的的信念
总的来说,它们需要不必要的专业知识来操作。或者更确切地说,有大量的知识,而只有适度的理解。
也不全是坏事。Linux在政治上更好,不会被业务需求所破坏,但遗憾的是,在很大程度上,很多技术高地已经失去了。
其他回答
我是一名初出茅庐的年轻开发者,希望从事专业的开发工作,因为这是我所热爱的,以下是我曾经持有的一些观点,这些观点都是我在短暂的经验中学到的,但都是错误的
当你根本不把用户界面和逻辑分开时,你最终会遇到的可怕的混乱是可以接受的,这也是每个人写软件的方式
不存在太多复杂或抽象的东西
一类责任——我从未真正有过这个概念,它对我来说是非常正式的
测试是我在卧室里编写代码时不需要做的事情
我不需要源代码控制,因为它对我所做的项目来说是多余的
开发人员什么都做,我们应该知道如何设计图标和做出漂亮的布局
Dispose并不总是需要结束符
任何类型的错误发生时都应该抛出异常
异常是针对错误情况的,很多时候只返回一个指示失败的值就可以了。我最近才明白这一点,我一直在说这一点,并且在很长一段时间内仍然抛出异常
我可以编写一个完全没有错误的应用程序
. net结构体(c#和VB.NET)是引用类型,就像类一样。
我是在。net 1.0出现之前或之后的某个时刻“收到”这条智慧的(我不知道从哪里来的,它可能完全从我的脑海中冒出来,就像雅典娜从宙斯的额头上冒出来一样),并一直保存着它,直到大约4个月前Jon Skeet对这个概念进行了消除。
感谢乔恩。
附注:与编程无关,但我也相信(直到5分钟前)“阿波罗从宙斯的额头上长成了一个完整的阿波罗”。
我写的所有东西在可预见的未来都会失败。
并不是说一切最终都不会崩溃,而是在我的编程教育早期,当我发现try. catch块…我把所有的东西都包在里面....有些事情,如果失败了,将代表比我的程序处理的更大的问题(例如,北极和南极互换了位置)。
我相信创建程序就像在课堂上教的一样……你和一群人坐在一起,讨论一个问题,想出一个解决方案,等等。相反,现实世界是“这是我的问题,我需要解决它,开始”,十分钟后你又遇到了另一个问题,让你没有真正的时间来有效地计划解决方案。
软件的质量会带来更大的销量。有时确实如此,但并非总是如此。