软件工程

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

2
什么是“功能嫉妒”代码,为什么将其视为代码气味?
关于SO的这个问题是关于纠正OP认为是功能嫉妒代码的问题。我看到这个漂亮短语被引用的另一个示例是在developer.SE中最近给出的答案中。尽管我确实在该答案的注释中要求提供信息,但我认为这对遵循Q&A的程序员理解“ 特性嫉妒 ”一词有帮助。如果您认为合适,请随时编辑其他标签。

6
我如何在软件的免费试用版中实现“自毁”功能?
对于免费试用与免费增值模型(即具有受限和/或精简功能的软件的终身免费版本)的争论正在不断发展,以允许潜在的客户和用户测试其产品的运行情况。根据我的研究,我可以得出结论,免费试用是继续这样做的一种方式,既有利于使用软件的个人的用户体验,又有利于卖方的销售和最大化使用两方面。免费试用软件的诸多因素可以极大地提高用户使用率,例如免费试用的时间。 我对“免费增值”的研究再次出现的一个关键词是“令人沮丧”。许多人选择卸载软件,而不必使用某些功能无法使用的软件。同时,这些用户从来没有机会使用“付费”功能。他们不知道,并且被销售软件的自己的供应商隐藏,他们不知道也不知道Pro功能会带来什么好处。无需首先使用它们,用户将不会知道他们有“需要”某种东西的感觉。这使我进入了免费试用模型的下一个要点。 免费试用用户的一些意见是“如果没有Pro功能,我将无法想象使用此软件”。这可以追溯到“用户直到他们第一次了解拥有的感觉才知道他们需要什么”的观点。那些已经有14天使用“完整”版本功能的用户说,他们无法想象没有或没有使用那里提供的功能。因此,当十四天结束时,与从未体验过全部功能的人相比,他们更有可能花钱。免费试用的时间也是在用户身上留下持久印象的重要因素。在Visual Website Optimizer进行的一项实验中,他们注意到对于14天免费试用与30天免费试用,尽管注册和安装的次数相同,但14天试用的使用率增加了102%。 要提到的另一个非常重要的一点是,“提供产品的有用且功能齐全的免费版本”非常重要。完全免费的功能免费试用可有效地获得媒体报道,而对新软件和/或软件供应商的宣传至关重要。 另一个相关方面是用户提供反馈的重要性。在功能齐全的限时免费试用中,考虑用户提供反馈的能力。 对于我们的软件而言,另一个重要的功能是需要遥测数据,即有关用户如何使用我们的软件的定量和综合数据。一些使用情况统计信息可能会落在法律的灰色地带,因为法律根据美国和全球的地理位置而有所不同。解决此法律问题的一种方法是拥有加入功能,以收集匿名使用情况统计信息。选择加入功能将意味着为用户提供一个选项,以关闭统计信息收集,同时,用户必须非常清楚匿名使用信息收集的功能。重要的是要使用户清楚要收集哪些数据,“我们”将如何处理数据,并使其易于随时关闭,包括允许他们改变主意以打开或关闭数据。对于更详细的统计信息(例如跟踪用户的个人活动),可能会导致法律问题。Eclipse IDE会记录详细的使用情况统计信息,但是需要用户的完全同意才能进行记录。我们可能需要与法律团队一起准备同意书。 Eclipse使用信息收集收集以下信息:1.由系统启动的插件。2.通过键盘快捷键访问的命令以及通过菜单或工具栏调用的操作。3.当编辑器的“视图”被赋予焦点时。4.系统信息,例如所使用的软件版本,所使用的操作系统。5.内部错误的描述。 杀死开关 我们软件的终止开关可以通过管理来记录初始数据,用盐加密,并且当它是无效日期(即用户试图更改它)时,它将禁用该软件。另一种选择是在安装时进行Internet身份验证,将该日期记录到中央Web数据库中,并在每次打开应用程序时检查日期。 禁用软件后,我们可以删除重要的DLL。无法考虑必须付费才能生成报告的选项。 我有兴趣为现有软件实施免费试用版。我计划在最后14天进行审判。在第14天,我的软件会提示用户为付费版本付费,或者结果是无法使用它。免费试用版已完全解锁,这意味着所有付费功能都已存在。 但是,我的困境是实现最终解决方案的“最佳”方法。我是否删除重要的DLL?安装或使用时是否有用户认证系统?用盐加密使用的初始时间和日期,如果这是一个无效的日期(又称他们尝试更改其初始日期),请禁用软件? 我有兴趣了解禁用软件的一些有效措施。

5
为什么引用计数智能指针如此受欢迎?
如我所见,智能指针已在许多实际的C ++项目中广泛使用。 尽管某种智能指针显然有利于支持RAII和所有权转移,但也存在一种趋势,默认情况下使用共享指针作为“垃圾收集”方式,因此程序员不必考虑太多分配。 为什么共享指针比集成Boehm GC这样的适当垃圾收集器更受欢迎?(或者您是否完全同意它们比实际的GC更受欢迎?) 我知道常规GC相对于引用计数有两个优点: 常规的GC算法在参考循环方面没有问题。 参考计数通常比适当的GC 慢。 使用引用计数智能指针的原因是什么?

7
个人开发人员与团队开发人员:我应该继续吗?[关闭]
我在一家小型公司担任独立开发人员。有足够多的工作,但同样的工作也不会花钱。因此,在不久的将来我将不会再见到任何新同事。 我绝对负责与IT运营有关的所有事情。这涉及内部使用的软件的开发和维护,客户使用的各种网站的开发和维护,网站基础结构,本地网络基础结构,包括维护多台服务器和内部支持,以提及最近的事情。 我真的很享受我95%的工作,而且我的工作有高度的灵活性。我要决定什么时候该做什么,没有人真正告诉我该做什么,除了我现在与同事坐下来为我要做的事情制定路线图。我确实认为自己有很高的职业道德,并且专注于自己所做的事情,所以事情就做好了。 但是,我真的很想念身边有其他人一起工作。尽管我是一个独立开发人员,但我需要熟悉广泛的技术,但我仍然感到自己错过了“知识共享”,而其他“志同道合”的大公司员工也参与其中。我真的没有人讨论编程障碍和设计决策,而我开始错过了。另外,我担心未来的雇主会对这个“隐士”的想法如何,因为他已经独自工作了很长时间,无法参加一个团队。 但是,另一方面,我认为我在大型公司中无法获得当前的灵活性。我将看到更严格的截止日期,延迟时间和专门的工作领域。也; 我不确定这种“知识共享”的想法是否会发生? 还有其他人遇到过这种情况吗?从职业角度和个人发展角度来看这是一个好主意吗?我是否应该考虑搬到更大的地方,以便(也许)成为更多开发人员和“志趣相投”的人的一部分?换句话说,那边的草会更绿吗?

14
学习任何自然语言,尤其是会进一步促进您的编程生涯吗?[关闭]
显然,英语是基于以前的P.SE问题进行编程的主要国际语言(尽管高度支持的注释正确地指出,在主要是英语的网站上问这样的问题会使结果倾斜)。 但是,学习外语进行软件开发是否有好处?例如,中文是否具有完全不同的软件工具,语言,技术等?日语,俄语和其他非拉丁语言怎么样?是否存在仅在其他语言中存在的软件开发语言,工具等整个世界? 还是知道这些语言的人使用我们知道和喜欢的工具和语言?

16
我应该照顾几乎肯定不会发生的比赛条件吗?
让我们考虑一下诸如GUI应用程序之类的应用程序,其中主线程几乎立即更新UI,而另一些线​​程正在通过网络轮询数据,或者可以保证需要5到10秒才能完成工作。 我收到了许多不同的答案,但是有些人说,如果这是统计上不可能的比赛条件,则完全不必担心,但其他人则说,即使有10 %-53%(我您不知道数字,这是我所听到的)由于比赛条件而发生的一些伏都教徒魔术,请始终在需要它的线程上获取/释放锁。 你怎么看?在这种统计上不可能的情况下处理比赛条件是否是一种良好的编程习惯?还是增加更多的代码行以降低可读性是完全没有必要,甚至会适得其反?

5
构建单页Web应用程序的优缺点
我正在为正在进行的辅助项目进行原型设计/概念验证阶段的结尾,并试图决定一些更大的应用程序设计决策。该应用程序是一个专为敏捷开发流程量身定制的项目管理系统。我需要做出的决定之一是是否要使用传统的多页应用程序还是单页应用程序。 目前,我的原型是传统的多页设置,但是我一直在寻找ribs.js来清理某些结构并将其应用于Javascript(jQuery)代码。骨干.js似乎可以在多页应用程序中使用,但在单页应用程序中却更具光芒。我试图提出使用单页应用程序设计方法的优缺点列表。到目前为止,我有: 好处 所有数据都必须通过某种API才能获得-这对我的用例来说是一个很大的优势,因为无论如何我都希望为我的应用程序提供一个API。现在,大约60-70%的我获取/更新数据的调用是通过REST API完成的。做一个单页应用程序将使我可以更好地测试我的REST API,因为应用程序本身将使用它。这也意味着随着应用程序的增长,API本身也将增长,因为这就是应用程序所使用的。无需维护API作为应用程序的附件。 响应速度更快的应用程序-由于将初始页面之后加载的所有数据保持在最低限度并以紧凑格式(例如JSON)进行传输,因此数据请求通常应该更快,并且服务器的处理量会稍少一些。 缺点 代码重复-例如,模型代码。我将不得不在服务器端(在这种情况下为PHP)和Javascript的客户端上创建模型。 Java语言中的业务逻辑-我无法给出任何具体示例说明为什么这样做会很糟糕,但是我觉得所有人都可以阅读的Java语言中的业务逻辑对我来说是不合适的。 Javascript内存泄漏-由于页面永远不会重新加载,因此可能发生Javascript内存泄漏,而且我什至不知道从哪里开始调试它们。 还有其他一些东西是双刃剑。例如,对于单页应用程序,为每个请求处理的数据可能要少得多,因为该应用程序将要求特定请求所需的最少数据,但是这也意味着可能会有更多的小请求服务器。我不确定这是好事还是坏事。 在决定应该以哪种方式进行项目时,应牢记单页Web应用程序的哪些优点和缺点?

18
如何管理沟通能力差的开发人员
在大型公司中,我管理着一个小型应用程序开发团队团队,该应用程序处于生命周期的中点。不幸的是,这意味着通常有30/70的编程任务分配给“其他技术工作”。这项工作包括: 与DBA / Unix /网络/负载平衡器团队一起完成各种任务 在不同地区下达和管理硬件或基础架构的订单 运行尚未迁移到CI的运行测试 分析 支持/调查 可以公平地说,开发人员都愿意编写代码,而不是执行这些平凡的任务,因此,我尝试在团队中平均分配有趣的编程工作。 聘用大多数团队是因为,尽管他们可能不具备编写自己的编译器/游戏引擎/高频交易系统等的精通编程技能,但他们是能够“完成工作”并与其他团队合作的优秀交流者,并在这里浏览复杂的官僚机构。他们是优秀的开发人员,但也是优秀的全方位技术人员。 但是,团队中的一名成员可能具有高于平均水平的编码技能,但低于平均水平的沟通技能。传统上,以前的开发经理倾向于给他编程任务,而不是上面列出的更普通的任务。但是,我认为这对团队中的其他成员并不公平,他们显示出开发大型企业IT部门通常需要的全面技能的能力。 在这种情况下我该怎么办?如果我继续给他更多的编程工作,我知道它会更快地完成(相反,我希望他完成其他工作的速度会更慢)。但这违背了我的原则,并提出了这样一个想法,即您只需对不喜欢的任务表现不好就可以为自己创造一个“舒适的利基市场”。 我想澄清的是,由于怀恨在心,我不是要解决这个问题,或者如上所述,我的肩膀上有一个“碎片”。我正在寻找有关如何保持一支充满快乐和动力的全面团队的建议。通过观察该问题的各种答案,似乎对于实现此问题有很多不同的意见。

15
在没有编写代码的情况下思考几天的设计问题是否正常?[关闭]
有时我茫然地凝视着空间或勾勒出想法,然后在纸上写下一些伪代码。然后我将其擦除并重新开始,然后,当我认为自己有解决问题的正确方法时,我便开始编写代码。 想几天不写任何代码是正常的吗?这是否表明我正在完全解决问题?没有在我的IDE中编写任何有形的代码使我感到紧张。
52 design 

20
高中程序员引起工作注意的最佳地方是什么?[关闭]
我是16岁的高中生,对计算机编程充满热情。我在11年级,并且已经作为学校教学大纲的一部分学习了大约8个月。我已经超越了学校所教的内容,并且编写了一些(相当不错的)申请。我在Windows平台上编程的语言是C ++。最终,我想在一所好的大学主修CS,然后成为一名程序员。 我的具体问题是: 什么是让我的工作受到关注的好地方? 是否有专门针对年轻程序员的期刊或出版物? 如果不是出版物,那么是否有任何好的博客,或者开始自己的博客更好? 还有什么可以帮助我成为程序员的? 我试图做到尽可能客观。 如果这一切都是这样;那么:作为年轻程序员而受到关注的最佳方法是什么? 编辑:我不希望直接从高中毕业就被雇用。目的不是要给社区留下深刻的印象,使他们成为一名专业的程序员。这是针对大学申请的,目的是让他人看到和批评您的工作将改善您的申请。我不希望从到目前为止的著作中赚钱。

20
面向对象的编程真的可以模拟现实世界吗?[关闭]
我已经看到,通常情况下,面向对象的编程都是基于对真实世界的建模,但是是吗? 在我看来,业务层以外的任何事物都不是真的。我的GUI类/数据访问类在现实世界中没有任何模型。即使在我的业务层,我也有一些类,例如观察员,经理,工厂等,这些类并不是真实的对象。我尝试设计类以利用诸如封装之类的优势,但是现实世界是否被封装? 虽然我创建的某些对象正在对真实世界的对象进行建模,但OOP之前的代码会不会做到这一点?我怀疑OO是第一个在其代码库中包含诸如Customer之类的概念的人的。但是OO确实是关于如何对事物建模的方法,而这种建模方法对我来说似乎并不受现实世界的启发。 那么:面向对象的编程真的可以为现实世界建模吗?

9
为什么对COBOL轻视?[关闭]
当人们提到COBOL时,通常会打喷嚏或吟。我对COBOL不太了解,但是我已经看过其中写的一些程序。我可以看到这很罗word,而且对于像我这样的初学者来说,这是难以理解的。但是,真的,不是所有的编程语言都对一个外行人来说完全是胡言乱语吗? 我了解它可以正常工作,并且在其设计的行业中仍在广泛使用。这些不是一门好语言的标志吗?COBOL有什么不好的呢?
52 cobol 


10
什么是schrödinbug?
这个维基页面告诉: schrödinbug是一个错误,只有在有人阅读源代码或以异常方式使用该程序后,该错误才显现出来,而该错误最初并没有起作用,这时该程序立即停止为每个人工作,直到修复。术语表补充说:“尽管……这听起来不可能,但它确实发生了;有些程序已经隐匿了schrödinbugs多年了。” 谈论的内容非常模糊。 有人可以提供一个例子说明schrödinbug的情况吗(例如在虚构的/真实的情况下)?
52 bug 

11
有没有一本针对程序员的数学经典书?[关闭]
我是一个自学成才的程序员。老实说我数学不好。您可以提出什么建议来提高我的数学技能,以使我不会对其他程序员那么没有安全感?您可以建议哪些步骤或指南来提高我的数学技能? 是否有一本书是事实上的标准,用于描述最佳实践,设计方法以及其他有关程序员的数学有用信息?那本书使它与众不同吗?
52 math 

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.