软件工程

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

8
多少文件就足够了?
(对于将来的开发人员)多少技术文档就足够了?在小时编码和小时记录之间是否存在适当的比例? Papadimoulis认为您应该 生成所需的文档数量最少,以促进更多的了解, 那是一个好的指导方针,还是我应该创建一些具体的东西?

2
是否有关于Scala的经典书籍?[关闭]
想要改善这篇文章吗?提供此问题的详细答案,包括引文和答案正确的解释。答案不够详细的答案可能会被编辑或删除。 关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 我对学习Scala感兴趣,但是由于相对较新,因此似乎找不到很多关于它的书籍。 是否有一本书是事实上的标准,用于描述有关Scala的最佳实践,设计方法和其他有用信息?那本书有什么特别之处?
15 books  scala 

6
如何处理以自我为中心的程序员?
让我解释一下。 在上一份工作中,我有一位在管理层中享有良好声誉的同事。他总是准时完成任务。老板们对他的进步感到高兴,因此他获得了某些特权。 问题是其他程序员都知道他的秘密。他优化了80/20规则,因此他花费了20%的时间来完成80%的代码。剩下的20%留给了维护程序员。谁(不足为奇)因缺乏进步而受到处罚。但是由于该程序员在管理层中享有良好声誉,因此几乎不可能将责任推卸给他。(幸运的是他离开了公司)。 我的问题是,如果您的团队中有这样的程序员,该如何做为编程团队。您是否试图警告管理层,以免破坏自己的机会?你接受这个事实吗?还是有其他选择。
15 behavior 

4
越来越多的高级编程语言的使用是否会导致缺乏计算机体系结构知识的程序员?
引用维基百科的文章“高级编程语言”: 高级编程语言是一种从计算机详细信息中抽象而来的编程语言。与低级编程语言相比,它可能会使用自然语言元素,更易于使用或在平台之间具有更大的可移植性。这些语言隐藏了CPU操作的详细信息,例如内存访问模型和范围管理。 也就是说,随着编程语言水平的提高,程序员与运行程序的硬件之间的距离就越远。 现在,我不知道各个级别的语言使用情况的统计信息,但是我怀疑较高级别的语言正越来越多地取代较低级别的语言。如果是这样,这是否会导致缺乏计算机体系结构知识的程序员?这会对行业造成问题吗?

8
您如何鼓励您的组织从Java迁移到Scala?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 是否有人组织开始从Java迁移到Scala?如果是,您该怎么做?我怎样做才能鼓励我的同事也这样做?
15 java  scala  migration 

8
您认为托管操作系统是个好主意吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 诸如Microsoft Singularity和JNode之类的托管OS 是一个非常有趣的概念。从本质上讲,操作系统是用用低级语言(C / C ++ / Assembly)编写的代码引导的,该语言本质上实现了虚拟机。其余的OS(以及所有userland应用程序)在虚拟机上运行。有一些很棒的事情。例如,您突然使任意指针过时了。如果编写得当,您将摆脱大多数现代OS当前拥有的大量遗留问题。 但是,缺点是,您与硬件之间的距离太远了,而作为开发人员,您将无法下降到较低的抽象级别并弄脏您的手。 您对此有何看法?

7
远程/在家工作的利弊[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 某些日子我从未有过在家工作的机会,但我一定会尝试的。优缺点都有什么? 我会列出一些我能想到的。 优点: 您不需要做任何工作。(这是个笑话) 您可以提高工作效率。没有通勤,放松,没有会议,没有打扰 缺点: 减少团队合作。 其他团队成员可能会因为必须等待异地成员的信息而受阻 抱歉,是否曾经有人问过我-我进行了搜索,但找不到正反讨论。 编辑:看来燕麦粥已经覆盖了这个!:-)

16
什么东西最有利于生产性编程环境?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 2年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 这些年来,我们中的许多人在多种环境中工作,并且发现其中一些生产力更高。在许多情况下,它与开发人员的能力不直接相关,而与他们的环境有关。我本人经历过这种情况,因为我处在我似乎发展更快,更好的地方。还有其他一些地方,我似乎在拖延时间,发展得不那么周到。 您认为如何创建一个富有成效的开发环境?

30
每种语言最受欢迎的IDE是什么?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 这与拥有喜欢的编辑器或类似的东西无关。我只是想知道每种语言最受欢迎的集成开发环境是什么?如果有争执,也许排名前2-3。(认为​​受欢迎就足够了) 迄今: C# -Visual Studio,SharpDevelop Java -Eclipse,NetBeans,IDEA Objective-C -Xcode Delphi -RAD Studio 帕斯卡(Pascal)-Delphi,Lazarus C,C ++ -Visual Studio,Vim PL / SQL -RapidSQL,Oracle SQLDeveloper PHP -Eclipse,NetBeans,Nusphere PHPed Actionscript(AS2,AS3) -FlashDevelop Flex -Flash Builder 4 Python -Eclipse,IDLE Perl -Padre 通用Lisp -Lispworks,Emacs Ruby -TextMate Haskell -Vim Fortran -Vim Visual Basic -Visual Studio

1
如何知道我是否过度使用了多线程?
目前,我感觉我过度使用了多线程。 我有3种数据,A,B和C。 每个A都可以转换为多个B,每个B都可以转换为多个C。 我只对Cs有兴趣。 我可以使用几个转换函数轻松地编写此代码。但我回过神来与线程执行它,三个队列(queue_a,queue_b和queue_c)。有两个线程进行不同的转换,一个工作线程: ConverterA读取queue_a和写入queue_b ConverterB读取queue_b和写入queue_c Worker 处理来自 queue_c 转换相当平凡,我不知道这个模型是否太复杂了。但这对我来说似乎非常强大。每个“转换器”甚至可以在数据到达队列之前就开始工作,并且在代码中的任何时候我都可以“提交”新的As或Bs,它将触发转换管道,这反过来又将触发工作人员的工作。线。 甚至生成的代码看起来也更简单。但是我仍然不确定我是否在为简单的事情滥用线程。

3
拥有纯POCO模型有什么好处?
拥有纯POCO模型的主要好处是什么?我认为模型应该简洁明了,但是我倾向于将维护子对象保留在模型类中。例如,如果我有一个,ClassA并且ClassB定义如下: public class ClassA { public string MyProp { get; set; } public IEnumerable<ClassB> Children { get; } public void AddChild(ClassB newChild) { /*... */ } public void RemoveChild(ClassB child) { /* ... */ } } public class ClassB { public string SomeProp { get; set; } } 拥有add和remove方法有天生的错误吗?我是否应该只公开列表并允许客户端代码添加任何传递简单数据验证职责的内容,例如不为null,并且不重复其他类? 感谢您的帮助。
15 c#  .net  poco 

2
Python中流控制的例外是最佳实践吗?
我正在阅读“学习Python”,发现了以下内容: 用户定义的异常也可以表示非错误情况。例如,当找到匹配项时,可以对搜索例程进行编码以引发异常,而不是返回状态标志以供调用方解释。在下面,try / except / else异常处理程序执行if / else返回值测试器的工作: class Found(Exception): pass def searcher(): if ...success...: raise Found() # Raise exceptions instead of returning flags else: return 因为Python是动态类型化的,并且是内核的多态形式,所以通常使用异常而不是哨兵返回值来表示这种情况。 我已经在各种论坛上多次讨论过这种问题,并且使用StopIteration结束循环对Python进行了引用,但是在官方样式指南中找不到很多(PEP 8附带提供了一个流程控制异常引用)或开发人员的声明。有没有官方声明这是Python的最佳做法? 这(作为控制流的异常是否被认为是严重的反模式?如果是,为什么?)也有几个注释者指出此样式是Pythonic。这是基于什么? TIA

5
REST和HATEOAS是否是Web服务的良好架构?
如果我理解正确,那么REST被Roy Fielding正式化为Web体系结构的描述性模型。AFAIK Fielding并不认为REST很好,他只是在描述Web的实际架构。在这一点上,网络已经证明了一个巨大的成功的分布式超文本系统,因此,这种验证将REST作为主要由人类导航和使用的分布式超媒体领域的成功架构。 REST Web服务是通过将REST体系结构应用于API来创建的。但是实际上是否有任何理由认为REST是该领域的理想架构?更具体地说,是否有证据表明HATEOAS是机器对机器通信的有益设计原则? 我担心的是HATEOAS对于超媒体有意义,因为很少有众所周知的内容类型(HTML,图像,视频等),并且客户端知道如何使用它们。但是对于API来说,内容类型是非常特定的,并且如果客户端经过专门编程以使用它们,则客户端只能以有意义的方式使用它们。向客户端返回URL本身并不能使客户端能够使用指示的资源。
15 rest  hateoas 

2
Microsoft是否不鼓励在C#中使用'var'?(VS2017)
我正在看即将到来的Visual Studio 2017。 在标题为“ 提高生产力 ”的部分下,有一张Visual Studio图像,用于将所有出现的var替换为显式类型。 该代码显然有一些问题,Visual Studio已将其识别为“需要修复”。 我想仔细检查一下我对C#中var用法的理解,因此我读了Eric Lippert在2011年发表的一篇文章,文章名称为隐式类型的使用和滥用。 埃里克(Eric)说: 必要时使用var;当您使用匿名类型时。 当声明的类型对初始化器来说很明显时,请使用var,尤其是在创建对象时。这消除了冗余。 如果代码强调变量的语义“业务目的”并轻视变量存储的“机械”细节,请考虑使用var。 如果需要这样做,则必须使用显式类型,以便正确理解和维护代码。 无论是否使用“ var”,都使用描述性变量名称。变量名称应代表变量的语义,而不是变量存储的详细信息;“ decimalRate”不好;“ interestRate”很好。 我认为代码中的大多数var用法都可以。我认为不要将var用于读取的位... var tweetReady = workouts [ ... ] ...因为它不是100%立即是什么类型,但是即使那样我还是很快就知道它是boolean。 这部分的var用法... var listOfTweets = new List<string>(); ...在我看来完全像var的用法一样,因为我认为执行以下操作是多余的: List<string> listOfTweets = new List<string>(); 尽管根据Eric所说的,变量应该可能是tweets而不是listOfTweets。 更改所有var用途的原因是什么?我缺少此代码有什么问题吗?

3
简洁的代码:使用较少参数的简短方法的后果
最近,在代码审查期间,我遇到了一个新同事写的代码,其中包含带有气味的模式。我怀疑我同事的决定是基于著名的《清洁法规》(也许还有其他类似书籍)提出的规则。 据我了解,类构造函数完全负责创建有效对象,并且其主要任务是分配对象的(私有)属性。当然,可能会通过类构造器以外的方法设置可选属性值,但是这种情况很少见(尽管不一定是错误的,只要类的其余部分都考虑了此类属性的可选性)。这很重要,因为它可以确保对象始终处于有效状态。 但是,在我遇到的代码中,大多数属性值实际上是由构造方法以外的其他方法设置的。计算得出的值被分配给属性,以便在整个类的多个私有方法中使用。作者似乎在使用类属性,好像它们是应在整个类中访问的全局变量一样,而不是将这些值参数化为需要它们的函数。此外,应按特定顺序调用类的方法,因为否则该类不会做很多事情。 我怀疑这段代码是受建议的启发而提出的,即应保持方法简短(<= 5行代码),以避免大的参数列表(<3个参数),并且构造函数一定不能工作(例如执行某种计算)这对于对象的有效性至关重要。 现在,如果可以证明当未按特定顺序调用方法时,可能会出现各种不确定的错误,那么我当然可以反对这种模式。但是,我预测对此的响应将是添加验证,以验证一旦调用需要设置那些属性的方法,就必须设置属性。 但是,我宁愿建议完全更改代码,以使该类成为实际对象的蓝图,而不是应按特定顺序调用(过程上)的一系列方法。 我觉得我遇到的代码有异味。实际上,我相信在何时将值保存在类属性中以及何时将其保存到参数中以供不同方法使用方面存在明显的区别-我真的不相信它们可以彼此替代。我正在寻找这种区别的词。

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.