软件工程

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

3
如何找到实现特定功能的源代码?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我想知道有什么技术可以在桌面应用程序上找到哪些代码实现了特定功能。 我是一名初级开发人员,仅具有围绕Web编程的专业编程经验。在Web中,这样做更容易。例如,您使用浏览器工具“检查”按钮,然后单击该按钮即可看到正在执行的操作。然后,假设您拥有完整的源代码,则可以深入了解调用的层次结构。 但是如何在桌面应用程序中做到这一点?至少不必深入研究完整的代码库?

4
补丁对客户不利吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 在办公室,我们只是度过了漫长的一段时间,在那儿我们太频繁地发布补丁了。在此期间快要结束时,我们平均每周要进行大约三个补丁。 除了这对于开发人员来说非常不利之外,我想知道客户对此会有什么想法。我自己问了一个问题,得出的结论是,我不知道经常更新的软件。但是,对于最接近的情况,我并不在乎,因为补丁很快就可以应用。 收到这些补丁的客户彼此之间有很大不同。有些人确实在等待其他人并不真正关心的补丁,但是他们都得到了相同的补丁。更新客户软件的时间少于30秒,因此我认为与时间无关的任何问题。他们确实需要注销。 因此,我的问题更加详细:获取更新是否经常向接收方发出“负面”消息? 当然,我可以问顾客,但是我不在那个位置,也不想“唤醒熟睡的狗”。 PS:如果有什么我可以改善的问题,请发表评论。

4
是否可以将应用程序宽松地耦合到其框架?
假设我正在开发一个Web应用程序。我的首选是将PHP与无脂肪框架(F3)和MVC模式结合使用。明年,我可能会决定我要切换到Zend Framework,或者甚至是ASP.NET MVC。尝试以松散耦合到其框架的方式设计应用程序是否有意义,或者该框架是否过于完整以至于无法实现这一目标? 我问的唯一原因是因为它最近与一位同行进行了交谈,这位同行批评我的派是将应用程序与F3松散耦合的想法。

5
我应该在实现之前编写接口API吗?
最近,我一直在研究更多的“有组织的”编程,并且我一直在学习应该对接口而不是对实现进行编程。考虑到这一点,在可能的情况下为项目编写实现之前,最好在接口中“略过”项目吗? 如果是这种情况,那么在使用第三方库(即Lidgren)的情况下,我是否也应该将它们包装在接口中并通过IOC容器进行解析,还是可以将它们公开给接口?

4
错误抑制不良做法吗?
在一个SO问题上,我在这里问了一些我不确定的代码,有人回答说:“ BTW,那里的代码很糟糕:它经常使用错误抑制符号(@)。” 有什么不好的做法吗?具有以下内容: $db=@new mysqli($db_info) or die('Database error'); ,它使我仅显示自定义错误消息。如果没有错误抑制,那么它将仍然显示以下典型的PHP消息: 警告:mysqli :: mysqli():php_network_getaddresses:getaddrinfo失败:此类主机未知。在一些\文件\路径上线6 以及“数据库错误”。 抑制错误总是不好的,如果是这样,那么上述问题到底是不好的? 更新:我正在使用的实际代码是: or error('Datatabase error', 'An error occurred with the database' . (($debug_mode) ? '<br />MySQL reported: <b>' . $db->error . '</b><br />Error occurred on line <b>' . __LINE__ . '</b> of <b>' . __FILE__ . '</b>' …

3
什么时候在命令行应用程序中使用颜色合适?
目前,我在C中有一个名为的命令行应用程序btcwatch。它具有一个-C可以作为参数接收的选项,该选项将比特币的当前价格与预先存储的价格进行比较。-S。使用此选项的示例输出是: $ btcwatch -vC # -v = verbose buy: UP $ 32.000000 USD (100.000000 -> 132.000000) sell: UP $ 16.000000 USD (100.000000 -> 116.000000) 难题是是否要为UP或DOWN字符串使用颜色(分别为绿色和红色)。我知道的大多数命令行应用程序(除git之外)在输出中都远离颜色。在我希望btcwatch外观和相当“标准”(使用getopt,Makefiles等)的愿望中,我不确定在这种情况下颜色是否看起来不合适。

6
为什么许多语言不支持命名参数?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我只是在想,如果在调用函数时可以编写以下代码,那么读取代码会容易得多: doFunction(param1=something, param2=somethingElse); 我想不出任何缺点,它会使代码更具可读性。我知道您可以将数组作为唯一的参数传递,并将数组键作为参数名称,但是这样的可读性仍然不高。 我缺少这种缺点吗?如果不是,为什么许多语言不允许这样做?

1
为什么有些网站在Chrome开发者工具中显示0字节
我正在为我的网站进行页面速度优化,并研究其他网站如何做到这一点。我注意到,某些网站(例如Facebook或Ringgitplus)在Chrome开发人员工具的“网络”标签中显示了某些资源的0字节,而实际内容的大小为几千字节。 我读了一些文章,说大小是要获取的数量,内容是响应的实际大小。因此,当大小为0字节时,表示它是从缓存中提供的。但是,当我使用隐身模式打开页面或清除所有缓存时,也会发生同样的事情。 这怎么可能?如何为我的网站实现相同的目标?
14 http  caching  chrome 


2
将请求发送到服务器并等待响应互联网连接丢失时该怎么办?
我正在向服务器发送大量数据。现在,当我发送数据并等待服务器响应时,突然我的android设备失去了互联网连接。 因此,我过去经常做的是显示一个连接丢失的警告对话框,但是在服务器端,数据已被处理,并且已在任何URL的某个位置进行了更新。但是我的Android手机不知道这一点,因为它从未得到响应。如何解决。是否可以在服务器端还是在android本身上完成?服务器如何知道Android手机不会监听响应?这可能是客户端-服务器通信优化的观点。

4
没有TCO时,什么时候需要担心堆叠失败?
每次都针对以JVM为目标的新编程语言进行讨论,不可避免地会有人说: “ JVM不支持尾调用优化,因此我预计会有很多爆炸式堆栈” 该主题有成千上万的变体。 现在,我知道某些语言(例如Clojure)具有可以使用的特殊递归结构。 我不明白的是:缺少尾部呼叫优化有多严重?我什么时候应该担心呢? 我感到困惑的主要根源可能是因为Java是有史以来最成功的语言之一,而且相当多的JVM语言似乎运行得很好。这怎么可能,如果缺乏TCO的是真的任何关注?

3
搜索整数序列
我有一个相当复杂的搜索问题,已设法简化为以下描述。我一直在谷歌搜索,但一直未能找到一种看起来完全适合我的问题的算法。特别是需要跳过任意整数。也许有人可以指点我吗? 以整数A的序列为例,例如(1 2 3 4) 取各种整数序列,然后测试它们是否与A匹配。 A包含测试序列中的所有整数 测试序列中整数的顺序在A中相同 我们不在乎A中不在测试序列中的任何整数 我们需要所有匹配的测试序列,而不仅仅是第一个。 一个例子 A = (1 2 3 4) B = (1 3) C = (1 3 4) D = (3 1) E = (1 2 5) B符合A C符合A D与A不匹配,因为顺序不同 E与A不匹配,因为它包含不在A中的整数 我希望这个解释很清楚。我设法做的最好的事情是构造一个测试序列树并在A上进行迭代。需要能够跳过整数的结果导致许多不成功的搜索路径。 谢谢 阅读一些建议,我觉得我必须澄清一些我仍然不太清楚的观点。 允许重复的数字,实际上这非常重要,因为它允许单个测试序列匹配A是多种方式 A =(1234356),B =(236),匹配项可以是-23 --- 6或-2--3-6 我希望会有大量的测试序列,至少有数千个,序列A的最大长度可能会是20。因此,简单地尝试通过迭代逐个匹配每个测试序列将变得非常无效率。 很抱歉,如果不清楚。
14 algorithms 

2
设计决策-为什么不生成</ p>的<p>?
tl; dr 假设浏览器将正确关闭段落,则一些生成html的广泛使用的程序将仅生成开始段落标签,而不会生成关闭段落标签。 从表面上看,在我看来,浏览器将正确关闭段落的假设是不正确的。我的解释正确吗?更笼统地说,这种决策涉及哪些权衡? 浏览moinmoin源代码时,以下代码行引起了我的注意: # We only open those tags and let the browser auto-close them: _auto_closing_tags = set(['p']) (来源) 在阅读完其余的实现后,我已经使自己确信,是的,的确,当moinmoin为其中一个页面生成html代码时,它将在适当的情况下正确生成段落打开标签,同时有目的地避免任何段落关闭标签(尽管能够做到这一点)。 对于我特定的,相当不寻常的用例,这种行为是不正确的。我很想提交错误报告和/或更改行为。但是,看起来这个设计决定是经过深思熟虑的。我不太熟悉html标准或各种浏览器实现的复杂性,因此无法总体上判断这是否是正确的行为,而且我感觉我本能的纠正/更改此行为的本能可能是被误导了。 这段代码是否对浏览器的实现做出了正确的假设?生成的html有效吗?更一般而言,我可能会在这里失去哪些权衡?

5
Scrum可以使用产品待办事项列表中的技术规范而不是用户案例吗?
在我目前在公司工作的我们开始进行Scrum项目。说服经理们从瀑布式迁移到Scrum并不难。我们正在做一个从头开始重建平台的项目。因此,(大多数)功能是已知的,大多数改进都是技术性的。 在这种情况下,拥有技术任务而非用户故事是合理的。我们的积压工作涉及各种技术任务,例如: 将数据库类从MySQL重写为PostgreSQL。 实施系统日志记录。 重写对象缓存。 站立时出现的事情包括需要长时间的“研究任务”,但它们从未完成。此外,团队成员在冲刺中声称需要添加计划外任务。 Scrum Master应该如何处理?难道对于这样的项目来说,Scrum不是要走的路吗?

10
为什么RDBMS不以嵌套格式返回联接的表?
例如,假设我要获取一个用户及其所有电话号码和电子邮件地址。电话号码和电子邮件存储在单独的表中,多个电话/电子邮件的一位用户。我可以很容易地做到这一点: SELECT * FROM users user LEFT JOIN emails email ON email.user_id=user.id LEFT JOIN phones phone ON phone.user_id=user.id 问题在于,它会为每条记录(用户通过电子邮件发送电话记录)一遍又一遍地返回用户名,DOB,最喜欢的颜色以及存储在用户表中的所有其他信息,这可能会占用带宽并减慢速度降低结果。 那岂不是更好,如果它返回一个单列为每个用户,而该纪录内有一个列表的电子邮件和列表的手机?这也将使数据更容易使用。 我知道您可以使用LINQ或其他框架来获得类似的结果,但这似乎是关系数据库的基础设计中的一个弱点。 我们可以通过使用NoSQL解决此问题,但是不应该有一些中间立场吗? 我想念什么吗?为什么不存在? *是的,它是按照这种方式设计的。我知道了。我想知道为什么没有替代方法更容易使用。SQL可以继续做它在做的事情,但是他们可以添加一个或两个关键字来做一些后期处理,这些后处理以嵌套格式而不是笛卡尔乘积返回数据。 我知道可以使用您选择的脚本语言来完成此操作,但是它要求SQL Server发送冗余数据(下面的示例),或者发出多个查询,例如SELECT email FROM emails WHERE user_id IN (/* result of first query */)。 而不是让MySQL返回类似于此的内容: [ { "name": "John Smith", "dob": "1945-05-13", "fav_color": "red", "email": "johnsmith45@gmail.com", …
14 design  sql  rdbms 

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.