软件工程

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

12
为什么需要浮点/双精度?
我正在看http://www.joelonsoftware.com/items/2011/06/27.html并嘲笑乔恩·斯凯特(Jon Skeet)的笑话,说的不是0.3,而是0.3。我个人从来没有浮点数/小数/双精度问题,但是后来我记得我很早就学习了6502,并且在我的大多数程序中都不需要浮点数。我唯一的使用时间是用于图形和数学,其中数字不正确,输出用于屏幕,而不是存储在(db,文件中)或依赖于屏幕。 我的问题是,您通常在哪里使用浮点数/小数/双精度数?所以我知道要提防这些陷阱。有了钱,我使用多头并以美分存储值,为了提高游戏中对象的速度,我添加了整数并除(或移位)了该值,以了解是否需要移动像素。(我在6502天内使对象移动,我们没有划分或浮动,但有移动)。 所以我主要是好奇。

3
如何推广一个开源项目?
首先,对于这是发布此问题的网络错误部分,我深表歉意。如果是这样,请随时将其移至更合适的位置... 问题:我想听听您关于开源项目启动和运行方式的想法。我有一个开源内容管理系统项目,这里出现了一些问题:我应该如何行动?我是否可以提出一个可行的pre-alpha版本,并且先在前端和后端工作,然后再公开宣布该项目?还是我应该从头开始宣布它?作为一名开发人员,我知道应该使用像Git或SVN这样的版本控制系统,但我没有问题。单元测试的优点也是要记住的,老实说,我一点也不喜欢...项目管理-充其量我还是一个初学者。我想探索诸如敏捷开发之类的编码技术和经验... 简而言之,最欢迎对开源世界陌生的开发人员有任何想法。

10
设计的“臭虫”是一个不好的信号吗?
如果用户针对设计出的问题提交错误报告,这是一个不好的信号吗? 它是否通常意味着应用程序混乱或不清楚,或者除非特别说明,我是否应该将其归因于一次性用户错误? (我实际上没有任何此类报告。这是一个纯粹的假设性问题,关于存在由设计引起的“错误”是否是一件坏事。)
29 bug  users 

7
是否有充分的理由避免针对非实时Web应用程序使用node.js?
我已经看到很多关于实时Web应用程序的Node.js多么出色的讨论-需要套接字,Comet,AJAX大量通信等等的东西。我知道,它的事件驱动,异步,线程驱动模型也适用于低开销的并发。 我也看到了Node.js教程,这些教程用于更简单的“传统”非实时应用程序(例如,标准博客示例,对于那些学习应用程序开发的人们来说,这似乎是标准的“ Hello World”)。我也知道,节点静态允许您提供静态资产。 我的问题是:是否有充分的理由要避免针对传统Web应用程序使用Node.js,例如分类,论坛,上述博客示例或为内部业务应用程序构建的CRUD应用程序?仅仅因为它在所有时髦的实时信息方面都表现出色,这是否就禁忌它用于更固定的用途? 我唯一能想到的就是缺乏成熟的库(尽管情况正在发生变化)。 (我问的原因是,我正在考虑放弃PHP以使用Node.js,主要是为了克服语言之间切换的阻抗不匹配问题,而且还可以重用验证代码和其他功能。我的超我劝告我选择最好的工具;但是,我没有太多的时间学习十五种语言及其所有的userland库,只是为了拥有一个全面的工具库,而且还可以确保Node.js可能为我提供比PHP /以后我必须开始考虑流量大的Apache。) [编辑]到目前为止,谢谢大家。我只想看看在选择答案之前是否还有其他人会考虑。@Raynos的答案有点证实了我的想法,评论者的链接为我们提供了很好的思考,但是我想看看是否还有其他人有任何特定于节点的答案,例如“不要将节点用于问题X” '。(除了高CPU任务,我已经知道了:-)


3
实体框架代码优先在生产中是否毫无意义/无用?什么是生产的良好EF策略?
我最近一直在使用Entity Framework 4.1 Code First进行编程,并且热爱它以进行开发,但是由于只有最终计划和快速变化的功能列表,因此我会不断修改类/数据库以满足应用程序的需求。 在开发中,没有实时数据,我可以轻松地删除整个数据库,以便使用新的架构重新创建它,但是很明显,当实时运行时,这非常糟糕! 我能看到的唯一解决方案是删除元数据表并手动保持数据库同步,或者基本上删除并重新设置种子。 我个人更喜欢第一种方法,因为我认为添加列/表比重新创建和迁移数据要容易得多,但是,除非我错过了什么,否则这将完全远离Code First。 因此,问题实际上是,Code First是否只是关于最初的开发?在生产环境中管理EF的良好策略是什么?

7
自动化的单元测试,集成测试或验收测试
目前,TDD和单元测试似乎很受欢迎。但是,与其他形式的自动化测试相比,它真的有用吗? 凭直觉,我猜想自动化集成测试比单元测试有用。以我的经验,大多数错误似乎都在于模块之间的交互,而不是每个单元的实际(通常是有限的)逻辑。此外,由于模块之间的接口发生更改(以及更改的前后条件),经常发生回归。 我是在误解什么,还是与集成测试相比,单元测试为什么会引起更多关注?仅仅是因为假设您已经拥有集成测试,而单元测试又是我们需要学习以开发人员身份应用的下一件事? 还是与自动化的复杂性相比,单元测试仅能带来最高的收益? 您在自动化的单元测试,自动化的集成测试和自动化的验收测试中有什么经验,而在您的经验中,哪些产生了最高的投资回报率?为什么? 如果您只需要选择一种测试形式就可以在下一个项目中实现自动化,那会是什么? 提前致谢。


16
我正在写有关语言语法的文章。在方法名称中是否存在将参数置于其中的语言?
在JavaScript中: function getTopCustomersOfTheYear(howManyCustomers, whichYear) { // Some code here. } getTopCustomersOfTheYear(50, 2010); 在C#中: public List<Customer> GetTopCustomersOfTheYear(int howManyCustomers, int whichYear) { // Some code here } List<Customer> customers = GetTopCustomersOfTheYear(50, 2010); 在PHP中: public function getTopCustomersOfTheYear($howManyCustomers, $whichYear) { // Some code here } $customers = getTopCustomersOfTheYear(50, 2010); 是否有任何语言支持以下语法: function GetTop(x)CustomersOfTheYear(y) { // …


6
您从处理技术债务中看到了什么收获?
关于技术债务的这篇文章有一些优点,包括: 当故事驱动时,处理“技术问题”最有效。代码库可能在任何地方都需要工作,但是由于面向用户的原因,只有在要处理代码的地方才能收到回报。如果没有故事要经过某个棘手的领域,那么在这方面的工作就会被浪费掉。 因此,我更喜欢像往常一样拍摄故事(但可能更少),并遵循“童子军规则”,使故事比您发现的更好。换句话说,无论故事指引到哪里,让我们编写更多测试,让我们更积极地重构。 这种方法至少具有以下优点: 保持“最明智”的故事流; 提供所有团队人才的帮助; 让整个团队学习如何保持代码干净; 将改进的重点放在需要的地方; 不会浪费“可能”需要的改进; 我已经看到代码质量对长期生产力有很大的影响,所以我相信应该处理技术债务。我认为上面的帖子很有道理,但是我对最后两点不太确定。我有兴趣了解清除技术债务带来的收益的真实经验,即使这与用户故事无关。 通过清理代码库和消除技术债务,您看到了哪些积极的好处?您使用什么方法来完成工作?

4
即将进行的Google面试,寻求一些准备建议[关闭]
好吧,我一直在尽可能地打书。我即将通过电话采访一位软件工程师的职位。我已经阅读了所有博客文章,已经阅读了所有采访记录(有些还很老),而Google本身甚至建议阅读一本书,但这些都不会令这里的人感到惊讶。尽管如此,经过一段时间的准备,我仍然无法撼动有这么大的覆盖面的感觉,而且我永远不确定是要深度还是要广度。我发现自己重新学习了compsci的整个领域,但是在我继续学习另一个方面时却忘记了大多数细节。 因此,我不知道这个问题有一个很好的答案,但是我正在寻找关于如何在面试之前解决剩余几周的任何实用建议。我的一部分大脑因塞满而感到疲倦,当然,其余部分必须用于我目前的工作场所中的一些棘手问题。

10
IT猎头/招聘人员在寻找新工作时有多大用处?[关闭]
由于它们存在于多个领域,具有不同程度的有用性,因此我对于在寻找新工作时仅专注于IT专业人员(例如程序员,软件工程师,CIO等)的猎头/招聘人员的声誉感到好奇。 它们实际上有用吗?还是相当成功?是只适用于有限数量的老话吗?还是您可以安全地给其中的几份简历/简历?
29 profession 


9
我应该告诉采访者我已经知道所提问题的答案了吗?[关闭]
在编程面试中,如果有人问我已经知道答案的问题,例如为特定问题提供算法。我应该把这个透露给面试官吗?仅当问题涉及新颖性时,此问题才有意义。 一个示例是“如何颠倒字符串中的每个单词,而不颠倒它们的顺序?”。似乎“应该”知道的较简单的东西(例如我的例子)和较难的更人为的问题之间似乎也存在分歧。 您处理此问题的政策和理由是什么?如果您已经熟悉了问题/脑筋急转弯,除了回答问题外,还应该披露吗?不披露您对该问题的先验知识是否涉及任何道德困境?
29 interview  ethics 

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.