软件工程

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

4
Web开发人员.NET或Java的学习途径
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我想知道Windows托管了多少个现实世界的Web应用程序服务器? 我将学习C#和ASP.NET,并希望将自己从嵌入式开发人员转换为Web应用程序开发人员。 我的朋友告诉我,基于Linux的服务器要比Windows服务器更多。他还提到Java技能栈在Web应用程序领域比.NET有用得多。 我对Java和C#的体验很难理解。我是一位经验丰富的C ++开发人员。 有人可以给我一些建议吗? 非常感谢
10 c#  java  .net 

3
使用SOLID原则时,开发人员的可发现性是否成问题?
我从事一系列商务应用程序,在这些应用程序中,所有其他开发人员都习惯于使用基本的CRUD应用程序,或者只专注于创建漂亮/功能强大的界面,因此,我得到了很多帮助。 “通过我们使用的方式,员工将拥有您可能对员工所做的所有事情。” 这是真的。那个“班级”有成千上万的代码行,您在那里可以与一名员工一起做的任何事情。甚至更糟的是,有一张员工数据表,每个开发人员都想出了如何在事件处理程序中做他们想做的事情。 关于这种方法的所有坏事都是对的,但是至少使用雇员的开发人员可以在不查阅其他文件的情况下,弄清楚如何使雇员参加健康计划,加薪,解雇,雇用,调动等。经理和其他所有主要想法。或者,如果他们使用员工其他需要的数据表,则可以做他们想要的事情。 是的,有很多重复的代码。是的,这是非常脆弱的代码。是的,测试比必要的困难得多。是的,不断变化的功能导致恐惧,而复制粘贴由于这种方法是很自然的。 但是他们至少可以通过创建一个类来发现可用的东西,或者他们可以做他们需要做的事情而不必了解接口,抽象类,具体类等之间的区别。他们不必搜索任何东西由intellisense返回的方法,或知道数据所在的表。 我已经用谷歌搜索/搜索甚至是yahoo!d,但是我没有发现任何对此问题的认可。 因此,也许没有问题,而我只是想念一些东西。我竭尽全力试图找到一个解决方案,使不执行实际行为/设计的开发人员可以轻松地发现如何做某事,而不必引用任何外部文档或扫描各个组件/中的类名。项目,寻找听起来可行的方案。 我唯一能想到的就是这些,因为缺少更好的名称,“ Content Class Table”不执行任何操作以返回实际的类(实际上,大多数是接口,但它们不是了解其他开发人员可以用来执行所需实际任务的区别甚至是关心。仍然会出现真正的大类,但其中几乎没有行为。 有没有更好的方法不需要对SOLID的实际实现发生在中间层的深入了解? 基本上,我要问的是有一种方法可以允许CRUD类型的开发人员继续在非常复杂的系统中成为CRUD开发人员。
10 solid  crud 

8
Visual Studio解决方案的良好做法[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 希望有一个相对简单的问题。我正在开始一个新的内部项目,以创建建筑物内已修复设备的易处理性。 该数据库远程存储在Web服务器上,并将通过Web API(JSON输出)进行访问并受OAuth保护。前端GUI在WPF中完成,而业务代码在C#中完成。 由此,我看到了不同的层Presentation / Application / Datastore。将提供用于管理对API进行所有身份验证的调用的代码,代表实体(业务对象)的类,构造实体(业务对象)的类,WPF GUI的各个部分,WPF视图模型的各个部分,等等。 最好在单个项目中创建此项目,还是将其拆分为单个项目? 我内心说应该是多个项目。我以前已经做过这两种方式,并且发现使用单个项目解决方案更容易进行测试,但是对于多个项目,则可能会产生递归依赖性。特别是当类具有使测试变得更容易的接口时,我发现事情可能变得很尴尬。

7
自行开发时的方法论/工具
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 5年前关闭。 假设您必须完全自行开发中等大小的软件。就像是您要完成的个人项目一样。 您将使用什么方法/工具来定义需要开发,学习的内容以及对系统及其详细内容有全局了解的全局? 基本上是为了保持自己的步调而不会迷路。


3
调用供应商Web服务的单元测试方法
我有一类具有一个公共方法Send()和一些私有方法的类。它调用几个Web服务并处理响应。该处理以私有方法完成。 我想对代码进行单元测试。我的理解是,单元测试应该单独测试我的代码(即模拟供应商的响应)。 我还认为私有方法不需要进行单元测试,但是如果我仅测试Send()方法,我的代码就不会被单独测试,而取决于供应商的共鸣。 然后是否应该将我的私有方法公开,以便可以通过模拟响应对其进行测试?这似乎是不好的做法,因为我只有全班同学才需要给他们打电话。 道歉,如果这是一个基本问题,对单元测试来说还很新。 我正在使用C#和VS2010

2
无处不在的语言-正确性和可用性之间的冲突
域驱动设计的核心部分是在整个系统中一致使用通用语言-在对话,代码,数据库模式,UI,测试等中。 我参与的一个项目已经有一个由国际标准组织定义的完善的领域语言。 但是,我们正在做的工作是针对公共网站的,该域的“正确”术语不一定代表公众通常如何使用和理解它们。 目前,我们正在使用的折衷方法是在所有地方都使用“官方”术语,但在接受标准(指的是UI组件,我们使用非正式名称)中除外。 这似乎是一种合理的方法吗?

7
如何应对(编译)大型代码库的问题?
尽管我可以编写代码,但是我还没有从事大型项目的经验。到目前为止,我所做的是要么编写可以在几秒钟内完成编译的小程序(各种c / c ++练习,例如算法,编程原理,思想,范例,或者只是尝试api ...),要么在一些较小的项目上工作使用无需编译的脚本语言(Python,PHP,JS)制作。 问题是,当使用脚本语言进行编码时,每当我想尝试某些可行的方法时,我只要运行脚本,看看会发生什么。如果事情不起作用,我可以简单地更改代码,然后再次运行脚本来再次尝试,然后继续进行直到获得所需的结果。.我的意思是,您不必等待可以编译任何东西,因此,使用大型代码库,对其进行修改,对其进行添加或只是简单地使用它都是非常容易的-您可以立即看到所做的更改。 作为示例,我将使用Wordpress。尝试弄清楚如何为其创建插件非常容易。首先,您首先创建一个简单的“ Hello World”插件,然后为管理面板创建一个简单的界面以熟悉API,然后对其进行构建并使其变得更复杂,同时更改其外观。在每次较小的更改后尝试“如果它有用”和“它如何工作/感觉”之后,必须一遍又一遍地重新编译WP之类的东西的想法似乎效率低下,缓慢而错误。 现在,我该如何使用以编译语言编写的项目来做到这一点?我想为一些开源项目做出贡献,这个问题一直困扰着我。情况因项目而异,其中一些事先被明智考虑的项目将以某种方式“模块化”,而另一些只是一个大问题,需要一次又一次地重新编译。 我想了解更多有关如何正确完成的信息。有哪些通用实践,方法和项目设计(模式?)来应对?在程序员世界中如何称呼这种“模块化”?我应该在Google上寻求更多信息以了解更多信息吗?项目是否经常超出了最初的想法范围,这在一段时间后变得很麻烦?有什么方法可以避免长时间编译设计欠佳的项目?一种以某种方式模块化它们的方法(也许在开发时排除了程序的非重要部分(还有其他想法?))? 谢谢。

2
对许多按钮实施OnClickListener接口的正确方法是什么
我的Android活动包含多个按钮,都需要一个OnClickListener。我已经看到许多不同的方法,例如: 在活动类中实现接口 创建一个单独的类来实现接口 为每个按钮定义一个匿名内部类。 我已经看到了每种方法的许多示例。但是,我不清楚为什么要使用一种方法代替另一种方法。这些方法之间的差异是否在风格上有所不同,还是有理由使一种方法更好?

13
我们可以保证程序永远不会出错吗?
我们在这里有一个系统。最近,系统生成的报告中的数字之一计算错误。根据我们的经验,多年来,我们从未在该系统中遇到任何问题/错误。 由于该系统的编写者已经离开,因此我们几乎无法跟踪程序。但是我们已经验证了输入数据,设置及其正确性。 现在我的问题是,计算机程序会在没有任何逻辑原因的情况下突然出错吗?如果我猛击服务器计算机,计算机正在计算的数字之一会变成另一个数字并使计算错误吗? 我同意我的想法很疯狂,但是我只想知道,我们怎么知道问题不是由程序和输入引起的,而是其他一些因素引起的? PS这个疯狂的系统没有日志。
10 debugging 

5
规划扑克和冗长的开发人员[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我的团队由4名开发人员组成;所有的经验丰富和熟练。其中一位是罗word的,精心设计的家伙,他坚持要为我们的故事定义技术解决方案,然后再使用Planning Poker降低估算值。他拒绝估计自己是否对约定的技术解决方案不了解(听起来很合理,对吧?)。 问题是我们的估算会话需要花费很多时间!!根据您的经验,在玩计划扑克时如何处理这种个性?
10 agile  planning 

3
长参数列表与长状态变量列表
在C ++书中,作者说我们不再需要带有长参数列表的函数,因为大多数参数都可以重构为类中的状态变量。另一方面,一本功能性的编程书说状态变量是有害的,因为它会引起副作用,导致副作用,导致易错和难以并行化代码。我很困惑。代码是否应该通过将其状态变量移到函数参数列表中来避免尽可能多地依赖状态变量?

2
命令处理程序和DDD
我有一个ASP.NET MVC应用程序,该应用程序使用查询服务来获取数据,并使用命令服务来发送命令。我的问题是关于命令部分的。 如果有请求进入,则命令服务将使用命令调度程序,该命令调度程序会将命令路由到其指定的命令处理程序。该命令处理程序首先验证命令,如果一切都可以接受,它将执行命令。 具体示例:AddCommentToArticleCommandHandler接收一个AddCommentToArticleCommand,该命令具有ArticleId,CommentText和EmailAddress。 第一; 必须进行验证,例如:-检查文章是否存在-检查文章是否未关闭-检查注释文本是否在20到500个字符之间,以及是否填写了电子邮件地址-检查电子邮件地址是否具有正确的格式。 我想知道将验证放在哪里? 1 /在命令处理程序本身中。但是,它不能在其他命令处理程序中重用。 2 /在域实体中。但是,由于域实体不了解存储库或服务,因此它无法执行所需的验证(无法检查文章是否存在)。但是另一方面,如果实体不包含逻辑,则它将变成一个简单的数据容器,不遵循DDD原理。 3 /命令处理程序使用验证器,以便可以在其他命令处理程序中重用验证。 4 /其他机制? 我正在寻找此特定示例的责任链,以及哪些对象(实体,存储库,...)在其中起作用。 从命令处理程序到存储库,您是否有实现此想法的想法?

3
支持多租户
将单租户应用程序转换为多租户应用程序时会遇到哪些典型挑战?安全性和数据隔离使我感到最重要。还有什么? 我是从事相当大的自动化工作的架构师之一,从历史上看,这只是我们公司在使用它。我们希望其他人也可以使用它。每次我们谈论“使其成为多租户”时,讨论都围绕使一个租户的用户远离另一租户拥有的数据,并确保拥有一个租户的用户不能(有意或无意)对另一租户产生影响租户的环境。我想知道的是,安全/数据隔离是否真的是这里唯一的主要问题,还是我们只是没有在考虑其他一些主要问题。

4
快速算法,用于搜索排序的浮点数组,以找到将输入值括起来的一对浮点
我有一个浮点数组,从最小到最大排序,并且需要能够选取大于或小于传递的输入值的最近浮点。此输入值不一定要作为数组中的值存在。 天真的方法是对数组进行简单的线性搜索。可能看起来像这样: void FindClosestFloatsInArray( float input, std::vector<float> array, float *min_out, float *max_out ) { assert( input >= array[0] && input < array[ array.size()-1 ] ); for( int i = 1; i < array.size(); i++ ) { if ( array[i] >= input ) { *min = array[i-1]; *max = array[i]; } …
10 c++  algorithms 

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.