软件工程

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


7
资源有限的TDD
我在一家大公司工作,但仅用两个人的团队来开发桌面LOB应用程序。我已经研究TDD已有很长时间了,尽管很容易实现其在大型应用程序中的好处,但我很难尝试证明在我们的应用程序规模上开始使用TDD的时间。 我了解它在自动化测试,提高可维护性等方面的优势,但就我们的规模而言,即使为我们所有组件编写基本的单元测试也很容易使开发时间加倍。由于我们已经没有足够的时间来完成最后的任务,所以我不确定该朝哪个方向前进。从那时起,敏捷迭代开发之类的其他实践就完美了,但我对小型团队中TDD的生产率权衡感到有些沮丧。 TDD的优势是否值得在时间表非常紧凑的小型团队上花费额外的开发时间?
13 tdd 

3
提交后可以使用哪些工具来促进代码审查?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 5年前关闭。 我一直在评估许多代码审查工具(大多数是免费的),但它们似乎都旨在在提交补丁之前先审查补丁。这在Subversion的工作流程中并不完全适合,因此我一直在寻找能够更好地支持审查已提交修订的替代方案,而不仅仅是diff。有什么建议吗?我更喜欢免费或廉价的工具。

11
我的代码闻起来应该怎么办?
我是一个新手程序员,通常当我在自己的项目上工作时,我总是感到我的代码设计不是最好的,我讨厌这种感觉。我最终花时间查找事物,但是随后我却很容易被很多细节所淹没,例如可供选择的设计模式以及何时使用抽象类或接口。我是否应该尝试一次学习所有内容?

5
合法向客户收取的费用[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 4年前关闭。 我说的不是固定价格的工作,他们是相当简单的。但是我正在进行一个按小时收费的项目,我的问题特别涉及到收费。 如果我遇到IE / CSS问题,需要花费一个小时的时间来解决CSS问题,这是否收费?如果我决定在他们的网站上使用非常酷的jQuery动画,但是我需要掌握使用它的方法,那么我会为使用该动画进行的实验收取费用吗? 您是否向客户收取他们不知道的东西,因此需要花一些时间来学习? 就我而言,这是一个灰色区域,引号中没有明确概述(可能是因为没有多少客户愿意为您的精打细算/学习付出代价)。 这有什么共识?

3
如何处理非授权软件
我为一家非常大型的财富500强公司工作,该公司根据国防部合同转包给了另一家财富500强公司。您可以猜测繁文tape节对任何事情的执行都是巨大的。 我们只是共享了一个从其他MSDN订阅中加载了Microsoft开发工具的VM。当我对我们的MSDN许可提出质疑时,每次有人告诉我它正在开发中。现在已经进行了一年多。 我们还有其他正在使用的产品具有30天的试用期。一位开发人员发现了一种可以无限期延长30天试用期的漏洞,我们的管理层在他们获得许可的同时,鼓励了这种方法。 我已就此计划联系了4级经理。一年多来没有任何实际行动。 我该怎么办?向Microsoft和其他适当的软件供应商报告?联系我公司的道德热线?STFU顺其自然吗? 谢谢
13 licensing  ethics 

5
如果老板希望您使用全局变量,该对老板说些什么
我目前有4个月的实习期,在查看我的代码时,我的老板不喜欢我在一个程序集中几个单独的类中的多个方法中保留了一个特定的对象。他不喜欢每次都创建一个新对象,而是告诉我创建一个可以从任何地方访问的对象。因此,我不得不将其创建为静态类中的静态对象,并从此处引用它以使用它! 我只从事4个月的专业编程,您将如何处理呢?


3
许可证问题,所有者去世后,一段源代码会如何处理
我在一个项目中使用了一段免费的源代码。源代码写于1990年代,可从网站上获得,该网站称可以对其进行修改和自由分发。源文件不包含许可证指示,但具有“保留所有版权”注释。今天早上,我开始意识到我可能遇到了许可证问题,因为我的项目是在GNU通用公共许可证下发布的,因此我尝试联系源代码的所有者。不幸的是,所有者去世了,因此他的公司停止了工作。 源代码发生了什么,其版权门槛有效吗,它有所有者吗???

6
我能做什么?你会如何反应?救命![关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我试图领导一个落后的软件团队。主要问题之一是,每当有些困难时,我最终不得不将其分配给自己。我还有另一位具有中等技能的开发人员,并且有一半是实习生。不幸的是,其他开发人员的技能不包括设计。 因此,我向其他团队之一的老板请求我的老板,他在这里工作的时间比我更长(5年)。他无法在设计或我们使用的语言上与我竞争,但我认为他是除我之外最能干的人。 今天,他给了我一段代码,该代码在某些方面与以下内容没有什么不同: object const& my_class::get_object() const { return *std::unique_ptr<object>(new object()); } 他问我这是否有问题!我说的唯一我想的是:“是的,这是一个问题。” 然后他来到我的办公桌问我如何解决它!我说:“使用在函数调用后仍然存在的对象。” 然后他开始吓坏了,“是的,但是,我唯一想到的就是使成员变量可变。” 当时我有点忙,因为我已经在努力做一些额外的工作,我不得不接替团队中的另一个人,因为他不知道...我告诉那个人离开,因为我很忙,自己去弄清楚。然后他大声疾呼,谈论如果把事情搞砸了不是他的错。自从他加入团队以来,他就一直表现不佳,我认为情况不会越来越好。 我觉得我在这里淹死了。我可以做什么?处理该问题的正确方法是什么?去帮助这个已经写了7年C ++的家伙弄清楚如何正确返回对该对象的引用,该对象在返回时不会被破坏会更合理吗?我觉得那简直太荒谬了,想知道我怎么会那样做。 有时我认为他们是故意这样做的,但是在我看来,这只是be跷...但是,话又说回来,今天刚刚问我的问题也是如此。这不是一个坐在家里试图弄清楚他的第一个程序的孩子,他的大脑被指针炸了。

7
开发方法:用户界面输入或域模型输出?
尽管我从未使用Smalltalk交付过任何东西,但我短暂的使用时间肯定已经留下了印记。描述体验的唯一方法是按原样应有的MVC。本质上,对您的应用程序而言,所有繁重的工作都是在业务对象中完成的(如果您愿意,也可以在域模型中完成)。标准控件以某种方式绑定到业务对象。例如,一个文本框被映射到一个对象的字段(该字段本身是一个对象,因此很容易做到)。一个按钮将映射到一个方法。所有这些都是通过非常简单自然的API完成的。我们不必考虑绑定对象等。它可以正常工作。 但是,在许多更新的语言和API中,您不得不从外部进行思考。首先使用C ++和MFC,现在使用C#和WPF,Microsoft已将其开发人员吸引到GUI生成器上,在其中可以通过实现事件处理程序来构建应用程序。Java Swing开发并没有什么不同,只有您自己编写代码以实例化表单上的控件。对于某些项目,甚至可能永远都没有域模型-只是事件处理程序。我的大部分职业都在使用该模型。 每种方式都会迫使您以不同的方式思考。使用Smalltalk方法,您的域很聪明,而GUI却很笨。使用默认的VisualStudio方法,您的GUI会很聪明,而域模型(如果存在)则很贫乏。 与我合作的许多开发人员看到了Smalltalk方法的价值,并试图将这种方法引入VisualStudio环境。WPF具有一些动态绑定功能,这使其成为可能。但是有局限性。不可避免地,属于域模型的某些代码最终会出现在GUI类中。 那么,您采用哪种方式设计/开发代码?为什么? GUI首先。用户交互至关重要。 域优先。在我们将UI放到系统上之前,我需要确保系统是正确的。 两种方法都有优点和缺点。Domain模型适合在那里放置水晶大教堂和空中馅饼。GUI非常适合快速且肮脏的(有时确实很肮脏)。 还有一个额外的好处:如何确保代码可维护?

5
刚接触项目时要处理基本的设计缺陷[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 4年前关闭。 我刚刚开始从事一个包含30个开发人员的开源项目。我正在修复一些错误,以使其进入“循环”并成为项目的常规提交者。问题是我认为我发现了一个基本的设计缺陷,该缺陷导致了我正在研究的错误之一。但是我觉得,如果我在邮件列表上放开这个标签,我会觉得很自大,而我对此问题的一些讨论正在与某些人打交道。我应该怎么做?

5
通过公共API设计平衡依赖项注入
我一直在考虑如何通过提供简单的固定公共API来平衡使用依赖注入的可测试设计。我的困境是:人们希望做类似的事情var server = new Server(){ ... },而不必担心创建a Server(,,,,,,)可能具有的许多依赖关系和依赖关系图。在开发过程中,我不必担心太多,因为我使用IoC / DI框架来处理所有这些事情(我没有使用任何容器的生命周期管理方面,这会使事情进一步复杂化)。 现在,依赖关系不太可能重新实现。在这种情况下,组件化几乎纯粹是为了可测试性(和体面的设计!),而不是为了扩展等而创建接缝。人们将有99.999%的时间希望使用默认配置。所以。我可以对依赖项进行硬编码。不想这样做,我们会丢失测试!我可以提供一个带有硬编码依赖关系的默认构造函数,以及一个带有依赖关系的构造函数。那是...杂乱无章,可能令人困惑,但可行。我可以将接收构造函数的依赖项设置为内部,并使我的单元测试成为一个朋友程序集(假定为C#),它整理了公共API,但留下了一个隐藏的陷阱供维护。在我的书中,具有两个隐式连接而不是显式连接的构造函数通常是不好的设计。 目前,这是我能想到的最少的邪恶。意见?智慧?
13 c#  api 

8
您在开发时会考虑本地化吗?
在开发软件项目或网站时,您是否考虑到本地化? 我的意思是 外部化所有字符串,包括错误消息。 不使用包含文本的图像。 设计UI时要考虑文本扩展。 使用伪翻译来测试用户界面的早期阶段。 等等 在您从事的项目中,这些项目是否属于“不错”类别,并让本地化团队担心其余的工作,还是在开发过程中内置了本地化准备?我很想听听开发人员如何看待本地化。

9
开发人员是否应该了解计算机硬件的内部运作方式?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 我不是在谈论内存的分配方式和内存管理(例如,您可以从C中学到的东西),而是在硬件方面,以及计算机硬件的每个组件在内部如何工作以及它们如何相互通信。 你们当中有多少人知道所有这些?

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.