软件工程

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

7
如何向您的团队介绍编码的功能风格?
我遇到的情况是,小组中的大多数人都来自面向对象的编程背景,对功能编程的了解很少甚至没有。甚至没有像闭包这样的基础知识。 关于将其介绍给功能编码样式的好方法的任何建议?如果我们针对特定情况采用功能性方法,则可以简化许多编码工作。 我已经给出了一些有关功能和编码范例的介绍。不幸的是,我们没有使用像Haskell这样的适当的函数式编程语言(基本上,遗留代码是C,C ++,Java),因此我们必须使用它们进行任何处理。

3
Scrum:如果产品负责人有任务怎么办?
我刚刚开始与一个团队合作,该团队掌握了Scrum的某些方面(两周的时间装箱),但还没有涉及其他方面(该团队当前不同意所有估计或冲刺点数,但是我将对此进行更改)产品所有者也是具有一定开发背景的技术资源(科学家)。 将产品负责人的任务(主要涉及研究)与团队的任务(其中一些是研究和开发)混合在一起是否合适。
10 scrum 

4
当前是否有针对软件工程的任何现代,标准化的能力测试?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 6年前关闭。 背景 我是一名在职软件工程师,正在寻找下一年左右的新合同。在搜索中,我遇到了一些荒谬的技术采访,正如我今天早些时候提出的这个受欢迎的问题所表明的那样。 即使我被问到的问题并不总是荒谬的,但我还是会因针对各种合同机会多次回答而感到疲倦。 因此,这让我想到,进行工作的软件专业人士可以参加的标准化考试将提供一个通用的计分卡,面试官可以代替普通的技术面试问题(即书呆子混浊)来参考。 题 是否有可供工作的专业人员使用的标准化软件工程能力测验(SEAT ??)? 如果没有这样的考试,应该涵盖哪些问题或主题? 一个额外的想法 如果要提一个问题或话题,请记住要关注与当代发展实践和员工现实需求相关的问题或话题,因为这将是标准能力倾向测试的重点。换句话说,没有小丑遍历的问题。

4
处理响应的设计模式
大多数时候,当我编写一些代码来处理某个函数调用的响应时,我会得到以下代码结构: 示例:此功能将处理登录系统的身份验证 class Authentication{ function login(){ //This function is called from my Controller $result=$this->authenticate($username,$password); if($result=='wrong password'){ //increase the login trials counter //send mail to admin //store visitor ip }else if($result=='wrong username'){ //increase the login trials counter //do other stuff }else if($result=='login trials exceeded') //do some stuff }else if($result=='banned ip'){ //do …

1
图形程序员如何处理不更改图像的渲染顶点?
因此,标题有点尴尬。我将提供一些背景信息,然后提出我的问题。 背景:我是一名Web GIS应用程序开发人员,但在业余时间我一直在玩地图渲染和改进数据交换格式。我仅在2D空间中工作。 我遇到的一个有趣的问题是,当您以小比例绘制多边形(放大的出路)时,许多顶点是多余的。一个极端的情况是,您有一个具有500,000个顶点的多边形,仅占用一个像素。如果要将这些数据发送到浏览器,则可以忽略其中大约499,999个顶点。我们实现这一目标的一种方法是在服务器上渲染图像并将其作为PNG发送:瞧,这很重要。不过,有时我们还是希望将数据发送到浏览器,然后在其中可以使用SVG(或canvas或webgl)对其进行呈现,以便可以进行交互。 问题:事实证明,使用现代地理数据集,很容易使SVG的渲染功能超负荷。为了解决这些限制,我试图找出如何在视觉上无损地减少给定比例尺和地图范围(以及必要时已知地图像素的宽度和高度)的数据集。 仅使用Douglas-Peucker算法,我的数据量就大大减少了,我相信我能够将其保持在一个像素以内,使多边形真实。不幸的是,道格拉斯·皮克(Douglas-Peucker)没有保留拓扑,因此改变了多边形之间边界的渲染方式。我无法轻易找到其他算法来尝试并适应该目的,但是我没有太多的CS /算法背景,如果我看过它们,可能会认不出来。

9
新程序员应该精通一种技术,直到精通该技术吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 好的,我一直在教一个伙伴如何编程已有一段时间了。他是一个学习速度很快的人,到目前为止,他在编程方面也很擅长。但是,他有一个我一直试图纠正的“问题”。 他开始学习并开始进行高级编程,而没有学习一些基础知识(他创建了功能强大的Web应用程序,但仍然不知道分页或会话管理)。 不过这不是问题。他一直在研究新技术(Node.js,MongoDB,EC2等)。我试着告诉他,他应该每天学习一些有关他所选择的RDMS(MySQL)的基础知识,然后再花大量时间学习MongoDB的基础知识(并可能会迁移到新的东西)。 我是这里的错人吗,还是他应该一次专注于一件事情并真正做到这一点?

2
在php中初始化类成员的最佳实践
我的构造函数中有很多这样的代码:- function __construct($params) { $this->property = isset($params['property']) ? $params['property'] : default_val; } 这样做比在属性定义中指定默认值好吗?即public $property = default_val?有时默认值存在逻辑,某些默认值取自其他属性,这就是为什么我在构造函数中执行此操作。 我应该使用设置器,以便将默认值的所有逻辑都分开吗?

2
三连击安全性的弱点
我一直在阅读有关安全性的一些文献,特别是密码安全性/加密,而且我一直想知道一件事:三击规则是密码安全性的完美解决方案吗?也就是说,如果将密码尝试的次数限制为一小部分,之后将不接受所有身份验证请求,那是否不能保护用户免受入侵?我意识到获得对某些内容的访问权或控制权并不总是意味着要通过身份验证系统,但是此功能是否会使字典/蛮力攻击过时?有什么我想念的吗?
10 security 

3
开源项目中是否有代码审查?如果是这样,使用什么工具来做到这一点?
我知道在商业开发中大力推动代码审查。但是,代码审查是在开源软件中使用还是基于信任?如果是这样,那么他们的表现如何?[是否是延迟提交,即“预提交环境”,是否存在允许将该补丁发送给另一个开发者的工具]? 是否有任何使用代码审查的项目? 据我了解,Linux内核主要基于提交者的信任。MySQL是基于主要作者的认可和对性能的影响。


1
如何在ASP.NET中构建良好的服务层?
我研究了一些问题,以及用于构建良好服务层的技术,但与此相关的一些问题我需要帮助。 首先,我需要一些信息。当前,我们有许多Web应用程序以蜘蛛网的方式相互通信(所有Web应用程序和数据库数据都以令人困惑的方式相互通信)。 我们希望对此进行更改,以便所有应用程序都经过一个服务层,在该服务层中,我们可以更多地使用缓存并封装通用功能等等。 我们希望该层也具有Web API,以便第三方客户端可以使用该服务中的信息。 我看到的问题是,如果我们使用MVC4 Web API构建服务层,则不需要使用webAPI在应用程序之间进行通信,这意味着我们必须构造URL并使用JSON / Xml。听起来不太有效。我假设有一个更好的方法将与实体和WCF一起在应用程序之间进行通信,但是我们可能会松开Web API的魔力? 因此,问题在于是否有一种方法可以将服务层既用作Web API(JSON / XML),又用作具有实体的后端服务层。如果我们被迫使用2个不同的服务层,我们可能不得不重复一些功能和其他不好的事情。 希望这个问题很清楚,请询问是否需要更多信息。

1
Azure项目中csx文件夹的用途?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 去年关闭。 我是Azure的新手,但我注意到Visual Studio自动创建了以下文件夹(以及其他文件夹) ... /<nameOfAzureProject>/bin /<nameOfAzureProject>/obj /<nameOfAzureProject>/csx <== ... 现在bin和obj文件夹已经相当标准了。但是我不清楚csx文件夹的用途。有任何想法吗?

3
持续集成(与iOS和Android项目)[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 我正在尝试对公司进行一些积极的改变,其中之一是实现持续集成。我们进行移动开发(iOS / Android),因此我需要一个同时支持两种类型项目的配置项。如您所知,我对CI的了解不多,但我在Google上进行了一些搜索,我认为Jenkins和Hudson是最受欢迎的两个。 我有两个部分的问题。 您对詹金斯有何想法? CI是否有办法检查项目是否符合 编码标准(例如松耦合等)?

1
如何重构一个Python“神类”?
问题 我正在一个Python项目中,该项目的主类有点“ God Object ”。有这么受诅咒的多属性和方法! 我想重构班级。 至今… 第一步,我想做一些相对简单的事情。但是当我尝试最直接的方法时,它破坏了一些测试和现有示例。 基本上,该类具有大量的属性列表,但是我可以清楚地查看它们,并认为:“这5个属性是相关的……这8个属性也都是相关的……剩下的就是这些。” getattr 我基本上只是想将相关属性分组为类似dict的帮助器类。我有种__getattr__理想的工作选择。因此,我将属性移到了一个单独的类,并且确实可以__getattr__很好地发挥其魔力…… 一开始。 但是后来我尝试运行其中一个示例。示例子类尝试直接设置这些属性之一(在类级别)。但是由于该属性不再在父类中“物理定位”,所以我收到一个错误消息,指出该属性不存在。 @属性 然后,我阅读了有关@property装饰器的信息。但是后来我也读到,self.x = blah当x父类的属性是子类时,它会给想要做的子类带来问题。 期望的 self.whatever即使父类的whatever属性不在类(或实例)本身的“实体位置” ,也要让所有客户端代码继续使用。 将相关属性分组到类似dict的容器中。 减少主类中代码的极端噪音。 例如,我不只是想更改此内容: larry = 2 curly = 'abcd' moe = self.doh() 变成这个: larry = something_else('larry') curly = something_else('curly') moe = yet_another_thing.moe() …因为那仍然很吵。尽管这成功地将简单的属性赋予可以管理数据的属性,但是原始属性具有3个变量,而经过调整的版本仍具有3个变量。 但是,我可以这样: stooges = Stooges() 如果查找self.larry失败,将检查stooges并查看是否larry存在。(但是,如果子类尝试larry = 'blah'在类级别执行此操作,那么它也必须起作用。) …

3
我编写的应用程序被列为恶意软件。如何解决?
我有一个用Delphi编写的程序。该程序可以下载,但是某些防病毒软件(如Norton)将其检测为恶意软件,而其他防病毒软件(如AVG)则没有问题。 此外,当您想从我的网站下载该程序时,谷歌浏览器也会发出恶意软件警告。 除了将EXE文件放入ZIP文件之外,还有什么方法可以防止这种情况发生?

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.