软件工程

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

7
用纯Java编写的Java IDE?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 6年前关闭。 是否有用Java编写的Java IDE? 今天我刚刚在学校得到了9年级的DET笔记本电脑,并且设置了各种限制。令人烦恼的是,除了系统上已经安装的可执行文件之外,您无法运行任何可执行文件(由于某些原因,它们没有禁用命令提示符,PowerShell或注册表编辑器,这很奇怪)。它们允许您运行Java可执行文件,所以我认为这是在学校笨拙的笔记本电脑上进行编程的唯一方法(自然地,当我完成所有工作后):D 编辑: 用Java编写的意思是,用于运行程序的可执行文件的文件扩展名为“ .jar”,因此可以在JVM上运行。 编辑2: 我尝试了DrJava IDE,并且效果很好,谢谢(我可以编译和执行程序)!关于使用命令“ java -jar“ C:/ Users ... / org.eclipse ...”“通过命令行运行Eclipse。这导致生成日志说文件的错误,主要错误是: 消息自动激活捆绑软件org.eclipse.ui.workbench(182)时发生错误。 如何解决此错误(与其他任何IDE相比,我更喜欢使用Eclipse)? 编辑3: 关于我的最后编辑,只需忽略它:D。我通过下载最新版本的Eclipse解决了该问题。

3
如何在单元测试中正确比较双精度值是否相等?
我最近设计了一个时间序列模块,我的时间序列本质上是一个SortedDictionnary<DateTime, double>。 现在,我想创建单元测试,以确保该模块始终正常工作并产生预期的结果。 常见的操作是计算时间序列中各点之间的性能。 所以我要做的是创建一个带有{1.0,2.0,4.0}的时间序列(在某些日期),我希望结果是{100%,100%}。 关键是,如果我手动创建具有值{1.0,1.0}的时间序列,并检查是否相等(通过比较每个点),则测试将无法通过,因为使用实数的二进制表示时将始终存在错误数字。 因此,我决定创建以下功能: private static bool isCloseEnough(double expected, double actual, double tolerance=0.002) { return squaredDifference(expected, actual) < Math.Pow(tolerance,2); } 是否有另一种处理此类案件的常用方法?

3
高效图聚类算法
我正在寻找一种在大型图形上查找聚类的有效算法(它具有大约5000个顶点和10000条边)。 到目前为止,我正在使用在JUNG java库中实现的Girvan–Newman算法,但是当我尝试去除很多边缘时,它的速度相当慢。 您能建议我一个适合大图的更好的选择吗?

11
我应该如何计划和启动一个项目?
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 7年前。 每次启动项目时,我都会在关键时刻决定完全更改核心类并陷入晦涩的错误中。我尝试进行高级规划,通常会从一个好的脚步开始,但是后来我又去了,并决定我想“另辟way径”。 启动项目时(例如映射类和从单元测试开始),是否有某种标准?在计划和启动中型项目时,有什么好的约定。 最后一个开始的项目是射弹运动模拟器-我知道,可以预见。

3
PHP Web应用程序体系结构/设计
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我已经被投入到使用PHP开发Web应用程序的新工作中。我绝不是PHP的新手,但我以前从未开发过大型应用程序。我想知道如何安排自己的发展,以避免将来遇到麻烦。如何以合理的方式设计和构造应用程序,以使它们可以在功能和性能方面随时间扩展。我在想这样的事情: 将后端与前端分开 目录结构 我希望能获得指向体系结构和应用程序设计模式,框架和方法的指针,这些指针使我能够以可持续的方式进行大规模PHP Web应用程序开发。

12
我应该在HTML页面中使用非标准标签来突出显示单词吗?
我想知道在HTML页面中出于某些自定义目的使用非标准标记是一种好的做法还是合法的做法。 例如: Lorem ipsum dolor坐下,一直保持着安静的状态。Nullam结果,felis坐在amet suscipit laoreet,nisi arcu accumsan arcu,vel pulvinar odio magna suscipit mi。 我想突出显示“ consectetur adipiscing精英”的重要性,并突出显示“ nisi arcu accumsan arcu”。 因此,在HTML中,我将输入: Lorem ipsum dolor坐在,<important> consectetur adipiscing精英</ important>。Nullam结果,felis坐了acu suscipit laoreet,<highlighted> nisi arcu accumsan arcu </ highlighted>,vel pulvinar odio magna suscipit mi。 并在CSS中: important { background: red color: white; } …

6
评论写作和文档的最佳实践
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 7年前。 如今评论比以往任何时候都容易。在Java中,有一些将注释链接到类的很好的技术,而Java IDE擅长为您创建注释外壳。像Clojure这样的语言甚至都允许您在函数代码本身中添加对函数的描述作为参数。 但是,我们仍然生活在一个时代,好开发者经常发表过时或较差的评论-我对提高评论的鲁棒性和实用性很感兴趣。 特别是在这里,我对Java / Clojure / Python感兴趣,但是答案不需要特定于语言。 是否有任何新兴技术可以验证注释并自动检测“模糊”注释(例如,带有魔术数字的注释,不完整的句子等)或不正确的注释(例如,检测拼写错误的变量等)。 更重要的是:那里是否存在公认的“评论政策”或策略?那里有很多关于如何编码的建议-但是“如何发表评论”呢?

2
Java void方法隐式返回此
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 关于SO的setter方法返回“ this”类型有一些讨论。而且看起来像Java 7的提议void方法返回此。但是该建议无法使其适用于Java 7功能。我找不到此建议是否移至Java 8或更高版本,或者已被完全丢弃。是吗? 参考链接-https: //stackoverflow.com/questions/31584/design-java-and-returning-self-reference-in-setter-methods
20 java 

7
使用新技术是否会损害生产率?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 似乎随着必须使用特定工具集的经验的增长,尝试新事物的动力减弱了。 当我在这个编程工作是新的,尝试新的东西,网上调查,让我更加富有成效,因为我经常发现,做任务更轻松的方式(或库)的代码框架已经到位。因此,对我来说以及在给定代码库的上下文中使用新东西,都使我的工作效率更高。 现在我注意到,有越来越多的情况下,其中,对于给定的问题,我知道,有可能是一个更好的解决方案“在那里”,并发现它会-大概-改进代码。但是,考虑到我现在对代码库的深入了解,使用现有的次优工具并找到解决方案(包括测试)运行要比寻找新的“更好”和“改善”代码库要容易得多。 所以有这种紧张:“做正确”与“落榜体面完成”。 这对许多开发人员来说是否会发生?这是一个已知的特定问题吗?(毕竟这是一个真正的问题吗?)这实际上与经验水平的提高有关吗? 哦,请注意:我仍然喜欢我的工作并且喜欢保留它。只是看起来-总是很有趣!-当我学习我们的应用程序所面临的代码库和问题集时,研究范围会缩小。

6
何时使用常量与配置文件来维护配置
我经常和自己争论是否要在我的web.config或Constants.cs类中放置某些键或类似的东西。 例如,如果我想存储应用程序特定的键(无论大小写),我可以将其存储并通过自定义键从Web配置中获取它,或者通过在我的常量类中引用一个常量来使用它。 您何时要在配置键上使用常量? 这个问题确实适用于我认为的任何语言。

4
包含多个类的C#文件的命名约定是什么?
想要改善这篇文章吗?提供此问题的详细答案,包括引文和为什么答案正确的解释。没有足够详细信息的答案可以被编辑或删除。 此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 在C#项目中,我们经常将紧密相关的小型类分组到同一.cs文件中。这种做法减少了处理大量几乎没有实际代码的文件带来的麻烦。但是,是否存在命名包含多个类的文件的惯例?
20 c#  .net 

7
保持我的类和方法尽可能小?
几天前,我正在与一名软件工程博士候选人交谈,在某个时候她对我说: 保持类和方法尽可能的小 我想知道这是否总是一个好习惯。 我的意思是,举个例子,只上两副服装值得吗?例如,在某些方法中,我需要使用成对的整数。我应该写一个“ PairOfIntgers”类吗? 这种思维方式可以将代码“破坏”太多吗?

10
作为程序员奋斗。需要一些建议[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我已经成为开发人员很多年了。我擅长做我的工作,可以“完成工作”。 但是,“完成任务”和“正确完成任务”之间是有区别的。让我们举个例子。 最近,我从头开始开发了一个网站。该网站运行良好,我没有任何问题。通过查看代码,我认为自己可以做得更好。我本可以减少MySQL查询。我本可以使用MVC来使其扩展更容易(它现在确实需要扩展)。 我决定使用CodeIgniter重写该项目。我喜欢这个框架。但是后来我陷入了困境,因为要减少我的MySQL查询,我必须学习高级联接。 这就是问题所在。每当我做好工作时,我就会不断学习。而且诸如高级MySQL联接之类的主题需要花费一些时间来学习,然后再花费一些时间来实现。 我不在公司工作。我一个人做。因此,我想如果我是一家公司的PHP开发人员,将会有单独的团队来处理SQL。 独奏很难。有时,尽管我的知识很发达,但我发现自己一个问题又一个问题。我可能对自己的工作感到很自豪。但是,如果我必须为一家处理完整项目的公司工作,我可以想象项目会花费一些时间,因为我必须学习越来越多的知识来满足自己的自豪感,并确保我做的事情“正确”。 我确实计划在新的一年后找到工作。我需要工作保障。这就是为什么我问这个问题。 关于自我发展和自我完善,您能提供什么建议?我应该少担心吗?或者,当我不直接处理SQL查询时,可能会找一份PHP开发人员的工作?

3
具有共同功能的Windows窗体的最佳设计
过去,我使用继承来允许在应用程序中扩展Windows窗体。如果我所有的表单都具有公共控件,插图和功能,那么我将创建一个实现公共控件和功能的基本表单,然后允许其他控件从该基本表单继承。但是,我在设计时遇到了一些问题。 控件一次只能放在一个容器中,因此您拥有的任何静态控件都将很棘手。例如:假设您有一个称为BaseForm的基本表单,其中包含一个TreeView,并对其进行了保护和静态处理,以便此类的所有其他(派生)实例都可以修改和显示相同的TreeView。这对于从BaseForm继承的多个类不起作用,因为TreeView一次只能位于一个容器中。它可能在初始化的最后一个表单上。尽管每个实例都可以编辑该控件,但在给定时间只能显示一个。当然,有一些变通方法,但是它们都很丑陋。(这对我来说似乎是一个非常糟糕的设计。为什么多个容器不能存储指向同一对象的指针?无论如何,它就是它。) 表单之间的状态,即按钮状态,标签文本等,我必须使用全局变量并在Load上重置状态。 Visual Studio的设计师并不能很好地支持此功能。 是否有更好但仍易于维护的设计可供使用?还是形式继承仍然是最好的方法? 更新 从查看MVC到MVP,从观察者模式到事件模式。这是我目前的想法,请批评: 我的BaseForm类将仅包含控件以及与这些控件相关的事件。需要任何逻辑来处理它们的所有事件都将立即传递给BaseFormPresenter类。此类将处理来自UI的数据,执行任何逻辑操作,然后更新BaseFormModel。该模型会将事件(状态更改时将触发)的事件公开给Presenter类,该类将订阅(或观察)该事件。演示者收到事件通知后,它将执行任何逻辑,然后演示者将相应地修改视图。 内存中每个Model类只有一个,但是可能存在许多BaseForm实例,因此有BaseFormPresenter。这将解决我将BaseForm的每个实例同步到相同数据模型的问题。 问题: 哪一层应该存储最后按下的按钮之类的内容,以便我可以在表单之间为用户(例如CSS菜单中)突出显示它? 请批评这个设计。谢谢你的帮助!

8
如何在团队成员之间传播对通用编程的认识?
我住在一个人们相信的环境中: Java泛型是专门用于库编写而不是实际编码的功能。 C ++是一种OO编程语言;template是可选的和可避免的功能 但是,这些人高度依赖使用通用编程编写的库(例如STL,Java容器)。如果我使用templates或编写代码generics,则代码审阅者很可能会拒绝它,并会以“正确/可理解/优雅”的方式发表评论以编写代码。 这种心态适用于普通程序员到高级经理。没有出路,因为90%的时间里,这些人都有自己的游说手段。 解释它们的最佳方法是什么(不被割断),同时编写构成OO和通用编程的代码的实用方法是什么?
20 java  c++  templates  generics 

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.