软件工程

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

3
Visual Studio只是一个IDE吗?
对于Windows开发,我的意思是。 查看其他问题,还有VS的替代品,但它们似乎是基于Web的替代品,这很好,或者,如果您愿意,您可以在记事本中编写整个.net网站。 但是,除了Windows开发的IDE之外,还有更多功能吗?IE浏览器是否可以在记事本中创建应用程序,Visual Studio的编译器部分还是单独的部分(可以通过命令行或其他方式调用)? 我不想不使用VS,我对它感到满意,做了我需要做的事等等,只是我好奇的一个方面。

4
您如何看待不是真正的ORM的新Java持久性工具?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 Java的持久性 在过去的几年中,我使用EJB 2.0,Hibernate,JPA和自家的概念,在Java持久性抽象领域积累了经验。在我看来,他们的学习曲线陡峭且复杂。另外,作为SQL的忠实拥护者,我还认为许多抽象模型都提供了过多的SQL抽象,从而创建了诸如“标准”,“谓词”,“限制”之类的概念,这些概念是非常好的概念,但对SQL却不是。 Java中的持久性抽象的一般思想似乎是基于对象关系模型的,其中RDBMS以某种方式与OO世界相匹配。ORM辩论一直以来都是一种激动人心的辩论,因为似乎没有一个适合所有人的解决方案-甚至可以存在这样一种解决方案。 OO 我个人对避免ORM相关问题的偏爱是坚持关系世界。现在,数据模型范式的选择不应成为讨论的话题,因为它是个人喜好,或者是哪种数据模型最适合具体问题。我想开始的讨论围绕着我自己的持久性工具jOOQ进行。我设计了jOOQ,以提供现代持久性工具具有的大多数优势: 基于SQL的领域特定语言 源代码生成将基础数据库模式映射到Java 支持许多RDBMS 添加一些现代持久性工具所没有的功能(如果我错了,请纠正我): 支持复杂的SQL-联合,嵌套选择,自联接,别名,case子句,算术表达式 支持非标准SQL-存储过程,UDT,ENUMS,本机函数,分析函数 请查看文档页面以获取更多详细信息:http : //www.jooq.org/learn.php。您将看到在Linq中为C#实现了非常相似的方法,尽管Linq并非专门为SQL设计的。 问题 现在,说了我是SQL的忠实拥护者,我想知道是否其他开发人员也会分享我对jOOQ(或Linq)的热情。这种持久性抽象方法是否可行?您可能会看到哪些优点/缺点?我如何改善jOOQ,您认为有什么缺失?从概念上或实践上我哪里出了问题? 批判但建设性的答案表示赞赏 我知道这场辩论是一场感性的辩论。有许多很棒的工具已经在做类似的事情。根据您自己的经验或您可能已阅读的文章,我感兴趣的是至关重要但具有建设性的反馈。
12 java  orm  database  linq 

8
XML对开发人员有多重要?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 每个开发人员都必须了解XML吗?XML对开发人员有多重要?任何建议...
12 xml 


5
为什么Scala比其他语言更具可扩展性?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 Scala被称为可扩展语言,该功能甚至包括在其名称中: Scala这个名字是“可扩展”和“语言”的缩写,表示它旨在根据用户的需求进行扩展。 在Scala中,“可伸缩”是什么意思?是什么使Scala比Java更具可扩展性?

12
拖放编程-它会飞吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 8年前关闭。 我所知道的所有编程语言都是书面的-即以一种或另一种方式将其键入为文本的长度。但是我想知道是否有任何编程语言可以拖放整个程序?要获得一个循环,请在此处选择此框,然后将其拖动到“代码”的那部分,依此类推。如果没有这样的人,如果有人发明了它,它会飞吗? 我个人认为这不是一个好主意,但我想听听您的想法。

8
您认为软件工程师必须担任一段时间的质量保证工程师是一个好主意吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我相信是。为什么? 我遇到了许多软件工程师,他们认为它们在某种程度上优于QA工程师。我认为,如果他们在一段时间内担任质量检查工程师的工作,并且意识到这是一种独特而有价值的技能,可能会有助于打破这种信念。 软件工程师测试自己的程序的能力越强,在整个软件开发生命周期中进行代码时所花费的时间成本就越少。 软件工程师花更多的时间思考程序如何崩溃,他们在开发它们时会更多地考虑这些情况,从而减少最终产品中的错误。 软件工程师对“完整”的定义总是很有趣的……如果他们花时间担任质量检查工程师,那么这个定义可能会与软件设计者更加接近。 请注意,我在上面的建议中只考虑了很小的时间范围,因为我知道有人在某个职位上工作而不是被雇用,这绝对是失去该开发人员的秘诀。 你们怎么想

18
如何在没有任何文档的情况下读取数千行代码?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 以前,我正在为WPF项目寻找良好的TimeLine控件。我在这里找到了一个答案,该答案将我定向到此CodePlex项目。 现在,我想更改代码以满足我的文化需求。但是有一些不匹配! 我的问题是: 您如何与成千上万的代码交互? 编辑: 任何捷径都会很棒!

5
复杂软件应实现多少冗余/鲁棒性?
这个问题的焦点:尽管软件中存在一个或多个内部错误,某些软件执行“额外工作”以增加“最终成功/令人满意”结果的机会,当这些错误发生时,这需要更长的执行时间。如果结果成功,所有这些都会在用户不知情的情况下发生。 复杂软件的定义: 包含超过10个开发人员在其生命周期内编写的代码(由其提供),并且未在同一时间段内编写 依赖于10多个外部库,每个库都带有警告 典型的软件任务(用于生成用户想要的结果)需要10个或更多输入参数,其中大多数具有默认值,但如果用户需要控制,则可以配置。 最重要的是,相对于要执行的任务具有适当复杂性的软件,即不必造成不必要的复杂性。 编辑:什么是复杂的?请参阅复杂和复杂之间有很大的区别。(直接链接) 此问题内的冗余/鲁棒性的定义:(基于注释增加了鲁棒性) 如果在使用当前参数集时软件任务失败,请尝试其他参数。 显然,必须有内部知识,这些“不同”的参数使用不同的代码路径,可能会导致不同的(希望更好)结果。 有时,这些不同的代码路径是基于对外部库的观察而选择的。 最后,如果执行的实际任务与用户的说明略有不同,则用户将收到详细说明差异的报告。 最后,像10余个可配置参数一样,冗余和报告也是可配置的。 此类软件的示例: 数据库迁移 业务数据库 源代码控制数据库等 在Word文档和OpenOffice文档,PowerPoint和OpenOffice Draw等之间进行批量转换。 自动翻译整个网站 自动分析软件包,例如Doxygen,但需要更可靠的分析(即不仅仅是文档工具) 网络通信,其中数据包可能会丢失并且可能会重试 这个问题最初是由您如何处理故意的不良代码启发而来的?但现在仅关注软件膨胀的原因之一。这个问题没有解决软件膨胀的任何其他原因,例如添加新功能。 可能相关: 如何处理(巨大)项目中的复杂代码 人们如何管理和维护极其复杂且难以阅读的代码?

5
什么时候最好将工作卸载到RDBMS而不是用代码完成?
好的,我会解决的:我是一个比数据库更好的编码器,而且我想知道关于“最佳实践”的想法是关于在SQL查询中还是在SQL查询中进行“简单”计算的。代码,例如此MySQL示例(我没有编写它,我只需要维护它!)-这将返回用户名,以及用户从上次事件开始的年龄。 SELECT u.username as user, IF ((DAY(max(e.date)) - DAY(u.DOB)) < 0 , TRUNCATE(((((YEAR(max(e.date))*12)+MONTH(max(e.date))) -((YEAR(u.DOB)*12)+MONTH(u.DOB)))-1)/12, 0), TRUNCATE((((YEAR(max(e.date))*12)+MONTH(max(e.date))) - ((YEAR(u.DOB)*12)+MONTH(u.DOB)))/12, 0)) AS age FROM users as u JOIN events as e ON u.id = e.uid ... 与在代码中进行“繁重”的提升相比: 查询: SELECT u.username, u.DOB as dob, e.event_date as edate FROM users as u JOIN events …
12 php  mysql 

2
Oberon真的是“更好的Pascal”吗?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 阅读Niklaus Wirth时,您可能会注意到,尽管Pascal颇受欢迎,但他对Oberon(作为Pascal和Modula的“抛光”继承者)没有得到太多欢迎感到不高兴。我从未在Oberon中做任何事情,但是阅读Paerscal Developers的Oberon页面我确实不喜欢像Delphi / pascal开发人员那样的许多更改。 强制保留字始终为大写 使语言区分大小写 摆脱枚举类型 您如何看待Oberon,从您的角度来看,这真的是“更好的Pascal”吗?

22
您知道哪些有用的替代控制结构?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 SO上也有类似问题。 有时,当我们进行编程时,我们会发现某些特定的控制结构对我们非常有用,但是在我们的编程语言中并不能直接使用。 您认为哪些替代控制结构是组织计算的有用方法? 这里的目标是获得有关代码结构的新思考方式,以改善分块和推理。 您可以创建一个现在不可用的理想语法/语义,或者在现有的编程语言上引用一个鲜为人知的控件结构。 答案应该为新的编程语言或增强实际语言提供思路。 认为这是集思广益,所以发布您认为是疯狂的主意,但在某些情况下可行。 这是关于命令式编程的。

10
如何学习/成为具有开箱思维能力的人?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 在解决每个问题中,总会有人以不同的方式思考,当其他人仅提出5个建议时,他们会提出第六种选择,他们认为“开箱即用”。请告诉一个人如何实现这样的能力?以及实现它需要什么?

2
混淆发布代码的优点是什么?
我想到的具体示例涉及当前的Alpha游戏《我的世界》,但这是一个普遍的问题,我认为需要进行一些讨论。 Minecraft是用Java编写的,堆栈跟踪通常如下所示(实际示例): java.lang.NullPointerException at d.a(SourceFile:247) at gi.b(SourceFile:92) at bd.a(SourceFile:33) at bn.a(SourceFile:69) at bn.e(SourceFile:115) at bn.d(SourceFile:103) at net.minecraft.client.Minecraft.i(SourceFile:1007) at net.minecraft.client.Minecraft.run(SourceFile:596) at java.lang.Thread.run(Unknown Source) 显然,这些不是开发人员在编写时使用的实际包和方法名称。由于他处于Alpha阶段,因此开发人员似乎希望能够理解他的堆栈跟踪,特别是如果有人能够为错误报告提供一个。就目前而言,它几乎毫无意义。 克服这种难以识别错误的缺点的代码,可能会希望获得什么样的优势?

8
您一周要花多少时间进行课外编程?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 背景:我白天是Microsoft DBA / IT型人员,晚上是iOS和Mac开发人员。我在App Store中有一个应用程序,正在开发中的另一个应用程序。我尝试花费尽可能多的时间来开发两个应用程序,但是由于有了一个新女儿和其他(非计算机)爱好,我很难每周花费超过几个小时来编程。 我想知道与其他开发人员相比如何。我看到很多应用是由不进行iOS开发作为主要工作的单一开发人员编写的。他们是一个晚上花4个小时在他们的项目上工作,还是只是放了一年或两年才发布任何东西?

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.