没有经验的开发人员忘记考虑的最糟糕的事情是什么?[关闭]


15

作为一个年轻的开发人员,我会发现对于开发高质量应用程序时需要考虑的一些建议很有用。在我的大学课程中,大多数老师都强调输入验证,有些老师则谈到安全问题,但是没有人提到某些其他事情的重要性,例如日志记录。

没有经验的开发人员会犯哪些错误,而这些错误可能导致更有经验的开发人员感到沮丧?


1
我不会将安全性确切地称为“检查表”,安全性必须在设计的所有级别上考虑,而不是事后考虑。安全功能!=安全功能!
比利·奥尼尔

也许“清单”暗示错误的事情。我不是在寻找开发结束时要考虑的事情清单。我很好奇,应该考虑哪些东西你正在开发的应用程序。您是否对我可以重述我的问题有建议?
2011年

@awmckinley:那么您的问题是“我如何开发应用程序”-但是这个问题太广泛了,无法回答。
比利·奥尼尔

@Billy ONeal:刚刚编辑了我的问题。这更有意义吗?
2011年

1
这更有意义,但不幸的是,它所要求的不只是最佳实践清单。建设性的问题确实应该与具体问题有关,或者至少要求答案不仅仅是一句自以为是的小话。
亚伦诺特,2011年

Answers:


12

我发现新开发人员忘记的主要事情是,在现实世界中,他们通常是团队的一部分。这显示为..

  • 检入破坏构建的代码
  • 不重用已经存在的代码
  • 以自己的方式而不是其他所有人的方式来做事情-这使得维护成本很高

这并不是说他们的代码不是孤立地完成,而是他们不再孤立地工作。


+1:从根本上讲,这些都是您要面对的问题。初级编码器可能在编码方面很差,但随后一些经验丰富的编码员在编码方面也很差。主要区别是此类物品。
gbjbaanb

8
  1. 测试。
  2. 测试。
  3. 更多测试。
  4. 源代码控制
  5. 适用于您要定位的任何程序的税种。

在Windows上,这些税是

  • 处理高DPI环境
  • 漫游用户配置文件
  • 快速用户切换
  • 远程桌面(例如,当RDP生效时,您不想使用双缓冲
  • 与分层存储管理完美融合
  • 多台显示器
  • 64位Windows

在几乎每个平台上,您都必须处理:

  • 统一码
  • 本土化
  • 电源管理

对不起,比利。也许我对提问的方式不清楚:我对开发实践(例如源代码控制)的关注并不多。我认为您在此软件开发项目清单中要添加的内容已经很好地涵盖了这一点。。不过,“税收”部分绝对有帮助。
2011年

3
@awmckinley:之所以提出源代码控制的原因是,即使没有一个单独的开发人员,您也无法有效地管理发行版-即使您只是一个单独的开发人员。即使您正在使用发行版n,也需要考虑发行版n + 1。
比利·奥尼尔

5

以我的经验,几乎所有没有经验的开发人员都不会记住的一件事是,您(几乎总是)在商业环境中工作。您的代码必须是好的,但不是完美的。最重要的不是完美,而是您的代码已经发布。

换句话说,在公司破产后的三个月内交付完美的代码对任何人都没有好处。

我认为,这是现实世界中的发展与大学所教授的发展不同的最重要方式之一。


3

真正广泛的问题;详细回答的是...多本书。

这是一个通用的系统定义清单,可帮助您入门-

  • 系统中的关键资源是什么?对它们的需求可能会如何变化?
  • 系统的性能功能是什么,它们可能需要如何增长?
  • 哪些需求区域可能变得不必要和可移动?
  • 是否可能需要具有不同功能的不同版本的系统?
  • 如果确定的变化发生了,对人力和计算机资源有什么影响?
  • 新系统将对现有操作系统产生什么影响?
  • 根据系统的经验,哪些功能领域更有可能需要更改?
  • 系统的未来用户是谁?
  • 系统的未来维护者是什么?
  • 系统的未来用户可以确定的未来增强功能有哪些?
  • 该系统如何适应用户的总体计划,以及他们将如何发展?

1

系统在开发机器和目标机器上的干净分离,以至于不会出现“好,它可以在我的机器上工作”的情况。

您可以多快地重建您的开发机器?

  • 您知道您需要哪些软件包吗?
  • 您是否有按钮解决方案来重建数据库?
  • 您是否有一个按钮解决方案来测试源代码的完整性?

1

我认为它可能是设计方案-即在执行操作之前先考虑要做什么的方法。

太多没有经验的编码人员(请记住您刚开始的时候)喜欢跳进去做一些事情,然后再增加一点,增加一点广告,再增加一点。如果您打算那样做,这种方法就可以工作(毕竟,您可以逐一测试每一点),但是大多数没有经验的编码人员只专注于他们正在编写的部分。在上面。我们都已经看到了像这样进化的代码!

接下来是组织工作,通常他们过于专注于编写的代码,以记住他们的工作方式以及所需的内容。因此,他们忘记捆绑或记录所需的依赖项。他们还倾向于将事情放到哪里掉,上周我不得不批评一个大三学生,他在根目录中检查了他的代码,其中包括3个wsdls,其中2个是相同文件,以及他提交的一组3rd party dll。子目录根目录。代码也没有格式化为您可以想到的任何标准,并且存在多个函数,但从未调用过。

显然,他可以使它正常工作,但它并不整洁,这意味着安装和维护会很麻烦。


1

我认为最大的区别在于编码技术。每个人的方法稍有不同,但是经验不足的开发人员往往会产生以下代码:

  • 不处理边界情况
  • 远远超出了必要
  • 在相关场景中具有不良的性能特征
  • 关注点分离差
  • 缺乏自我保护技术,例如使用const,密封,只读等。
  • 返回数据和数据收集的奇怪方法
    • 这更证明了平台缺乏经验

0

因为您问过最糟糕的事情,所以我的回答如下:

  1. 忘了考虑从间谍软件,恶意软件和特洛伊木马病毒清除开发机器。
  2. 忘记考虑将常规备份保存在不同地理位置的安全存储中。

0

我最大的回忆是记住要为灵活性做计划。在课堂上,要求几乎总是在一开始就提出,并且永远不会改变。在软件中,通常是相反的:您获得了一组模糊的需求,并且需求经常变化(甚至每天变化)。您可以做的最好的事情就是灵活地编码:松散耦合,可以在多种情况下可靠使用的小函数,并尽可能避免硬编码。

随着时间的流逝,您可能会学会:a)最有可能发生变化的事物,相反地,可能不会发生的变化,以及b)如何预期更改请求并为它们进行计划。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.