软件工程

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

6
Rails-使用局部视图是否会减慢视图渲染?
我在Rails 3.1.0应用程序上遇到性能问题,现在我已经使用AR对查询进行了球型更改,因此视图仍然需要太多时间来呈现,我将视图,循环等划分为许多部分,在视图内部和其他局部内部动态渲染。 因此,拥有大量的局部片段是一种不好的做法? 是否应该减少局部数以改善视图渲染时间? 谢谢

4
应用程序能否在很大程度上影响功耗?
单个通用应用程序可以做些什么来影响其运行设备的功耗吗? 我不熟悉对单个应用程序进行的优化如何以一般方式影响功耗,有人可以解释一下编写应用程序的不同方法是否会影响所运行设备的功耗? 也就是说,可以以不同的方式编写的功能上完全相同的单一程序是否会在总体上极大地影响设备的功耗,而与不同的无关程序可能如何影响设备的功耗无关。

11
为什么.NET中的所有类都全局继承自Object类?
这对我来说非常有趣,哪些优点为框架提供了“全局根类”方法。简单地说,是什么原因导致.NET框架被设计为具有一个根对象类,并且具有适用于所有类的通用功能。 如今,我们正在设计一个供内部使用的新框架(SAP平台下的框架),我们都分为两个阵营-第一个阵营认为框架应该具有全球根源,第二个阵营认为相反。 我在“全球根源”营地。我的理由是,这种方法将产生良好的灵活性并降低开发成本,导致我们不再开发通用功能。 因此,我非常想知道是什么原因真正促使.NET架构师以这种方式设计框架。

7
如何简化事件驱动代码的维护?
使用基于事件的组件时,在维护阶段我经常会感到有些痛苦。 由于执行的代码都是分散的,因此很难确定在运行时将涉及的所有代码部分。 当有人添加一些新的事件处理程序时,这可能导致难以解决的细微问题。 从评论中进行编辑:即使有一些良好的实践做法,例如具有应用程序范围的事件总线和处理程序将业务委派给应用程序其他部分的处理程序,有时代码也开始变得难以阅读,因为其中有很多来自许多不同地方的注册处理程序(尤其是在有巴士的情况下)。 然后,序列图开始查看复杂的情况,花费时间确定正在发生的事情在增加,调试会话变得混乱(在处理程序上迭代时,处理程序管理器上的断点,尤其是异步处理程序和在其之上进行一些过滤时感到高兴)。 ///////////// 示例 我有一个正在检索服务器上某些数据的服务。在客户端上,我们有一个基本组件,该组件使用回调来调用此服务。为了向组件的用户提供扩展点并避免不同组件之间的耦合,我们触发了一些事件:一个事件在发送查询之前发生,一个事件在返回答案时发生,另一个事件在失败时发生。我们有一组预注册的基本处理程序,它们提供了组件的默认行为。 现在,该组件的用户(我们也是该组件的用户)可以添加一些处理程序以对行为进行一些更改(修改查询,日志,数据分析,数据过滤,数据按摩,UI花式动画,链接多个顺序查询) , 随你)。因此,某些处理程序必须在其他处理程序之前/之后执行,并且它们是从应用程序中许多不同的入口点注册的。 一段时间后,可能会发生十几个或更多处理程序被注册的情况,并且使用该处理程序可能既乏味又危险。 之所以出现这种设计,是因为使用继承开始变得一团糟。事件系统以一种组合形式使用,您尚不知道组合将是什么。 示例结束 ////////////// 所以我想知道其他人如何处理这种代码。无论是在编写和阅读它。 您是否有任何方法或工具可让您轻松编写和维护此类代码?

3
Git:修复影响两个分支的错误
我将我的Git回购基于一个成功的Git分支模型,并且想知道如果遇到这种情况会发生什么: 假设我在两个要素分支A和B上进行开发,并且B需要来自A的代码。X节点在要素A中引入了一个错误,该错误会影响分支B,但是在合并了要素A和B的节点Y上未检测到此错误,在再次分支并进行下一次迭代之前进行了测试。 结果,功能B的工作人员在节点Z上发现了错误。在此阶段,已确定需要进行错误修复。此修复程序应同时应用于两个功能,因为使用功能A的人员还需要修复该错误,因为该错误是其功能的一部分。 是否应该从最新的功能部件A节点(从节点Y分支的一个部件)创建一个错误修正分支,然后与功能部件A合并?在将这两个功能合并到一起之后,再进行开发和测试,然后再进行分支? 问题是它需要两个分支合并才能解决此问题。由于功能部件B不接触功能部件A中的代码,是否有办法通过实施修订并仍允许功能部件B分支保持未合并但功能部件A具有固定代码的方式来更改节点Y上的历史记录? 密切相关:Git错误分支约定
16 git  bug  branching 

8
打破“完美程序员综合症”的方法
很难说出这里的要求。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 我可能不是唯一这样的人。但是我倾向于称之为“完美程序员的综合症”,许多人可能会说它与完美主义者相同,但是在这种情况下,它属于编程领域。但是,对于这种综合症,编程领域有点问题。 您是否曾经感到过,当您进行编程时,您对自己的代码是否干净,遵循大多数最佳实践的良好代码的信心不足或从来没有足够的自信?有太多的规则要遵循,我觉得有点不知所措。当然,我并不是程序员,我喜欢编程,我认为这是一门艺术,因此我必须遵守规则。但是我也喜欢它,我的意思是我想并且我喜欢遵守规则,以便对自己正在做的事情有个很好的感觉。有关最佳做法和良好代码的信息。 也许是缺乏组织?也许是缺乏经验?也许缺乏实践?也许缺少其他人可以指出的东西?有什么办法可以摆脱这种综合征吗?

1
如何改进Java,使其不再需要执行类型擦除?
关于泛型的官方Java教程介绍了类型擦除以及将其添加到编译器的原因: 当实例化泛型类型时,编译器会通过一种称为类型擦除的技术来转换这些类型,在该过程中,编译器将删除与类或方法中的类型参数和类型参数有关的所有信息。通过类型擦除,使用泛型的Java应用程序可以维护与泛型之前创建的Java库和应用程序的二进制兼容性。 这很可能是一种务实的方法,或者也许是最不痛苦的方法。但是,既然泛型已在整个行业得到广泛支持,那么为了使我们不需要类型擦除,该怎么办?不需要破坏向后兼容性是否可行,或者如果可行,是否可行? 上面引用中的最后一个语句是否已成为自我参照?也就是说:“类型擦除使使用泛型的Java应用程序能够与Java库和使用执行类型擦除的Java版本创建的应用程序保持二进制兼容性。”
16 java  jvm 

9
使用构造方法还是setter方法?
我正在编写具有Action类的UI代码,例如: public class MyAction extends Action { public MyAction() { setText("My Action Text"); setToolTip("My Action Tool tip"); setImage("Some Image"); } } 创建此Action类时,几乎可以假定Action该类是不可自定义的(从某种意义上说,它的文本,工具提示或图像在代码中的任何位置都不会更改)。现在,我们需要在代码中的某些位置更改动作文本。因此,我建议我的同事从构造函数中删除硬编码的操作文本,并接受它作为参数,以使每个人都被迫传递操作文本。类似于下面的代码- public class MyAction extends Action { public MyAction(String actionText) { setText(actionText); setTooltip("My Action tool tip"); setImage("My Image"); } } 但他认为,由于setText()方法属于基类,因此可以在创建操作实例的任何位置灵活地使用该方法传递操作文本。这样,无需更改现有的MyAction类。所以他的代码看起来像这样。 MyAction action = new MyAction(); //this creates action …

9
程序员不知道C和C ++之间的区别是否很常见?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 在一次采访中,有人问我是否知道C和C ++之间的区别。 我想知道为什么会问这样的问题?

3
什么是上行/下行?
学习多态性时,您通常会看到类似这样的信息 class Base { int prv_member; virtual void fn(){} } class Derived : Base { int more_data; virtual void fn(){} } 什么是上流或下流?是(Derived*)base_ptr;上流还是下流? 我之所以称其为“沮丧”,是因为您正在远离基础而进入更具体的领域。其他人告诉我,这很沮丧,因为您将层次结构分解为特定的东西,而顶部是根。但是其他人似乎把它叫做我所说的。 在将基本PTR转换为派生PTR时,它称为上播还是下播?以及是否有人可以链接到官方消息来源或解释其为何如此之称比什么都伟大。


3
将代码指标与错误密度相关联的实验
我想知道是否有人进行了一些将代码量度(SLOC,循环复杂度等)与面向对象应用程序中的错误密度相关联的实验。 我不是在寻找只证明或不证明相关性的实验,而是在两者上。我并不是试图找到一个灵丹妙药,因为我相信项目的错误密度可能与给定项目或团队的一个或多个指标相关,并且该相关性在项目/团队的整个生命周期中可能会发生变化。 我的目标是 测量2-3个月内所有有趣的指标(声纳中已经有很多)。 找到一个与新错误数量相关的指标。 进行根本原因分析以检查为什么会发生这种情况(例如,我们是否缺乏某种设计技能?)。 提高技能并衡量变化的两次迭代。 冲洗并从2开始重复。 如果您没有任何经验,但记得看过有关此主题的论文/博客,希望与您分享。 到目前为止,我已经找到了以下链接,其中包含有关此主题的一些信息 错误是否存在于复杂代码中?-只是演示文稿中的幻灯片。 变更和错误:挖掘和预测开发活动 -只需滑动演示文稿即可。最重要的是,依赖关系越多,发生错误的几率就越高(我认为这是很普遍的规则)。 失败是一个四个字母的词 -关于错误和指标之间相关性的天堂。


2
对现代C ++范例的最佳概述?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 4年前关闭。 我曾经在8到10年前广泛地编写C ++。从那以后,出于专业原因,我开始使用C#。但是,我有时会看到类似 “如果您仍在手动跟踪指针引用,那么您做错了” 要么 “只要您使用的是RAII之类的现代概念,并且不像正在恢复的C开发人员那样手动分配内存,C ++绝对是安全的。” 两者都是十年前的标准程序。我已经看到,最近C ++有了很大的改进。特别是C ++ 0x似乎具有一些新功能。对于“ C / old C ++”程序员来说,赶上“现代” C ++模式和实践的最佳资源是什么?

7
在MVC架构中,模型和视图与控制器的耦合程度如何?
我有一个使用MVC的应用程序,但是我在如何设计控制器方面有些挣扎。例如,视图仅一次查看模型数据的某些子集。但是,我不确定应该如何安排。例如,视图或模型直接在Controller上调用函数是否正常?通过某种界面?还是它们被完全封装而从不了解Controller或彼此? 就像编辑一样;这是一个不在任何Web框架中编写的自定义应用程序,因此我不在这里查找特定于框架的详细信息,并且可以自由选择。
16 mvc 

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.