软件工程

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

4
跨对象边界的信息泄漏
很多时候,我的业务对象往往会遇到信息需要经常跨越对象边界的情况。在进行OO时,我们希望信息位于一个对象中,并且处理该信息的所有代码应尽可能在该对象中。但是,业务规则没有遵循该原则,这给我带来了麻烦。 作为示例,假设我们有一个包含多个OrderItems的Order,该OrderItems引用一个具有价格的InventoryItem。我调用了Order.GetTotal(),它对OrderItem.GetPrice()的结果求和,该结果乘以InventoryItem.GetPrice()乘以数量。到目前为止,一切都很好。 但随后我们发现有些商品以一交易两卖。我们可以通过让OrderItem.GetPrice()做类似InventoryItem.GetPrice(quantage)的事情并让InventoryItem处理来解决这个问题。 但是,然后我们发现二对一交易仅持续特定时间段。该时间段必须基于订单日期。现在我们将OrderItem.GetPrice()更改为InventoryItem.GetPrice(quatity,order.GetDate()) 但是然后我们需要根据客户在系统中待了多长时间来支持不同的价格:InventoryItem.GetPrice(数量,order.GetDate(),order.GetCustomer()) 但是,事实证明,一对一交易不仅适用于购买多个相同库存物品,而且适用于InventoryCategory中任何物品的多个交易。在这一点上,我们举起手来,只给InventoryItem订购项,并使其通过访问器在对象引用图上移动,以获取其需求的信息:InventoryItem.GetPrice(this) TL; DR我希望对象之间的耦合度低,但是业务规则经常迫使我从各地访问信息以做出特定决策。 有好的技巧可以解决这个问题吗?其他人也会发现同样的问题吗?

4
我应该从Scheme学到什么?
我想知道我可以从Scheme中学习哪些独特的功能来帮助我成为更好的程序员? 我在主流语言方面有很多经验,并且我希望拓宽视野并了解其他语言所缺少的功能方面。我熟悉javascript的闭包,C#的lambda表达式,我想知道我能专注于其他语言中缺少的东西吗?除了Lisp语法外,我觉得到目前为止,我已经用其他语言遇到过。 Scheme / Lisp的独特之处是什么会教给我一些新东西?

5
为Webapp的每个客户端创建一个新表是一个好主意吗?
这是半假设的,由于我没有处理大型数据库表的经验,因此我不知道这是否由于某种原因而令人恐惧。关于情况: 想象一下一个基于Web的应用程序-可以说是会计软件-它具有20,000个客户端,每个客户端在一个表中有1000多个条目。那就是2000万行,我知道这肯定会减慢复杂查询的速度。 在这种情况下,在数据库中为每个客户端创建一个新表是否更有意义?数据库对拥有20k(或更多!)表有何反应?

4
参数再次将二进制文件检入SCM
我在一家主要构建Java应用程序的公司工作,我试图说服所有人停止将二进制文件(依赖项和最终产品)检入SCM。 他们知道这是一个不好的做法,但是他们认为“有效”,即使很多人都了解Maven和除Ant之外的其他构建工具,这也不是真正的问题。经理和程序员(大约50人)都准备好听取任何反对意见,甚至承认这是对备份空间的浪费,但是我要说服自己,因为习惯的改变会涉及很多工作。您使用什么论据来支持变更? 编辑:好的,区分几乎不变的文件(如依赖项)和生成的文件是有意义的。即使这样,我还是有理由反对后者。
10 java  builds 

9
您如何找到,完善和维护您的编码风格?
最近,我一直在几个项目和开发环境之间切换。每种代码风格的期望都不同。 现在,我的问题分为三个部分,第一部分是出于好奇: 您如何定义和找到您的编码风格? 您如何不断扩大和改进它? 您如何保养它?(从心理笔记中,保存文档,使用StyleCop等工具。)

13
作为代码猴子,如何与几乎拥有计算机科学博士学位的人讨论编程问题。
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我妻子的一个朋友今晚要来吃晚饭,他比我聪明得多。 好吧,我们有什么共同点……计算机科学学士学位,这足以作为一个对话入门者。但是他几乎完成了博士学位研究,在他的特定领域比我领先几年,我觉得这很有趣,但是没有任何合法的理由要关注(除了可能通过更好的交通方式以外,他是一个擅长组合的人(我认为),然后我结婚并生了一些孩子,并且是医疗记录软件的专业程序员。 我们有很多共同点,但有一点我们俩都不在意或互相理解-尽管我确实想向他学习,但我不确定他甚至不想谈论他的工作。 因此,对于您所有的医生或代码猴子来说,什么是一个很好的交流入门者!

3
您如何使用托管扩展框架?
我已经与MEF合作约2周。我开始考虑MEF的用途,进行研究以了解如何使用MEF,并最终实现具有3个模块的主机。事实证明,合同易于掌握,模块易于管理。 尽管MEF有非常实际的用途,但我想知道在多大程度上?我的意思是,每个人都将重写现有应用程序以实现可扩展性吗? 是的,听起来很疯狂,而且不切实际。夸张地说: MEF如何影响当前的编程趋势? 您是否开始寻找使用MEF的机会? 您是否已开始计划对可能受益于可扩展性的现有应用进行重大重写? 就是说,我的问题是: 我怎么知道什么时候应该计划一个具有可扩展性的新项目? 我如何知道现有项目是否需要重写才能实现可扩展性? 有人在使用MEF吗?
10 .net  frameworks  mef 

8
开发人员应该参与测试阶段吗?
我们正在使用经典的V形开发过程。然后,我们进行需求,体系结构,设计,实现,集成测试,系统测试和验收。 测试人员正在项目的第一阶段准备测试用例。问题在于,由于资源问题(*),测试阶段太长,并且通常由于时间限制而缩短(您知道项目经理...;)。开发人员正在按需进行单元测试。 所以我的问题很简单:开发人员应该参与测试阶段吗,是否不是太“危险”?恐怕这会给项目经理带来错误的质量感觉,因为工作已经完成了,但是增加的man.days是否有价值?我对开发人员进行测试并不十分有信心(这里没有冒犯之处,但我们都知道,数天之内很难完成几次点击就很难打破)。 感谢您分享您的想法。 (*)由于晦涩难懂的原因,到目前为止,增加测试人员的数量已不再是一种选择。 (只是在先,这不是重复的,程序员应该帮助测试人员设计测试吗?它讨论测试准备而不是测试执行,我们避免了开发人员的牵连)

6
手册-最新信息?
如果您的产品已经投放市场很长时间了,但仍每天都在积极开发中-手册应该多久更新一次?如果您的用户由于您的组织认为合适而不断更新到最新版本,则最新的错误修复程序始终在出厂版本中。意思是,您可以在某一天修复一个错误,第二天就可以修复该错误。

2
什么是“断言框架”?
当我发现js-test-driver单元测试框架时,我发现该框架背后的人打算将其与断言框架集成。什么是断言框架?它是一种单元测试框架吗?如果是这样的话,那么这些框架有什么具体特点?

2
是否有一个很好的网站可以为小项目雇用程序员?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我需要一段超出我能力范围的php代码,因此我需要雇人来做。它并不是太长或太复杂,所以我想知道是否有一种直接的方法可以发布我的请求并找到某人来完成一定数量的请求。是否存在这样的网站,或者最好的替代方法是什么?反正非常感谢

7
如何说服用户不要使用草图UI?
我最近使用Sketchflow设计了一个新系统的原型,现在一些主要的利益相关者正在努力在最终产品中绘制草图外观。更糟糕的是,查看原型的人被要求通过相当领先的调查问题提供有关草绘外观的反馈,其中80%的回答是肯定的。 它用于主要是内部客户端的企业应用程序,但也打算由某些外部客户端使用。 我认为这是个坏主意的主要原因是: 它看起来不光滑或专业 以草绘样式为实际应用程序蒙皮涉及大量工作 草绘的样式无法有效利用屏幕空间 我一直在尝试找出可能的吸引力,而我唯一能想到的就是人们被它的简单性所吸引-尤其是当与现有系统相比时,它将被取代。 谁能指出我为什么使用草图外观是一个坏主意的证据?理想情况是基于UI研究的东西。我担心除非我能指出一些具体的东西,否则我的声音不会被听到。 [编辑] 我可能应该补充一点,使应用程序外观困难的因素还在于,它打算作为一个或多个Silverlight Web部件在Sharepoint站点中交付。在两种技术之间获得一致的草图外观可能非常困难。 [编辑] 万一有人不确定Sketchflow原型的外观(以及相关人员的要求),他们实质上是在要求生产应用程序具有铅笔素描线框的外观和感觉。

4
领域驱动设计中的重构
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 6年前关闭。 我刚刚开始从事一个项目,我们正在使用领域驱动的设计(由Eric Evans在“ 领域驱动的设计:解决软件核心中的复杂性”中定义。我相信我们的项目肯定是该设计的候选人就像埃文斯在书中描述的那样。 我在不断重构的想法中挣扎。 我知道在任何项目中重构都是必不可少的,随着软件的改变,重构将不可避免地发生。但是,根据我的经验,重构是在开发团队的需求发生变化时发生的,而不是对领域变化的理解(Evans称之为“重构以获得更大的洞察力”)。我最关心的是对领域模型的理解方面的突破。我知道进行小的更改,但是如果需要对模型进行较大的更改怎么办? 在说服更清晰的域模型之后,应该说服自己(和其他人)重构的有效方法是什么?毕竟,为了改善代码的组织或性能而进行的重构可能与无处不在的语言代码的表达方式完全不同。有时似乎没有足够的时间进行重构。 幸运的是,SCRUM使它可以进行重构。SCRUM的迭代性质使其易于构建一小块并进行更改。但是随着时间的流逝,该片段会变大,如果您在该片段太大而又难以更改时又取得突破,该怎么办? 是否有人从事采用领域驱动设计的项目?如果是这样,那么对此有所了解将是很棒的。我特别想听听一些成功的故事,因为DDD似乎很难解决。 谢谢!

5
学习汇编程序-有用的资源[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 在上一个线程之后,它使我对学习汇编编程有所兴趣。并不是想对有用的应用程序进行编程,仅仅是为了获得低级编程的感觉,从而更好地了解正在发生的事情。 有人可以为初学者推荐任何书籍或在线资源吗? 谢谢。
10 books  assembly 

2
HTML 5是否足以让开发人员从Flash切换到?
很好奇,因为许多开发人员使用Flash来完成HTML 4(如果我做错了,请纠正我)或以下事情的很多事情,例如圆角(Canvas)以及Video Thing等。 。 我实际上尚未探索所有HTML5,因此不妨向您学习。 谢谢。
10 html5  flash 

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.