软件工程

针对在系统开发生命周期中工作的专业人士,学者和学生的问答

12
如何处理客户提出的“您能否再添加几个字段”类型的请求?
通常,我们只需要一个客户想要的字段功能请求。这充其量只会使应用程序的代码混乱。通常,当我们在添加字段几个月后查看他们的数据库时,我们可以看到他们实际上甚至没有使用额外的字段。另外,它是一个非常老的应用程序,因此添加单个字段需要更改多个代码,更改报告,并确保它不会影响其他不需要查看该字段的客户。 我们如何确保客户实际需要这些功能请求? 我们如何礼貌地说“您真的不需要那个”? 目前,我们开始对某些功能请求收取费用。(以前,功能请求通常是免费的)我们还能做点什么?

5
为什么期望所有浏览器都支持相同的标准是不现实的?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 8年前关闭。 理想情况下,我们将使用不同的浏览器来支持相同的标准和代码,从而在所有浏览器上产生相同的结果。 那还没有发生。原因为何?

4
低暂停GC背后的算法是什么?
某些语言(例如Java)引入了低暂停GC。 这些GC可以完成大部分工作,而不会暂停整个世界。这显然是一个相当棘手的问题,因为它需要在线程修改内存时对其进行分析,从而导致可以在进程开始时使用该数据,而在完成时不再使用该数据,或者似乎是垃圾的数据,但是因为参考已移动到内存中,并且从未出现在GC所寻找的位置。 因此,基本上来说,其背后的算法是什么? 研究论文或真正技术文章的链接将被视为有效答案,因为该主题确实是技术性的。

2
所有者应如何管理对开源项目的捐款?
当管理一个开源项目(使用像GitHub这样的服务)时,人们将如何回应以下内容: 有人已经提交了补丁,以添加新功能或解决问题。发生以下情况之一: 源代码不符合一种或多种命名约定等。 我认为可以以某种方式改进源代码。也许使用简单得多的源就可以达到相同的效果,或者可能还需要另一个有用的功能。 Q1。我可以更改提交的来源吗?(在GitHub上可能吗?) Q2。是否应按照提交准则拒绝所有此类提交? Q3。如果对第二季度是肯定的,那么一个实施得不好的真正整洁的想法该怎么办?我可以继续做自己的事吗? 我想鼓励大家做出贡献,但同时保持一定的标准也很重要。

3
如何进入高级函数式编程
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 首先我很抱歉,如果这不是该问题的正确答案,但是我认为,CS。不适用于StackOverflow,这也不是正确的答案。 我真的很喜欢函数式编程,我认为我是F#的中级人员,并且对Haskell的基本概念非常了解-是的,我想我知道/也很清楚Monad是什么。 现在,我真的很想将其带到一个新的高度,并想了解所有关于函子和东西的话题。我只是不知道从哪里开始。 阅读有关Lambda微积分的信息吗?范畴论?我俩都知道一点,但我不认为这是正确/最快的启蒙方式。 也许您可以给我一些提示。 PS:我不怕数学,也不会轻易对练习感到沮丧,但是我更喜欢一些介绍/文本,您可以在其中放置一些代码,因为这样您可以立即获得反馈。

4
如果我考虑到用户的故意错误行为,我是否会过度设计?
如果我添加了针对用户的故意不当行为的保护措施(轻描淡写),如果用户可能遭受的伤害与我的代码无关,是否过度设计? 为了澄清,我将公开一个简单的JSON RESTful服务,如下所示: GET /items - to retrieve list of user's items PUT /items/id - to modify an item POST /items - to add a new item 该服务本身并不旨在通过浏览器使用,而只能从由用户控制的第三方应用程序(例如电话应用程序,桌面应用程序等)中使用。同样,服务本身应该是无状态的(即无会话的)。 身份验证通过SSL上的基本身份验证完成。 我说的是这样一种可能的“有害”行为: 用户在浏览器中输入GET网址(没有理由,但是...)。浏览器要求基本身份验证,对其进行处理,并为当前浏览会话存储身份验证。用户无需关闭浏览器即可访问恶意网站,该网站具有恶意CSRF / XSRF javascript,可对我们的服务进行POST。 上述情况极不可能发生,并且我知道从业务角度来看,我不必担心太多。但是为了改善这种情况,您是否认为如果JSON POST数据中也需要用户名/密码,这会有所帮助吗? 还是应该完全放弃基本身份验证,放弃GET,只使用其中包含授权信息的POST / PUT?由于通过GET检索信息也是敏感的。 另一方面,使用自定义标头是否考虑过纯REST实现?我可以删除基本身份验证,并使用自定义标头。这样,至少可以避免来自浏览器的CSRF攻击,并且使用该服务的应用程序将在自定义heather中设置用户名/密码。这种方法的缺点是,现在无法从浏览器使用该服务。

3
我需要处理通过反射调用私有方法的情况吗?
创建库时,当不是由同一类的其他方法调用,而是由其他库通过反射调用时,我是否必须确保私有方法必须按预期工作? 例如,如果私有方法private DoSomething(int number)期望: number 是一个非零的正整数,并且: 私有变量string abc不是null也不是空字符串, 和完全的,丑陋的失败,如果这两个条件不匹配,我必须处理这些故障,即使我知道,在类的所有方法将 always¹分配非空值abc调用之前DoSomething,并通过这种积极的非零整数方法? 换句话说,不是通过反射进行不安全调用保护的代码可以被认为是低质量代码,还是属于使用反射来确保调用不会中断任何内容的调用方? 注意:我的问题仅涵盖一组标准库。这不包括必须高度安全的代码(即,当有人可能通过使用反射来使其表现出意外行为或崩溃时感兴趣)。 ¹因为正确记录了该类,所以因为有足够的单元测试来确保任何其他开发人员都不会破坏此方法,等等。

3
资产和资源有什么区别?
我使用了多个IDE,并创建了多个默认项目。创建后,我会找到为我创建的文件夹结构。有时我会看到一个Resources文件夹,有时是Assets文件夹,有时两者兼有。实际上有(标准)差异吗?

8
是否可以仅由编辑者构建高质量的网站,而无需了解HTML?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 从苹果到微软再到谷歌,许多大公司都在投入越来越多的钱来创建工具,使任何人都可以使用所见即所得的编辑器来创建网站。 例如,我刚从Adobe收到的这封电子邮件: 像Adobe®InDesign®布局一样轻松快捷地构建网站。 该应用程序的代号为“ Muse”,目前处于测试版状态,是一项新技术,使图形设计人员可以使用熟悉的,自由格式的工具来设计和发布HTML和CSS网站,而无需编写代码或只限于模板。成为这个令人难以置信的免费预览的一部分,并体验Muse将如何革新您为网络创建的方式。 作为Web开发人员,我无法预见Adobe或任何其他公司将创建某种解决方案的方法,基于以下原因,该解决方案允许不具备HTML / CSS / JS知识的用户构建有用的网站设计: 几乎可以肯定,生成的代码将是一团糟,这使得想要编写网站后端的程序员很难使用它。甚至可能需要他们自己更改代码以根据需要构造代码。 HTML不是基于像素的,因此很难开发一种可以轻松设计可随文本大小等变化而流动的模板的工具。此外,元素应以合理的顺序而不是随机的顺序相互跟随(例如,根据添加元素时的要求。 在一个工具中生成的代码可能不会轻易移植到其他工具中,从而将您锁定在原始工具中。 (我假设该工具将允许对网站进行完全控制;正如Adobe所说,“与Adobe InDesign布局一样快速,轻松”。让您使用经过专业设计的模板的程序是另一回事。) 您认为一个不懂HTML的人有可能创造出高质量的(幕后和外观)网页设计/网站吗?
12 design  html  wysiwyg 

2
Scrum在国防承包方面有什么好处吗?
昨天在水冷却器上听到了这样的消息:“ Scrum在国防承包中没有地位。” 在某种程度上,我倾向于不同意我认为Scrum可以针对多种情况进行定制,并且我可以看到防御就是其中之一。这在我的同事(我们中的许多人从事国防承包工作)中引发了一场激烈的辩论,赞成/反对相当平均。 要提出一个适当的问题:有人在国防承包情况下成功使用(或有过使用Scrum的经验)吗?什么有效,什么无效,以及您对香草Scrum做了哪些修改(如果有)?

8
什么时候为小型重复代码段创建函数/方法,这是什么好代码实践?
在编写大型程序的过程中,我曾多次问过将代码放入一个函数或方法中有意义多少次复制和粘贴,什么是良好的经验法则?我一直在使用四行或更多行的经验法则,出现两次以上,然后创建包含该代码的简单函数/方法。您能想到更好的做法还是提供任何指示?这更多的是一般设计模式问题,而不是语言特定的问题。

10
如何在Java中将类标记为正在开发中
我正在实习项目,但是我必须离开后才能完成所有工作。 我有1个类别不够稳定,无法用于生产。我想标记/标记该类,以便其他人不会在生产中意外使用它。我已经在Javadoc中发出了通知,但这似乎还不够。一些编译器错误或警告会更好。 代码的组织方式如下: [Package] | company.foo.bar.myproject |-- Class1.java |-- Class2.java |-- Class3.java <--(not stable) 如果只有一个工厂类以公共方法调用这些类,则可以将方法设置为class3as private。但是,API不会以这种方式公开。用户将直接使用这些类,例如new Class1();,但是我不能将顶级类设为私有。处理这种情况的最佳做法是什么?
12 java 

9
如何最好地实践OOP概念/原理?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我想学习面向对象的编程语言,我不想为了任何目的而仅仅为了了解OOP的整个概念。那么谁能告诉我应该开始学习哪种语言?

11
除了计算机科学以外的其他科学学士学位是否会损害软件开发的职业?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 5年前关闭。 我拥有地质学士学位。仅仅在完成学士学位课程的一半时,我便发现了我真正的才华所在。我的基础学位是否会成为我在软件领域取得进步的问题(我觉得很多领先的公司都在考虑基础学位)?另外,您会建议我采取什么措施,使自己在与计算机科学学士学位很强的人对等的职位上。 提前致谢。

6
是否有任何文件说明了.NET BigIntegers的确切数字范围?
我正在使用.NET BigInteger,基本上我想知道是什么数字(估计的答案会很好) 是((操作所需时间增加的图表)vs (BigInteger的值)? 还是它们的设计没有这样的偏差,如果我们将操作所需的时间与BigInteger的值之间的增量从1绘制到无穷大,我们将一直保持平滑的曲线吗? 例如,假设数组被设计为可以处理50个项目。这意味着如果我有1个项目,则运算是f(1)时间。当我有2个项目时,运算时间为f(2)。如果我有50个项目,则操作时间为f(50)。但由于它仅设计用于处理50个项目,因此当我们拥有51个项目时,所执行的操作将为g(51),其中g(51)> f(51)。 如果实施正确,BigInteger算法的复杂度应为平滑曲线。例如,乘法的时间复杂度应为O(NM),其中N是第一个被乘数的位数,而M是第二个被乘数的位数。当然,有实际的限制,因为您可以选择N和M太大,以至于这些数字都不适合您的计算机。 是否有/任何人知道任何声称已如此实施的文件?
12 c#  .net  vb.net  numbers 

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.