软件工程

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

8
您倾向于在代码中写上自己的名字还是公司名称?
我一直在从事家庭和工作中的各种项目,多年来,我开发了两个主要API,几乎可以在所有基于AJAX的网站中使用。我将它们都编译为DLL,并将其命名为Connell.Database和Connell.Json名称空间。 我的老板最近在公司项目的软件文档中看到了这些命名空间,并说我不应该在代码中使用我自己的名字。(但这是我的代码!) 要记住的一件事是我们不是软件公司。我们是一家IT支持公司,而且我是这里唯一的全职软件开发人员,因此,关于如何在公司中编写软件,实际上没有任何程序。 要记住的另一件事是,我确实打算有一天将这些DLL作为开源项目发布。 其他开发人员如何在公司内将其命名空间分组?是否有人在个人和工作项目中使用相同的类库? 反之亦然吗?如果我完全在工作时编写类库,那么谁拥有该代码?如果我从头到尾都看过库,请对其进行设计和编程。我可以在家中将其用于其他项目吗? 谢谢, 更新资料 我已经与我的老板谈过这个问题,他也同意它们是我的目标,他对我开放源代码很好。在进行对话之前,我无论如何都开始更改对象,这实际上非常有效,并且代码现在比以前更适合该特定项目。 但是感谢所有参与此辩论的人。我希望所有这些文本都不会浪费,并且有人从中学习。我当然做到了 干杯,

5
TDD,新测试,旧测试尚未实施
我正在试验测试驱动的开发,发现经常遇到以下情况: 我为某些功能X编写测试。这些测试失败。 在尝试实现X时,我看到我需要在代码的下层实现某些功能Y。所以... 我为Y编写测试。现在针对X和Y的测试均失败。 一旦我同时处理了不同代码层中的4个功能,我就失去了对实际工作的关注(太多的测试同时失败)。 我认为即使在开始编写测试之前,也可以通过更加努力地计划任务来解决此问题。但是在某些情况下,我不知道需要更深入地研究,因为例如,我不太了解底层API。 在这种情况下我该怎么办?TDD有什么建议吗?

4
在模型中放入诸如“ FullName”或“ FormattedPhoneNumber”之类的吸气剂是“一种模式的气味”吗?
我正在开发ASP.NET MVC应用程序,并且已经养成了将看起来有用且方便的吸气剂放入模型/实体类的习惯。 例如: public class Member { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string PhoneNumber { get; set; } public string FullName { get { return FirstName + " " + LastName; } } …

9
设计模式:我应该学习它们吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 4年前关闭。 因此,背对背问两个问题有点奇怪,但是它们并不太相关,我也不想将它们结合在一起,但是我保证,我不是在发垃圾邮件! 无论如何,我是一个刚上大学的应届毕业生,我的学业只涉及设计模式...我们实施了一些简单的模式,涉及了更复杂的事实,并被告知如果我们去GoF书,想了解更多。我的问题是,值得学习GoF书中的模式吗?在我看来,尝试使问题适合经典模式似乎总是违反直觉的,但是很显然,这本书和这些模式都是有名的。它们显示出来足以让我学习吗? 再次感谢!

4
如果拥有HTTPS,为什么我们需要REST服务安全性
我指的是这篇出色的文章,网址为http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/,其中提到了类似于Web服务安全性的亚马逊。但是,在团队中有人问我一个问题,如果我们已经使用HTTPS,为什么为什么需要它。我无法回答,因为在我看来确实如此,尽管直觉告诉我,它们可能是正确的。 在提供REST服务时,是否还有HTTPS无法使用的地方?喜欢第三方网站? 如果有人在通过公共互连网上确保Web服务安全方面有经验,请向您提供一些经验。 提前致谢。 编辑:为了澄清,我不是在谈论用户身份验证,而是更多的客户端身份验证。可以假定用户身份验证是基于HTTPS + REST的纯文本。 我担心的是,这仍然允许任何人在没有我的客户端的情况下使用Web服务,因为所有内容都是纯文本,尽管通过HTTPS,客户端端点仍然可以在没有客户端应用程序的情况下使用我的Web服务。
13 rest 

8
要严格还是务实?
我开始意识到开发软件(以及其他)是一个不断问自己问题的过程。有关代码质量,关注点分离,最小化依赖关系的问题,... 但是主要的问题是:如果不去精神病医院就可以走多远? 我正在申请一份新工作。昨天我与一个可能的未来雇主一起,他想测试我的编程能力。练习之一是:解释此代码的作用。我浏览了他们开发的应用程序(vb.net中的winforms)的一些代码(这是医院的管理应用程序)。这给了我一次真正看清他们如何对待事物的机会,这真是令人失望。 一些例子: 我在某处看到了:调用[在此处插入子例程的名称]->我很震惊:这不是VB6的内容吗? 他们使用ado.net拥有一个单独的数据层,但是我必须检查的一种方法将数据集返回到调用层。因此,无论是否使用单独的数据层,应用程序都与ado.net绑定在一起(如果它们从不切换到其他数据访问方法,也永远不会成为问题)。 该数据集是按原样读取的,因此它仍然是一种以数据为中心的方法(当然,可以争论您可以在“ Patient”或“ LabAnalysisRequest”等类中放入多少逻辑/行为。 我还相信已经看到了通过字符串串联构造的sql查询。 他们使用存储过程(对我来说,这意味着:逻辑分散) 没有提及视图/控制器:全都是形式驱动的 我看到的最丑陋的事情是: 如果是TestEnvironment.IsTesting然后 someVar = [一些硬编码值] 其他 someVar = [一些动态获取的值] 万一 [这里的其他功能] 这与我在学校学到的完全不同:(不可知性)域层,可持性层,表示层,单元测试,... 因此,我改写我的问题:一个人应该是多么基础或教条?程序员应该在多大程度上坚持自己的原则,或者只写能完成这项工作的代码?
13 culture 

8
样式化复合AND / OR if语句
如何为复杂的复合AND / OR if语句设置样式,以实现最大的可读性?您如何缩进以及将换行符放在何处?我的特殊情况如下。绝对比将所有内容都粉碎成一条线要好,但是看起来仍然很凌乱。 if ( ( x == y && a != b && p.isGood() && ( i + u == b || q >= a ) ) || k.isSomething() || m > n ) { doSomething(); }

8
无薪IT实习的危险信号[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 5年前关闭。 我读了以下问题:寻求暑期实习以获取经验的一年级CS学生的提示? 但是,除了如何获得和/或寻找实习机会外,我的问题还在于如何过滤寻找免费劳动力的公司来运营其网站VS可能没有提供薪水支票的公司,但它将为您提供指导和技能。 我的一个堂兄是大学新生,她正在寻找软件开发实习生,但是在这一点上,她正拼命寻找任何与IT相关的实习生。 除了知名的软件公司和知名的小型软件商店,您如何看待在非IT公司(无论规模大小)中从事IT维护与不良维护的良好实习?如果您没有工作经验,大学生应该问什么问题来防止偷窃?在接受要约之前,您是否可以发现任何危险信号?
13 internship 

9
您如何在项目中命名sprint?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 一些Scrum软件管理工具为您提供此选项,以明确命名您的sprint。 您是使用sprint命名的首选方式还是只使用简单的方案(例如1、2、3,...)?
13 scrum  sprint 

6
“解释RAII习惯用法”是一个很好的C ++筛选问题吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 与我合作的一家公司要求我进行候选电话筛选,以确保在将某人转移给潜在客户时不会完全让他们感到尴尬。 事实证明,有相当多的人被安排担任C ++开发人员角色。我并没有花太多时间在C ++上,但是我已经用该语言完成了一些琐碎和琐碎的项目。我认为“解释RAII习惯用语”将是一个不错的垒球问题,大多数严肃的C ++开发人员都可以在半睡着时回答,并且可以让我继续讨论有关经验的更有趣的问题。但是事实证明,即使我将首字母缩写词扩展为“资源获取就是初始化”,具有10年以上C ++经验的人也不认识该术语。一位候选人甚至说,他认为在Windows开发中应用该技术并不总是可行的,我认为这是一个奇怪的想法,但我可以看到几个可以支持该思路的示例。)。 甚至我认识的几个C ++开发人员都知道他们的能力,他们说他们不认识该术语,但是在阅读了该技术的摘要后说:“哦,是的,我不知道这个名字。我只是将这些事情视为您要做的事情。” 我记得Stroustrup的第二版中的术语,尽管当时并没有完全发挥作用。 因此,是“您能向我解释RAII的习惯用法吗?” 一个公平的筛选问题?期望所有有能力的C ++开发人员理解它是否合理?这个词比我想象的更神秘吗?假设候选人不知道该术语,是否有后续问题可以帮助我弄清楚他们是否至少已使RAII发挥作用的内在化?是否有更好的替代“杂草”问题使应试者有一定的自由度,并帮助应聘者证明他们对C ++开发的理解? 编辑要补充:澄清一下,我并不是那种使人们失去资格的面试官,因为他们不知道流行语和首字母缩写词。但是,我确实希望有经验的C ++程序员能够内部化资源管理的良好实践,这是合理的。我还认为,在继续进行有关设计,解决问题等更有趣的问题之前,验证候选人是否了解他们声称拥有专业技能的技术的“基础知识”非常重要。提出一个适用于简短电话筛选的开放式问题,在我提出“困难”问题之前,我可以用它来判断候选人对C ++中良好资源管理实践的基本理解。
13 c++  interview 

7
将压倒性代码分解为可管理块的最佳方法?
一旦大型项目达到一定程度的复杂性,我就会变得不知所措。一旦到达项目中的某个特定点,我的进度就会缓慢地爬行,并且发现自己不断地追踪自己的步骤并理清各种混乱。 由于我的这个弱点,我真的很擅长重构。而且我总是尝试将对象分解为更小,更易于管理的对象。这种弱点也可能导致我过多地注意正确设计事物。 我知道如果我可以将问题分解为较小的问题,那么我将能够顺利完成任务。想到的一种策略是测试驱动的开发。我还可以做些什么?

6
一个程序员可以自己做什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 随着软件产品需要整个团队的开发,一个程序员可以自己完成多少工作?换句话说,一个人可以写Photoshop,MS单词等吗?如果他们做不到,那么Web开发会成为程序员可以做很多事情的领域吗?

6
软件“卓越中心”(CoE)的特征是什么?
最近,我系的一位新主任进来,他表示希望我们成为“卓越中心”。我期望他是我的第一位上司,实际上他具有编程背景,所以对此会有一些描述。但是,它留在那儿。 正如我在过去几天对此所反映的那样,我对CoE的实际含义不抱任何印象,而不仅仅是在交付产品方面“有效”。以下是我正在努力解决的主要问题: 这仅仅是管理类型抛出的一个术语吗? 什么素质使一组软件开发人员和测试人员出色? 在这种情况下,您如何衡量卓越?

3
Microsoft当前建立.NET数据层的最佳做法?和现实?
我正在使用的开发团队将很快迁移到.NET 4.0,但是,我们使用的数据访问类库仍然使用ADO.NET“经典”,即SqlDataReader,DataTable等。同时,Microsoft和世界其他地方似乎都在通过Entity Framework和WCF Data Services向前发展。我没有在MSDN上找到任何表明Microsoft认为最佳实践的数据访问技术的信息。 微软有偏好吗?大多数人当前使用什么数据访问方式?是否有充分的理由使用ADO.NET classic而不迁移到Entity Framework?

7
您如何应对偷窃?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我最近一直在入侵我几个月前开始的项目。这是一个简单的想法。允许人们收集他们在Github上共享的代码所取得的成就。 因此,我开始了这项崇高的尝试,试图吸引我的朋友获得编码和帮助。我将所有的空闲时间都花在了启动,运行和构建它上。 输入音乐延时 我的朋友们尽可能地参加。可以想象,我对它的成功非常执着。 然后,正当我为发布做准备时,一家公司发布了非常相似的产品。当我听到我的小计划被其他人释放时,我感到非常沮丧,但这并不是我拥有这个想法的权利。我吞下了自己的骄傲,并向他们开了一封电子邮件,说出一些类似的内容 嘿,我一直在做类似的事情。我们应该谈谈!这是超酷的东西。 我们交谈,我感到他确实不想合作,尽管我们诚挚地允许彼此访问另一个站点。 过了几天,我看到一些关于成就的描述出现在他们的成就站点上。原本与他谈话以后,我是要送他们一个很好的措辞电子邮件并说明我的计划我的成就系统,并调用它退出。一旦看到他们的成就描述出现在他们的网站上,我就不能放手。我决定反击。 我已经开源了该项目,只是为了公平地竞争环境,这使我从处理竞争中解放了出来,因为我只是在做兼职工作。 这不是我每次都可以采取的行动,我想知道如果将来我自己处于这个位置,我有什么选择?诉讼?严厉的电子邮件? 刚起步时,我正在寻求有关如何在没有律师的情况下解决此问题的建议;还是这是现实世界中事物发展的方式?

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.