软件工程

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

7
编程与计划[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 最近,由于团队的主要开发人员离职,我被要求承担更多的高层计划任务。我讨厌长期计划。我的大脑似乎并不自然地对此感兴趣,并且我对它没有足够的兴趣来花时间学习它(很难跟上图片的编程方面)。 如果没有高级计划者,还能成为一名优秀的程序员吗? 作为高级程序员,是否有人会擅长计划整个产品并选择完成日期?

10
下一级别的抽象是什么?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 由于编程语言最初只使用顺序执行的代码行,后来演变为包含了第一批抽象级别之一的功能,然后创建了类和对象以进一步抽象它。下一级别的抽象是什么? 还有什么比类还抽象的呢?

7
在C和C ++中,哪些方法可以防止在需要等价(==)的情况下意外使用工作分配(=)?
在C和C ++中,编写带有严重错误的以下代码非常容易。 char responseChar = getchar(); int confirmExit = 'y' == tolower(responseChar); if (confirmExit = 1) { exit(0); } 错误是if语句应该是: if (confirmExit == 1) 按照编码,它将每次退出,因为confirmExit发生了变量分配,然后confirmExit将其用作表达式的结果。 是否有防止这种错误的好方法?

9
程序员是否应该参加写作课程来增强代码的表达能力?
假设程序员是作者,并且编写代码来表达抽象的思想和概念,并且其他程序员应该阅读良好的代码而没有困难和误解,那么程序员是否应该参加写作课程来编写更好的代码? 抽象概念和现实世界中的问题/实体是编写优质代码的重要组成部分,并且对编码语言的良好掌握应该可以使程序员更轻松或以更好的方式表达自己的想法。此外,在尝试编写或重写某些代码以使其更好时,可以花很多时间来确定函数,变量或数据结构的名称。 我认为这也可以避免编写具有多种含义的代码,这通常会导致不同程序员之间的误解。代码应始终明确表达其功能。

6
24位术语
是否有24位(3字节)整数的术语? 我知道少见位计数(如“蚕食”或“半字节”的4位)有名字,并具有视频和音频技术,24位,例如,是很常见的。

8
逆向工程:它真正有什么好处?[关闭]
很难说出这里的要求。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以当前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 我有一些无辜/初学者的问题: 逆向工程有什么用? 作为程序员,我应该学习逆向工程的技巧吗? 对于有经验的程序员有什么好处?

5
ASP.Net MVC4中的“ Web API”到底是什么?
我知道Web API是什么。 我用多种语言(包括MVC3)编写了API。 我在ASP.Net中也很熟练。 我刚刚发现MVC4具有“ Web API”,并且没有浏览视频示例,我无法很好地解释其确切含义。 根据我过去的经验,Microsoft技术(尤其是ASP.Net)倾向于采用一个简单的概念,并将其包装在无用的开销中,这意味着使所有事情“更轻松”。 有人可以向我解释一下MVC4中的Web API到底是什么吗?我为什么需要它?为什么我不能只编写自己的API?

2
WinRT真的可以仅在边界使用吗?
Microsoft(主要是Herb Sutter)建议在将WinRT与C ++ / CX一起使用时,将WinRT保留在应用程序的边界,并保持应用程序的核心使用标准ISO C ++编写。 我一直在编写一个我想使其保持可移植性的应用程序,所以我的核心功能是用标准C ++编写的,现在我正尝试使用C ++ / CX为其编写Metro风格的前端。但是,我对这种方法有一些疑问。例如,如果要将用户定义的C ++类型的向量推入XAML ListView控件,则必须将用户定义的类型包装为WinRT引用/值类型,以将其存储在中Vector^。通过这种方法,我不可避免地要用WinRT类包装大部分C ++类。 这是我第一次尝试用C ++编写可移植的本机应用程序。保持WinRT这样的界限真的可行吗?带有平台特定边界的这种类型的便携式内核又将如何处理?
15 c++  portability  winrt 

4
关于程序员如何以不熟悉的语言理解代码的研究?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 5年前关闭。 对于认真使用多种语言(例如X和Y)的人来说,是否有认真的研究对掌握X语言的经验丰富的程序员如何理解由合格的程序员使用Y语言编写的代码有多好的了解? 当然,现实世界并不是那么简单,因为程序员只知道一种语言。我们想知道的是:如果我们使用C#进行项目,并且某天某些仅认识Fortran和Algol的老物理学家对此进行研究,这对他们有多大意义?如果他们忽略了某些随机标点符号,那么其中的数学部分可能对他们来说没问题。还是,Python专家能够找到我聪明的Ruby脚本中的缺陷? 从表面语法级别到大概念级别(例如对象,模板元编程,功能等),都可能存在问题。我不希望一个程序员能够完全理解“外语”中代码的每个语法细节,也不会遵循某些宏伟概念的宗教信仰,而是想知道他们将在多大程度上获得控制的主要作用,找到解决方法?如果屏幕上画了什么东西,并且决定了它的颜色或大小,请验证编程为驾驶汽车的机器人在完成后会关闭引擎,诸如此类。 高质量的研究应包括已发表的学术研究,一些行业组织或大型软件公司的官方报告,尽管我将接受经验丰富的研讨会和课程的领导者或其他来源的系统公正的观察。对简短的博客,单例示例或轶事不感兴趣。(好吧,也许有一些轶事可以使他们读得很好。)

10
编写国际象棋引擎的最佳方法?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我是国际象棋爱好者和程序员。我最近决定开始使用我的国际象棋和编程知识来制作国际象棋引擎。所以这是我的问题: 编写国际象棋引擎时应采用哪种语言(我熟悉Java,C ++和Python)和方法? 一点指导将不胜感激。 编辑: 所以我决定用JavaScript制作它。我从github 下载此 Chess UI,现在一切就绪!我的第一步是为此写法律动议。那么有人能指出我正确的方向吗?(我是jQuery的新手,但是有很多编程经验)。 PS:我并不是想制造一个非常高效的引擎(我知道它的方法太难了),我只是想熟悉该过程并在此过程中学习一些新技术。

6
如何搜索与Go编程语言相关的信息?
如果有些东西会杀死Go语言,那就叫它。 我发现仅通过在查询中使用“转到”就很难找到与网络相关的任何内容。这个词是英语中最常见的。所以我看到结果中除Go相关内容外的所有内容。即使是赞助该语言并以跟踪我搜索到的东西而闻名的Google,也无法跟踪我是对编程语言而不是英语语法非常感兴趣的程序员。 如何搜索与编程语言本身相关的信息,但不包括与英语语法相关的结果? 例如,想象一下一个博客文章,其中有人提到他对Go的观察。他可能不会使用易于搜索的句子,例如“去编程语言”,也许不会使用“我喜欢Go的一件事”。
15 search-engine  go 

4
流利的接口比属性更灵活吗?为什么?
在EF 4.1 Code First教程中,给出了以下代码: public class Department { public int DepartmentId { get; set; } [Required] public string Name { get; set; } public virtual ICollection<Collaborator> Collaborators { get; set; } } 然后说明了流畅的界面更加灵活: 数据批注绝对易于使用,但是最好使用编程方法来提供更大的灵活性。 然后给出使用流畅接口的示例: protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Department>().Property(dp => dp.Name).IsRequired(); modelBuilder.Entity<Manager>().HasKey(ma => ma.ManagerCode); modelBuilder.Entity<Manager>().Property(ma => ma.Name) …
15 c#  coding-style 

5
是否将事件链接视为良好做法?
我时不时遇到一些场景,在这些场景中,触发事件之前需要满足一些复杂的条件。此外,大多数侦听器还会运行其他检查以确定操作过程。这让我开始思考,更好的解决方案是否是考虑较小的事件并使它们彼此触发。 链接事件将使我以后可以用相当少的精力(可能违反YAGNI?)来编织任何其他侦听器。我的代码将由简单易懂的元素组成,其他人应该不难理解。 但是,此解决方案的可能缺点是,如果链中发生某些错误(例如,由于人为错误导致的错误事件触发),则很难捕获该错误。 被事件链接是个好主意TM?如果不是,那么使事件相关代码变得混乱的替代方法是什么?

6
使用敏捷方法时如何获得良好的设计?
我已经使用敏捷方法(SCRUM)大约三年了,我看到了它的某些优势,特别是在许多级别的短期反馈中(来自能够早期访问已实现功能的客户,来自可以测试功能的测试人员)。实施后,其他开发人员可以通过审查等方式就新代码提供非常早期的反馈)。 另一方面,我有两个悬而未决的问题,第一个我将尝试在这个问题中进行解释。 问题:难以获得良好的设计 我试图在代码混乱时立即进行重构,我会尽力编写单元测试(这确实有助于防止错误,尤其是重构时)。另一方面,以小增量开发一些复杂的功能,每天提交并在非结构化代码时不断重新思考代码,这使我无法产生出真正好的设计。 我最近采用的另一种方法可以生产出唯一经过精心设计的模块,方法是采用不同的方法:我分析了几天的问题(实际上,在我开始认真研究该问题之前,我已经将这个问题花了几个月的时间) ),为所有涉及的类及其之间的关系草拟了相当详细的设计,持续了两天,然后将自己锁在办公室,并通过不间断地工作了大约三周时间写下了整个代码。结果是我一段时间以来取得的最好的结果,很少有易于定位和修复的错误,并且设计非常清晰,自此以后就不需要进行任何相关更改。 因此,到目前为止,我发现预先了解要执行的操作的总体效果比开始以小增量编写代码要有效得多,以期在此过程中神奇地出现大效果。尽我最大的努力,小增量开发方法一直使我的设计变糟。 问题:有没有类似的经历?我是否以错误的方式应用SCRUM,或者如果我想以较小的增量进行开发并且最终仍然使用精心设计的软件,应该注意什么?还是应该在开始实际编码之前安排设计用户故事?至少对于比平均水平更复杂的功能,这是否被视为一种好的做法? 编辑-注意 我知道这样一个事实,即好的设计不是绝对的东西,本身没有价值,而是取决于上下文,因此,人们应该针对一种足以解决当前问题的设计。 例如,如果我必须实现一个简单的组件,即(1)必须尽快准备就绪,(2)仅使用一次,(3)不用,那么我不会在乎(过分)好的设计。由系统的其他部分(YAGNI)使用。 当组件(1)会被多次使用并且会在产品的几种不同版本中使用时,我确实会在乎良好的设计;(2)需要维护并随着时间的流逝而扩展;(3)取决于它,还有很多其他组件。
15 design  agile 

1
Java密码学扩展
有人告诉我,为了在我的Java应用程序中支持AES256加密,我需要具有无限强度管辖权策略文件的JCE。 我从Oracle下载此文件并解压缩后,仅看到2个JAR: local_policy.jar; 和 US_export_polic.jar 我只想确认我在这里什么都不丢失!我的理解(在阅读完之后README.txt)是,我只是将这两个放在我的<JAVA_HOME>/lib/security/目录中并且应该安装它们。 用这些JAR的名称,我必须假定它不是不能处理AES256的Java Crypto API,但这实际上是一个法律问题,也许吗?并且这两个JAR基本上告诉JRE:“ 是的,运行此级别的加密(AES256)在法律上是可以接受的。 ”我是正确的还是偏离基准的?

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.