软件工程

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

4
如何将库的不同版本置于版本控制之下?您是否使用标签?还是分支机构?还是其他方法?
我最近开始将代码置于版本控制下(在实验室中,我正在SVN下工作,而我自己的代码在github中(显然是git))。在使用版本控制之前,我曾经做过类似的事情。我有一个带库名称的文件夹,其中有许多带版本号的文件夹。每当我想开始使用新版本时,我都会复制上一个版本,将名称更改为新版本并开始实施。 但是,当将文件夹置于版本控制下时,这似乎是多余的。除了冗余之外,如果有人想获得最新版本,那么只要他import/ 她就可以下载所有版本clone。 现在,我看到了使用版本控制执行此操作的许多方法,但是由于我是新手,所以我不知道哪种方法更可维护。 方法1:使用标签 如果我正确地理解了标签,那么您将拥有主分支,您可以进行所做的任何更改并使用版本进行标签。然后,当您想要获得它的工作副本时,您将获得带有特定标签的副本。(如果我错了纠正我) 方法2:分支版本 在这种方法中,主要分支将是开发分支。时不时地制作一个稳定的版本(例如v1.2.0),您为该版本创建一个分支,并且永远不要提交它。这样,如果您要下载某个版本,则可以从该分支获取代码。尽管我说过您从未承诺过这样做,但有可能进行错误修复并承诺到旧版本的分支以保持旧版本运行。例如,如果当前版本为v2.0,但是有些人想要使用v1.2,则可以从中获取另一个分支v1.2,即v1.2.1提交错误修复程序,或者仅将版本保持不变,v1.2然后提交错误修复程序。 所以分支看起来像这样: v1.2.1 v1.2.2 / / v1.0.0 v1.2.0--------- v2.0.0 / / / -------------------------------------- dev 这样,您可以为每个次要版本更新创建分支。(请注意,在上图中,v1.2.1和v1.2.2或在v2.0.0发布之后创建的,因此它们不是v1.2.0和v2.0.0之间的开发的一部分。可以将其视为对较早版本的支持) 方法3:分支发展 此方法与以前的方法相反。主分支将是最新的稳定版本。每当使用新版本时,都将创建一个分支(用于开发),使用您的代码,并在代码稳定后将其与主分支合并。 在这种情况下,分支看起来像这样: ________ ____ ________________ _____ dev / \/ \/ \/ ---------------------------------- latest_version 可能需要结合标签一起执行此操作吧? 问题! 无论如何,我的问题是,根据您的经验,这些方法中的哪一种被证明更实用?有没有已知的最佳方法(可能我没有弄清楚自己)?这些事情通常是怎么做的?

9
内存非托管编程的复杂性是什么?
换句话说,自动垃圾收集解决了哪些具体问题?我从来没有做过底层编程,所以我不知道释放资源会变得多么复杂。 GC所解决的错误(至少对于外部观察者而言)似乎是一种很好地了解他的语言,库,概念,习惯用法等的程序员所不会做的事情。但是我可能是错的:手动内存处理本质上是复杂的吗?

4
为什么用coffeescript而不是javascript?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我认为以某种方式构建一种可编译为另一种语言的语言从一开始就是一个坏主意,而不是从一开始就正确地学习javascript。查看道格拉斯·克罗克福德的好零件,然后您就迷上了。而且javascript并不难-无论语言如何,编写好的代码都很难!如果您使用javascript编写糟糕的代码,则可能会用coffeescript或lattescript编写糟糕的代码,或者今天的风格。并说coffeescript语法很漂亮,这让我感动。我喜欢花括号和C语法-最好使用类似这样的语言(对不起,VB!)。再有更多的玩具,语言和框架可以一遍又一遍地做同样的事情,这对我来说不再是进步!
24 javascript 

8
要成为一名优秀的程序员,是否有必要了解硬件方面的情况?
我是一个自学成才的程序员,以防万一CS 101中回答了这个问题。 似乎在遇到麻烦编程时,我总是碰壁。例如,我只是在另一个论坛上问了一个问题,该问题是如何处理函数返回的数组指针。最初,我以为我只是不了解C ++的设计人员为应对这种情况而设置的适当技术。但是,从随后的回答和讨论中,我发现当事情“归还”时,我并没有真正明白会发生什么。 一个好的程序员必须对编程过程有多深的理解?

7
如何避免易碎的单元测试?
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 我们已经编写了将近3,000个测试-数据已经过硬编码,很少重复使用代码。这种方法已经开始使我们陷入困境。随着系统的变化,我们发现自己花费更多的时间来修复损坏的测试。我们有单元测试,集成测试和功能测试。 我正在寻找一种确定的方式来编写可管理和可维护的测试。 构架 FakeItEasy 单位 自动修复

5
Java instanceof运算符是否被视为反射,反射的定义是什么?
我今天与同事讨论了使用Java运算符的使用是否instanceof是一种反思。讨论很快演变成实际定义反射的内容。 那么,反射的定义是什么? 并instanceof认为使用了“使用反射”吗? 另外,如果instanceof将其视为反射,那么多态性还不是“利用反射”吗?如果没有,有什么区别?

15
何时使用“静态功能”?
好的,我已经了解了静态函数是什么,但是我仍然看不到为什么它们比私有成员函数更有用。这在这里可能是一个新奇的问题,但是为什么不只用静态函数代替所有私有成员函数呢?

8
政府项目对敏捷方法的挑战
前面的敏捷讨论在这里有很好的答案,指出了对于在软件开发中成功实施敏捷方法学至关重要的因素。大多数要点是典型的组织和管理挑战,但我要担心的一点是,在整个过程中必须让客户参与。 客户是您无法实际控制的一件事,也许您的商业模式使您适应政府签约的工作,例如,严格的合同迫使公司必须: 完全按照要求提供X功能 功能请求将被扔在墙上,不要打扰我们,我们不想听到它。 客户心中没有优先功能的概念,它们都很重要,或者我们不会要求它们。 无论超支或截止日期如何,该项目的成本都不会超过Y,且不得低于Y。 完全交付所有工作的绝对,严格,最终和不可协商的截止日期。 我们以前从未与这样的客户合作过,但是该项目的资金实在太可惜了。我们需要这项工作。 我来到这里工作是在HARD上更改流程,以朝着敏捷开发方向发展,在这里,我不知道如何协调该项目适合我们新流程的位置。我从来没有像现在这样拥有过开放式的手动管理能力,这使我相信可以领导开发团队并沿着这条道路前进,而现在我们在这里,我不能诚实地告诉自己,这个项目将真正在敏捷的方式。我觉得管理层相信我可以带领这条路走下去,并且让他们失望,因为我们现在所处的这种情况非常明确地要求瀑布。恐怕如果我现在回溯,我可能会失去他们的信任。 其他答案,例如这里所说的,对于这种客户来说,敏捷是不可能的,您同意吗?你们有没有遇到过类似的情况并使它工作?您实施了哪些策略来使敏捷成功实现?


2
为什么在可可环境之外没有广泛使用Objective-C?
Objective-C具有良好的面向对象,简单,优雅和(作为C的超集)低级功能的特点。似乎是很多人在Go中寻找并尝试找到的C ++的简单,现代的替代品。但是它仅用于可可和NextSTEP后环境,即使在这种情况下,由于历史原因,它也被视为负担,而不是最佳选择。 为什么它没有被更广泛地使用?有什么问题?

4
如何劝阻刚刚学习技术并想在任何地方使用它的客户?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我的客户最近发现了什么是URL重写,而没有完全了解它是什么,它如何工作以及它的优缺点。现在,他要求对当前项目的实际要求和对旧项目的更改进行许多奇怪的更改,以实现他认为的URL重写。 一方面,我很生气,被要求去做没有实际意义的事情,而不是做真正的工作。另一方面,我无法告诉我的客户,尽管他对该主题感兴趣,但他对主题一无所知。 我认为许多人遇到过这样的情况,即他们的经理或客户刚刚学会了一个新的流行词或新技术,他如此喜欢它,而不是想要在每个项目的任何地方都使用它,而是重写整个代码库以使用新的东西。东西等 另外,我最近阅读了一些有关Programmers.SE的文章,人们在谈论有关XML的话题时,向他们讲述了他们的经历,一些管理人员会要求在每个项目中引入XML,以便向所有人证明他们已经使用过XML。 因此,那些处在类似情况下的人,您如何管理它?

5
哪些问题导致人们使用日语特定的编​​码而不是Unicode?
在工作中,我遇到了许多使用Shift-JIS和其他编码的日语文本文件。对于所有计算机用户,这会导致许多mojibake(字符不可读)问题。Unicode旨在通过为所有语言定义单个字符集来解决此类问题,并且建议在Internet上使用UTF-8序列化。那么,为什么每个人都不能从日语专用的编码转换为UTF-8?UTF-8存在哪些问题或弊端? 编辑:W3C列出了Unicode的一些已知的问题,这可能也是原因吗?

9
在企业环境中使用Git [关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 Git是一个出色的版本控制系统。如果我们排除这一事实,它没有出色的GUI支持,那么它确实很好并且速度很快。但是像Clearcase这样的源代码控件为企业客户提供了大量支持。公司为源代码控制服务器和licesense投入了大量资金。 最近,像Google这样的大多数大公司都在其他版本控制系统上采用了Git。但是该公司有一个强大的开源团队,他们始终为该工具提供开发和支持(他们甚至可能拥有自己的Git定制版本)。同时,大公司并没有真正在意采用开源项目并使之与它们相关。 对于企业环境,尤其是在Windows平台上,Git真的是可靠的工具吗? 对Git的支持存在疑问,因为它是一个开源产品。 是否有提供解决方案和支持的公司?与其他版本控件(如Clear-case)相比,服务器成本如何?

8
开发编程语言有什么用?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 我想知道发布Java或C#等编程语言是否能获得可观的直接收益? 与毫无疑问的开发工作相比,出售IDE,为书籍授权品牌或获得企业声誉似乎对开发人员来说是微不足道的(当然,我可能是错的)。

5
使用VCS时格式化代码是一件坏事吗?
在承诺确保正确完成之前,几乎总是格式化我的代码。我团队中的大多数人都不在乎,也不总是总是正确地格式化他们的代码(次要的事情不会影响代码,但是会在尝试维护代码时影响可读性)。 我最近安装了具有选项“保存时格式化”的VS电动工具,并对以前未格式化的文件进行了更改。开发副总裁只是来找我,并谴责我进行格式化,因为它在合并工具中显示为几乎整个文件都被更改了,而不是一两行(所以他看不到我很容易地修改了什么),并且告诉我以后禁用保存格式。尽管我了解这种担忧,但是我发现有时很难对未格式化的代码进行分类,而IMO应该始终始终对其进行正确格式化。请注意,我不仅随心所欲地重新格式化,而且在编写代码时,我将使用电动工具或按key命令设置文本格式以使其易于阅读,并且在SVN中显示为修改。 所以我问,总是格式化代码实际上是一件坏事吗?他的担忧是否比确保代码可读性更有效?

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.