软件工程

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

5
这个Git分支模型有什么缺点吗?
我问这个git分支模型或工作流。我真的很喜欢 它使我感到非常直观和富有成效,但是我要问的是,这种方法是否存在我尚不清楚的任何缺陷或负面影响(来自另一个由ClearCase统治这一天的世界)。 (您无需回答所有问题,您将尽一切可能有所帮助) 您是否使用此或类似的git分支工作流程? 您认为这是一种有效的方法吗? 您看到这种方法有什么缺陷吗?有潜在的不利之处吗? 如果您有更好的方法,您是否愿意分享或提供文章或相关讨论的链接?
10 git  workflows 

3
函数式编程语言是否有更多机会进行编译时间优化?
我正在读《现实世界的函数式编程》一书。它从命令式和功能性编程语言之间的比较开始。它指出了函数式编程中的“值”和“表达式”与命令式编程中的“变量”和“函数”有何不同。通过讨论,我得出了一个想法- 与命令式编程语言相比,函数式编程语言有更多机会进行编译时间优化。 是真的吗

5
如果我决定像Haskell一样编写所有Ruby,可以吗?
鉴于Ruby具有内置的良好列表操作功能-减少,映射,选择,收集等。它具有Procs,Blocks和Lambdas,并且具有良好的迭代支持(该each系列),如果我尝试这样做会是一个错误的设计决定以最纯功能的方式编写我所有的Ruby内容?尤其是对于几乎没有I / O的代码(因此不太明显的副作用)? 我一直在学习Haskell(称为“真正的”黑客语言),并且喜欢它的做事方式-我爱Ruby,但是当更多的Haskell精神融入其中时,它可能会变得更加有趣(嗯,没有露比不是一开始就从它那里学到很多东西吗?) 欢迎提供建设性的指导...

3
MVC:完全填充的模型还是部分填充的模型?
这个困扰了我好久了。在进行MVC编程时,您认为更好的编程实践是什么?一个人应该使用完全填充的模型还是部分填充的模型,特别是当我知道要完成此特定任务时,我将仅需要来自模型对象的2个字段,而其他5个字段呢? 有时,当您知道只需要几个模型对象时,就用数据库中的所有值填充20个模型对象的列表似乎是犯罪的。 当然,局部模型意味着除了获取所有内容的方法外,您还必须在DAO中编写另一种方法。哪个意味着要维护更多代码? 另一方面,从具有完全填充的模型的数据库中提取所有内容意味着一种方法可以解决所有问题,但这显然会给您带来一些性能开销。 我可以看到ORM(例如Hibernate或ActiveRecord of Rails)在MVC编程中倾向于趋势,而诸如Google的BigTable完整模型这样的数据库则被接受为趋势。但是,如果您仍在使用旧的JDBC,该怎么办? 硬件便宜,开发成​​本高。即使应用程序每小时需要扩展至数十万个请求,这真的是真的吗?
10 mvc 

5
最终用户文档示例的良好参考,并提供建议[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 6年前关闭。 我们的内部软件已被许多用户使用,培训部门要求我们提供最终用户文档格式的任何提示。 有谁知道在哪里可以找到培训部门用来启发灵感的软件最终用户文档的良好示例,或者在任何有很好建议的网站上? 这类似于此问题,但是我正在寻找供非技术用户使用的最终用户文档。

6
使用ORM可以使哪种Web开发项目受益?
首先,我说我已经使用SQL完成了95%的数据库工作。最近,我对各种ORM(例如NHibernate和Doctrine)进行了调查。 我可以看到不需要了解很多SQL和ORM提供的数据库可移植性的优点。但是我还可以看到,了解SQL将使使用ORM更加有效,而且我只能在职业生涯中一次想到,应用程序最大的改变就是数据库供应商。 因为我很舒服地编写SQL,并且显然没有意识到使用ORM的通常所教的好处,所以我对大量ORM用户的疑问是: 哪种Web开发项目从使用ORM中受益最大?

6
使用TDD启动新项目
我正在研究TDD,我读到它还可以帮助您定义应用程序的设计,对吗? 因此,我决定开始创建一个新项目,以帮助我更好地理解它。 我想创建一个简单的用户注册系统,询问其名称,电子邮件地址,国家(从列表中选择一个)和电话号码。 所以问题是... 我在VS 2010中创建了一个新的解决方案,添加了一个新的Test项目,但我只是不知道编写什么测试! 由于它将帮助我定义设计,因此我可以在此处编写哪些测试? 谢谢你的帮助!
10 c#  .net  tdd 

4
我需要将log4j升级到slf4j吗?
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 5年前关闭。 我们正在审查我们的JEE Web应用程序以进行一些计划的重构,其中一项建议是log4j用logback或替换slf4j 团队尚不清楚我们是否应该执行此操作-因为目前我们希望遵循该规则,否则不会在此区域进行修复。 编辑:我不是要比较日志记录框架,而是当我们对log4j非常满意时,更改框架是否是有价值的重构元素

5
如何确定存储格式之间的区别,以及其中的一些示例用例?
我们有不同的方式来存储程序数据(在游戏,员工数据库,程序配置等中保存文件): 纯文本(.ini和.conf) XML格式 数据库(MySQL,SQLite ...) .zip 包含多个文件(格式不同)的类似文件 二进制文件(.doc例如,由序列化工具创建的文件等) 上面列出的格式有哪些不同的用例,它们的优点与缺点(考虑速度,灵活性,文件大小,易用性...)之间有什么分别?如何在不同任务之间做出决定? 关于压缩格式:仅用于包含其他文件。它也可以是另一种压缩格式。这允许几个文件的结构,包括图像文件,声音文件和文本文件。例如,假设您有一种消息的存储格式,其中可能包含文件。压缩文件中可以包含以下文件: message.txt (containing the message) attachments (folder containing attachments) audio.wav picture.jpg


8
CS学位可以使年长的程序员受益吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 8年前关闭。 在40年代中期的职业生涯中获得CS学位有什么好处吗?通过HR筛选器的可能性增加是否值得? 这实际上是我可能喜欢做的事,我不介意巩固自己的基础知识,但是在完成学位的那几年里,我将减少自己的收入能力,等到完成时,我将拥有我的职业生涯可能还剩下15年。 (我目前没有大学学位)

3
安全公司的程序员做什么?
我听说过咨询客户系统安全性的安全公司。我在该领域认识的所有人都是网络工程师,但我知道程序员也参与安全性工作。执行审核/咨询的安全程序员实际上做什么?他们是否从字面上浏览代码库,以查找人们的遗留系统中的每个漏洞?我一直以为这是他们的所作所为,但似乎这将是非常不可靠的,并且除了提供错误的安全感外,不会做太多其他事情。注意:我不是在谈论编写加密算法或类似方法的程序员,而只是在乎软件安全审核/咨询的程序员。

4
为什么大多数网站上的邮件视图计数比较慢?
请注意,YouTube视频的观看次数总是很慢吗?例如,一个视频有1000条评论,但仍具有500次匹配,几小时后将具有10000次点击。 YouTube并不孤单。大多数留言板都是以这种方式实现的,并且视图计数每10分钟左右更新一次。 有谁知道背后的原因吗? 谢谢。
10 caching 

4
员工vs承包商的心态和职业[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 8年前关闭。 我正在尝试解决其他“承包商与员工”线程中未涉及的问题。简而言之:人们有一种自然的倾向(甚至可能是硬生生的)吗? 背景:在过去的几年中,我经历了严重的倦怠,今年正休假来考虑问题。经过种种思考,我越来越得出结论:我只是不肯追求永久,有薪水的生活。本质上,我想我只是没有“员工心态”。不管工作多么出色,我似乎都有一些内在的,根深蒂固的需求,需要四处走动,而不是束手无策。在刚开始的一两年中,我很棒,但是在那之后,被困在相同的例程中,看着相同的代码库等,就开始感到非常无聊和讨厌。工作似乎在纸上。大多数人似乎陷入困境,稳定性可以弥补任何“蔑视” 我对其他问题(与该主题广泛相关)的回答确实引起了我的注意:感觉我基本上可以成为他们所谓的“猎人”类型,一种“慢动作ADHD”案例。我擅长专注于我真正感兴趣的事情,而且我不怕努力。但是必须在短期到中期的时间范围内包装好开始,发展和结束。在从事新工作的第一到两年后,典型的薪水环境(在软件开发中通常意味着开放式的“维护模式”)很快就会使我头脑清醒。我开始失去动力和注意力,最终陷入倦怠。 所以基本上我要问的是-您认为这种农民与猎人的理论是真实的吗?不一定在正式的临床精神病学意义上,而是仅根据您的主观经验?我特别想听听承包商或做过这两者的人的来信。您是否仅仅因为机会多而就这样做了,并且您可以永久地做同样的工作,而其他一切都一样。还是您有像我一样的感觉/思想-束缚在同一风景中会耗尽您的灵魂? 相关问题:人们通常会坚持一种或另一种吗?还是两者都做?在我看来,大多数人在其大部分职业中都是雇员或承包商/顾问,而且任由其任的重叠人员很小。我找不到任何数据来支持这一点,这只是我的印象-我觉得很好奇-因为它似乎为人们只是自然地/内在地似乎具有发光的倾向这一观点提供了支持。一个或另一个“模型”。 编辑:感谢您的答复。我认为,确实让我不寒而栗的是,对于在典型的“命令与控制”业务环境中为其他人工作感到不满意的根本感觉。我曾经做过的所有工作都是永久性的工作,基本上符合这种模式-开发人员像工厂工人一样对待(有些地方比其他地方差,但从根本上说是真实的)-例如。在没有太多自主权或自我实现目的的情况下执行所告知的操作。话虽如此,我认为我仍然会考虑签约,以了解它与永久演出相比对我来说是如何工作的。这可能并不完美,但我认为独立性至少会使事情变得有趣- 同一时间花了很长时间在到达这一点之前,我非常疲倦,直到我精疲力尽,变得完全无法正常工作。恒定的横向运动至少可以使它保持受控状态。

5
您可以拥有“空”的摘要/类吗?
当然可以,我只是想知道以这种方式进行设计是否合理。 我正在制作突破克隆,并正在进行一些类设计。我想使用继承(即使不是必须的)来应用我在C ++中学到的知识。我当时正在考虑类的设计,并想出了这样的东西: GameObject->基类(由x和y偏移量等数据成员以及SDL_Surface *向量 组成:MovableObject:GameObject->抽象类+ GameObject的派生类(一个方法void move()= 0;) NonMovableObject:GameObject->空类...除了构造函数和析构函数外,没有方法或数据成员(至少现在是这样?)。 后来我打算从NonMovableObject派生一个类,例如Tileset:NonMovableObject。我只是想知道是否经常使用“空”抽象类或只是空类...我注意到我这样做的方式,我只是为了分类而创建NonMovableObject类。 我知道我只是想做一个突破性克隆而已,但我的重点不在游戏上,而是在使用继承和设计某种游戏框架上。

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.