软件工程

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

3
为什么关于闭包的嗡嗡声如此之大?[关闭]
很难说出这里的要求。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以当前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 8年前关闭。 为什么在开发人员中关于关闭的讨论如此热闹?在我的职业生涯中,我虽然没有清楚地了解它们是什么,但从未故意使用它们。 UPD:仅作澄清。问题是,为什么封闭概念最近变得如此健谈。
9 closures 

3
BDD:入门
我从BDD开始,这是我的故事: Feature: Months and days to days In order to see months and days as days As a date conversion fan I need a webpage where users can enter days and months and convert them to days. 我有些疑惑 ... 我应该在编写任何代码之前先编写脚本还是先编写脚本然后编写代码,再编写脚本然后再编写代码,等等...? 如果我应该之前编写方案,是否可以批准我的步骤并且仍然无法完成生产代码? 什么时候应该对代码进行重构?完成该功能之后还是在每个方案实施之后?

5
您如何测试对时间敏感的软件?
时间敏感的意思是,例如,一个脚本每月仅运行一次,或者一个脚本连续运行,但每月仅输出一次特定的输出。显然,您可以对很多情况进行单元测试,但是有一些例外(据我所知)。 我遇到的一个最近的例子是设置一个cron作业,以便在每个月的第二天到最后一天运行。这需要使用带有cron选项卡的shell脚本来获取cron的正确月份,例如: 1 0 [shell command] * * [my script] 我通常不熟悉该脚本,也不熟悉shell脚本,因此除了等待月底来看看脚本是否正确执行之外,没有其他方法可以对其进行测试(实际上,我的解决方案是找到一个共同的合作伙伴,我对cron和shell脚本了解更多的工作人员)。 所以我很好奇是否有任何有用的解决方法来测试对时间敏感的脚本。

2
如何“中和”那些在团队中写错代码的人?
我一直喜欢JoelOnSoftware上的这篇文章,“当您只是咕Gr咕Get咕Get咕咕咕的时候就做的事情”。当我是新手时,我尤其可以与他人联系(并且仍然觉得我将永远是其中的一员)。 关于#4,中和bozo。您对在实际工作中实际实施此操作有什么建议?(至少在我们的团队中)这似乎不像简单地将错误记录到某人的错误代码上那样容易。什么对所有人都有效?
9 team  bug 

2
在.NET(Visual Studio)中,何时创建新程序集?
我正在开发Silverlight应用程序。我将其拆分为几个程序集: 域 存储库(所有保存到Sterling数据库的东西) 用户界面 ... 这就是我学到的方法,但我想知道。如果您知道这些DLL将不会被重用,是否有必要将它们拆分?还是可以将所有内容放在一个程序集中并使用文件夹和命名空间来保持整洁? 我也看到过有太多程序集的项目。而不是在适当的地方使用名称空间。 那么:什么时候为一些新代码创建新程序集?关于这个主题有什么好的资源吗?您是否在技术上(域,数据,UI等)和/或功能上(例如,患者管理,患者医疗,医院后勤……等)拆分了代码?可能仅适用于大型企业级应用程序?

2
CPOL许可证。我可以在不分发源代码的情况下在我的商业应用程序上使用它吗?
我正在考虑使用http://www.codeproject.com中使用CPOL许可证的项目。第5e节说: “您只能根据本许可的条款分发可执行文件和源代码,并且在分发的可执行文件或源代码的每份副本中都必须包含此许可的副本或该许可的统一资源标识符。收到此类可执行文件和源代码的任何人均同意本许可的条款适用于此类可执行文件和/或源代码。您不得在作品中提供或施加任何条款来更改或限制本许可或接收者的条款。行使本协议项下授予的权利,您不得再授权该作品的使用,您必须保留所有提及本许可和免责声明的声明。您不得以与本许可条款相抵触的方式,以任何控制您对作品的访问或使用的技术措施来分发可执行文件或源代码。” 我不清楚我是否应该将其源代码包含在我的可执行文件中。甚至更糟的是,如果我应该提供自己的源代码(例如带有GPL许可证)。 我之所以不清楚,是因为我不确定是否通过将其源代码与我的源代码一起编译来“分发”其“源代码”或“可执行文件”?
9 licensing 

2
适用于UI编程的范例
这是一个更具体的问题(或者实际上是两个,但它们是相关的),来自OOP技术死亡的评论,有人说OOP不是GUI编程的正确范例。 在这里和这里阅读评论,我仍然感觉有很多东西要学习:哪种编程范例被认为是合适的,为什么它们比其他范例更好(也许用示例进行说明?) 我从标题和问题中删除了tk-example

9
Bitbucket和一家小型开发公司
我正在最终将Mercurial用作我们的版本控制系统。对于每个人来说,这都是一笔不小的数目,令人震惊的是,他们从未使用过VCS。经过几个月的漏洞发现之后,他们终于意识到了这一点,现在意识到与使用共享文件夹网络相比,它有多好! 在推广过程中,我正在考虑不同的策略来管理我们的东西,并且我倾向于使用Bitbucket作为我们的“中央”存储库。Bitbucket中的项目将完全是私人项目,每个人都会从那里推而走。 我愿意接受不同的建议,但是有人有类似的设置吗?如果是这样,您遇到了哪些警告?

4
训练“替代品”,如何执行标准?
不确定这是问这个问题的正确堆栈交换站点,但是这里... 范围 我为一家拥有数百名员工的小公司工作。该公司的开发团队规模很小,使用的是Visual FoxPro。公司的一个特定部门雇用我担任“单枪手”,以修复和增强现有的发票系统。我已经成功地采用了遭受很多风险和限制的Access应用程序,并将其转换为从SQL Server后端驱动的C#应用​​程序。 我最近获得了本科学位,无论如何都不是专家。为了弥补这一点,我感到获得Microsoft认证将迫使我更多地了解.net及其功能。 因此,在提前9个月发出通知后,三个月前终于出现了替代产品。他们的职责是学习我一直在设计的内容,以支持C#设计的应用程序。 替代品 大学刚毕业时没有任何实际工作经验,涉及数据的任何事物的第一个直觉是,现在仍然是列表框...每当提及数据时,列表框都是替换的首选控件。无论我讨论其他控件多少次,这都已经到了重点,在单个表单上我已经看到了5个列表框。课堂经验几乎是所有C ++控制台开发。 因此,在Winforms应用程序中,我最关心的一个例子是:用户需要将理由键入表中以便以后选择。既然我知道存在一个强类型的数据集,就可以从工具箱中拖动数据源,它将为我创建所有这些。我意识到这是一个简单的示例,但是使用数据绑定是关键。 在过去的几个月中,我们一直在讨论强类型数据集,如何使用它以及在何处与其他控件进行交互。数据集,它们与绑定源,适配器和数据网格视图有关的工作方式。在完成该项目后,我期望有关如何实施这些项目的问题,因为对我而言,这是实现此目标的方法。接下来发生的事情使我感到震惊: 在表单的Activate事件中创建了来自强类型数据集的适配器实例,创建了一个表并填充了数据。然后,进行了循环以手动将行添加到该表的列表框中。最后,保留一个变量进行查找,以找出记录中需要更新的ID。 他们如何修改您要求的记录?这也是我的第一个问题。您不会相信它多么简单,只需双击它,它们就会在弹出窗口中键入提示,将新值更改为该值。作为数据输入操作员,所有模式弹出窗口都会使我发疯。最终的解决方案超过了必须维护的100行代码。 因此,我担心的是,这一切都不会陷入……该部门一周只允许工作20个小时。直到上周,如果幸运的话,我们每周只能得到4-5个小时的培训。在过去一周左右的时间里,我很幸运获得了10分。 题 我该怎么办?! 我还有4周的路程,直到我离开,他们完全“支持”该申请。我喜欢这份工作,也给我带来了机会,但现在该是我展翅高飞,寻找新事物的时候了。我绝不相信他们已准备好接管他们。 我确实认为替代产品具有“弄清楚它”的技术能力,但是与其学习,他们只是编写代码来手动完成所有这些工作。如果替代者最终想以不同的方式编写代码,只要它能正常工作,我就可以接受,因为看起来令人恐惧。但是,为了支持我的设计,他们必须了解它的工作原理以及如何使用控件和框架来实现“魔术”。 这个项目大约有40种形式,一个数据库有30多个奇数表,触发器和存储过程。它把劳动力与发票,合同与预测联系起来……这不像我三年前开始这个项目时那样简单,现在部门无法没有它就无法生存。 我该如何完成以下任何一项? 当部门经理不断告诉他们可以做到时,无论他们愿意做什么,都可以在不断设计中加强标准或理解 寻找一种方法来使替代者积极学习必须为以下方面提供支持的框架和系统设计: 优雅地告知sr。每周5-9个小时的管理人员根本没有足够的时间来了解部门,现有流程,需要支持的应用程序以及确定系统的潜在增强功能的去向... 是的,我知道这是一堵文字墙,感谢您对我的阅读,但我根本不知道该怎么做。对我来说,这份工作是一个引人注目的怪兽,如果我离开而事情分崩离析,事情将会变得非常糟糕。我该如何处理?

8
OOP技术死亡[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我已经多次听说过面向方面的编程,主要是它是编程中的“下一代”技术,并且将“杀死” OOP。 这样对吗?OOP会死吗?或者这可能是什么原因?

2
用Haskell编写的针对最终用户的励志软件?[关闭]
很难说出这里的要求。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以当前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 我认为伟大的技术是看不见的。 除了常见的嫌疑人(GHC,Xmonad,专有交易软件)以外,还有哪些用Haskell编写的最终用户软件的好例子? 我认为FreeArc,Hledger和“ Nikki And The Robots”就是很好的例子。您是否还有更多示例(功能完善的GUI应用程序,小型CLI工具等)? 编辑:例如,我对Wings3D着迷,因为尽管它是用Erlang编写的,但用户无法分辨。它只是工作。Haskell的弱点是跨平台的GUI。通常,用Haskell编写的GUI应用程序并不多,而且大多数都不容易使用,安装甚至编译。从如何使艰苦的事情看起来容易上学,有哪些好的例子可以学习?
9 haskell 

4
您如何应对用于项目的开源框架的变化?
这可能是我的个人怪癖,但我喜欢在生活中的项目中保持代码最新,包括它们使用的库/框架。部分原因在于,我认为如果Web应用程序已完全打补丁且为最新版本,则它将更加安全。在某种程度上,这只是我的一种强迫症。 在过去的七个月中,我们对软件进行了重大重写。我们删除了Xaraya框架,该框架速度很慢,并且作为产品基本上已经失效,然后转换为Cake PHP。(我们之所以选择Cake,是因为它使我们有机会非常快速地重写我们的软件,并且与Xaraya相比,性能得到了很大的提升,值得我们花时间。) 我们使用SimpleTest实施了单元测试,并遵循了所有文件和数据库命名约定等。 Cake现在更新为2.0。而且,似乎没有可行的升级路径。文件的命名约定已经发生了根本性的变化,它们放弃了SimpleTest,转而使用PHPUnit。 这几乎将迫使我们停留在1.3分支上,因为除非有某种转换工具,否则将无法更新Cake,然后逐步改进我们的旧代码以获取新Cake框架的好处。因此,像往常一样,我们将在Subversion存储库中得到一个旧框架,并根据需要自行对其进行修补。 这就是每次都能吸引我的原因。如此众多的开放源代码产品很难使基于它们的项目保持最新状态。当开发人员开始使用新的闪亮玩具时,将对较旧的分支机构进行一些关键的修补,但他们的大部分精力将集中在新的代码库上。 您如何处理所使用的开源项目中的根本性变化?而且,如果您正在开发开源产品,那么在开发新版本时是否牢记升级路径?

4
最佳做法-处理网站上的图片
我正在将旧的电子商务站点移植到MVC 3,并且想利用设计改进的优势。该站点当前以3种尺寸存储产品图像:缩略图,中号(用于在列表中显示)和展开以放大外观。现在,我们必须上传3张大小完全合适的独立图像,并提供3个与网站期望的名称相匹配的不同名称,等等,这很麻烦。 我只想上传一个文件,然后上传一个大文件,然后让网站将其缩小到所需的大小,并且我希望可以灵活地根据用户的喜好和外形(例如移动设备,iPad)更改缩略图和列表的大小,台式机)等,因此可能需要使用同一图像的多个副本。我的问题是上传后应将图像缩小然后保存几次,如果这样,什么是好的存储/命名约定? 另一个想法是仅存储单个图像,但是在将其提供给客户端之前以编程方式调整其大小。有没有人这样做,除了几个机器周期外,还有什么取舍权衡?如何将内存中的临时图像传递给客户端(没有URL)?

9
什么是专用的Linux盒子?
因此,对于大多数人来说,这可能是一个非常基本且显而易见的问题,但是我的google-fu让我失望了,而且似乎有些事情困扰着我。我听说很多人都提到将“专用linux盒子”作为开发人员设置的核心部分。 我从事Web开发编程已有大约一年的时间,并且了解在Unix / Linux系统上进行编程的好处。但是我似乎错过了“专用linux盒子”在开发过程中扮演的角色。 我会假设它被用作某种服务器,但是我还没有遇到任何需要专门用于运行linux服务器的计算机的问题。我是不是很容易理解,并且误以为程序员更喜欢在Linux中使用开发人员使用的工具的通用性?大多数开发人员将其“专用Linux盒子”用于什么用途?


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.