软件工程

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

7
从GUI开始构建应用程序是否有用?
应用程序设计和开发的趋势似乎始于“胆量”:领域,然后是数据访问,然后是基础结构等。GUI似乎通常会在此过程的后期出现。我想知道首先构建GUI是否有用... 我的基本原理是,通过至少构建一个原型GUI,您可以更好地了解幕后需要做什么,因此可以更好地开始在域和支持代码上进行工作。 我可以看到这种做法的问题在于,如果尚未编写支持代码,那么GUI层实际上就不会做很多事情。也许构建模拟对象或一次性类(有点像在单元测试中所做的那样)将提供足够的基础来最初构建GUI。 对于实际项目,这可能是可行的想法吗?也许我们可以将GDD(GUI驱动开发)添加到首字母缩写稳定...

13
您是否应该向客户收取错误时间上花费的时间?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 3年前关闭。 我接受了一个小的CSS挑战来为客户解决问题,我将按小时收费。我最终解决了它,花了5个小时,但我花了大约25%的时间在错误的轨道上,尝试了仅在最近的浏览器中可用的CSS3解决方案,并最终发现通过JS不可能进行任何回退(就像我最初想的那样)。我应该向客户收取25%的费用吗? 更多详细信息:我没有提供估算值,我本身很喜欢挑战,因此我在给出估算值之前就开始进行研究(但是我之前曾与他合作过,所以我知道他不是那些抱有不切实际期望的人之一)。在最坏的情况下,我将花5个无偿小时来进行有趣的CSS挑战。因为我已经完成了这项工作,所以我将为我们俩提供最合理的估计。:) 编辑:谢谢大家,我希望我可以接受多个答案!我最终没有给他多花几个小时的账单(我给他开了三个半小时的账单),但我提到了他们,所以他知道我在这方面的工作要比他付账多。也许这就是为什么他立即接受“估计”的原因(在这种情况下,这不是估计,因此不是引号)。

11
修复其他人造成的错误是一种好方法吗?
让我们假设一个由四个开发人员组成的团队正在构建应用程序的情况。在测试阶段,错误由用户报告。谁应该修复它们?提交错误代码的人,还是有空的人? 敏捷开发(scrum)中首选的方法是什么?
17 agile  debugging 

3
请用IoC容器卖给我
我已经看到一些建议在代码中使用IoC容器的方法。动机很简单。采取以下依赖项注入代码: class UnitUnderTest { std::auto_ptr<Dependency> d_; public: UnitUnderTest( std::auto_ptr<Dependency> d = std::auto_ptr<Dependency>(new ConcreteDependency) ) : d_(d) { } }; TEST(UnitUnderTest, Example) { std::auto_ptr<Dependency> dep(new MockDependency); UnitUnderTest uut(dep); //Test here } 进入: class UnitUnderTest { std::auto_ptr<Dependency> d_; public: UnitUnderTest() { d_.reset(static_cast<Dependency *>(IocContainer::Get("Dependency"))); } }; TEST(UnitUnderTest, Example) { UnitUnderTest uut; //Test here …

6
此时,Java的公共领域是否只是一个悲剧的历史设计缺陷?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 在这一点上,Java似乎是正统的,基本上不应将公共字段用于对象状态。(我不一定同意,但这与我的问题无关。)考虑到这一点,可以说从今天开始的今天,很显然Java的公共领域是语言设计的错误/缺陷?还是有一个合理的论据,即使在今天,它们仍然是语言的有用和重要的一部分? 谢谢! 更新:我知道更优雅的方法,例如C#,Python,Groovy等。我不是直接在寻找这些示例。我真的只是想知道是否还有人在掩体深处,喃喃地谈论着真正的公共场所有多美妙,群众如何全都是羊,等等。 更新2:显然,静态的最终公共字段是创建公共常量的标准方法。我指的是将公共字段用于对象状态(甚至是不可变状态)。我认为应该将公共字段用作常量而不是状态,这似乎是一种设计缺陷,一种语言的规则应自然而然地通过语法而不是准则来强制执行。

4
如何确定编程语言是冗长还是简洁?
编程语言通常可以描述为冗长或简洁。 根据我的理解,冗长的语言易于阅读和理解,而简洁的语言简洁明了,但更难于阅读。定义中是否应该考虑其他事项? 当今许多流行的编程语言似乎是冗长的,并且这两个术语仅用于描述一种语言,相对于另一种语言而言,该语言或多或少。 我们如何确定一种编程语言是否比另一种更为冗长/简洁? 示例:C#比Java更冗长吗?

8
在使用修订控制的商店中,“由...编辑”内联注释是否是规范?
我们商店的资深开发人员坚持认为,每当修改代码时,负责的程序员都应添加内联注释,说明他的所作所为。这些评论通常看起来像// YYYY-MM-DD <User ID> Added this IF block per bug 1234. 我们使用TFS进行版本控制,在我看来,这种注释更适合作为签入注释而不是内联噪音。TFS甚至允许您将签入与一个或多个错误关联。我们一些较旧的,经常修改的类文件看起来好像它们的LOC比率接近1:1。在我看来,这些注释使代码更难阅读并添加零值。 这是其他商店的标准做法(或至少是常见做法)吗?

6
方法链接与封装
方法链接与“单访问点”方法存在经典的OOP问题: main.getA().getB().getC().transmogrify(x, y) 与 main.getA().transmogrifyMyC(x, y) 第一个优点似乎是,每个类仅负责较小的一组操作,并使所有事情都变得更加模块化 -向C添加方法不需要A,B或C花费任何精力来公开它。 当然,不利的一面是较弱的封装,第二种代码可以解决此问题。现在,A可以控制通过它的每个方法,并且可以根据需要将其委派给它的字段。 我意识到没有单一的解决方案,它当然取决于上下文,但是我真的很想听听有关两种样式之间其他重要区别的意见,在什么情况下我应该选择其中任何一种-因为现在,当我尝试设计一些代码,我觉得我只是在不使用参数来决定一种方法。

8
与僵化的程序员打交道
有时,长时间在项目上工作的程序员会变得僵硬,因此很难与他们进行推理。即使我们设法说服他们,他们也不太可能执行我们的建议。 例如,我最近加入了一个项目,该项目的构建和发布过程过于复杂并且有不必要的障碍。 我建议我们仅通过集成缺陷管理和版本控制工具(这都是IBM-Rational工具,从而可以很容易地一次性完成)来摆脱一些开发开销(例如填充一些电子表格)。另外,如果我们使用Maven和Ant之类的工具(该项目涉及Java和某些COTS产品),则可以简化构建和发布,从而减少人工错误和干预。 我设法说服了其他人,并准备投入精力来开发概念证明。但是“高级”开发人员并不愿意,可能是因为当前的流程使他变得更有价值。 我们如何在不增加团队摩擦的情况下应对这种情况?

7
微软真的提供“支持”吗?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 反对使用开源的论点之一是没有“支持”。但是,大型供应商(例如Microsoft)是否真的提供任何形式的“支持”?我确定那里有每小时4位数的“有偿支持”选项,但是对于任何可能使您的企业破产的问题,这真的是一个“选项”吗? 具体地说,...我购买了Microsoft产品...它有一个错误...现在怎么办?那比我从开放源代码中得到的更好?

2
Java Swing开发的最佳实践是什么?
在对该问题进行预研究时,我发现Internet上没有太多组织良好的有关Java Swing最佳实践的信息。因此,我想我将为Stack Exchange打造一个“伟大清单”提供帮助。 Java Swing开发的最佳实践是什么?您发现什么对您有用,为什么?
17 swing 

9
实际上,Sencha Touch在Android上的表现如何?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我将要使用Sencha Touch开始一个项目,并且刚刚在我的HTC欲望设备上做了一些小测试。Vimeo上的所有教程视频似乎都使用在Mac上运行的iPhone模拟器。我不确定该模拟器与真实的iPhone设备甚至真实的Android设备相比有多快,但是从我的经验来看,似乎我的HTC愿望并没有像该模拟器那样出色。 所有动画(滑动,淡入淡出等)似乎有点滞后。您可以很容易地注意到,FPS比Vimeo视频要少得多。 HTC的愿望是相对较新的现代Android 2.2手机,并配备了不错的硬件,因此我想知道Sencha Touch是否已为Android平台“就绪”。 有使用Android和Sencha Touch的实践经验吗?
17 android 

9
项目经理在Scrum中有用吗?
Scrum中定义了三个角色:团队,产品负责人和Scrum主管。没有项目经理,而是项目经理的工作分散在这三个角色中。 例如: Scrum Master:负责该过程。消除障碍。 产品负责人:管理并确定要完成的工作清单的优先级,以最大程度地提高ROI。代表所有相关方(客户,利益相关方)。 团队:通过估计并在彼此之间分配工作来自我管理。负责履行自己的承诺。 因此,在Scrum中,不再只有一个人负责项目的成功。没有适当的命令和控制结构。这似乎使很多人感到困惑,特别是那些不习惯使用敏捷方法的人,当然还有PM。 我对这以及您的经历非常感兴趣,因为我认为这是可以成败Scrum实现的事情之一。 您是否同意Scrum不需要项目经理?您认为仍然需要这样的角色吗?为什么?

8
系统分析师与计算机程序员?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 6年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我的问题是关于工作的。我目前担任系统分析师职位。 System Analyst和Programmer / Analyst有什么区别?这个职位比程序员高吗?或者我应该如何升级自己?
17 skills 

26
计算机科学中最困难的学科/理论?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 您学习过哪些最困难的CS学科/理论,但对该领域来说很重要?原因是什么?

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.