如何区分普通软件和非普通软件?[关闭]


11

那么真正使程序变得微不足道的是什么呢?

在编程讨论中经常使用“除非其琐碎的软件”。从某种意义上说,我觉得它很模糊,因为我无法真正确定“某物是必不可少的,因为它的非平凡软件”或“它是非平凡的软件,因为某物变得非常必不可少”。

例如,很多时候关于单元测试的问题,我听说“除非您需要进行单元测试这很琐碎”。


9
从与我合作过的一些程序员看来,我认为对他们而言,区别在于“您的代码微不足道;我的代码并非如此”。
PSU

您能否提供一个编程讨论,在其中可以看到该引用?答案似乎有不同的解释。
Steven Jeuris 2011年

检查更新的问题。
NVM

Answers:


12

我要走到这里说:

一个琐碎的程序是不会直接影响业务的程序。

一家制造公司会认为其会计软件微不足道,但控制移动沸腾钢的机械臂的软件至关重要。他们可以处理前者的错误和低支持率,而后者则不能。如果有问题,他们现在需要解决。


虽然,另一个答案有更多要点,但我最喜欢这个答案。我问这个问题是因为我不确定我所做的工作是否微不足道,这是确定它是否被“业务”视为微不足道的确定方法。对于前。琐碎的软件无需进行单元测试就可以逃脱现实,它实际上并不依赖于代码行或复杂性。重要的是它是否对业务至关重要。
NVM

+1,好点。对于什么算是“琐碎的” ,企业霸主有时会有非常不同的想法。我在回答中添加了一些内容以反映这一点。
FrustratedWithFormsDesigner

+1-我认为这个答案最能描述问题中所用术语的上下文。另一个“更高点的答案”是准确的,但仅在一般情况下。我敢肯定,考虑到这一点,它将在投票中超过它。
乔尔·埃瑟顿

2
当软件开发人员说微不足道时,他们通常指的是软件的复杂性,而不是业务影响。将某些文件从A复制到B的脚本是微不足道的,但如果不起作用,可能仍会直接影响业务。
JacquesB

16

我认为该声明的最普遍意图是使程序具有以下特征:

  • 它很小。
  • 寿命短。
  • 无需进一步扩展。
  • 只有一名开发人员。

2
+1,所有这些都是至关重要的。不幸的是,在需求不断变化的世界中,有时您不得不将“琐碎的”软件扩展到其自然寿命之外。
l0b0

1
就LOC而言小,就编译二进制大小而言就小,就开发它而言所花费的时间就小?另外,我认为寿命短并不意味着琐碎,琐碎并不意味着短寿命。我看到过这样的情况:仅开发6个月的软件的开发时间至少是其两倍,并且是至关重要的桥梁系统。我见过数据转换系统只使用过一次,但是已经开发了一年多,而且远非平凡。而像Minesweeper这样的琐事似乎使用寿命很长。
FrustratedWithFormsDesigner

@FrustratedWithFormsDesigner:很小,一个100x100px的课程窗口。; p我的意思是,小到必须编写的代码行中,这与开发它所花费的时间成比例。寿命不是必需的,您是对的,但是在讨论更高级的方法还是简单的方法时,寿命通常是一个特征。
Steven Jeuris 2011年

我不同意低LOC总是意味着微不足道。有时,程序中最复杂的部分,最难解决的部分,最棘手的算法都适合于<20行代码。而一个程序通常包含成百上千行自动生成的getter / setters,那么,即使它甚至不需要开发人员来创建它,它也不是那么简单吗?
FrustratedWithFormsDesigner

1
@FrustratedWithFormsDesigner:我相信您对问题的理解与我不同。我的答案与决定一个简单的解决方案还是一个复杂的解决方案有关。您的答案涉及要解决的“困难”与“容易”问题。OP的问题也许应该澄清一下。
史蒂文·杰里斯

14

通过完全丢弃二进制文件和源代码。如果有人注意到,那不是小事。


6
+1让我发笑,这也很有意义。
NVM

8

琐碎的是...

  • 已经存在的东西,那么为什么要重新发明轮子呢?
  • 通过将一些其他程序一起编写脚本或编写一些代码来大量使用现有库来完成需要完成的工作,可以轻松构建这些对象。
  • 一般的CS本科生可以做中小型家庭作业。
  • 有详细要求的东西,很容易放在鸡尾酒餐巾纸上。
  • 您可以在分心/醉酒/空闲时间为4或5分钟的块中编写一些代码。
  • 可以使用简单的代码生成工具创建的内容。

在公司环境中,我将添加以下内容:

  • 商业用户不介意等待一段时间的问题。
  • 内部使用的东西,没有IT的官方支持。
  • 在进行资源计划和调度时,业务会优先考虑这些优先事项。

4

我将普通程序定义为可以合理编码的程序:

  • 一坐。
  • 作为单个文件/模块(假设您不是使用Java或某种语言来强制进行模块的超细粒度拆分)。
  • 由任何体面的“万事通”程序员,而不是专家。

3

这是我的“琐碎”程序示例:

  1. 我设置了一个“虚拟”项目并开始进行编码,因此我可以尝试一些技术或示例代码。无意将其部署或展示给任何人。
  2. 为技术演示而编写的演示代码。
  3. 一个“一次性”。我的意思是我必须构建一次才能使用的快速应用程序,因为这是一种奇怪的情况,必须以某种方式移动数据,或者将其立即替换为更永久的数据。

3

繁琐的软件不存在,它是当你听到要求,这将是事情繁琐,而实际上它总是不繁琐

这是我十年前在Usenet上看到的一句话,现在更有意义了。

软件解决方案的复杂度与解释该怎么做的复杂度成反比。- 未知


-1

该程序只是一堆getter / setter方法。没有编程逻辑。也许有些循环。

那是我琐碎的定义。


-1

我们的工作定义是“没有其他东西依赖”。

不幸的是,有一些琐碎的原型变成了琐碎的生产产品。


-3

我也听说过,它是在程序对总体项目计划的影响中使用的。如果某个规格没有改变产品交付的时间表,那么它就属于琐碎的标签。

我认识一个程序员,他倾向于使用“琐碎的”作为“甚至不值得讨论”的同义词。

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.