软件工程

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

7
内部代表,投票和徽章会鼓励良好的编程习惯吗?
只是大声思考-我们的程序员喜欢所有这些投票/徽章/代表的东西,因此可以将这样的方案引入公司代码审查流程中,以鼓励更好的编码。 就像是 您(或代表您的其他人)可以发布评论(可以是摘要,单次提交或一系列评论)以进行代码评论 其他人可以对此发表评论(类似于SE中的答案) 可以提供/建议使用徽章(有些会很不错,有些会很糟糕,例如“ Comment Desert”(评论沙漠)等等) 您可以对代码本身以及注释和徽章(例如,如果有人建议使用徽章而您同意/不同意),则可以上下投票。 这样的计划的目的是 引入一些乐趣以鼓励使用代码审查 提高质量(在此方案中,代码审阅者和审阅者都可以学习) 减少代码审查引发“自我战争”的机会 提供一些指标以帮助衡量个人表现 能行吗?有什么想法吗?

2
Javascript三元运算符与||
我之前看过一些node.js代码,我发现编写它的人似乎更喜欢以下语法: var fn = function (param) { var paramWithDefault = null == param ? 'Default Value' : param; } 在我认为更为简洁的地方: var fn = function (param) { var paramWithDefault = param || 'Default Value'; } 我想知道第二种形式是否实际上是更易为社会接受的JavaScript语法,为此,我比三元运算符更清楚地看到了第二种形式。 我注意到在第一个示例中,他使用的是双重等于(而不是三次等于),这意味着它将“未定义”计数为null,这将减少我能想到的影响。但是,我在很多地方都读过==在JavaScript中是一个非常邪恶的运算符(JIRCint非常反对它,IIRC)。

5
Windows 8对.NET的未来意味着什么?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 微软展示了Windows 8的演示,其中包括一个允许开发人员使用HTML5和JavaScript的新平台。 这个新平台是Windows 8开发的主要方式吗?微软是否正在逐步淘汰.NET平台以支持HTML 5堆栈?Windows 8对.NET开发人员意味着什么?

3
我如何遵守欧盟Cookie指令?
2011年5月26日,一项新的欧盟指令生效,现在应要求访问网站的用户获得许可,以允许该网站存储包含有关他们及其访问网站信息的cookie。 您如何解决这个问题?除了有人首次访问我的网站时出现的选择提示之外,还有其他方法可以解决此问题吗?
17 legal  privacy  cookies 

8
我的客户要我向网站添加背景音乐。我怎么告诉他们这是一个可怕的主意?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 我在特定客户的网站上有相当丰富的经历。他们要求的最新“功能”是在网站加载时自动播放背景音乐。我应该说些什么,以使他们信服这是一个坏主意?

3
您如何为依赖无法模仿的具体外部实现的代码编写测试?
背景:我正在考虑通过为我一直在研究的模块创建一些单元测试的概念来向同事介绍单元测试的概念。它的要求最近发生了变化,并且需要更多的抽象/交互,因此,这似乎是开发一套测试套件的好方法,该套件可以“证明”它的工作原理,而无需手动在应用程序周围戳戳。 但是,问题在于该模块依赖于不可模拟的外部因素,即PDF和XSL。基本上,我从数据库中读取XML并对其进行XSL转换,然后使用称为ABCPDF的库将其转换为PDF。然后将此PDF与基于静态模板的另一个PDF合并。我知道我可以测试XML并确保值正确,但是许多潜在的错误和问题都与最终文档的实际显示有关-例如,细节,例如包裹了多长的文本字符串,某些HTML区域位于甚至可以测试这些东西(我意识到这些可能是集成测试,或者..我忘记了其名称的第三种测试[不是验收测试,另一种]而不是单元 测试),因为据我所知,我无法轻松地模拟出一个PDF,除非创建它,然后回读或创建一个HTML字符串(即转换后的XML),然后手工解析它以检查其中是否存在某些表格单元格与其他表格单元的关系。 在这种情况下,我应该只专注于单元测试以确保信息正确,并且可以创建 PDF或合并它们,或者采取其他任何措施来针对实际的显示问题进行手动测试吗?

11
伪代码和算法之间的区别?
从技术上讲,这两个词之间是否存在区别,还是可以互换使用?它们都或多或少地描述了解决问题的逻辑步骤顺序。不是吗 那么,为什么我们要使用两个这样的词来表达相同的意思呢? 或者,如果它们不是同义词,那么区别它们是什么?在什么情况下,我们应该使用伪代码一词还是算法一词?

11
在大学毕业后立即被聘为软件项目经理的任何技巧?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 4年前关闭。 去年9月,我毕业于compsci的BS学士学位,从那时起,我一直在努力(但没有成功)试图找到项目经理的工作。 我在学校就爱上了软件工程(这是背后的正式实践,而不仅仅是编码),并且我一生的最后3-4年致力于学习有关项目管理的一切知识并获得经验。在学校期间,我已经管理了几个项目(由大约12人组成的团队),并且我在大学的软件工程研究实验室工作。我的简历也很不错-上学之前我是一名程序员(现在我才27岁),并且我在3个暑假都做了Google Summer of Code。通过担任大学报纸的图片编辑2年,我还具有一般的“人员管理”经验。 我找工作的第一个问题是没有得到足够的面试机会。我使用careers.stackoverflow.com很棒,因为我通常会与知道他们在说什么的非人力资源人员联系,但没有足够的公司使用它来定期接受我的采访。我还尝试过Monster.com之类的网站,无奈之下,我向项目管理职位发送了不少于60份申请。我已经收到3封自动拒绝信件,仅此而已。至少careers.stackoverflow让我接受了我申请的8/10个职位的电话面试。 但是主要的(也是极其令人沮丧的)问题是经验问题。我已经从头到尾成功地管理了项目(在我的软件工程课程中,我们有真正的客户提出了真正的软件需求,并为他们建立了需求),但是我从来不必处理预算和金钱(我知道这就是人力资源人员立即拒绝我的原因。这些职位大多数都需要5年以上的PM经验,而我已经看到需要12年以上的荒谬事物。 面试也很疯狂。我有很多地方绝对爱我,所以我进入了最后一轮的采访,我离开时觉得事情进展得非常顺利,他们会考虑我。但是,一周后我和他们一起入住时,他们告诉我:“我们真的很喜欢您,您的资历非常好,但是我们希望找到经验更多的人。” 我能理解的不好的面试-就像我要在本地和海外管理开发人员的PM职位-我进行了3次面试,整个面试过程是他们问我CS脑筋急转弯,让我浪费时间在写快速排序等事情上在纸上或编写二进制搜索树。即使我尝试将讨论转向更相关的PM内容, 但是当我接受良好的面试时,他们说我的“资格很好”,但他们想“更多的经验”……这使我想把头发扯下来。我还可以做些什么?虽然我的目标是从事技术相关的PM职位(而不仅仅是处理预算数字),但我确实不希望直接从事开发工作,因为我喜欢从非常高级的层次上创建软件,而不是花大量时间调试内存泄漏。实际上,我什至无法获得我有资格获得的开发职位,因为我错误地告诉他们我未来的职业目标是担任PM(这通常会导致他们说“嗯,我们已经有PM,职位并不是真的可以让您到达那里。”-我的意思是“不,那是我的工作,请远离我。” 我对长期任职的人表示歉意,但是我真的很想被聘为PM,因为这既是我的职业目标,也是使我彻夜难眠的热情。关于我还能做什么还有什么建议吗?我目前正在写一个博客,谈论我对软件工程的看法,我正在为iOS应用编写规范,由我设计,编写代码并向雇主展示,但这花了我很多时间没有。

8
客户购买软件无法执行的功能,然后抱怨。怎么解决?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 5个月前关闭。 我在出售预包装解决方案时遇到过几次。 客户购买了该包装,该包装清楚地表明它可以执行XYZ,但客户希望它执行ABC。 然后,客户通过电子邮件获得支持。我告知客户,该产品从未按照他们的预期目的进行设计(将其与其他产品集成)。 客户要求退款,因为他们无法使用该产品。 这就是我的两个想法。首先,该产品可以正常运行,现在他们已经获得了源代码(PHP脚本)。我怎么知道他们仍然不会使用它,仍然想要退款? 其次,我确实为客户感到难过。如果他们是诚实的,并且大多数人是诚实的,那么他们将无法使用该产品,因此“浪费”了他们眼中的钱。但是,那不是我的错。 到目前为止,我已经根据要求退还了这笔钱,但是现在我正在与大型公司处理这种情况的情况进行比较。他们会怎么做?也许是因为它们更大,所以他们不时会在乎一些退款,但是对于像我这样的单身乐队,每笔交易都是必要的! 处理这种情况的最佳方法是什么?

6
培养一个每个人都可以尝试任何想法以使软件运行更快的时间?
有时,通过方法和彻底的搜索可以发现软件性能的窍门。有时,需要疯狂的思维和勇气尝试疯狂的想法。有时,一个想法只是开始,需要大量的努力。 如何营造一个每个人都可以尝试不同想法以改善我们正在开发的软件性能的时间?团队中的每个人都有至少几个月的软件使用经验,并且非常擅长该软件。 您是否同意不同的想法将有助于找到提高软件性能的方法?为什么?为什么不? 哪些技术可以使我们快速尝试优化想法?为了从试用中获得良好的结果,是否需要快速的编码速度? 最后,应分配多少“时间”以确保良好的结果而又不会造成懈怠? 是否有必要进行实验以证明存在“做某事的更快方法”?(添加2011-06-07) 有关: 您有什么策略巧妙地提高团队水平? 什么时候代码黑客会变得糟糕? (仅出于赏金目的, -2011 / 06/07团队规模为2-4个开发人员,无专门的质量检查人员。所有代码,单元测试和性能测试均由开发人员完成。由于项目的性质,探查器结果可用于显示比例执行时间,即使它没有显示出单个瓶颈。)

7
在支持模块/插件时如何组织MVC框架?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 关于MVC框架,我已经看到了两个主要的代码库结构。问题在于它们似乎都伴随有组织缺陷。 标准MVC /controller /model /view 问题:没有分离相关组件(论坛,博客,用户等)。 模块化MVC /blog /controller /model /view /user /controller /model /view /forum /controller /model /view 选择基于模块的系统会给您带来麻烦。 长名(Forum_Model_Forum = forum / model / forum.php)(如Zend) 使用文件系统搜索is_file()来查找具有论坛模型的文件夹?(像小花一样) 尝试分离不同的模块时,它们的其他任何MVC结构是否运行良好?我缺少这些结构带来的好处吗?

8
“您将不需要它”和“现在总比没有好”如何一起玩?
当我提高设计的干燥度时,我经常发现自己拥抱“现在比没有更好”。通常,我发现我需要在其他知识体系的背景下,对一种知识建立对一个权威位置的理解。因此,我倾向于将系统设计为“现在”。 相反,尽管有一定的机会我不需要它,但这种做法仍使我提前建立了。 这两种模式如何相符? 您使用什么方法来确保它们表现良好? 您如何一起教他们又不引起混乱?

4
现实生活中的NP完整或NP难题
在现实生活中,是否有人在工作中定期解决NP完全问题或NP困难问题(通过试探法或追求次优解决方案等)?我知道它们会发生在调度,计划,VLSI设计等中,但是我试图了解当今经常使用程序员或工程师的主要行业。如果要开发专门知识或库,例如组合优化,在哪里可以将其用作编程工作的一部分? 有个人账户吗?

1
是否有关于用户密码存储做法的官方标准?
最近,我使用了几年前拥有的帐户的政府服务。我忘记了该服务的密码,因此我使用了“忘记密码”链接,并且很惊讶地看到这个政府网站以纯文本格式将密码发送到了我的电子邮件地址。 我个人知道如何处理用户密码,并通过反馈表单(这是一个政府网站,发送了一些关于我的担忧的评论。人们使用其他在线政府服务来处理敏感信息,以及大多数人对所有事情都使用相同的密码或少数几个密码(我知道我确实如此),并且我怀疑整个过程中都使用了相同的安全性实践),对此我迅速做出了回应。他们向我保证,“该部已采取必要步骤保护密码信息,包括使用适当的加密方法对其进行存储”。 我只想说“很显然,如果您可以通过电子邮件将密码发送给我,显然您没有采取必要的步骤”,但我并不是想表现得粗鲁,而且我认为我的信息永远不会接触到反正知道我的意思的人。 因此,我只想声明“尚未根据[某些官方安全标准]采取必要的步骤”,这可能会促使人们对其进行调查。我在OWASP上进行了快速搜索,但只找到了一篇有关纯文本存储的文章。 是否存在关于用户密码处理的安全标准,该标准禁止(我认为可能)禁止存储可检索的密码信息?甚至更好:处理诸如银行和政府网络服务之类的敏感信息的网站是否必须遵循这样的标准? 我知道我可能不会做任何更改,但是值得一试。

2
Java和JVM许可证
Java许可是否允许其他公司创建自己的Java语言版本或只是准确地实现它?关于JVM的同样问题。 我听说Sun起诉Microsoft更改其.NET版本的Java实现和Java for Google Android,但我只是不能完全理解整个概念。
17 java  licensing  jvm 

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.