软件工程

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

9
你应该私有财产吗?
private string mWhatever; private string Whatever { get { return this.mWhatever; } set { this.mWhatever = value; } } 我见过有人为每个成员(无论是否私有)都进行财产管理……这有意义吗?当您想控制对包含它的类中的成员的访问时,有时可以看到它在1%的情况下是有意义的,因为如果您不对每个成员使用属性,则会导致不一致并检查是否成员是否具有访问权限(因为您可以在该类的范围内访问这两者)。
19 c# 

5
CSV格式可以由正则表达式定义吗?
我和一位同事最近就纯正则表达式是否能够完全封装csv格式进行了争论,以便它能够使用任何给定的转义字符,引号字符和分隔符char解析所有文件。 正则表达式不必在创建后就可以更改这些字符,但在任何其他情况下都不能失败。 我认为,这对于令牌生成器来说是不可能的。唯一能够做到这一点的正则表达式是一种非常复杂的PCRE样式,它不仅限于标记化。 我正在寻找以下方面的东西: ... csv格式是上下文无关的语法,因此,不可能仅使用正则表达式进行解析... 还是我错了?是否可以仅使用POSIX正则表达式来解析csv? 例如,如果转义字符和引号字符均为",则这两行都是有效的csv: """this is a test.""","" "and he said,""What will be, will be."", to which I replied, ""Surely not!""","moving on to the next field here..."

2
Lisp宏的典型应用是什么?
我正在尝试学习一些LISP,并且已经阅读了很多有关LISP宏的重要性的信息,因此我想获得一些有关它们的工作经验。 您能否建议一个实际的应用程序领域,使我可以使用宏来解决实际问题,并理解该编程结构的有用性? 注意 这不是通用的下一个问题我应该做什么项目。我有兴趣了解通常通过LISP宏解决哪些类型的问题。例如,它们对实现抽象数据类型有好处吗?为什么将这种构造添加到语言中?它解决了哪些无法通过简单功能解决的问题?

7
如何成为一个好的团队合作者?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我从12岁起就开始(一直在痴迷)编程,从汇编,C ++,Javascript,Haskell,Lisp和Qi的各种语言中我都非常了解。但是我所有的项目都是我一个人做的。 我获得了化学工程专业的学位,而不是计算机科学或计算机工程专业的学位,但是今年秋天我第一次与其他人一起从事大型编程项目,而且我不知道如何准备。我一生都在使用Windows,但是这个项目将非常适合Unix,因此我最近购买了一台Mac,希望自己熟悉环境。 去年,我很幸运地与一些朋友(包括CS专业)一起参加了黑客马拉松,令人兴奋的是,我们赢了。但是当我与他们一起工作时,我意识到他们的工作流程与我的非常不同。他们使用Git进行版本控制。当时我从未使用过它,但是从那以后我就学会了所有关于它的知识。他们还使用了很多框架和库。我必须了解Rails在黑客马拉松比赛中几乎是一夜之间(另一方面,他们不知道什么是词法作用域或闭包)。我们所有的代码都运行良好,但是他们不了解我的代码,而我也不了解他们的代码。 我听到了真正的程序员每天做的事情的引用–单元测试,代码审查,但我对这些内容的含糊不清的感觉。我通常在我的小项目中没有很多错误,因此我从来不需要错误跟踪系统或对其进行测试。 最后一件事是,我花了很长时间才能理解其他人的代码。变量命名约定(随每种新语言而异)很困难(__mzkwpSomRidicAbbrev),我发现松散耦合很困难。这并不是说我不会松散地做一些事情-我认为我对自己的工作很擅长,但是当我下载Linux内核或Chromium源代码之类的东西来查看它时,我花了数小时来尝试找出所有这些奇怪命名的目录和文件如何连接。重新发明轮子是编程上的罪过,但是我经常发现,自己写功能要比花费数小时来剖析某些库更快。 显然,以此为生的人没有这些问题,我需要自己解决这一问题。 问题:我可以采取什么步骤与其他人开始“整合”? 谢谢!


4
编程如何受到空间才能的影响?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 背景 我在项目上工作的时间越长,它变得越不清楚。就像我无法再分离各种类/对象一样。一切开始混合,很难再次将它们分开。我开始将函数放到它们实际上不属于的类中,并犯了一些愚蠢的错误,例如编写代码,后来发现这些代码已过时100%;事情在我的脑海中不再清晰可见。直到我退后几个小时(有时甚至是几天!),我才能真正看到正在发生的事情并取得成果。 我通常会尝试解决这个问题,我对编码充满热情,以至于我一生都不知道自己还能做什么。在这种情况下,事情可能会变得很奇怪,我的脑袋变得如此之高,以至于我在某种程度上失去了与现实的联系,因为诸如倾倒一杯水之类的各种动作不再有意识地发生。它发生在自动驾驶过程中,在此期间,我几乎所有的专心致志(甚至是一件事情?)都致力于解决无用的边界问题(尝试分离代码元素)。感觉就像是一场失败的战斗。 所以我前段时间进行了智商测试(我相信是韦氏成人智力测验),结果发现我的空间适应能力很低。我的总成绩仍然不错,略高于平均水平,因此我不必用棍子戳东西来谋生,但是我有点担心这在编写/设计计算机程序时会给我带来很大的障碍。永远无法认真或专业地做到这一点。 题 我对其他人对此的看法非常感兴趣... 空间适应性低可能是上述问题的原因吗? 编程如何受到空间才能的影响? 也许我应该更多地按照ADD或类似方式看待,因为我确实在17岁(5年前)被诊断出患有ADD,但我收到的药物似乎对我的影响不大,所以我从未服用过这么严重。 据我所知,人们天生具有较低/中等/较高的空间适应能力,所以我认为很有趣的是,找出越幸运的人是否天生就是更好的程序员。

6
可以使用函数式编程来开发完整的企业应用程序吗?
我才刚刚开始学习函数式编程(FP)。我来自一个面向对象的世界,那里的一切都是对象,而且大多数都是可变的。我很难理解功能没有副作用的概念。 如果某些东西是不可变的,那么在FP中如何表示诸如Employee或Person之类的常见对象。 FP可以用于创建完整的企业应用程序吗?

9
断言代码太多了吗?
我真的爱上了单元测试和TDD-我被测试感染了。 但是,单元测试通常用于公共方法。有时候,尽管我确实也必须在私有方法中测试一些假设-断言,因为其中一些是“危险的”,并且重构无济于事。(我知道,测试框架允许测试私有方法)。 因此,我的习惯是私有方法的第一行和最后一行都是断言。 但是,我注意到我倾向于“肯定”地在公共方法(以及私有方法)中使用断言。因为公共方法假设是由单元测试框架从外部进行测试的,所以这可能是“测试重复”吗? 有人会认为太多的断言是代码的味道吗?

6
是什么使哈希算法“安全”?
阅读了这个有趣的问题之后,我觉得我对如果需要使用哪种不安全的哈希算法有了一个很好的了解,但不知道为什么我可能会改用安全算法。 那有什么区别呢?输出不只是代表散列对象的随机数吗?是什么使某些哈希算法安全?
19 security  hashing 

2
什么是Aguri树?
浏览一些旧的Hacker News文章时,我遇到了一个用户的帖子,内容是 Aguri树,这些树将有界大小的基数trie(例如您将在软件路由表中使用)嫁接到LRU列表,并自动从模式中合成聚合(例如来自所有IP的1000个观察值的10.0.0.0/16)插入。它们在流量分析中最为人所知,但我们也在运行时内存分析中也使用了它们。 〜tptacek 所以我决定查一下 快速的Google搜索将我带到F1驱动程序。 在Wikipedia上进行搜索会导致印度出现种姓制度,而日本也有一些商品 堆栈溢出命中0个结果/programming//search?q=aguri site:stackoverflow.com/questions aguri 所以我终于将其链接回用户,看到他的博客上有链接 http://www.matasano.com/log/1009/aguri-coolest-data-structure-youve-never-heard-of/ 但这已经死了。 那么,这个Aguri数据结构是什么?如果它是真实的数据结构,为什么在其他任何地方都没有记录呢?

1
为什么流行的网站将非常复杂的与会话相关的数据存储在cookie中,这意味着什么?
作为Web开发人员,我们所有人都知道会话有助于克服与​​HTTP无状态本质相关的问题。我们创建一个唯一的会话ID,并将其发送给浏览器-当浏览器向我们发送相同的ID时,我们可以轻松识别用户。 所有这些听起来很简单,而且用任何一种语言实现都没有那么复杂。 现在 查看我拍摄的以下屏幕截图。这些显示了流行网站存储的cookie类型。看起来他们正在存储多个会话ID,或者正在尝试通过设置太多cookie来隐藏实际ID,或者,这是他们为防止会话劫持和其他相关问题而采取的一种非常专门的安全措施。管他呢。 Gmail(登录前) Gmail(登录后) 脸书 StackExchange (不用担心,您不能偷走我的会话-这是陈旧且不完整的:)) 因此,我的问题是-这种复杂性有什么目的?请说明这些不同的Cookie的含义(通常),以及它们的设置目的。最后,提示我如何在自己的应用中做到这一点(以及是否应该这样做)。 另一个问题:在很多情况下,Cookie中的值看起来像是URL编码的-为什么呢?
19 session 

6
是否有一种语言可以更好地转换为C语言?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 CoffeeScript是一种受Ruby启发的具有清晰语法的语言,可以转换为JavaScript。有没有类似的语言可以转换成C语言,从而在不影响性能的情况下提供更具可读性的代码?如果没有类似的东西存在,是否有充分的理由不创建它?
19 c  syntax  compiler 


5
使用服务器端页面呈现可带来哪些优势?
我正在开发一个Web应用程序,目前我已经用html / js / css编写了整个网站,而在后端,我有servlet承载一些RESTFUL服务。所有表示逻辑都是通过获取json对象并通过javascript修改视图来完成的。 该应用程序本质上是一个搜索引擎,但是它将具有不同角色的用户帐户。 我一直在研究Play和Spring等框架。我是Web开发的新手,所以我想知道使用服务器端页面呈现会带来哪些优势? 是:速度吗?更轻松的开发和工作流程?访问现有图书馆?更多?上述所有的?

4
太多的东西要学,要处理大量的技术[关闭]
很难说出这里的要求。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以当前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 我即将毕业,我已经在图书馆IT部门担任Web开发人员的工作。 当我查看职位发布时,那里的各种技术绝对让我不知所措。 一些公司关心数学+算法+数据结构。一些关心技术堆栈XYZ的经验。SQL,CSS,HTML,框架,JavaScript,设计模式等。等...等... 在某个时候,我意识到我只需要从掌握一个基础开始,就可以在一个更好的地方就业并从那里发展。但是让我上门学习的技能是多种多样的,我只是没有时间学习所有东西。 您如何处理这个问题?要成为可雇用人员的基本条件是什么?在php或ror竞技场中说。 也许更明智的选择是迁移到诸如.net等种类较少的技术堆栈上?
19 skills 

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.