软件工程

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

10
成语与设计模式之间的区别?
习惯用语和设计模式有什么区别?这些术语似乎在某处重叠。确切地,我不知道。它们可以互换吗?我什么时候应该使用什么? 这是C ++习语的列表。我可以称它们为设计模式吗? 维基百科定义 将成语编程为低级设计模式 这是什么意思?什么是“低层次”的意思是在这里吗? 这个问题的灵感来自另一个问题:https : //stackoverflow.com/questions/7343531/are-the-some-design-patterns-language-dependent

9
作为唯一开发人员工作:查看代码
我别无选择,只能独自工作,无法找到适当的解决方案来检查我的工作,进行理智检查,找人集思广益,讨论最佳做法等。 我以为我会通过Jeff Atwood的文章得到答案:在《编程》中,“一个是最孤独的数字”,这是我在该主题上能找到的最好的答案,但事实只是重申了我的问题。 我知道像这样的Stack Exchange网站和Code Review是一个明显的潜在答案,但正如许多人所欣赏的那样,这是理想的FAR: 虽然我无法列出所有陷阱,但经常提出一个问题并将其装箱成一个独立的问题通常需要花费大量的工作,以至于在您充分准备好它之后,您已经在更大程度上回答了自己的问题。时间比其他时间要多。同样,隐藏细节以提出明确的问题,也消除了有人发现您未曾想到的问题的可能性。另外,尽管我不能完全动手,但我能想到的任何形式的文本互联网讨论都无法与自由对话的响应能力相提并论。最后但并非最不重要的一点是,出于明显的原因,我不想将我的整个项目发布给全世界,让人们永生不衰。 除了付钱给顾问查看我的代码之外,还有其他答案吗?

6
语法突出显示的配色方案研究
大多数程序员对于语法高亮的配色方案都有自己的个人喜好,但是我一直在想,有没有人对最佳配色方案进行过实际的科学研究?我想象这样的研究将研究诸如代码的可读性,程序员的眼睛是否被最重要的部分所吸引等问题。 也许已经为默认的Visual Studio主题完成了此操作,但是我想知道是否有任何公开可用的研究以及它们的发现。

10
是否有任何有效的理由禁止字符和限制密码的长度?
我遇到过很多站点,它们要么限制了允许输入密码的长度和/或不允许某些字符。这对我来说是一个限制,因为我想扩大和延长密码的搜索空间。这也给我一种令人不适的感觉,即它们可能不会散列。 是否有充分的理由设置长度上限或排除密码中的字符?

10
RoR的缺点是什么?[关闭]
我目前正在尝试确定要在Web开发中学习和使用的服务器端语言,虽然相对容易获得有关为什么x,y或z是一件好事的信息,但要弄清每种缺点都很难其中。 特别是,我很好奇与其他给定语言/框架相比,学习和/或使用Ruby on Rails有哪些缺点。

4
可以走多快?
Go是少数应该“接近金属”运行的语言之一,也就是说,它是经过编译,静态类型化的,并且无需VM即可在本地执行代码。这应该使其相对于Java,C#等具有速度优势。但是,它似乎落后于Java(请参阅《编程语言实战》) 我假设不太成熟的编译器对此负有很大责任,但是还有其他原因吗?Go的设计中是否有固有的功能可以阻止它比Java更快地运行?我对运行时模型有一个非常简单的看法,但是由于本地代码的执行,看来至少在原则上它应该比Java运行得更快。

7
在开发项目时经常重新设计是一个不好的信号吗?
刚开始编程时,我以为我有一天会坐下来并绘制所有类的UML图,然后开始一个项目,然后再坚持下去。我现在已经编程了两年了,但事实并非如此。当我经历一个项目时,我经常说 “嘿,我需要一堂课来做_ _。我以前没想过。” “等等,这个函数实际上应该在该类中,而不是在这个类中。我将其移开。” “这实际上应该是两个类,而不是一个。我将其拆分。” “我应该使这三个独立类都从一个抽象类继承。” Etcetera等。 我经常像这样进行重新设计,这是一个不好的信号吗?这是否意味着我是一个贫穷的程序员,或者这是正常现象吗?


11
为什么对SQL注入的防护不是高优先级?
在Stack Overflow上,尽管基本解决方法已广泛使用了十多年,但我在问答中看到许多PHP代码都具有极易受到SQL注入攻击的MySQL查询。 为何今天仍在使用这些类型的代码片段?
39 php  mysql 

9
为什么软件工程师的面试难度特别大(与研究面试相比)?[关闭]
首先,我的一些背景。我拥有CS博士学位,并且在您非常了解的甚大型公司中担任过软件工程师和研发研究科学家的工作。我最近换了工作并接受了两种职位的面试(就像我过去所做的那样)。 我的观察:SW工程师的求职面试比CS研究员的求职面试要困难得多,但是研究员的工作报酬更高,更具竞争力,更有回报,更有趣并且具有更高的发展潜力。 这是研究人员的典型采访循环: 通过电话采访了解我的研究是否与实验室的研究保持一致 面对面:在一个小时内介绍我的最新研究成果(可能代表9个月的工作时间),并回答听众的问题 与约5位研究人员进行的一对一面谈,他们向我询问有关我的工作/出版物/专利的非常合理的问题,包括:技术问题,我的工作适合相关工作以及如何将我的工作扩展到新领域 这是软件工程师的典型面试循环: 在电话采访中,我被问到算法问题,也许还要做一些编码。很标准。 在白板上进行的面试,他们在深奥的C ++细节上钻出F ***(例如,多态虚拟函数调用的工作方式),算法(使全对-最短路径算法可用于1B顶点) ,系统设计(设计数据库负载平衡器)等。此过程持续进行六到七次采访。荒谬。 为什么有人愿意忍受这个呢?问C ++琐事或编写代码证明自己的目的是什么?为什么不让SE面试更像研究人员面试,您可以在其中谈论您所做的事情? 物理,化学,土木工程,机械工程等其他领域的技术面试如何?
39 interview 


4
您的Lisp工作流程是什么样的?[关闭]
我现在正在学习Lisp,它来自于机车BASIC-> Z80汇编器-> Pascal-> C-> Perl-> C#-> Ruby的语言发展。我的方法是同时: 使用SBCL,QuickLisp,closure-html和drakma编写简单的网络抓取工具 观看SICP讲座 我认为这运作良好;我正在开发好的“ Lisp护目镜”,因为我现在可以相当轻松地阅读Lisp。我也对Lisp生态系统的工作方式有所了解,例如Quicklisp的依赖关系。 不过,我真正想念的是对经验丰富的Lisper实际工作方式的感觉。 当我为.NET编码时,我已经使用ReSharper和VisualSVN设置了Visual Studio。我编写测试,实现,重构,提交。然后,当我做完足够的事情来完成一个故事时,我会写一些AUAT。然后,我在TeamCity上发布了Release版本,以将新功能推向客户进行测试和希望的批准。如果它是需要安装程序的应用程序,那么我会使用WiX或InnoSetup,显然是通过CI系统构建安装程序。 因此,我的问题是:作为一名经验丰富的Lisper,您的工作流程是什么样的?您主要在REPL还是在编辑器中工作?您如何进行单元测试?持续集成?打包和部署?当您坐在办公桌前时,一边蒸着一杯咖啡,一边蒸着装裱着约翰·麦卡锡(John McCarthy)的照片,那又是什么呢? 目前,我觉得我正在掌握Lisp编码,但没有掌握Lisp开发...
39 lisp 

11
记录:为什么和什么?[关闭]
我从未编写过大量使用日志记录的程序。我所做的最大努力是在发生异常时捕获堆栈跟踪。 我想知道,其他人登录了多少?它取决于您正在编写哪种类型的应用程序?您发现日志真的有用吗?

13
为什么软件时间表很难定义?
以我的经验来看,让我们的工程师准确地估计和确定要完成的任务就像拔牙一样。不仅仅是给出2到3周或3到6个月的估计时间...定义软件计划的最简单方法是什么,这样就不必费心定义?例如,客户A希望在2011年2月1日之前获得功能。知道在此过程中可能需要其他错误修复并占用额外的工程时间,您如何安排时间实施此功能?

16
你对你的想法保密吗?为什么?[关闭]
我相信任何程序员都有一些他/她认为具有创新性或至少有价值的想法。它可能是一个新产品的想法,它将使这个世界变得更好,或者是一种新的开发方法,等等。 但是,必须实施并推广/宣传一个好主意。这需要大量工作(概念证明,原型,技术预览等)和大量资金(适当的广告,营销等)。所以几个月后,这个主意就落在了我们的脑海,但是什么也没做,因为这对于单个开发人员来说是困难,漫长且昂贵的,有时甚至是不可能的。 另一方面,分享我们的想法,看到一家拥有足够资源的中型公司从中受益匪浅,并获得成功和金钱,将是一件痛苦的事情。 那么,您如何处理几乎无法实施或获得专利的想法?您是否在讨论区以及与其他开发人员自由讨论它们?您是否将它们像珍贵的东西一样保留而从未与任何人谈论它们? 如果您保留自己的想法,为什么要这样做?仅仅是因为您希望有一天,您能够实现它们并取得巨大成功,而您通过经验非常了解这是乌托邦?

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.