软件工程

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

4
使用数据库时保持面向对象和可测试性
使用数据库但保持单元可测试性的一些OOP策略是什么?假设我有一个User类,并且我的生产环境适用于MySQL。我看到了两种可能的方法,如下所示使用PHP: 通过在与接口$ DATA_SOURCE load()和save(),抽象数据的后端源。测试时,请传递其他数据存储。 $ user =新用户($ mysql_data_source); $ user-> load('bob'); $ user-> setNickname('Robby'); $ user-> save(); 使用访问数据库并将结果行传递给用户的构造函数的工厂。测试时,手动生成$ row参数,或在UserFactory :: $ data_source中模拟对象。(如何保存对记录的更改?) class UserFactory { static $data_source; public static function fetch( $username ) { $row = self::$data_source->get( [params] ); $user = new User( $row ); return $user; } } 我旁边有设计模式和简洁代码,但我一直在努力寻找适用的概念。

10
在什么时候为了更多的钱而放弃一些软件开发原则?
我想把这个问题扔出去,有趣地看看介质在哪里。 我要承认,在过去的12个月中,我获得了TDD和软件开发中的许多敏捷价值。我对软件开发的进步感到不知所措,以至于我永远都不会放弃它们。直到...我被任命为承包人,这使我当年的实得工资翻了一番。 我加入的公司没有遵循任何特定的方法,团队还没有听说过代码气味,SOLID等问题,而且如果团队从未做到过,我当然也不会浪费时间进行TDD在实践中看到了单元测试。我卖完了吗?不,不是完全...代码将始终被“干净地”编写(按照Bob叔叔的教)),并且SOLID的原理将始终应用于需要的我编写的代码。尽管对我来说测试已经放弃了,但坦率地说,公司无法承担如此未知的任务,即使我确实创建了测试框架,他们也永远不会正确使用/维护测试框架。 以此为例,您会说开发人员出于金钱/个人其他利益而绝不放弃其工艺原则的观点?我了解这可能是一种非常个人的看法,即人们对自己的需求,业务需求以及工艺等方面的关注程度。但是,可以考虑,例如,如果公司决定宁愿进行测试,则可以放弃测试。测试团队,而不是理解编程中的单元测试,那会不会像我那样原谅自己?因此,考虑到您会丢掉一些东西,通常业务中应该有相等的成本来弥补您丢掉的东西-希望如此,除非您当然愿意掏腰包而不是依靠社区/社会合作; )。 加倍您的钱,回到RAD?或继续前进,寻找正在做敏捷的人,再也不回头...

12
在不知道您创建的程序如何工作的情况下可以生活吗?
我的意思是,确实有一些有用的库可以解决您遇到的问题,并且不知道如何解决这些问题,或者不了解所使用的编程语言。例如,Boost for C ++或JQuery for JavaScript或Spring for Java ...他们可以在几秒钟内解决问题,并且您实际上并不关心它们的处理方式(尽管它们是使用与您所编程的语言相同的语言编写的)...所以我想知道我是不是一个人独自使用了libs而没有有能力从头开始为我的问题编写解决方案,还是标准做法?

7
是否有推荐的方法与C开发人员进行科学/工程编程的交流?
作为Web应用程序的后端过程的一部分,我有很多需要移植到C的MATLAB代码(执行速度对于这项工作至关重要)。当我尝试将此代码外包给C开发人员时,我假设(如果我错了,请纠正我)很少有C开发人员也了解MATLAB代码(诸如索引和内存管理之类的东西是不同的,等等)。我想知道是否有C开发人员可以向我推荐一个过程,以使我更好地交流代码的作用? 例如,我是否应该提供MATLAB代码并逐行解释它在做什么?或者,我应该只提供数学/算法,用简单的英语解释它,还是让C开发人员以自己的理解来实现(例如,我可以假设开发人员能够理解如何使用复杂的数学方法(例如,虚构的数字),如何生成直方图,执行FFT等)? 还是有更好的方法?我希望我不是第一个需要这样做的人,所以我想知道是否有C语言开发人员遇到了这种情况,并且可以分享任何传统的看法,他们希望如何转移这项任务? 预先感谢您的任何评论。
16 c  matlab 

7
结对编程在工作场所有多普遍?
我一直对结对编程感兴趣,但是在12年的开发中,我从未在他们采用这种做法的地方工作过,因此我一直对人们的看法持怀疑态度。 我想知道这是因为金钱/时间(尖头的老板在同一台计算机上发现两个人正在使用相同的代码!!!!!!!!!!他们怎么敢!!)还是其他原因?

2
是什么使大型复杂软件产品变慢?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 由于很大程度上无关紧要的原因,我在这么长时间内再次安装了Delphi 7。我不得不说,我完全被震撼了-在某种程度上我还没来过。这根本不是我记得的东西。安装耗时约30秒。启动它花了2秒钟,并且立即可用。我可以在启动后第二秒钟按“运行”,不到一秒钟后,空白程序就已经可见并正在运行。万岁为计算机变得如此快! 但是我之所以被这样震撼,是因为通常我使用Visual Studio 2010,一点也不觉得这样快。诚然,Delphi 7是一个比Visual Studio 2010小得多的系统,但是它确实具有所有真正必要的东西的外观:控件面板,表单设计器,具有代码完成功能的代码编辑器。我意识到该语言可能更简单,代码完成功能可能不太强大,IDE可能没有那么可扩展且功能丰富,但是仍然:我不了解如何(即通过哪种机制)进行许多额外的功能(我可能还没有触发过)使类似Visual Studio的系统总是比较呆滞。 我想问一下在Visual Studio规模方面具有丰富经验的人:是什么让它们变慢了?是将代码库保持在人类理解能力范围内所需的抽象层吗?是否需要运行大量的代码?在时钟周期/内存使用部门(付出惊人的巨大代价)上,是否倾向于节省程序员时间的方法的现代趋势?

6
团队负责人的主要工作是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 在遵循敏捷编程模型的项目中,团队负责人的主要工作是什么? 团队负责人和项目经理之间的工作区别是什么?


7
您如何版本/跟踪对SQL表的更改?
在每个人都在对本地表和开发表进行更改的开发人员团队中工作时,如何使所有更改保持同步?每个人都保留其sql更改的中央日志文件?一个Wiki页面,用于跟踪alter table语句,开发人员可以运行以将其本地db更新到最新版本的单个.sql文件?我已经使用了其中一些解决方案,并且希望获得一个可以一起工作的好的可靠解决方案,因此,感谢您的想法。

7
使用Web框架有什么优点和缺点?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 这个问题的重点是提取使用基于Web的框架的优缺点:例如Cake PHP,Zend,jQuery,ASP.NET。这个问题完全与语言无关。让我从“站在巨人的肩膀上 ” 的概念开始。 优点: 使开发人员 -通过采取将先前已采取100点的行代码的功能,并将它们压缩成一个简单的函数调用使开发人员能够更复杂的功能集成到他们的网站。 允许更快地开发应用程序-这与需要在很小的窗口中创建网站的人非常相关(有没有这样的例子?) 更低的成本 -允许程序员将节省的成本转嫁给客户,从而产生了一个全新的客户群,他们想要一个网站,但以前却负担不起更高的开发成本。 缺点: 失去理解 -依靠框架的功能,开发人员可能会失去对事物工作原理的了解(在幕后)。 配置悬崖-一旦您超出了框架的配置,生产率就会立即下降,在框架配置之外实现功能可能很困难。 开发人员无法自拔 -您(开发人员)必须按照开发人员希望您执行的方式进行操作。 我想知道人们对我的观点有何看法,是否有人不同意?另外,如果人们还有其他观点,我将不胜感激。

4
为什么不依赖于更改状态有什么好处?
这个问题出自问题/software/25569/is-haskell-worth-learning 通常,对于Haskell如何提高您在其他语言中的编码技能,通常会重复声明一些,此外,这是因为Haskell是无状态的,这是一件好事。 为什么? 我见过有人将其与只用左手打字,或者闭上眼睛一天,仅依靠触摸来进行比较。当然,还有更多呢? 它与硬件内存访问有关,还是与其他性能提升有关?

7
GPL在实现其目标方面有多成功?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 4年前关闭。 当涉及到代码的商业使用时,有两种类型的FOSS许可证-假设是GPL型和BSD型。广义上,第一个是对许可下的代码的商业使用(即使用,我也指修改和再分配,以及创建派生的作品等)进行限制,第二个则更为宽松。 据我了解,GPL类型许可证背后的想法是鼓励人们放弃专有软件模型,而转而转换为FOSS代码,而许可证是诱使他们这样做的工具-即“您可以使用此出色的软件,但前提是您同意参加我们的训练营并按照我们的规定参加比赛”。 我想问的是-这项策略到目前为止是否成功?就是说,由于GPL,某个大型项目从封闭走向开放的过程中,是否有重大成就?或者仅仅因为GPL做到了,才公开开发某些软件?与每个人都拥有BSD类型许可证或在公共领域发布所有开源代码的世界相比,该策略的影响有多大? 请注意,我并不是在问FOSS模型是否成功-这是毫无疑问的。我要问的是,诱使人们从GPL类型的许可证而不是BSD类型的许可证使用的从专有方式转换为FOSS的特定方法是否成功。我也没有询问GPL本身作为许可证的优点-只是有关其有效性的事实。

12
您在编程时多久运行和测试一次代码?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 5年前关闭。 尤其是在用C从头开始编写新代码时,我发现自己编写了数小时甚至数天的代码,除了偶尔进行语法检查之外,甚至没有运行编译器。 我倾向于仔细地编写更大的代码块,并仅在确信通过分析我的头脑中的代码可以实现代码的预期工作时才进行彻底的测试。不要误会我的意思-我不会编写1000行而不进行任何测试(这将是赌博),但是在我认为完成后我会编写一个完整的子例程并对其进行测试(并在必要时进行修复)。 另一方面,我看到大多数新手都会在他们进入编辑器的每一行之后运行并测试他们的代码,并认为调试器可以代替谨慎和理智的做法。学习了语言语法后,我认为这会分散很多注意力。 您认为这两种方法之间的正确平衡是什么?当然,第一个需要更多经验,但这对生产率有正面还是负面的影响?第二个可以帮助您更好地发现错误吗?

17
我相信我的解决方案比老板的解决方案好,所以我应该忽略他吗?[关闭]
很难说出这里的要求。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 我正在使用php和sql。 我认为我实现功能的方法比老板建议的要好。刚才他向我解释了如何检查电子邮件地址列表,我不喜欢他的想法。我提出了一个更好,更快地实施的方案,但他不同意。 现在,我想我会继续实施我的想法,因为他的想法对我来说还不够清楚。你认为他会生气吗?

5
如何将敏捷引入使用刚性非敏捷方法的团队?
考虑一家通过非敏捷方法认证的公司,并以此为卖点向客户证明自己的责任。 您如何在不破坏整个系统的情况下逐步引入看板或Scrum并仍然使他们确信它仍然可以同样负责/可审计? 我知道这可能与“ 您将如何引入像Scrum这样的敏捷方法论 ”有关,但是在这里,我想知道如何规避/解决该公司以某种虚假借口强加某种方式管理SDLC的事实。进行审核的唯一途径。

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.