我正在对初级(也许是高级)软件工程师所犯的常见错误和错误假设进行一些研究。
你坚持时间最长、最终被纠正的假设是什么?
例如,我误解了整数的大小不是标准的,而是取决于语言和目标。说起来有点尴尬,但事实就是这样。
坦率地说;你有什么坚定的信念?你大概坚持了多长时间?它可以是关于一种算法、一种语言、一个编程概念、测试,或者任何关于编程、编程语言或计算机科学的东西。
我正在对初级(也许是高级)软件工程师所犯的常见错误和错误假设进行一些研究。
你坚持时间最长、最终被纠正的假设是什么?
例如,我误解了整数的大小不是标准的,而是取决于语言和目标。说起来有点尴尬,但事实就是这样。
坦率地说;你有什么坚定的信念?你大概坚持了多长时间?它可以是关于一种算法、一种语言、一个编程概念、测试,或者任何关于编程、编程语言或计算机科学的东西。
当前回答
当我刚从大学毕业开始工作时,我希望更多的高级开发人员知道他们在做什么。男孩,我错了....
其他回答
OOP的好处是你可以重用对象,而实际上它是通过创建一个具有相同接口的新对象来重用其余的代码。
实际上,对象可能占代码的2%,因此重用只会给您带来2%的好处。真正的好处是通过创建一个新对象来重用其他98%的代码,从而允许所有其他代码完全不同。现在您重用了98%的代码。把一个东西写为一个对象所花费的时间延长3倍是值得的。
例如,如果你有一个绘图程序,突然有一个你想要绘制的新形状,你只需要改变ShapeObject(同时保持界面相同)。项目中的其他内容都不需要改变。
我认为我应该尽可能地进行抽象。我的脑袋被这个撞了,因为太多交织在一起的小功能。
现在我试着让事情尽可能的简单和分离。重构使事物抽象比预测需要如何抽象要容易得多。
因此,我从开发规则它们的框架转移到完成工作的功能片段。从来没有回头,除了当我想起那段时间,我天真地认为我会是那个开发下一个大东西的人。
我最近才发现在Hello World中执行了超过一百万条指令!我写的c++程序。我从来没有对像一条cout语句这样简单的东西有过如此高的期望
在很长一段时间里,我认为其他人对所有编程概念(设计模式、最新的新语言、计算复杂性、lambda表达式,只要你能想到的)都了如指掌。
阅读博客、Stack Overflow和编程书籍似乎总是让我觉得自己在所有程序员必须凭直觉知道的事情上落后于潮流。
随着时间的推移,我意识到我实际上是在将我的知识与许多人的集体知识进行比较,而不是单个人,这对任何人来说都是一个相当高的标准。现实世界中的大多数程序员都有完成工作所需的知识缓存,并且有不少领域是他们薄弱或完全不了解的。
当然,您可以查看FindBugs和PMD,但这些是我最喜欢的陷阱和技巧(所有Java):
字段没有被覆盖,而是被遮蔽。
没有显式的super。超级访问。
未定义构造函数的类具有隐式零参数构造函数。今年我犯了一个与此相关的实际错误。
要获得对内部类的父类的引用,可以使用“Outer”语法。这“消除方法调用或同步的歧义”。
在c++术语中,类是“它们自己的朋友”,该类的任何实例的私有方法和字段都可以从同一类的任何方法引用,甚至是静态方法。这将使我早期的一些clone()和copy构造函数简单得多。
在扩展类的静态上下文中可以访问受保护的方法和字段,但前提是该类在同一个包中。我很高兴flex.messaging.io.amf不是一个密封的包。