软件工程

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

13
为什么仍首选C ++来构建沉重的GUI应用程序而不是最新的动态语言?[关闭]
我看到大多数包含大量GUI内容的应用程序通常都是使用C ++开发的。大多数游戏/浏览器都是用C ++编写的。 我们不能仅使用最新的动态语言开发更好的GUI应用程序吗?我知道Java并不是一个很好的选择。但是,像python这样的语言本来就建立在C上呢?最新的语言难道不应该比他们的祖先更好吗?为什么相对于最新的语言,为什么我们仍然需要使用古老的C ++? 我也想知道,在C ++中,什么是负责GUI处理的更快速度?另一方面,其他最新语言缺乏什么呢?

9
如何为多个客户端维护同一软件的不同定制版本
我们有多个具有不同需求的客户。尽管我们的软件在某种程度上实现了模块化,但是几乎可以肯定,我们需要在这里和那里为每个客户调整一些模块的业务逻辑。所做的更改可能太微小了,不足以证明为每个客户端将模块拆分为一个单独的(物理)模块是合理的,我担心构建会出现问题,从而造成链接混乱。但是,这些更改太大且太多,无法通过某些配置文件中的开关进行配置,因为这会导致部署期间出现问题,并且可能会带来很多支持问题,尤其是对于修补程序类型的管理员而言。 我想让构建系统创建多个构建,每个客户端一个,其中更改包含在单个物理模块的专用版本中。所以我有一些问题: 您是否建议让构建系统创建多个构建?如何在源代码管理(尤其是svn)中存储不同的自定义项?

5
作为C#开发人员,您会学习Java为Android开发还是使用MonoDroid?[关闭]
我认为自己非常精通C#。目前,这是我选择的语言,基本上,这就是我所有专业经验的基础。 不过,我对MonoDroid项目的存在感到困惑。我一直认为C#和Java 非常接近。就像,如果您知道一个,就可以很快地学习另一个。因此,当我考虑开发自己的第一个Android应用程序时,我以为自己会熟悉Java并足以入手,然后就可以自己学习了。 这难道不比使用MonoDroid更有意义,因为MonoDroid的功能可能不如Java Android SDK丰富,并且仍然需要学习自己的API(尽管是.NET API)?我只是觉得学习一门新语言(以及当时非常流行的一种语言)并获得一些经验(最好是无论如何都已经非常接近它)会更好,而不是坚持使用已有的技术却没有获得更多有价值的技能 也许我严重误解了平均潜在的MonoDroid用户。也许对Java和.NET经验丰富的人更喜欢.NET。或者,也许(实际上有可能)我只是没有考虑其他因素。我只是想知道,为什么您会使用MonoDroid而不是仅使用Java为Android开发?
46 java  c#  .net  android  monodroid 

14
为什么每个人都讨厌SharePoint?[关闭]
在阅读有关最热门技术的本主题时,我注意到SharePoint几乎普遍受到谴责。 我对SharePoint(尤其是最新版本)的经验是,它可以巧妙地实现其核心竞争力。即: 集中式文档存储库 -从电子邮件中获取所有这些办公文档(带有版本控制) 用于内部信息发布的用户可编辑内容创建 -外观,具有当前电话号码和休假政策的HR网站 项目协作 -只需单击几下即可创建一个站点,其中包含项目的文档,任务列表,简单的日程安排,多方讨论以及可能的所有与项目相关的电子邮件的列表。 非常基本的业务自动化 -当您填写休假表格时,会向HR发送一封电子邮件。 我的经验是,只有当组织尝试将SharePoint推向非设计的方向时,SharePoint才会变得非常丑陋。SharePoint不是CRM,ERP,错误数据库或外部网站。SharePoint足够灵活,可以在紧急情况下提供服务,但不能替代专用工具。(微软将SharePoint推入它不属于的域同样有罪。) 如果将SharePoint用于其设计目的,则它确实可以工作。 有什么想法吗?
46 sharepoint 

5
从类方法“返回自我”的目的?
我在一个开源项目中遇到了这样的事情。修改实例属性的方法返回对该实例的引用。这种构造的目的是什么? class Foo(object): def __init__(self): self.myattr = 0 def bar(self): self.myattr += 1 return self

13
如何找到编程指导者?[关闭]
我决定学习编程。我已经读了几天,所以我会在阅读一些文章时从C ++开始。我对循环,数组,程序逻辑和对象有所了解,我需要有人来帮助我解决我的第一个项目时遇到的一些小问题。 所以这是一个问题-我在哪里可以找到这样的人?我没有任何编程的朋友。 编辑:2年后,我仍在寻找导师。我没有积极地编写代码,只是再次开始三个月。我致力于Cocos2d的Objective-C和iOS编程以及游戏编程。如果您想成为我的导师,请给我留言或发表评论。
46 learning  c++  teaching 

16
简历中的语言:放“ C / C ++”或“ C,C ++”更好吗?[关闭]
我要在几周内毕业,我的简历(如预期的那样)列出了我曾经使用过的语言。此前我已经把“C / C ++”,但当时我没有说用这两种语言很多经验,我现在要做的。 现在我已经正式学习了这两种语言,对我(以及真正了解这两种语言的任何人)来说,它们是相似的,同时又是完全相似的。当然,大多数C代码都是可编译的C ++代码,但是这些相似之处在很大程度上结束了语法和库函数的合并。在大多数非平凡的问题中,机会是所需的C ++解决方案将不同于所需的C解决方案。 我的问题: 招聘人员会注意还是关心您是否将“ C / C ++”而不是“ C,C ++”?他们是否会因为缺乏第一种形式而缺乏对这两种形式的工作的了解,还是会认为包含第二种形式是一种潜在的“简历增强”(将它们列为2种语言,而不是“一种”) ? 此外,对于您申请的对这两种语言特别感兴趣的工作,面试过程是否包括有关C编程和C ++编程之间差异的问题(因此,关于实际编程技术,不仅是后者中的额外范例) )?
46 c++  resume  c 


7
应用层还是领域层?
我正在阅读Evans的“域驱动设计”,并且正在讨论分层体系结构。我刚刚意识到应用程序层和域层是不同的,应该分开。在我正在从事的项目中,它们是混合在一起的,直到我读完这本书(我现在不能说对我很清楚)之后,我才能分辨出它们之间的区别。 我的问题是,由于这两个问题都涉及应用程序的逻辑,并且应该不涉及技术和表示方面,因此,将这两者划定界限有什么好处?

8
为什么在提交(并再次在服务器上再次对其进行哈希处理)之前,客户端中几乎没有网页会在客户端中对密码进行哈希处理,以“防止”密码重用?
Internet上有许多站点需要登录信息,并且防止密码重用的唯一方法是“保证”密码在服务器上被散列,但这并不总是正确的。 因此,我想知道,在将密码发送到服务器之前,在客户端计算机(使用Javascript)中创建一个哈希密码的网页有多困难?从理论上讲,这不会提供任何额外的安全性,但是在实践中,这可以用来防止不会在服务器中哈希密码的“恶意站点”。



9
我们如何避免CI驱动的开发……?
我正在与其他许多常规贡献者一起进行一个由研究主导的大型开源项目。因为该项目现在很大,所以一个财团(由两名全职员工和几名成员组成)负责维护该项目,持续集成(CI)等。他们只是没有时间进行外部集成虽然贡献。 该项目由一个“核心”框架组成,该框架包含大约半百万行代码,由联盟维护的一堆“插件”,以及几个外部插件,而我们大多数都不是。甚至没有意识到。 目前,我们的CI正在构建核心和维护的插件。 我们面临的主要问题之一是,大多数贡献者(尤其是偶尔的贡献者)并未构建90%的可维护插件,因此,当他们提议对核心进行重构更改时(这些日子经常发生),他们在GitHub上发出拉取请求之前检查了代码是否在其计算机上编译了。 代码工作正常,他们很高兴,然后CI结束了构建,问题开始了:在由联盟维护的插件中编译失败,表明贡献者未在其计算机上构建。 该插件可能依赖于第三方库(例如CUDA),并且用户不希望,不知道该怎么做,或者只是出于硬件原因而不能编译该损坏的插件。 因此,那么-PR永远处于永远不会合并的PR的边缘-或贡献者在损坏的插件的源中抓取重命名的变量,更改代码,推入他/她的分支,等待CI会完成编译,通常会收到更多错误,并重复执行该过程,直到CI满意为止-或财团中两个已经超额预定的永久物之一提供帮助,并尝试在其计算机上修复PR。 这些选项都不可行,但我们只是不知道如何做不同。您是否曾经遇到过类似的项目情况?如果是这样,您如何处理这个问题?有没有我在这里看不到的解决方案?

3
如何处理由联合程序员完成的尚未实现的方法?
这是关于团队合作的问题。 最近,我和一个由6人组成的团队一起从事了我的第一个较大的Java编程项目(约80个类),尽管我们中只有4个人正在不断地编写代码。我们分配了要尽早完成的工作,在某个时候,我需要调用一种方法,而该方法尚未由我的一个协同编程人员实现。推荐的处理方式是什么? 我看到的选项,尽管我真的不喜欢其中任何一个: 给自己写一个a //TODO并稍后重新查看此代码行,以检查该方法是否已在此期间实现。 要求相应的团队成员来实现这现在。 抛出自定义runtimeException,其中包含尚未实现的内容的清晰描述。(至少我们不必花很长时间来找出丢失的内容) 将所需的方法添加到其类中并将其写入//TODO消息正文中,还可能向他们发送有关该更改的快速消息。(现在,这不再是我的问题,但是如果他们与此同时正在使用此方法,那么这可能会导致令人讨厌的合并冲突) 在实际编写完成工作的代码之前,为所有内容定义抽象类或接口。(因为这些界面经常更改,所以效果不太好)
45 teamwork 

9
退货被认为有害吗?没有它,代码可以起作用吗?
好的,标题有点clickbaity,但是我已经很认真地告诉别人,请不要踢一会儿。我喜欢它如何鼓励以真正的面向对象的方式将方法用作消息。但是,这个棘手的问题一直困扰着我。 我开始怀疑编写良好的代码是否可以同时遵循OO原则和功能原则。我正在设法调和这些想法,而我所坚持的最大症结是return。 纯函数具有两种性质: 使用相同的输入重复调用它总是得到相同的结果。这意味着它是不可变的。其状态仅设置一次。 它不会产生副作用。调用它引起的唯一变化就是产生结果。 那么,如果您发誓要使用return它来传达结果,那么如何才能完全发挥功能呢? 该出来,不问用什么有些人会考虑副作用思想工作。当我处理一个对象时,我不会询问它的内部状态。我告诉它我需要做的事情,它使用其内部状态来弄清楚该如何处理我已经告诉它要做的事情。一旦我告诉了我,我就不会问它做了什么。我只是希望它对它被告知要做的事情有所作为。 我认为“告诉,不要问”不仅仅是封装的另一个名称。当我使用时,return我不知道叫我什么。我不能说这是协议,我必须强迫它处理我的协议。在许多情况下,这表示为内部状态。即使暴露的不是确切的状态,通常也只是对状态和输入args进行一些计算。拥有一个响应界面,可以将结果整理成比内部状态或计算更有意义的结果。那就是信息传递。请参阅此示例。 回想过去,当磁盘驱动器中实际上装有磁盘,而拇指驱动器是您在汽车上做的,而车轮太冷而无法用手指触摸时,我就被教给了令人讨厌的人们如何考虑没有参数的功能。void swap(int *first, int *second)似乎很方便,但是我们鼓励我们编写返回结果的函数。因此,我坚信信念,并开始遵循。 但是现在我看到人们在构建体系结构,在该体系结构中,对象可以通过其构造方式控制结果的发送位置。这是一个示例实现。再次注入输出端口对象似乎有点像out参数的想法。但这就是告诉对象不要告诉其他对象他们所做的事情的方式。 当我第一次了解副作用时,我将其视为输出参数。有人告诉我们不要以令人惊讶的方式进行某些工作,也就是说,不遵守return result公约,以使人们感到惊讶。现在可以肯定,我知道有很多并行异步线程问题会带来副作用,但是返回实际上只是一个约定,您可以将结果压入堆栈,以便以后调用时可以将其弹出。真的就是这些。 我真正想问的是: 是return避免所有这些副作用的苦难并获得没有锁等的线程安全性的唯一方法。还是我可以跟着说,不要以纯粹的功能性方式提出要求?

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.