软件工程

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

1
Windows是Django社区中的“二等公民”吗?
我目前正在为Web应用程序进行研发,我们计划首先托管自己,然后让客户自行托管。 我的任务一直是评估Web框架,以期从一开始就可以为我们带来最大的生产力和维护的便利性,同时还使我们能够轻松地支持部署到客户控制的环境。 我们的团队具有ASP.NET(MVC和Webforms)和Ruby on Rails的经验。 我们在Rails上的经验是Windows部署是一个非常禁忌的话题,任何有关IRC或StackOverflow的问题都会引起“为什么不是Linux”的回应。但是,在这种情况下,我们的目标市场可能是运行Windows或Linux服务器。 在Django领域也是如此吗? 垃圾表现可能吗? 失去疼痛有可能吗? 是否因为不想运行Linux而被视为合理且没有被视为完全愚蠢的想法?

5
为什么我看到这么多的for(;;)构造?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 按照我的想法,for循环用于迭代已知或可确定的范围。 String[] names = //something; for ( int i = 0; i < names.length; i++ ) { //do stuff } 这等效于(除i之外): String[] names = //something; int i = 0; while (i < names.length ) { // do stuff i++; } 换句话说,for对于常用的while构建体,循环只是一种(非常有用的)语法糖。 但是,我在网络上看到很多for(;;)在功能上等同于while(true) 这是什么原因呢?为什么无限for循环比无限while循环更受青睐? //我什至看到一本完全没有使用while循环的java教科书!导致如下可怕的构造: String input = getInput(); …

3
在网络配置中设置连接字符串是否是一种好习惯?
最近,我在工作中与一些同事进行了讨论,因为他们说最好在.DLL中加密一个字符串连接。我说过为什么不使用加密的web.config中定义的字符串连接?一样,更好,因为实体框架(例如,在应用程序的Web配置中查找连接的名称),现在,我想从安全角度了解哪种更好,什么是最佳实践?

7
如何在团队中处理不同的编程风格?
我们有一个小的开发团队(只有3个开发人员),最近我们有了一个新的团队成员。虽然他是一个聪明的编码器,但是他的编码风格与我们完全不同。我们现有的代码库主要包含可读,干净和可维护的代码,但是新团队成员正在迅速更改许多文件,引入难看的hack和快捷方式,在各处使用定义,在错误的位置添加功能等。 我的问题是,其他人以前是否经历过这种情况,以及是否有人有与他交谈的技巧。

3
语法和语法有什么区别?
我了解语法和语义之间的区别- 语法:如何将符号组合以形成有效的表达式或语句。 语义:构成表达式或陈述的那些符号的含义。 但是语法是什么?例如:有时我听到人们说某些结构“在语法上是不正确的,但在语法上是正确的”。这是什么意思?

3
Java的包命名约定有什么意义?
我不明白为什么Java使用(可能是假想的)域名的相反名称作为程序包的名称,而大多数人使用的域名与其所拥有的产品之间却没有任何联系。许多开发人员甚至没有任何领域。 此命名约定的原因是什么(如果有)?
14 java  packages 

8
如何处理推动旧系统的管理?
我目前正在带薪实习中,并且负责维护由过去五年来由多个开发人员(在不同时间)开发的过时系统。管理层同意“该系统具有生命支持”,并且我从当前使用该系统的最终用户那里收到定期报告的错误报告。 管理层现在希望将该项目再延长一年,在此过程中,用户群几乎增加了两倍。 作为一名实习生(或任何入门级职位),我该如何“退缩”?我已经写了一份报告,陈述了我的担忧,尽管它是开放式文档。是否有用于建议更改的协议或文档类型?我是否可以提出建议,还是应该继续支持旧系统? 要澄清的是,软件开发不是我公司的主要业务。因此,不存在内部协议。此外,该项目根本没有正式文档,也没有需求文档。发展是非常特别的。

4
是否有理由在签入代码中保留冲突标记?
考虑冲突标记。即: <<<<<<< branch blah blah this ======= blah blah that >>>>>>> HEAD 在促使我提出此问题的特殊情况下,负责的团队成员刚刚完成了从上游到我们分支的合并,并在某些情况下将其留为注释,以作为刚刚过去的文档解决。他将其置于编译状态,测试通过,因此它没有您想的那么糟糕。 尽管本能地,我真的对此表示反对,但是作为恶魔的拥护者,我可以理解为什么他会这样做: 因为它向其他团队开发人员强调了合并带来的变化。 因为那些在特定代码方面更精通的人然后可以解决注释所说明的问题,从而使他不必猜测。 因为上游合并是很痛苦的事情,并且可能难以证明有时间妥善解决所有问题的时机,所以需要一些半完全的FIXME通知,因此为什么不使用原始冲突作为注释来记录此问题。 我的反对是本能的,但我希望能够合理地证明其合理性,或者更明智地看待我的立场。任何人都可以给我一些例子,甚至是一些经历,其中人们与其他人在一起做得不好,和/或为什么这样做不好的原因(或者您可以扮演魔鬼的拥护者并予以支持)。 我自己直接担心的是,如果我一直在编辑有关文件之一,拉出更改,遇到真正的冲突,但也加入评论的文件,那显然会很烦人。那我确实会有一个非常混乱的文件。幸运的是,这没有发生。


5
如何创建可扩展且无副作用的集成测试?
在当前的项目中,我很难找到一个好的解决方案来创建没有副作用的可扩展集成测试。关于副作用自由属性的一些澄清:它主要是关于数据库的;测试完成后,数据库中不应有任何更改(应保留状态)。也许可伸缩性和状态保存并没有融合在一起,但是我真的想推动一个更好的解决方案。 这是一个典型的集成测试(这些测试涉及数据库层): public class OrderTests { List<Order> ordersToDelete = new ArrayList<Order>(); public testOrderCreation() { Order order = new Order(); assertTrue(order.save()); orderToDelete.add(order); } public testOrderComparison() { Order order = new Order(); Order order2 = new Order(); assertFalse(order.isEqual(order2); orderToDelete.add(order); orderToDelete.add(order2); } // More tests public teardown() { for(Order order : ordersToDelete) order.delete(); …

2
在迭代过程中更改估计值可以吗?
我们已经开始由4个开发人员组成的团队使用Agile / Scrum。我们进行了故事估算,并在产品积压订单中订购了故事Primed故事。 我们从对复杂度从1到5的基于点的估计开始,而不是通常的1,2,3,5,8,13 ....等 在处理了几个故事之后,我们觉得一些估计为4点的故事应该只有2个,而其他估计为2点的故事要复杂得多,应该估计为5个。我想知道: 在迭代过程中更改我们的故事估算值可以吗? 是否可以使用当前估计点从1到5,而不是通常的1,2,3,5,8,13 ....等 尽管我个人认为这两种情况都不应该,但是由于我自己的理解还不是很清楚,我需要支持自己(尽管任何好的参考资料都会很好!)


8
分布式计算到底是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 究竟什么构成分布式计算,它与并行/并发计算有何不同? 在多个并行线程中尝试使用互斥量和信号量尝试同步访问资源是否会在分布式计算领域构成问题?

3
关于如何减少“经理”类使用的提示/建议?
有时,我听说程序设计中有太多“管理器”类是代码的味道,并增加了不必要的复杂性。对我而言,人们想使用管理器类从对他们有意义的上下文中使用对象来控制和控制对象是有道理的,但是弄清楚如何使解决方案在没有它们的情况下有效。 真的应该尽可能避免经理班吗?另外,对于应删除这些管理人员的一般/常见情况,我应该阅读哪些文章/论文,以了解如何实施替代方法?

7
从TFS到Git
我是.NET开发人员,并且多次使用TFS(团队基础服务器)作为源代码控制软件。TFS的良好功能是: 与Visual Studio的良好集成(因此我几乎可以直观地完成所有操作;没有控制台命令) 便捷的退房,入住流程 易于合并和解决冲突 简单的自动化构建 分枝 现在,我想将Git用作我的开源项目的骨干,资源库和源代码控制。我的项目使用C#,JavaScript或PHP语言,并使用MySQL或SQL Server数据库作为存储机制。 为此,我只是使用了github.com的帮助,并在那里创建了配置文件,并下载了Git的GUI。到这部分是如此简单。 但是我几乎坚持不下去了。我只想做一些简单(真的很简单)的操作,包括: 在Git上创建项目并将其映射到笔记本电脑上的文件夹 检出/检入文件和文件夹 解决冲突 那就是我现在要做的。但是,似乎GUI并不那么用户友好。我希望GUI具有一个Connect To...或类似的名称,然后希望显示一个项目列表,当我选择一个项目时,希望看到该项目的文件和文件夹列表,就像浏览TFS项目一样在Visual Studio中。然后,我希望能够右键单击文件,然后选择check-in...或之类的check-out东西。 我期望很多吗?我应该怎么做才能像TFS一样轻松使用Git?我在这里想念什么?

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.