软件工程

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

8
为什么使用try…最终没有catch子句?
经典的编程方式是使用try ... catch。什么时候适合使用try不catch? 在Python中,以下内容看起来合法且有意义: try: #do work finally: #do something unconditional 但是,代码没有catch任何内容。类似地,在Java中可能会认为如下: try { //for example try to get a database connection } finally { //closeConnection(connection) } 看起来不错,突然间我不必担心异常类型等。如果这是一种好的做法,那么什么时候才是好的做法?另外,为什么这不是良好做法或不合法?(我没有编译源代码。我正在询问它,因为它可能是Java的语法错误。我检查了Python是否确实可以编译。) 我遇到的一个相关问题是:我继续编写函数/方法,最后必须返回一些内容。但是,它可能位于不应该到达的地方,必须是返回点。因此,即使我处理了上面的异常,我仍会NULL在代码中某些不应该到达的位置(通常是方法/函数的结尾)返回或返回一个空字符串。我一直设法对代码进行重组,以使它不必一定要进行重组return NULL,因为这看起来绝对不像是一种好习惯。


15
为什么Java可能比C ++更快?
在基准测试中,Java有时会胜过C ++。当然,有时C ++的表现会更好。 请参阅以下链接: http://keithlea.com/javabench/ http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/ http://blog.cfelde.com/2010/06/c-vs-java-performance/ 但这怎么可能呢?令我惊讶的是,解释的字节码可能比编译的语言还要快。 有人可以解释一下吗?谢谢!
79 java  c++  performance 

25
三元运算符被认为有害吗?[关闭]
例如,您是否更喜欢这种单线 int median(int a, int b, int c) { return (a<b) ? (b<c) ? b : (a<c) ? c : a : (a<c) ? a : (b<c) ? c : b; } 还是涉及多个return语句的if / else解决方案? 什么时候?:合适,什么时候不合适?应该向初学者讲授还是隐藏起来?


6
数据为标量时是什么意思?
我不知道标量的确切含义,但是我试图查看我是否在正确地考虑它。标量是否与任意性有关,其中数据的类型可以是任何类型,或者系统无法提前知道数据是什么。

5
为什么没有针对C和C ++的程序包管理系统?[关闭]
软件包管理系统存在一些编程语言: TeX的CTAN Perl的CPAN Python的点子和鸡蛋 Java Maven 阴谋的哈斯克尔 红宝石宝石 NPM对的NodeJS 前端Javascript和CSS的Bower nuget for C# PHP 作曲家 这样的系统还有其他语言吗?C和C ++呢?(这是主要问题!)为什么没有适用于他们的系统?而不是创建包yum,apt-get或其他一般的包管理系统更好?
78 c++  c  builds  packages 

5
您如何在源代码上定价?[关闭]
我被要求出售我几年前创建的小型实用程序应用程序的源代码(以及现有用户)。我研究了如何在源代码上定价,但是到目前为止,还没有一个好的解决方案。 我已经在网上搜索过,但没有发现任何有用的信息。然后我遇到了其他一些人,他们也与用户一起出售了源代码,但是它们的价格似乎高得离谱。例如,一个人计算出的每位用户价格约为200美元。他有80个用户,最终以3万美元的价格与用户一起出售了该资源。他是如何得出这个价格的? 我可以用这个公式找到一个好的价格: (用户数x应用程序价格)+(应用程序价格x一年中的新用户数量) ? 如果这是一个很好的公式,那么如何为尚未有用户的来源定价?

15
如果密码存储在安全的数据库中,为什么还要加密?
我有一个网络服务。现在,我的密码以纯文本格式存储在服务器上的MySQL表中。我知道这不是最佳做法,这就是为什么我正在努力。 如果密码存储在安全的数据库中,为什么还要加密?我意识到,如果有人入侵我的数据库,他们将获得每个人的密码。但是如果有人进入我的数据库,我还有其他问题,例如删除数据。 我能想到的情况是您被黑了。您从几个小时前还原了数据库,一切都很好。但是,如果您的密码是纯文本...小偷拥有所有密码,则必须重置所有密码。麻烦您的用户。 如果密码已加密,则可以还原到以前的数据库。这是正确的想法吗?


13
有哪些评论示例可以告诉您原因而不是原因或方式?[关闭]
首先,在这个问题上,我想避免争论源代码注释是好是坏。我只是想更清楚地了解人们在谈论可以告诉您原因,原因或方式的评论时的意思。 我们经常看到诸如“注释应该告诉您为什么;代码本身应该告诉您如何”之类的准则。很容易就抽象的观点达成一致。但是,人们通常会像教条一样掉下来,离开房间而无需进一步解释。我已经看到它在许多不同的地方和环境中使用过,看起来人们可以就流行语达成共识,但是他们似乎完全是在谈论不同的事情。 因此,回到问题所在:如果评论可以告诉您原因,那么我们在说什么呢?这就是为什么这段代码首先存在的原因吗?这是片段代码应该做什么?如果有人可以给出清楚的解释,然后添加一些好的示例,我将不胜感激(确实不需要坏的示例,但是可以随意添加它们以进行对比)。 关于评论是好是坏,有很多问题,但是没有人能解决一个具体问题,即什么是可以告诉您为什么的好的评论示例。


12
我们可以完全用JSON替换XML吗?[关闭]
我确信很多开发人员都熟悉XML和JSON,并且他们都使用了它们。因此,即使是简短的解释,也没有必要解释它们的含义和目的。 如果我们尝试映射他们的概念,我们可以说(如果我错了,请纠正我): XML标签等同于JSON {} XML属性等效于JSON属性 XML标记集合等效于JSON [] 我唯一想到的是XML命名空间,它在JSON中不存在。 问题是,考虑到此映射,并考虑到JSON在此映射中要轻得多,我们能否在没有XML的情况下看到未来的世界(或者至少从理论上讲是一个世界),但是使用JSON可以完成XML的所有工作?我们可以在所有使用XML的地方使用JSON吗? PS:请注意,我已经看到了这个问题。这和我在这里要问的完全不同。因此,请不要提及重复。
78 xml  json 

22
我该如何说服我的开发人员加入WANT,以在源代码提交中添加注释?
我知道可以将Subversion(我们在工作中使用的东西)配置为要求对提交进行注释,但是我无法简单地将其打开。我知道我对提交进行评论的原因是因为它(即使只是作为慢跑者)对于快速了解提交背后的原因很有用。但是,这似乎还不足以与我经常得到的两个回答作斗争: 它花费的时间太长,我只想将我的更改放入存储库中。 只需看一下差异就很容易了。 我什至向他们展示了简单地输入JIRA问题ID以及它如何自动与问题联系在一起的价值,但仍然与他们无关。 最糟糕的是,可以拨打电话的人在同一个阵营中:不想打扰,并且可以看差异。 我知道这是正确的做法,但是如何让他们看到光线呢?即使我无法说服我的开发人员,我又如何说服管理层这对企业是正确的呢?

20
可以用可读代码替换优化代码吗?
有时,您会遇到必须扩展/改进某些现有代码的情况。您会看到旧代码非常精简,但是它也很难扩展,而且花时间阅读。 用现代代码代替它是一个好主意吗? 一段时间以前,我喜欢精益方法,但现在看来,最好牺牲很多优化,而采用更高的抽象,更好的接口和更易读,可扩展的代码。 编译器似乎也越来越好,因此诸如之类struct abc = {}的东西被悄无声息地变成了memsets,shared_ptrs产生的代码几乎与原始指针扭曲相同,模板工作得很好,因为它们产生了超精简代码,依此类推。 但是,有时您仍然会看到基于堆栈的数组和带有一些晦涩逻辑的旧C函数,通常它们不在关键路径上。 如果您必须以某种方式触摸其中的一小部分代码,那么更改这种代码是一个好主意吗?

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.